From 9f96f2e5c9dce07659df965d61121ac96331ee92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr> Date: Fri, 24 May 2019 16:58:36 +0200 Subject: [PATCH] =?UTF-8?q?Possibilit=C3=A9=20de=20modifier=20les=20donn?= =?UTF-8?q?=C3=A9es=20li=C3=A9es=20aux=20charges=20d'enseignement=20sur=20?= =?UTF-8?q?des=20=C3=A9l=C3=A9ments=20p=C3=A9dagogiques=20qui=20ne=20sont?= =?UTF-8?q?=20plus=20synchronis=C3=A9s=20avec=20Apog=C3=A9e.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +- .../Assertion/OffreDeFormationAssertion.php | 18 ++++++++---- .../Application/Service/ContextService.php | 29 +++++++++++++++++++ .../Service/VolumeHoraireEnsService.php | 1 + 4 files changed, 45 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8cfe92cab..0ff3c1da0e 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ title: "Changements intervenus sur OSE" author: Laurent Lécluse - DSI - Unicaen --- -# OSE 8.1.1 (à venir) +# OSE 8.1.1 ## Corrections de bugs @@ -14,6 +14,7 @@ author: Laurent Lécluse - DSI - Unicaen ## Nouveautés * Possibilité de récupérer des attributs multivalués pour faire la correspondance d'identifiant entre le LDAP et le code utilisateur indiqué dans la fiche Intervenant +* Possibilité de modifier les données liées aux charges d'enseignement sur des éléments pédagogiques qui ne sont plus synchronisés avec Apogée. ## Notes de mise à jour diff --git a/module/Application/src/Application/Assertion/OffreDeFormationAssertion.php b/module/Application/src/Application/Assertion/OffreDeFormationAssertion.php index 0cfcc6d3fb..5c1e0d9aa4 100755 --- a/module/Application/src/Application/Assertion/OffreDeFormationAssertion.php +++ b/module/Application/src/Application/Assertion/OffreDeFormationAssertion.php @@ -2,6 +2,7 @@ namespace Application\Assertion; +use Application\Entity\Db\Annee; use Application\Entity\Db\TypeIntervention; use Application\Entity\Db\VolumeHoraireEns; use Application\Provider\Privilege\Privileges; @@ -9,6 +10,7 @@ use Application\Entity\Db\CentreCoutEp; use Application\Entity\Db\ElementModulateur; use Application\Entity\Db\ElementPedagogique; use Application\Entity\Db\Etape; +use Application\Service\Traits\ContextServiceAwareTrait; use UnicaenImport\Entity\Db\Source; use Application\Entity\Db\Structure; use UnicaenAuth\Assertion\AbstractAssertion; @@ -23,6 +25,8 @@ use Zend\Permissions\Acl\Resource\ResourceInterface; */ class OffreDeFormationAssertion extends AbstractAssertion { + use ContextServiceAwareTrait; + protected function assertEntity(ResourceInterface $entity = null, $privilege = null) { $role = $this->getRole(); @@ -108,7 +112,7 @@ class OffreDeFormationAssertion extends AbstractAssertion { return $this->asserts([ $this->assertStructureSaisie($role, $elementPedagogique->getStructure()), - $this->assertSourceSaisie($elementPedagogique->getSource()), + $this->assertSourceSaisie($elementPedagogique->getSource(), $elementPedagogique->getAnnee()), ]); } @@ -117,7 +121,7 @@ class OffreDeFormationAssertion extends AbstractAssertion protected function assertEtapeSaisie(Role $role, Etape $etape) { return $this->assertStructureSaisie($role, $etape->getStructure()) - && $this->assertSourceSaisie($etape->getSource()); + && $this->assertSourceSaisie($etape->getSource(), $etape->getAnnee()); } @@ -182,7 +186,7 @@ class OffreDeFormationAssertion extends AbstractAssertion { return $this->asserts([ $this->assertStructureSaisie($role, $elementPedagogique->getStructure()), - $this->assertSourceSaisie($elementPedagogique->getSource()), + $this->assertSourceSaisie($elementPedagogique->getSource(), $elementPedagogique->getAnnee()), ]); } @@ -198,7 +202,7 @@ class OffreDeFormationAssertion extends AbstractAssertion protected function assertVolumeHoraireEnsSaisieVH(Role $role, VolumeHoraireEns $volumeHoraireEns) { return $this->asserts([ - $volumeHoraireEns->getSource() ? $this->assertSourceSaisie($volumeHoraireEns->getSource()) : true, + $volumeHoraireEns->getSource() ? $this->assertSourceSaisie($volumeHoraireEns->getSource(), $volumeHoraireEns->getElementPedagogique()->getAnnee()) : true, $volumeHoraireEns->getElementPedagogique() ? $this->assertElementPedagogiqueSaisieVH($role, $volumeHoraireEns->getElementPedagogique()) : true, $volumeHoraireEns->getTypeIntervention() ? $this->assertTypeInterventionSaisieVH($role, $volumeHoraireEns->getTypeIntervention()) : true, ]); @@ -241,8 +245,12 @@ class OffreDeFormationAssertion extends AbstractAssertion - protected function assertSourceSaisie(Source $source) + protected function assertSourceSaisie(Source $source, Annee $annee) { + if ($annee->getId() < $this->getServiceContext()->getAnneeImport()->getId()){ + return true; + }; + return !$source->getImportable(); } } \ No newline at end of file diff --git a/module/Application/src/Application/Service/ContextService.php b/module/Application/src/Application/Service/ContextService.php index fc85fd73d9..7605447081 100755 --- a/module/Application/src/Application/Service/ContextService.php +++ b/module/Application/src/Application/Service/ContextService.php @@ -48,6 +48,11 @@ class ContextService extends AbstractService */ protected $annee; + /** + * @var Annee + */ + protected $anneeImport; + /** * @var \Application\Entity\Db\Intervenant */ @@ -268,6 +273,30 @@ class ContextService extends AbstractService + /** + * Retourne l'année courante d'import. + * C'est à dire : + * - celle mémorisée en session (car sélectionnée par l'utilisateur) si elle existe ; + * - ou sinon celle spécifiée dans les paramètres de l'appli. + * + * @return Annee + */ + public function getAnneeImport() + { + if (!$this->anneeImport) { + $sc = $this->getSessionContainer(); + if (!$sc->offsetExists('anneeImport')) { + $sc->anneeImport = (int)$this->getServiceParametres()->get('annee_import'); + } + + $this->anneeImport = $this->getServiceAnnee()->get($sc->anneeImport); + } + + return $this->anneeImport; + } + + + /** * Retourne l'année N - x, N étant l'année courante. * diff --git a/module/Application/src/Application/Service/VolumeHoraireEnsService.php b/module/Application/src/Application/Service/VolumeHoraireEnsService.php index 89147e41a9..54c4f2b58b 100755 --- a/module/Application/src/Application/Service/VolumeHoraireEnsService.php +++ b/module/Application/src/Application/Service/VolumeHoraireEnsService.php @@ -96,6 +96,7 @@ class VolumeHoraireEnsService extends AbstractEntityService if ($toDelete) { $this->delete($volumeHoraireEns); } else { + $volumeHoraireEns->setSource($this->getServiceSource()->getOse()); $this->save($volumeHoraireEns); } } -- GitLab