Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ Journal des modifications - Affichage du nom complet d'un individu : choc de simplification en supprimant 2 options d'affichage dans le formatteur. - Rapport activité : augmentation à 10 min du timeout CSRF dans le formulaire de création/modification. - Possibilité de déclarer des missions d'enseignement - Les avis de soutenance deviennent des FichierThese afin de pouvoir être afficher sur la page des fichiers divers 6.0.2 ----- Loading doc/release-notes/v6.0.3.md +27 −1 Original line number Diff line number Diff line Loading @@ -116,4 +116,30 @@ where not exists ( join PROFIL_PRIVILEGE pp on pp.PROFIL_ID = p2r.PROFIL_ID where rp.role_id = p2r.role_id and rp.privilege_id = pp.privilege_id ); --------------------------------------------------------- -- Les avis deviennent des FichierThese -- --------------------------------------------------------- -- ajout de la colonne qui recevra le FichierThese à la place du Fichier alter table soutenance_avis add fichierthese_id integer; alter table soutenance_avis add constraint soutenance_avis_fichier_these_id_fk foreign key (fichierthese_id) references fichier_these; -- ajout de la sequence sur la colonne id de la table --create sequence fichier_these_id_seq; alter table fichier_these alter column id set default nextval('fichier_these_id_seq'); alter sequence fichier_these_id_seq owned by fichier_these.id; alter sequence fichier_these_id_seq restart with 200000; -- creation des FichierThese pour les Avis existant insert into fichier_these (fichier_id, these_id, est_conforme, retraitement) select sa.fichier_id, sp.these_id, false, false from soutenance_avis sa join soutenance_proposition sp on sa.proposition_id = sp.id; -- ajout dans la table soutenance_avis update soutenance_avis as sa set fichierthese_id = ft.id from fichier_these ft where ft.fichier_id = sa.fichier_id and sa.fichierthese_id is null; -- drop colonne devenu inutile ( /!\ après avoir vérifier /!\ ) alter table soutenance_avis drop column fichier_id; ``` No newline at end of file module/Soutenance/src/Soutenance/Controller/AvisController.php +26 −3 Original line number Diff line number Diff line Loading @@ -3,9 +3,14 @@ namespace Soutenance\Controller; use Application\Controller\AbstractController; use Depot\Service\FichierThese\FichierTheseServiceAwareTrait; use Fichier\Entity\Db\Fichier; use Fichier\Entity\Db\NatureFichier; use Fichier\Entity\Db\VersionFichier; use Fichier\Service\Fichier\FichierServiceAwareTrait; use Fichier\Service\Fichier\FichierStorageServiceAwareTrait; use Fichier\Service\Storage\Adapter\Exception\StorageAdapterException; use Soutenance\Entity\Justificatif; use Soutenance\Service\Notification\SoutenanceNotificationFactoryAwareTrait; use These\Service\Acteur\ActeurServiceAwareTrait; use These\Service\These\TheseServiceAwareTrait; Loading Loading @@ -35,6 +40,7 @@ class AvisController extends AbstractController use FichierStorageServiceAwareTrait; use FichierServiceAwareTrait; use FichierTheseServiceAwareTrait; use AvisFormAwareTrait; Loading Loading @@ -71,13 +77,30 @@ class AvisController extends AbstractController $form->setData($data); if ($form->isValid()) { $fichier = $this->getAvisService()->createAvisFromUpload($files, $membre); $validation = $this->getValidationService()->signerAvisSoutenance($these, $membre->getIndividu()); // $fichier = $this->getAvisService()->createAvisFromUpload($files, $membre); $fichiers = []; if (!empty($files)) { $file = new Fichier(); $nature = $this->fichierTheseService->fetchNatureFichier(NatureFichier::CODE_PRE_RAPPORT_SOUTENANCE); $file->setNature($nature); $nfiles['files'][0] = $files['files']['rapport'] ; $version = $this->fichierTheseService->fetchVersionFichier(VersionFichier::CODE_ORIG); $fichiers = $this->fichierTheseService->createFichierThesesFromUpload($these, $nfiles , $nature, $version); } // var_dump($fichiers); // die(); $validation = $this->getValidationService()->signerAvisSoutenance($these, $membre->getIndividu()); $avis = new Avis(); $avis->setProposition($proposition); $avis->setMembre($membre); $avis->setFichier($fichier); $avis->setFichierThese($fichiers[0]); $avis->setValidation($validation); $avis->setAvis($data['avis']); $avis->setMotif($data['motif']); Loading module/Soutenance/src/Soutenance/Controller/AvisControllerFactory.php +7 −1 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Soutenance\Controller; use Depot\Service\FichierThese\FichierTheseService; use Fichier\Service\Fichier\FichierService; use Fichier\Service\Fichier\FichierStorageService; use Psr\Container\ContainerExceptionInterface; Loading Loading @@ -45,8 +46,12 @@ class AvisControllerFactory $theseService = $container->get('TheseService'); $validationService = $container->get(ValidationService::class); /** @var FichierService $fichierService */ /** * @var FichierService $fichierService * @var FichierTheseService $fichierTheseService */ $fichierService = $container->get(FichierService::class); $fichierTheseService = $container->get(FichierTheseService::class); /** @var FichierStorageService $fileService */ $fileService = $container->get(FichierStorageService::class); Loading @@ -66,6 +71,7 @@ class AvisControllerFactory $controller->setMembreService($membreService); $controller->setFichierService($fichierService); $controller->setFichierTheseService($fichierTheseService); $controller->setFichierStorageService($fileService); $controller->setAvisForm($avisForm); Loading module/Soutenance/src/Soutenance/Entity/Avis.php +55 −95 Original line number Diff line number Diff line Loading @@ -2,163 +2,123 @@ namespace Soutenance\Entity; use These\Entity\Db\Acteur; use Application\Entity\Db\Validation; use Depot\Entity\Db\FichierThese; use Fichier\Entity\Db\Fichier; use These\Entity\Db\Acteur; use These\Entity\Db\These; use Application\Entity\Db\Validation; use UnicaenApp\Entity\HistoriqueAwareInterface; use UnicaenApp\Entity\HistoriqueAwareTrait; class Avis implements HistoriqueAwareInterface { class Avis implements HistoriqueAwareInterface { use HistoriqueAwareTrait; const FAVORABLE = 'Favorable'; const DEFAVORABLE = 'Défavorable'; /** @var int */ private $id; /** @var Proposition */ private $proposition; /** @var Membre */ private $membre; /** @var string */ private $avis; /** @var string */ private $motif; /** @var Validation */ private $validation; private ?int $id = null; private ?Proposition $proposition = null; private ?Membre $membre = null; private ?string $avis = null; private ?string $motif = null; private ?Validation $validation = null; private ?FichierThese $fichierThese = null; /** @var Fichier */ private $fichier; /** * @return int */ public function getId() public function getId(): ?int { return $this->id; } /** * @return These */ public function getThese() public function getProposition(): ?Proposition { return $this->proposition->getThese(); return $this->proposition; } /** * @return Acteur */ public function getRapporteur() public function setProposition(?Proposition $proposition): void { return $this->getMembre()->getActeur(); $this->proposition = $proposition; } public function getMembre(): ?Membre { return $this->membre; } /** * @return string */ public function getAvis() public function setMembre(?Membre $membre): void { $this->membre = $membre; } public function getAvis(): ?string { return $this->avis; } /** * @param string $avis * @return Avis */ public function setAvis($avis) public function setAvis(?string $avis): void { $this->avis = $avis; return $this; } /** * @return string */ public function getMotif() public function getMotif(): ?string { return $this->motif; } /** * @param string $motif * @return Avis */ public function setMotif($motif) public function setMotif(?string $motif): void { $this->motif = $motif; return $this; } /** * @return Validation */ public function getValidation() public function getValidation(): ?Validation { return $this->validation; } /** * @param Validation $validation * @return Avis */ public function setValidation($validation) public function setValidation(?Validation $validation): void { $this->validation = $validation; return $this; } /** * @return Fichier */ public function getFichier() public function getFichierThese(): ?FichierThese { return $this->fichier; return $this->fichierThese; } /** * @param Fichier $fichier * @return Avis */ public function setFichier($fichier) public function setFichierThese(?FichierThese $fichierThese): void { $this->fichier = $fichier; return $this; $this->fichierThese = $fichierThese; } /** * @return Proposition */ public function getProposition() public function setFichier($fichier) : void //todo check that { return $this->proposition; $this->fichier = $fichier; } /** * @param Proposition $proposition * @return Avis */ public function setProposition($proposition) /** Fonctions de qualité de vie ***********************************************************************************/ public function getThese(): ?These { $this->proposition = $proposition; return $this; if (!isset($this->proposition)) return null; return $this->proposition->getThese(); } /** * @return Membre */ public function getMembre() public function getRapporteur(): ?Acteur { return $this->membre; if (!isset($this->membre)) return null; return $this->getMembre()->getActeur(); } /** * @param Membre $membre * @return Avis */ public function setMembre($membre) public function getFichier(): ?Fichier { $this->membre = $membre; return $this; if (!isset($this->fichierThese)) return null; return $this->fichierThese->getFichier(); } } No newline at end of file Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ Journal des modifications - Affichage du nom complet d'un individu : choc de simplification en supprimant 2 options d'affichage dans le formatteur. - Rapport activité : augmentation à 10 min du timeout CSRF dans le formulaire de création/modification. - Possibilité de déclarer des missions d'enseignement - Les avis de soutenance deviennent des FichierThese afin de pouvoir être afficher sur la page des fichiers divers 6.0.2 ----- Loading
doc/release-notes/v6.0.3.md +27 −1 Original line number Diff line number Diff line Loading @@ -116,4 +116,30 @@ where not exists ( join PROFIL_PRIVILEGE pp on pp.PROFIL_ID = p2r.PROFIL_ID where rp.role_id = p2r.role_id and rp.privilege_id = pp.privilege_id ); --------------------------------------------------------- -- Les avis deviennent des FichierThese -- --------------------------------------------------------- -- ajout de la colonne qui recevra le FichierThese à la place du Fichier alter table soutenance_avis add fichierthese_id integer; alter table soutenance_avis add constraint soutenance_avis_fichier_these_id_fk foreign key (fichierthese_id) references fichier_these; -- ajout de la sequence sur la colonne id de la table --create sequence fichier_these_id_seq; alter table fichier_these alter column id set default nextval('fichier_these_id_seq'); alter sequence fichier_these_id_seq owned by fichier_these.id; alter sequence fichier_these_id_seq restart with 200000; -- creation des FichierThese pour les Avis existant insert into fichier_these (fichier_id, these_id, est_conforme, retraitement) select sa.fichier_id, sp.these_id, false, false from soutenance_avis sa join soutenance_proposition sp on sa.proposition_id = sp.id; -- ajout dans la table soutenance_avis update soutenance_avis as sa set fichierthese_id = ft.id from fichier_these ft where ft.fichier_id = sa.fichier_id and sa.fichierthese_id is null; -- drop colonne devenu inutile ( /!\ après avoir vérifier /!\ ) alter table soutenance_avis drop column fichier_id; ``` No newline at end of file
module/Soutenance/src/Soutenance/Controller/AvisController.php +26 −3 Original line number Diff line number Diff line Loading @@ -3,9 +3,14 @@ namespace Soutenance\Controller; use Application\Controller\AbstractController; use Depot\Service\FichierThese\FichierTheseServiceAwareTrait; use Fichier\Entity\Db\Fichier; use Fichier\Entity\Db\NatureFichier; use Fichier\Entity\Db\VersionFichier; use Fichier\Service\Fichier\FichierServiceAwareTrait; use Fichier\Service\Fichier\FichierStorageServiceAwareTrait; use Fichier\Service\Storage\Adapter\Exception\StorageAdapterException; use Soutenance\Entity\Justificatif; use Soutenance\Service\Notification\SoutenanceNotificationFactoryAwareTrait; use These\Service\Acteur\ActeurServiceAwareTrait; use These\Service\These\TheseServiceAwareTrait; Loading Loading @@ -35,6 +40,7 @@ class AvisController extends AbstractController use FichierStorageServiceAwareTrait; use FichierServiceAwareTrait; use FichierTheseServiceAwareTrait; use AvisFormAwareTrait; Loading Loading @@ -71,13 +77,30 @@ class AvisController extends AbstractController $form->setData($data); if ($form->isValid()) { $fichier = $this->getAvisService()->createAvisFromUpload($files, $membre); $validation = $this->getValidationService()->signerAvisSoutenance($these, $membre->getIndividu()); // $fichier = $this->getAvisService()->createAvisFromUpload($files, $membre); $fichiers = []; if (!empty($files)) { $file = new Fichier(); $nature = $this->fichierTheseService->fetchNatureFichier(NatureFichier::CODE_PRE_RAPPORT_SOUTENANCE); $file->setNature($nature); $nfiles['files'][0] = $files['files']['rapport'] ; $version = $this->fichierTheseService->fetchVersionFichier(VersionFichier::CODE_ORIG); $fichiers = $this->fichierTheseService->createFichierThesesFromUpload($these, $nfiles , $nature, $version); } // var_dump($fichiers); // die(); $validation = $this->getValidationService()->signerAvisSoutenance($these, $membre->getIndividu()); $avis = new Avis(); $avis->setProposition($proposition); $avis->setMembre($membre); $avis->setFichier($fichier); $avis->setFichierThese($fichiers[0]); $avis->setValidation($validation); $avis->setAvis($data['avis']); $avis->setMotif($data['motif']); Loading
module/Soutenance/src/Soutenance/Controller/AvisControllerFactory.php +7 −1 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ namespace Soutenance\Controller; use Depot\Service\FichierThese\FichierTheseService; use Fichier\Service\Fichier\FichierService; use Fichier\Service\Fichier\FichierStorageService; use Psr\Container\ContainerExceptionInterface; Loading Loading @@ -45,8 +46,12 @@ class AvisControllerFactory $theseService = $container->get('TheseService'); $validationService = $container->get(ValidationService::class); /** @var FichierService $fichierService */ /** * @var FichierService $fichierService * @var FichierTheseService $fichierTheseService */ $fichierService = $container->get(FichierService::class); $fichierTheseService = $container->get(FichierTheseService::class); /** @var FichierStorageService $fileService */ $fileService = $container->get(FichierStorageService::class); Loading @@ -66,6 +71,7 @@ class AvisControllerFactory $controller->setMembreService($membreService); $controller->setFichierService($fichierService); $controller->setFichierTheseService($fichierTheseService); $controller->setFichierStorageService($fileService); $controller->setAvisForm($avisForm); Loading
module/Soutenance/src/Soutenance/Entity/Avis.php +55 −95 Original line number Diff line number Diff line Loading @@ -2,163 +2,123 @@ namespace Soutenance\Entity; use These\Entity\Db\Acteur; use Application\Entity\Db\Validation; use Depot\Entity\Db\FichierThese; use Fichier\Entity\Db\Fichier; use These\Entity\Db\Acteur; use These\Entity\Db\These; use Application\Entity\Db\Validation; use UnicaenApp\Entity\HistoriqueAwareInterface; use UnicaenApp\Entity\HistoriqueAwareTrait; class Avis implements HistoriqueAwareInterface { class Avis implements HistoriqueAwareInterface { use HistoriqueAwareTrait; const FAVORABLE = 'Favorable'; const DEFAVORABLE = 'Défavorable'; /** @var int */ private $id; /** @var Proposition */ private $proposition; /** @var Membre */ private $membre; /** @var string */ private $avis; /** @var string */ private $motif; /** @var Validation */ private $validation; private ?int $id = null; private ?Proposition $proposition = null; private ?Membre $membre = null; private ?string $avis = null; private ?string $motif = null; private ?Validation $validation = null; private ?FichierThese $fichierThese = null; /** @var Fichier */ private $fichier; /** * @return int */ public function getId() public function getId(): ?int { return $this->id; } /** * @return These */ public function getThese() public function getProposition(): ?Proposition { return $this->proposition->getThese(); return $this->proposition; } /** * @return Acteur */ public function getRapporteur() public function setProposition(?Proposition $proposition): void { return $this->getMembre()->getActeur(); $this->proposition = $proposition; } public function getMembre(): ?Membre { return $this->membre; } /** * @return string */ public function getAvis() public function setMembre(?Membre $membre): void { $this->membre = $membre; } public function getAvis(): ?string { return $this->avis; } /** * @param string $avis * @return Avis */ public function setAvis($avis) public function setAvis(?string $avis): void { $this->avis = $avis; return $this; } /** * @return string */ public function getMotif() public function getMotif(): ?string { return $this->motif; } /** * @param string $motif * @return Avis */ public function setMotif($motif) public function setMotif(?string $motif): void { $this->motif = $motif; return $this; } /** * @return Validation */ public function getValidation() public function getValidation(): ?Validation { return $this->validation; } /** * @param Validation $validation * @return Avis */ public function setValidation($validation) public function setValidation(?Validation $validation): void { $this->validation = $validation; return $this; } /** * @return Fichier */ public function getFichier() public function getFichierThese(): ?FichierThese { return $this->fichier; return $this->fichierThese; } /** * @param Fichier $fichier * @return Avis */ public function setFichier($fichier) public function setFichierThese(?FichierThese $fichierThese): void { $this->fichier = $fichier; return $this; $this->fichierThese = $fichierThese; } /** * @return Proposition */ public function getProposition() public function setFichier($fichier) : void //todo check that { return $this->proposition; $this->fichier = $fichier; } /** * @param Proposition $proposition * @return Avis */ public function setProposition($proposition) /** Fonctions de qualité de vie ***********************************************************************************/ public function getThese(): ?These { $this->proposition = $proposition; return $this; if (!isset($this->proposition)) return null; return $this->proposition->getThese(); } /** * @return Membre */ public function getMembre() public function getRapporteur(): ?Acteur { return $this->membre; if (!isset($this->membre)) return null; return $this->getMembre()->getActeur(); } /** * @param Membre $membre * @return Avis */ public function setMembre($membre) public function getFichier(): ?Fichier { $this->membre = $membre; return $this; if (!isset($this->fichierThese)) return null; return $this->fichierThese->getFichier(); } } No newline at end of file