Commit 0b935ead authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Page affichant les versions des WS: possibilité qu'un établissement soit introuvable dans la bdd.

parent 879804f4
Loading
Loading
Loading
Loading
+82 −0
Original line number Diff line number Diff line
--
-- INIT
--

--
-- COMUE éventuelle
-- ----------------
--
-- Contraintes :
--   SOURCE_CODE: Utiliser 'COMUE'.
--
INSERT INTO STRUCTURE (ID, SOURCE_CODE, SIGLE, LIBELLE, TYPE_STRUCTURE_ID, SOURCE_ID, CODE, HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID)
  VALUES (1, 'COMUE', 'NU', 'Normandie Université', null, 1, 'COMUE', 1, 1);
INSERT INTO ETABLISSEMENT (ID, STRUCTURE_ID, DOMAINE, SOURCE_ID, SOURCE_CODE, EST_COMUE, EST_MEMBRE, HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID)
  VALUES (1, 1, 'normandie-univ.fr', 1, 'COMUE', 1, 0, 1, 1);

--
-- Etablissements
-- --------------
--
-- :codeEtablissement: choisir un code court et unique, ex: 'UCN', 'UNILIM'.
--
INSERT INTO STRUCTURE (ID, SOURCE_CODE, SIGLE, LIBELLE, TYPE_STRUCTURE_ID, SOURCE_ID, CODE, HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID)
  VALUES (2, :codeEtablissement, 'Unicaen', 'Université de Caen Normandie', 1, 1, :codeEtablissement, 1, 1);
INSERT INTO ETABLISSEMENT (ID, STRUCTURE_ID, DOMAINE, SOURCE_ID, SOURCE_CODE, EST_COMUE, EST_MEMBRE, HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID)
  VALUES (2, 2, 'unicaen.fr', 1, :codeEtablissement, 0, 1, 1, 1);

--
-- Sources de données importables.
--
INSERT INTO SOURCE (ID, CODE, LIBELLE, IMPORTABLE, ETABLISSEMENT_ID)
  SELECT 2, SOURCE_CODE||'::apogee', 'Apogée '||SOURCE_CODE, 1, ID from STRUCTURE where SOURCE_CODE = :codeEtablissement;
-- CODE : SOURCE_CODE de l'établissement + '::' + 'apogee'

--
-- Premier utilisateur.
--
INSERT INTO UTILISATEUR (ID, USERNAME, EMAIL, DISPLAY_NAME, PASSWORD)
  VALUES (2,
          'premierf@sygal.fr', -- EPPN (si shibboleth activé) ou supannAliasLogin (si LDAP activé)
          'francois.premier@sygal.fr',
          'François PREMIER',
          'shib' -- 'shib' (auth shibboleth), ou 'ldap' (auth LDAP), ou mdp bcrypté (auth locale)
         );

--
-- Rôles par établissement.
--
INSERT INTO ROLE (
  ID,
  CODE,
  LIBELLE,
  SOURCE_CODE,
  SOURCE_ID,
  ROLE_ID,
  THESE_DEP,
  HISTO_CREATEUR_ID,
  HISTO_MODIFICATEUR_ID,
  STRUCTURE_ID,
  TYPE_STRUCTURE_DEPENDANT_ID
)
WITH tmp(CODE, LIBELLE, THESE_DEP) as (
  select 'ADMIN',     'Administrateur',             0 from dual union
  select 'BDD',       'Bureau des doctorats',       0 from dual union
  select 'BU',        'Bibliothèque universitaire', 0 from dual union
  select 'DOCTORANT', 'Doctorant',                  1 from dual
)
SELECT
  ROLE_ID_SEQ.nextval,
  tmp.CODE,
  tmp.LIBELLE,
  s.SOURCE_CODE || '::' || tmp.CODE,
  1,
  tmp.LIBELLE || ' ' || s.SOURCE_CODE,
  tmp.THESE_DEP,
  1,
  1,
  s.ID,
1
FROM tmp, STRUCTURE s
WHERE s.SOURCE_CODE = :codeEtablissement;

data/deploy/premier.sql

deleted100644 → 0
+0 −337
Original line number Diff line number Diff line
set define off;

--
-- Pré-requis :
--
--   - avoir choisi un code pour son établissement, ex: 'UCN'.
--   - avoir choisi un code pour sa COMUE éventuelle, ex: 'COMUE'.
--

--
-- Sources de données.
--
--INSERT INTO SOURCE (ID, CODE, LIBELLE, IMPORTABLE) VALUES (1, 'SYGAL::sygal', 'SyGAL', 0);
INSERT INTO SOURCE (ID, CODE, LIBELLE, IMPORTABLE) VALUES (2, 'UCN::apogee', 'Apogée UCN', 1);

--
-- Etablissements/Structures.
--
INSERT INTO STRUCTURE (ID, SIGLE, LIBELLE, TYPE_STRUCTURE_ID, HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, SOURCE_ID, SOURCE_CODE, CODE)
VALUES (1, 'NU', 'Normandie Université', null, 1, 1, 1, 'COMUE', 'COMUE');
INSERT INTO STRUCTURE (ID, SIGLE, LIBELLE, TYPE_STRUCTURE_ID, HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, SOURCE_ID, SOURCE_CODE, CODE)
VALUES (2, 'UCN', 'Université de Caen Normandie', null, 1, 1, 1, 'UCN', 'UCN');

INSERT INTO ETABLISSEMENT (ID, STRUCTURE_ID, HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, DOMAINE, SOURCE_ID, SOURCE_CODE, EST_COMUE, EST_MEMBRE)
VALUES (1, 1, 1, 1, 'normandie-univ.fr', 1, 'COMUE', 1, 0);
INSERT INTO ETABLISSEMENT (ID, STRUCTURE_ID, HISTO_CREATEUR_ID, HISTO_MODIFICATEUR_ID, DOMAINE, SOURCE_ID, SOURCE_CODE, EST_COMUE, EST_MEMBRE)
VALUES (2, 2, 1, 1, 'unicaen.fr', 1, 'UCN', 0, 1);

--
-- Sources de données : compléments.
--
update SOURCE set ETABLISSEMENT_ID = (select id from etablissement where SOURCE_CODE = 'UNILIM') where CODE like 'UNILIM'||'::%';

--
-- Pseudo-utilisateur Application.
--
INSERT INTO UTILISATEUR (ID, USERNAME, EMAIL, DISPLAY_NAME, PASSWORD) VALUES (1, 'sygal-app', 'noreply@mail.fr', 'Application SyGAL', 'ldap');

--
-- Premier utilisateur.
--
INSERT INTO UTILISATEUR (ID,
                         USERNAME,
                         EMAIL,
                         DISPLAY_NAME,
                         PASSWORD,
                         STATE,
                         LAST_ROLE_ID,
                         INDIVIDU_ID,
                         PASSWORD_RESET_TOKEN)
VALUES (2,
        'francois.premier@sygal.fr',
        'francois.premier@sygal.fr',
        'François PREMIER',
        'ldap',
        1,
        1,
        null,
        null);

--
-- Rôles.
--

INSERT INTO ROLE (ID,
                  CODE,
                  LIBELLE,
                  SOURCE_CODE,
                  SOURCE_ID,
                  ROLE_ID,
                  IS_DEFAULT,
                  LDAP_FILTER,
                  ATTRIB_AUTO,
                  THESE_DEP,
                  HISTO_CREATEUR_ID,
                  HISTO_CREATION,
                  HISTO_MODIFICATEUR_ID,
                  HISTO_MODIFICATION,
                  HISTO_DESTRUCTEUR_ID,
                  HISTO_DESTRUCTION,
                  STRUCTURE_ID,
                  TYPE_STRUCTURE_DEPENDANT_ID,
                  ORDRE_AFFICHAGE)
VALUES (1,
        'ADMIN_TECH',
        'Administrateur technique',
        '$prefixEtab' || '::ADMIN_TECH',
        1,
        'Administrateur technique',
        0,
        NULL,
        0,
        0,
        1,
        sysdate,
        1,
        sysdate,
        NULL,
        NULL,
        NULL,
        NULL,
        'zzz');
INSERT INTO ROLE (ID,
                  CODE,
                  LIBELLE,
                  SOURCE_CODE,
                  SOURCE_ID,
                  ROLE_ID,
                  IS_DEFAULT,
                  LDAP_FILTER,
                  ATTRIB_AUTO,
                  THESE_DEP,
                  HISTO_CREATEUR_ID,
                  HISTO_CREATION,
                  HISTO_MODIFICATEUR_ID,
                  HISTO_MODIFICATION,
                  HISTO_DESTRUCTEUR_ID,
                  HISTO_DESTRUCTION,
                  STRUCTURE_ID,
                  TYPE_STRUCTURE_DEPENDANT_ID,
                  ORDRE_AFFICHAGE)
VALUES (241,
        'OBSERV',
        'Observateur',
        'OBSERV',
        1,
        'Observateur multi-établissement',
        0,
        NULL,
        0,
        0,
        1,
        sysdate,
        1,
        sysdate,
        NULL,
        NULL,
        NULL,
        NULL,
        'yy');
INSERT INTO ROLE (ID,
                  CODE,
                  LIBELLE,
                  SOURCE_CODE,
                  SOURCE_ID,
                  ROLE_ID,
                  IS_DEFAULT,
                  LDAP_FILTER,
                  ATTRIB_AUTO,
                  THESE_DEP,
                  HISTO_CREATEUR_ID,
                  HISTO_CREATION,
                  HISTO_MODIFICATEUR_ID,
                  HISTO_MODIFICATION,
                  HISTO_DESTRUCTEUR_ID,
                  HISTO_DESTRUCTION,
                  STRUCTURE_ID,
                  TYPE_STRUCTURE_DEPENDANT_ID,
                  ORDRE_AFFICHAGE)
VALUES (2,
        'ADMIN',
        'Administrateur',
        '$prefixEtab' || '::ADMIN',
        1,
        'Administrateur UCN',
        0,
        NULL,
        0,
        0,
        1,
        sysdate,
        1,
        sysdate,
        NULL,
        NULL,
        2,
        1,
        'zz');
INSERT INTO ROLE (ID,
                  CODE,
                  LIBELLE,
                  SOURCE_CODE,
                  SOURCE_ID,
                  ROLE_ID,
                  IS_DEFAULT,
                  LDAP_FILTER,
                  ATTRIB_AUTO,
                  THESE_DEP,
                  HISTO_CREATEUR_ID,
                  HISTO_CREATION,
                  HISTO_MODIFICATEUR_ID,
                  HISTO_MODIFICATION,
                  HISTO_DESTRUCTEUR_ID,
                  HISTO_DESTRUCTION,
                  STRUCTURE_ID,
                  TYPE_STRUCTURE_DEPENDANT_ID,
                  ORDRE_AFFICHAGE)
VALUES (6,
        'BDD',
        'Bureau des doctorats',
        '$prefixEtab' || '::BDD',
        1,
        'Bureau des doctorats UCN',
        0,
        NULL,
        0,
        0,
        1,
        sysdate,
        1,
        sysdate,
        NULL,
        NULL,
        2,
        1,
        'zzz');
INSERT INTO ROLE (ID,
                  CODE,
                  LIBELLE,
                  SOURCE_CODE,
                  SOURCE_ID,
                  ROLE_ID,
                  IS_DEFAULT,
                  LDAP_FILTER,
                  ATTRIB_AUTO,
                  THESE_DEP,
                  HISTO_CREATEUR_ID,
                  HISTO_CREATION,
                  HISTO_MODIFICATEUR_ID,
                  HISTO_MODIFICATION,
                  HISTO_DESTRUCTEUR_ID,
                  HISTO_DESTRUCTION,
                  STRUCTURE_ID,
                  TYPE_STRUCTURE_DEPENDANT_ID,
                  ORDRE_AFFICHAGE)
VALUES (10,
        'BU',
        'Bibliothèque universitaire',
        '$prefixEtab' || '::BU',
        1,
        'Bibliothèque universitaire UCN',
        0,
        NULL,
        0,
        0,
        1,
        sysdate,
        1,
        sysdate,
        NULL,
        NULL,
        2,
        1,
        'zzz');
INSERT INTO ROLE (ID,
                  CODE,
                  LIBELLE,
                  SOURCE_CODE,
                  SOURCE_ID,
                  ROLE_ID,
                  IS_DEFAULT,
                  LDAP_FILTER,
                  ATTRIB_AUTO,
                  THESE_DEP,
                  HISTO_CREATEUR_ID,
                  HISTO_CREATION,
                  HISTO_MODIFICATEUR_ID,
                  HISTO_MODIFICATION,
                  HISTO_DESTRUCTEUR_ID,
                  HISTO_DESTRUCTION,
                  STRUCTURE_ID,
                  TYPE_STRUCTURE_DEPENDANT_ID,
                  ORDRE_AFFICHAGE)
VALUES (14,
        'DOCTORANT',
        'Doctorant',
        '$prefixEtab' || '::DOCTORANT',
        1,
        'Doctorant UCN',
        0,
        NULL,
        1,
        1,
        1,
        sysdate,
        1,
        sysdate,
        NULL,
        NULL,
        2,
        NULL,
        'zzz');


--
-- Structure/Etablissement inconnu.
--

insert into STRUCTURE(
  ID,
  LIBELLE,
  TYPE_STRUCTURE_ID,
  HISTO_CREATEUR_ID,
  HISTO_MODIFICATEUR_ID,
  SOURCE_ID,
  SOURCE_CODE,
  CODE
)
select STRUCTURE_ID_SEQ.nextval,
       'Établissement inconnu',
       1, -- type etab
       1,
       1,
       1, -- src sygal
       'ETAB_INCONNU', -- source code
       'INCONNU' -- code
from dual;

insert into ETABLISSEMENT(
  ID,
  STRUCTURE_ID,
  HISTO_CREATEUR_ID,
  HISTO_MODIFICATEUR_ID,
  DOMAINE,
  SOURCE_ID,
  SOURCE_CODE
)
select ETABLISSEMENT_ID_SEQ.nextval,
       STRUCTURE_ID_SEQ.currval,
       1,
       1,
       null, -- domaine
       1, -- src sygal
       'ETAB_INCONNU' -- source code, idem structure
from dual;

+8 −0
Original line number Diff line number Diff line
<?php

namespace Application\Exception;

class StructureNotFoundException extends \Exception
{

}
 No newline at end of file
+9 −7
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ namespace Import\Controller;

use Application\Entity\Db\Etablissement;
use Application\Entity\Db\These;
use Application\Exception\StructureNotFoundException;
use Application\Service\Etablissement\EtablissementServiceAwareTrait;
use Application\Service\These\TheseServiceAwareTrait;
use Application\SourceCodeStringHelperAwareTrait;
@@ -60,11 +61,13 @@ class ImportController extends AbstractActionController
    {
        $codeStructure = $this->params()->fromRoute("etablissement"); // ex: 'UCN'

        $etablissement = $this->fetchEtablissementByCodeStructure($codeStructure);

        try {
            $etablissement = $this->fetchEtablissementByCodeStructure($codeStructure);
            $version = $this->importService->getApiVersion($etablissement);
            $error = null;
        } catch (StructureNotFoundException $e) {
            $version = "Inconnue";
            $error = $e->getMessage();
        } catch (ImportCallException $e) {
            $version = "Inconnue";
            $error = $e->getMessage() . " : " . $e->getPrevious()->getMessage();
@@ -77,16 +80,15 @@ class ImportController extends AbstractActionController
    }

    /**
     * @param string $codeStructure Code structure de l'établissement, ex: 'UCN'
     * @param string $sourceCode SOURCE_CODE de l'établissement, ex: 'UCN'
     * @return Etablissement
     * @throws StructureNotFoundException
     */
    private function fetchEtablissementByCodeStructure($codeStructure)
    private function fetchEtablissementByCodeStructure($sourceCode)
    {
        $sourceCode = $this->sourceCodeStringHelper->addDefaultPrefixTo($codeStructure);

        $etablissement = $this->etablissementService->getRepository()->findOneBySourceCode($sourceCode);
        if ($etablissement === null) {
            throw new RuntimeException("Aucun établissement trouvé avec le code structure " . $sourceCode);
            throw new StructureNotFoundException("Aucun établissement trouvé avec le code structure " . $sourceCode);
        }

        return $etablissement;