Commit 936f06e2 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

CHangement du système de documents + exploitation pour les convocations

parent a3d6fc81
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -4,6 +4,8 @@ Journal des modifications
2.1.9
-----
- Ajout de demande de justificatif pour certaines qualités pour les soutenances (par exemple : membre étranger)
- Mention soutenue à huis clos lorsque mentionné dans la proposition de soutenance
- Generalisation des documents attachés aux structures + exploitation dans les convocations

2.1.8
-----
+48 −0
Original line number Diff line number Diff line
@@ -21,6 +21,54 @@ git fetch --tags && git checkout --force 2.1.9 && bash ./install.sh
--
alter table SOUTENANCE_QUALITE	add JUSTIFICATIF varchar(1) default 'N' not null;
INSERT INTO NATURE_FICHIER (ID, CODE, LIBELLE) VALUES (18, 'JUSTIFICATIF_ETRANGER', 'Justificatif de la qualité d''un membre de jury étranger');

--
-- Suppression des anciennes signatures
-- 
alter table ETABLISSEMENT drop column CHEMIN_SIGNATURE_CONVOCATION;
alter table ETABLISSEMENT drop constraint ETABLISSEMENT_FICHIER_ID_FK;
alter table ETABLISSEMENT drop column SIGNATURE_CONVOCATION_ID;
alter table ETABLISSEMENT add constraint ETABLISSEMENT_FICHIER_ID_FK foreign key (SIGNATURE_CONVOCATION_ID) references FICHIER on delete set null;

--
-- CREATION STRUCTURE DOCUMENT 
-- 

create table STRUCTURE_DOCUMENT
(
    ID number not null
        constraint STRUCTURE_DOCUMENT_PK
            primary key,
    NATURE_ID number not null
        constraint SD_NATURE_FICHIER_ID_FK
            references NATURE_FICHIER
                on delete cascade,
    STRUCTURE_ID number not null
        constraint SD_STRUCTURE_ID_FK
            references STRUCTURE
                on delete cascade,
    ETABLISSEMENT_ID number
        constraint SD_ETABLISSEMENT_ID_FK
            references ETABLISSEMENT
                on delete cascade,
    FICHIER_ID number not null
        constraint SD_FICHIER_ID_FK
            references FICHIER
                on delete cascade,
    HISTO_CREATION date not null,
    HISTO_CREATEUR_ID number not null
        constraint SD_UTILISATEUR_ID_FK
            references UTILISATEUR,
    HISTO_MODIFICATION date,
    HISTO_MODIFICATEUR_ID number
        constraint SD_UTILISATEUR_ID_FK_2
            references UTILISATEUR,
    HISTO_DESTRUCTION date,
    HISTO_DESTRUCTEUR_ID number
        constraint SD_UTILISATEUR_ID_FK_3
            references UTILISATEUR
);
CREATE SEQUENCE STRUCTURE_DOCUMENT_id_seq;
```

## 3. Dans l'application SyGAL
+33 −0
Original line number Diff line number Diff line
@@ -2,10 +2,13 @@

use Application\Controller\Factory\StructureControllerFactory;
use Application\Controller\StructureController;
use Application\Entity\Db\StructureDocument;
use Application\Provider\Privilege\EtablissementPrivileges;
use Application\Provider\Privilege\StructurePrivileges;
use Application\Service\Structure\StructureService;
use Application\Service\Structure\StructureServiceFactory;
use Application\Service\StructureDocument\StructureDocumentService;
use Application\Service\StructureDocument\StructureDocumentServiceFactory;
use Application\View\Helper\StructureSubstitHelper;
use UnicaenAuth\Guard\PrivilegeController;
use UnicaenAuth\Provider\Rule\PrivilegeRuleProvider;
@@ -48,6 +51,17 @@ return [
                    ],
                    'privileges' => StructurePrivileges::STRUCTURE_MODIFICATION_TOUTES_STRUCTURES,
                ],
                [
                    'controller' => StructureController::class,
                    'action'     => [
                        'televerser-document',
                        'supprimer-document',
                    ],
                    'privileges' => [
                        StructurePrivileges::STRUCTURE_MODIFICATION_SES_STRUCTURES,
                        StructurePrivileges::STRUCTURE_MODIFICATION_TOUTES_STRUCTURES,
                    ],
                ],
            ],
        ],
    ],
@@ -82,6 +96,24 @@ return [
                            ],
                        ],
                    ],
                    'televerser-document' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/televerser-document/:structure',
                            'defaults'    => [
                                'action' => 'televerser-document',
                            ],
                        ],
                    ],
                    'supprimer-document' => [
                        'type'          => Segment::class,
                        'options'       => [
                            'route'       => '/supprimer-document/:structure/:document',
                            'defaults'    => [
                                'action' => 'supprimer-document',
                            ],
                        ],
                    ],
                ],
            ],
        ],
@@ -93,6 +125,7 @@ return [
    'service_manager' => [
        'factories' => [
            StructureService::class => StructureServiceFactory::class,
            StructureDocumentService::class => StructureDocumentServiceFactory::class,
        ],
        'aliases' => [
            'StructureService' => StructureService::class,
+4 −0
Original line number Diff line number Diff line
@@ -6,12 +6,14 @@ use Application\Entity\Db\TypeStructure;
use Application\Service\CoEncadrant\CoEncadrantServiceAwareTrait;
use Application\Service\EcoleDoctorale\EcoleDoctoraleService;
use Application\Service\EcoleDoctorale\EcoleDoctoraleServiceAwareTrait;
use Application\Service\StructureDocument\StructureDocumentServiceAwareTrait;
use Zend\Http\Response;
use Zend\View\Model\ViewModel;

class EcoleDoctoraleController extends StructureConcreteController
{
    use CoEncadrantServiceAwareTrait;
    use StructureDocumentServiceAwareTrait;
    use EcoleDoctoraleServiceAwareTrait;

    protected $codeTypeStructure = TypeStructure::CODE_ECOLE_DOCTORALE;
@@ -49,12 +51,14 @@ class EcoleDoctoraleController extends StructureConcreteController
        $id = $this->params()->fromRoute('structure');
        $structureConcrete = $this->getStructureConcreteService()->getRepository()->findByStructureId($id);
        $coencadrants = $this->getCoEncadrantService()->getCoEncadrantsByStructureConcrete($structureConcrete, false);
        $contenus = $this->getStructureDocumentService()->getContenus($structureConcrete->getStructure());

        $viewModel = parent::informationAction();

        $viewModel->setVariables([
            'ecole' => $viewModel->getVariable('structure'),
            'coencadrants' => $coencadrants,
            'contenus' => $contenus,
        ]);

        return $viewModel;
+4 −41
Original line number Diff line number Diff line
@@ -5,14 +5,12 @@ namespace Application\Controller;
use Application\Entity\Db\Etablissement;
use Application\Entity\Db\Individu;
use Application\Entity\Db\IndividuRole;
use Application\Entity\Db\NatureFichier;
use Application\Entity\Db\Role;
use Application\Entity\Db\TypeStructure;
use Application\Service\Etablissement\EtablissementService;
use Application\Service\Etablissement\EtablissementServiceAwareTrait;
use Application\Service\Fichier\FichierServiceAwareTrait;
use Application\Service\NatureFichier\NatureFichierServiceAwareTrait;
use Application\Service\Role\RoleServiceAwareTrait;
use Application\Service\StructureDocument\StructureDocumentServiceAwareTrait;
use Application\SourceCodeStringHelperAwareTrait;
use UnicaenApp\Exception\RuntimeException;
use Zend\Http\Response;
@@ -24,10 +22,9 @@ use Zend\View\Model\ViewModel;
class EtablissementController extends StructureConcreteController
{
    use EtablissementServiceAwareTrait;
    use FichierServiceAwareTrait;
    use NatureFichierServiceAwareTrait;
    use RoleServiceAwareTrait;
    use SourceCodeStringHelperAwareTrait;
    use StructureDocumentServiceAwareTrait;

    protected $codeTypeStructure = TypeStructure::CODE_ETABLISSEMENT;

@@ -75,6 +72,7 @@ class EtablissementController extends StructureConcreteController
        if ($etablissement === null) {
            throw new RuntimeException("Aucun établissement ne possède l'identifiant renseigné.");
        }
        $contenus = $this->getStructureDocumentService()->getContenus($etablissement->getStructure());

        $roleListings = [];
        $individuListings = [];
@@ -110,7 +108,7 @@ class EtablissementController extends StructureConcreteController
            'roleListing'     => $roleListings,
            'individuListing' => $individuListings,
            'logoContent'     => $this->structureService->getLogoStructureContent($etablissement),
            'signatureConvocation' => ($etablissement->getSignatureConvocation())?($this->fichierService->computeDestinationFilePathForFichier($etablissement->getSignatureConvocation())):null,
            'contenus'        => $contenus,
        ]);
    }

@@ -146,39 +144,4 @@ class EtablissementController extends StructureConcreteController
        return $viewModel;
    }

    /** gestion des signatures */
    public function televerserSignatureConvocationAction()
    {
        $structure = $this->getStructureService()->getRequestedStructure($this);
        $etablissement = $this->getStructureConcreteService()->getRepository()->findByStructureId($structure->getId());
        $nature = $this->natureFichierService->getRepository()->findOneBy(['code' => NatureFichier::CODE_SIGNATURE_CONVOCATION]);
        $request = $this->getRequest();
        if ($request->isPost()) {
                $files = $request->getFiles()->toArray();
                $fichiers = $this->fichierService->createFichiersFromUpload(['files' => $files], $nature);
                $this->fichierService->saveFichiers($fichiers);
                $etablissement->setSignatureConvocation($fichiers[0]);
                $this->getEtablissementService()->update($etablissement);
        }

        $vm =  new ViewModel([
            'title' => "Ajout d'une signature pour les convocation pour l'établissement [".$structure->getLibelle()."]",
            'nature' => 'SIGNATURE_CONVOCATION',
            'action' => $this->url()->fromRoute('etablissement/televerser-signature-convocation', ['structure' => $structure->getId()], [], true),
        ]);
        $vm->setTemplate('application/etablissement/televerser-document');
        return $vm;
    }

    public function supprimerSignatureConvocationAction()
    {
        /** @var Etablissement $etablissement */
        $structure = $this->getStructureService()->getRequestedStructure($this);
        $etablissement = $this->getStructureConcreteService()->getRepository()->findByStructureId($structure->getId());
        $this->fichierService->supprimerFichiers([$etablissement->getSignatureConvocation()]);
        $etablissement->setSignatureConvocation(null);
        $this->etablissementService->update($etablissement);

        return $this->redirect()->toRoute($this->routeName."/information", [], ['query' => ['selected' => $structure->getId()], "fragment" => $structure->getId()], true);
    }
}
 No newline at end of file
Loading