Loading CHANGELOG.md +1 −0 Changes for CHANGELOG.md: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ Journal des modifications - Templatisation de la notification de confirmation d'adresse électronique - [FIX] Correction de l'envoi multiple de notification vers le président de jury lors du dépôt d'une version corrigée. - Modification de l'assertion ouvrant la validation de l'UR - [FIX] Impossibilité de déposer un rapport d'activité de fin de thèse en plus d'un rapport annuel. 3.0.0 (oracle => postgres) ----- Loading module/Application/src/Application/Controller/Rapport/RapportActiviteController.php +65 −0 Changes for module/Application/src/Application/Controller/Rapport/RapportActiviteController.php: 65 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -2,8 +2,12 @@ namespace Application\Controller\Rapport; use Application\Entity\Db\Rapport; use Application\Provider\Privilege\RapportPrivileges; /** * @property \Application\Form\RapportActiviteForm $form */ class RapportActiviteController extends RapportController { protected $routeName = 'rapport-activite'; Loading @@ -19,4 +23,65 @@ class RapportActiviteController extends RapportController protected $privilege_DEVALIDER_TOUT = RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_TOUT; protected $privilege_DEVALIDER_SIEN = RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_SIEN; /** * @var Rapport[] */ protected $rapportsTeleversesAnnuels = []; /** * @var Rapport[] */ protected $rapportsTeleversesFintheses = []; protected function loadRapportsTeleverses() { parent::loadRapportsTeleverses(); $this->rapportsTeleversesAnnuels = array_filter($this->rapportsTeleverses, function(Rapport $rapport) { return $rapport->estFinal() === false; }); $this->rapportsTeleversesFintheses = array_filter($this->rapportsTeleverses, function(Rapport $rapport) { return $rapport->estFinal() === true; }); } protected function canTeleverserRapportAnnuel(): bool { // Peut être téléversé : 1 rapport annuel par année universitaire. $rapportsSurAnneeCourante = array_filter($this->rapportsTeleversesAnnuels, function(Rapport $rapport) { return $rapport->getAnneeUniv() === $this->anneeUnivCourante->getPremiereAnnee(); }); return count($rapportsSurAnneeCourante) === 0; } protected function canTeleverserRapportFinthese(): bool { // Peut être téléversé : 1 rapport de fin de thèse, toutes années univ confondues. return count($this->rapportsTeleversesFintheses) === 0; } protected function isTeleversementPossible(): bool { return $this->canTeleverserRapportAnnuel() || $this->canTeleverserRapportFinthese(); } protected function initForm() { parent::initForm(); $estFinalValueOptions = []; if ($this->canTeleverserRapportAnnuel()) { $estFinalValueOptions['0'] = "Rapport d'activité annuel"; } if ($this->canTeleverserRapportFinthese()) { $estFinalValueOptions['1'] = "Rapport d'activité de fin de thèse"; } $this->form->setEstFinalValueOptions($estFinalValueOptions); } } module/Application/src/Application/Controller/Rapport/RapportController.php +38 −13 Changes for module/Application/src/Application/Controller/Rapport/RapportController.php: 38 added lines, 13 removed lines. Original line number Diff line number Diff line Loading @@ -73,6 +73,21 @@ abstract class RapportController extends AbstractController */ protected $form; /** * @var Rapport[] */ protected $rapportsTeleverses = []; /** * @var \Application\Entity\Db\These */ protected $these; /** * @var \Application\Entity\AnneeUniv */ protected $anneeUnivCourante; /** * @param RapportForm $form */ Loading @@ -92,22 +107,17 @@ abstract class RapportController extends AbstractController return $result; } $these = $this->requestedThese(); $rapports = $this->rapportService->findRapportsForThese($these, $this->typeRapport); //$allAnneesUnivs = $these->getAnneesUnivInscription()->toArray(); $allAnneesUnivs = [$this->theseAnneeUnivService->anneeUnivCourante()]; $anneesUnivs = $this->rapportService->computeAvailableTheseAnneeUniv( $allAnneesUnivs, $rapports ); $this->form->setAnneesUnivs($anneesUnivs); $tousLesRapportsTeleverses = empty($anneesUnivs); $this->anneeUnivCourante = $this->theseAnneeUnivService->anneeUnivCourante(); $this->these = $this->requestedThese(); $this->loadRapportsTeleverses(); $this->initForm(); return new ViewModel([ 'rapports' => $rapports, 'these' => $these, 'rapports' => $this->rapportsTeleverses, 'these' => $this->these, 'form' => $this->form, 'tousLesRapportsTeleverses' => $tousLesRapportsTeleverses, 'isTeleversementPossible' => $this->isTeleversementPossible(), 'typeValidation' => $this->typeValidation, 'routeName' => $this->routeName, Loading @@ -129,6 +139,21 @@ abstract class RapportController extends AbstractController ]); } protected function loadRapportsTeleverses() { $this->rapportsTeleverses = $this->rapportService->findRapportsForThese($this->these, $this->typeRapport); } protected function isTeleversementPossible(): bool { return true; } protected function initForm() { $this->form->setAnneesUnivs([$this->anneeUnivCourante]); } /** * Ajout d'un nouveau rapport. */ Loading module/Application/src/Application/Form/RapportActiviteForm.php +26 −4 Changes for module/Application/src/Application/Form/RapportActiviteForm.php: 26 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -8,6 +8,21 @@ use Zend\Form\Element\Radio; class RapportActiviteForm extends RapportForm { protected $estFinalValueOptions = [ '0' => "Rapport d'activité annuel", '1' => "Rapport d'activité de fin de thèse", ]; /** * @param string[] $estFinalValueOptions * @return self */ public function setEstFinalValueOptions(array $estFinalValueOptions): self { $this->estFinalValueOptions = $estFinalValueOptions; return $this; } /** * @inheritDoc */ Loading @@ -20,10 +35,7 @@ class RapportActiviteForm extends RapportForm 'type' => Radio::class, 'options' => [ 'label' => false, 'value_options' => [ '0' => "Rapport d'activité annuel", '1' => "Rapport d'activité de fin de thèse", ], 'value_options' => $this->estFinalValueOptions, ], 'attributes' => [ 'id' => 'estFinal', Loading @@ -33,6 +45,16 @@ class RapportActiviteForm extends RapportForm $this->bind(new Rapport()); } /** * @inheritDoc */ public function prepare() { $this->get('estFinal')->setValueOptions($this->estFinalValueOptions); return parent::prepare(); } /** * @inheritDoc */ Loading module/Application/src/Application/Service/Rapport/RapportService.php +0 −24 Changes for module/Application/src/Application/Service/Rapport/RapportService.php: 0 added lines, 24 removed lines. Original line number Diff line number Diff line Loading @@ -2,11 +2,9 @@ namespace Application\Service\Rapport; use Application\Entity\AnneeUniv; use Application\Entity\Db\NatureFichier; use Application\Entity\Db\Rapport; use Application\Entity\Db\These; use Application\Entity\Db\TheseAnneeUniv; use Application\Entity\Db\TypeRapport; use Application\Filter\NomFichierRapportFormatter; use Application\Service\BaseService; Loading Loading @@ -77,28 +75,6 @@ class RapportService extends BaseService return $qb->getQuery()->getResult(); } /** * @param TheseAnneeUniv[]|\Application\Entity\AnneeUniv[] $anneesUnivs * @param Rapport[] $rapportsExistants * @return TheseAnneeUniv[] */ public function computeAvailableTheseAnneeUniv(array $anneesUnivs, array $rapportsExistants): array { $rapportsExistantsAnneesUnivs = array_filter(array_map(function (Rapport $rapport) { return $rapport->getAnneeUniv(); }, $rapportsExistants)); return array_filter($anneesUnivs, function($anneeUniv) use ($rapportsExistantsAnneesUnivs) { if ($anneeUniv instanceof TheseAnneeUniv) { return !in_array($anneeUniv->getAnneeUniv(), $rapportsExistantsAnneesUnivs); } elseif ($anneeUniv instanceof AnneeUniv) { return !in_array($anneeUniv->getPremiereAnnee(), $rapportsExistantsAnneesUnivs); } else { return false; } }); } /** * @inheritDoc */ Loading Loading
CHANGELOG.md +1 −0 Changes for CHANGELOG.md: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ Journal des modifications - Templatisation de la notification de confirmation d'adresse électronique - [FIX] Correction de l'envoi multiple de notification vers le président de jury lors du dépôt d'une version corrigée. - Modification de l'assertion ouvrant la validation de l'UR - [FIX] Impossibilité de déposer un rapport d'activité de fin de thèse en plus d'un rapport annuel. 3.0.0 (oracle => postgres) ----- Loading
module/Application/src/Application/Controller/Rapport/RapportActiviteController.php +65 −0 Changes for module/Application/src/Application/Controller/Rapport/RapportActiviteController.php: 65 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -2,8 +2,12 @@ namespace Application\Controller\Rapport; use Application\Entity\Db\Rapport; use Application\Provider\Privilege\RapportPrivileges; /** * @property \Application\Form\RapportActiviteForm $form */ class RapportActiviteController extends RapportController { protected $routeName = 'rapport-activite'; Loading @@ -19,4 +23,65 @@ class RapportActiviteController extends RapportController protected $privilege_DEVALIDER_TOUT = RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_TOUT; protected $privilege_DEVALIDER_SIEN = RapportPrivileges::RAPPORT_ACTIVITE_DEVALIDER_SIEN; /** * @var Rapport[] */ protected $rapportsTeleversesAnnuels = []; /** * @var Rapport[] */ protected $rapportsTeleversesFintheses = []; protected function loadRapportsTeleverses() { parent::loadRapportsTeleverses(); $this->rapportsTeleversesAnnuels = array_filter($this->rapportsTeleverses, function(Rapport $rapport) { return $rapport->estFinal() === false; }); $this->rapportsTeleversesFintheses = array_filter($this->rapportsTeleverses, function(Rapport $rapport) { return $rapport->estFinal() === true; }); } protected function canTeleverserRapportAnnuel(): bool { // Peut être téléversé : 1 rapport annuel par année universitaire. $rapportsSurAnneeCourante = array_filter($this->rapportsTeleversesAnnuels, function(Rapport $rapport) { return $rapport->getAnneeUniv() === $this->anneeUnivCourante->getPremiereAnnee(); }); return count($rapportsSurAnneeCourante) === 0; } protected function canTeleverserRapportFinthese(): bool { // Peut être téléversé : 1 rapport de fin de thèse, toutes années univ confondues. return count($this->rapportsTeleversesFintheses) === 0; } protected function isTeleversementPossible(): bool { return $this->canTeleverserRapportAnnuel() || $this->canTeleverserRapportFinthese(); } protected function initForm() { parent::initForm(); $estFinalValueOptions = []; if ($this->canTeleverserRapportAnnuel()) { $estFinalValueOptions['0'] = "Rapport d'activité annuel"; } if ($this->canTeleverserRapportFinthese()) { $estFinalValueOptions['1'] = "Rapport d'activité de fin de thèse"; } $this->form->setEstFinalValueOptions($estFinalValueOptions); } }
module/Application/src/Application/Controller/Rapport/RapportController.php +38 −13 Changes for module/Application/src/Application/Controller/Rapport/RapportController.php: 38 added lines, 13 removed lines. Original line number Diff line number Diff line Loading @@ -73,6 +73,21 @@ abstract class RapportController extends AbstractController */ protected $form; /** * @var Rapport[] */ protected $rapportsTeleverses = []; /** * @var \Application\Entity\Db\These */ protected $these; /** * @var \Application\Entity\AnneeUniv */ protected $anneeUnivCourante; /** * @param RapportForm $form */ Loading @@ -92,22 +107,17 @@ abstract class RapportController extends AbstractController return $result; } $these = $this->requestedThese(); $rapports = $this->rapportService->findRapportsForThese($these, $this->typeRapport); //$allAnneesUnivs = $these->getAnneesUnivInscription()->toArray(); $allAnneesUnivs = [$this->theseAnneeUnivService->anneeUnivCourante()]; $anneesUnivs = $this->rapportService->computeAvailableTheseAnneeUniv( $allAnneesUnivs, $rapports ); $this->form->setAnneesUnivs($anneesUnivs); $tousLesRapportsTeleverses = empty($anneesUnivs); $this->anneeUnivCourante = $this->theseAnneeUnivService->anneeUnivCourante(); $this->these = $this->requestedThese(); $this->loadRapportsTeleverses(); $this->initForm(); return new ViewModel([ 'rapports' => $rapports, 'these' => $these, 'rapports' => $this->rapportsTeleverses, 'these' => $this->these, 'form' => $this->form, 'tousLesRapportsTeleverses' => $tousLesRapportsTeleverses, 'isTeleversementPossible' => $this->isTeleversementPossible(), 'typeValidation' => $this->typeValidation, 'routeName' => $this->routeName, Loading @@ -129,6 +139,21 @@ abstract class RapportController extends AbstractController ]); } protected function loadRapportsTeleverses() { $this->rapportsTeleverses = $this->rapportService->findRapportsForThese($this->these, $this->typeRapport); } protected function isTeleversementPossible(): bool { return true; } protected function initForm() { $this->form->setAnneesUnivs([$this->anneeUnivCourante]); } /** * Ajout d'un nouveau rapport. */ Loading
module/Application/src/Application/Form/RapportActiviteForm.php +26 −4 Changes for module/Application/src/Application/Form/RapportActiviteForm.php: 26 added lines, 4 removed lines. Original line number Diff line number Diff line Loading @@ -8,6 +8,21 @@ use Zend\Form\Element\Radio; class RapportActiviteForm extends RapportForm { protected $estFinalValueOptions = [ '0' => "Rapport d'activité annuel", '1' => "Rapport d'activité de fin de thèse", ]; /** * @param string[] $estFinalValueOptions * @return self */ public function setEstFinalValueOptions(array $estFinalValueOptions): self { $this->estFinalValueOptions = $estFinalValueOptions; return $this; } /** * @inheritDoc */ Loading @@ -20,10 +35,7 @@ class RapportActiviteForm extends RapportForm 'type' => Radio::class, 'options' => [ 'label' => false, 'value_options' => [ '0' => "Rapport d'activité annuel", '1' => "Rapport d'activité de fin de thèse", ], 'value_options' => $this->estFinalValueOptions, ], 'attributes' => [ 'id' => 'estFinal', Loading @@ -33,6 +45,16 @@ class RapportActiviteForm extends RapportForm $this->bind(new Rapport()); } /** * @inheritDoc */ public function prepare() { $this->get('estFinal')->setValueOptions($this->estFinalValueOptions); return parent::prepare(); } /** * @inheritDoc */ Loading
module/Application/src/Application/Service/Rapport/RapportService.php +0 −24 Changes for module/Application/src/Application/Service/Rapport/RapportService.php: 0 added lines, 24 removed lines. Original line number Diff line number Diff line Loading @@ -2,11 +2,9 @@ namespace Application\Service\Rapport; use Application\Entity\AnneeUniv; use Application\Entity\Db\NatureFichier; use Application\Entity\Db\Rapport; use Application\Entity\Db\These; use Application\Entity\Db\TheseAnneeUniv; use Application\Entity\Db\TypeRapport; use Application\Filter\NomFichierRapportFormatter; use Application\Service\BaseService; Loading Loading @@ -77,28 +75,6 @@ class RapportService extends BaseService return $qb->getQuery()->getResult(); } /** * @param TheseAnneeUniv[]|\Application\Entity\AnneeUniv[] $anneesUnivs * @param Rapport[] $rapportsExistants * @return TheseAnneeUniv[] */ public function computeAvailableTheseAnneeUniv(array $anneesUnivs, array $rapportsExistants): array { $rapportsExistantsAnneesUnivs = array_filter(array_map(function (Rapport $rapport) { return $rapport->getAnneeUniv(); }, $rapportsExistants)); return array_filter($anneesUnivs, function($anneeUniv) use ($rapportsExistantsAnneesUnivs) { if ($anneeUniv instanceof TheseAnneeUniv) { return !in_array($anneeUniv->getAnneeUniv(), $rapportsExistantsAnneesUnivs); } elseif ($anneeUniv instanceof AnneeUniv) { return !in_array($anneeUniv->getPremiereAnnee(), $rapportsExistantsAnneesUnivs); } else { return false; } }); } /** * @inheritDoc */ Loading