Loading code/test1.php +2 −46 Changes for code/test1.php: 2 added lines, 46 removed lines. Original line number Diff line number Diff line Loading @@ -8,50 +8,6 @@ * @var $viewFile string */ /** @var \Mission\Service\MissionService $smi */ $smi = $container->get(\Mission\Service\MissionService::class); $d = new \DateTime(); $intervenant = $container->get(\Application\Service\IntervenantService::class)->get(1000000000); $guid = '31-20230309-0900-1031-0-0'; $guid = '31-20230308-1400-1700-0-0'; $missionSuivi = $smi->suivi($intervenant, $guid); //$missionSuivi->setDescription('test'); //$missionSuivi->setHeures(10); $data = \Application\Controller\Plugin\Axios::extract($missionSuivi); var_dump($data); foreach( $missionSuivi->getVolumesHoraires() as $vhm ){ $vhSpec = $vhm->axiosDefinition(); $vhSpec[] = 'guid'; $vhSpec[] = 'heureDebut'; $vhSpec[] = 'horaireFin'; $vhSpec[] = 'description'; $vhSpec[] = 'nocturne'; $vhSpec[] = 'formation'; $vhData = \Application\Controller\Plugin\Axios::extract($vhm, $vhSpec); unset($vhData['histoCreateur']); unset($vhData['histoCreation']); unset($vhData['canValider']); unset($vhData['canDevalider']); unset($vhData['canSupprimer']); var_dump($vhData); } ?> <script> let date = new Date(); console.log(Util.affDate(date, Util.FORMAT_DATE)); </script> $d->setTime(0, 0, 0, 0); No newline at end of file code/test2.php +5 −79 Changes for code/test2.php: 5 added lines, 79 removed lines. Original line number Diff line number Diff line Loading @@ -10,83 +10,9 @@ use Unicaen\OpenDocument\Calc; * @var $viewFile string */ class Adresse implements \UnicaenVue\Axios\AxiosExtractorInterface { protected int $numero = 1; protected string $rue = 'Allée des mésanges'; protected int $cp = 14000; protected string $ville = 'Caen'; $date1 = \DateTime::createFromFormat('Y-m-d H:i:s', '2023-03-30 10:00:00'); $date2 = \DateTime::createFromFormat('Y-m-d H:i:s','2023-03-31 14:30:00'); $interval = $date1->diff($date2); $minutes = ($date2->getTimestamp() - $date1->getTimestamp()) / 60; public function getNumero(): int { return $this->numero; } public function getRue(): string { return $this->rue; } public function getCp(): int { return $this->cp; } public function getVille(): string { return $this->ville; } public function axiosDefinition(): array { return ['cp', 'ville']; } } class Personne { protected string $nom = 'Dupont'; protected string $prenom = 'Robert'; protected int $age = 42; protected Adresse $adresse; public function __construct() { $this->adresse = new Adresse(); } public function getNom(): string { return $this->nom; } public function getPrenom(): string { return $this->prenom; } public function getAge(): int { return $this->age; } public function isMajeur(): bool { return $this->age >= 18; } public function getAdresse(): Adresse { return $this->adresse; } } $personnes = [new Personne(),new Personne()]; $properties = ['nom', 'prenom', 'isMajeur', 'adresse']; $extracted = \UnicaenVue\Axios\AxiosExtractor::extract($personnes,$properties); var_dump($extracted); No newline at end of file echo "Il y a $minutes minutes de différences"; front/Mission/Suivi.vue +10 −2 Changes for front/Mission/Suivi.vue: 10 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -45,7 +45,11 @@ export default { addVolumeHoraire(dateObj, event) { event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-saisie', {intervenant:this.intervenant}); const urlParams = { intervenant:this.intervenant, date:dateObj.toISOString().slice(0,10) // date au format Y-m-d }; event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-ajout/:date', urlParams); modAjax(event.currentTarget, (widget) => { this.refresh(); }); Loading @@ -53,7 +57,11 @@ export default { editVolumeHoraire(calEvent, event) { event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-saisie/:guid', {intervenant:this.intervenant,guid:calEvent.guid}); const urlParams = { intervenant:this.intervenant, id:calEvent.id }; event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-modification/:id', urlParams); modAjax(event.currentTarget, (widget) => { this.refresh(); }); Loading module/Mission/config/module.config.php +10 −3 Changes for module/Mission/config/module.config.php: 10 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -37,10 +37,17 @@ return [ 'privileges' => Privileges::MISSION_VISUALISATION, //'assertion' => Assertion\MissionAssertion::class, ], 'missions-suivi-saisie' => [ 'route' => '/:intervenant/missions-suivi-saisie[/:guid]', 'missions-suivi-ajout' => [ 'route' => '/:intervenant/missions-suivi-ajout[/:date]', 'controller' => MissionController::class, 'action' => 'suivi-saisie', 'action' => 'suivi-ajout', 'privileges' => Privileges::MISSION_EDITION_REALISE, //'assertion' => Assertion\MissionAssertion::class, ], 'missions-suivi-modification' => [ 'route' => '/:intervenant/missions-suivi-modification/:volumeHoraireMission', 'controller' => MissionController::class, 'action' => 'suivi-modification', 'privileges' => Privileges::MISSION_EDITION_REALISE, //'assertion' => Assertion\MissionAssertion::class, ], Loading module/Mission/src/Controller/MissionController.php +39 −11 Changes for module/Mission/src/Controller/MissionController.php: 39 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -12,10 +12,10 @@ use Laminas\View\Model\JsonModel; use Laminas\View\Model\ViewModel; use Mission\Entity\Db\Mission; use Mission\Entity\Db\VolumeHoraireMission; use Mission\Entity\MissionSuivi; use Mission\Form\MissionFormAwareTrait; use Mission\Form\MissionSuiviFormAwareTrait; use Mission\Service\MissionServiceAwareTrait; use Service\Service\TypeVolumeHoraireServiceAwareTrait; use UnicaenVue\Axios\AxiosExtractor; use UnicaenVue\View\Model\AxiosModel; use UnicaenVue\View\Model\VueModel; Loading @@ -34,6 +34,7 @@ class MissionController extends AbstractController use ValidationServiceAwareTrait; use WorkflowServiceAwareTrait; use MissionSuiviFormAwareTrait; use TypeVolumeHoraireServiceAwareTrait; /** Loading Loading @@ -147,18 +148,45 @@ class MissionController extends AbstractController * * @return ViewModel */ public function suiviSaisieAction(): ViewModel public function suiviAjoutAction(): ViewModel { /** @var Intervenant $intervenant */ $intervenant = $this->getEvent()->getParam('intervenant'); $guid = $this->params()->fromRoute('guid', null); $date = $this->params()->fromRoute('date'); if ($guid) { $missionSuivi = $this->getServiceMission()->suivi($intervenant, $guid); $volumeHoraireMission = new VolumeHoraireMission(); $volumeHoraireMission->setTypeVolumeHoraire($this->getServiceTypeVolumeHoraire()->getRealise()); $volumeHoraireMission->setDate($date); return $this->suiviSaisieAction($intervenant, $volumeHoraireMission); } /** * Modifie une mission (form) * * @return ViewModel */ public function suiviModificationAction(): ViewModel { /** @var Intervenant $intervenant */ $intervenant = $this->getEvent()->getParam('intervenant'); $volumeHoraireMissionId = $this->params()->fromRoute('volumeHoraireMission', null); $volumeHoraireMission = $this->getServiceMission()->suivi($intervenant, $volumeHoraireMissionId); return $this->suiviSaisieAction($intervenant, $volumeHoraireMission); } protected function suiviSaisieAction(Intervenant $intervenant, VolumeHoraireMission $volumeHoraireMission) { if ($volumeHoraireMission->getId()) { $title = 'Modification d\'un suivi de mission'; } else { $missionSuivi = new MissionSuivi(); $title = 'Ajout d\'un suivi de mission'; } Loading @@ -166,13 +194,13 @@ class MissionController extends AbstractController $form->setIntervenant($intervenant); $form->build(); $form->bindRequestSave($missionSuivi, $this->getRequest(), function ($missionSuivi) { $this->getServiceMission()->saveSuivi($missionSuivi); $this->updateTableauxBord($missionSuivi->getMission()); $form->bindRequestSave($volumeHoraireMission, $this->getRequest(), function ($vhm) { $this->getServiceMission()->saveVolumeHoraire($vhm); $this->updateTableauxBord($vhm->getMission()); $this->flashMessenger()->addSuccessMessage('Suivi bien enregistré'); }); // on passe le data-guid pour pouvoir le récupérer dans la vue et mettre à jour la liste $form->setAttribute('data-guid', $missionSuivi->guid()); // on passe l'id pour pouvoir le récupérer dans la vue et mettre à jour la liste $form->setAttribute('data-id', $volumeHoraireMission->getId()); $vm = new ViewModel(); $vm->setTemplate('mission/suivi-saisie'); Loading Loading
code/test1.php +2 −46 Changes for code/test1.php: 2 added lines, 46 removed lines. Original line number Diff line number Diff line Loading @@ -8,50 +8,6 @@ * @var $viewFile string */ /** @var \Mission\Service\MissionService $smi */ $smi = $container->get(\Mission\Service\MissionService::class); $d = new \DateTime(); $intervenant = $container->get(\Application\Service\IntervenantService::class)->get(1000000000); $guid = '31-20230309-0900-1031-0-0'; $guid = '31-20230308-1400-1700-0-0'; $missionSuivi = $smi->suivi($intervenant, $guid); //$missionSuivi->setDescription('test'); //$missionSuivi->setHeures(10); $data = \Application\Controller\Plugin\Axios::extract($missionSuivi); var_dump($data); foreach( $missionSuivi->getVolumesHoraires() as $vhm ){ $vhSpec = $vhm->axiosDefinition(); $vhSpec[] = 'guid'; $vhSpec[] = 'heureDebut'; $vhSpec[] = 'horaireFin'; $vhSpec[] = 'description'; $vhSpec[] = 'nocturne'; $vhSpec[] = 'formation'; $vhData = \Application\Controller\Plugin\Axios::extract($vhm, $vhSpec); unset($vhData['histoCreateur']); unset($vhData['histoCreation']); unset($vhData['canValider']); unset($vhData['canDevalider']); unset($vhData['canSupprimer']); var_dump($vhData); } ?> <script> let date = new Date(); console.log(Util.affDate(date, Util.FORMAT_DATE)); </script> $d->setTime(0, 0, 0, 0); No newline at end of file
code/test2.php +5 −79 Changes for code/test2.php: 5 added lines, 79 removed lines. Original line number Diff line number Diff line Loading @@ -10,83 +10,9 @@ use Unicaen\OpenDocument\Calc; * @var $viewFile string */ class Adresse implements \UnicaenVue\Axios\AxiosExtractorInterface { protected int $numero = 1; protected string $rue = 'Allée des mésanges'; protected int $cp = 14000; protected string $ville = 'Caen'; $date1 = \DateTime::createFromFormat('Y-m-d H:i:s', '2023-03-30 10:00:00'); $date2 = \DateTime::createFromFormat('Y-m-d H:i:s','2023-03-31 14:30:00'); $interval = $date1->diff($date2); $minutes = ($date2->getTimestamp() - $date1->getTimestamp()) / 60; public function getNumero(): int { return $this->numero; } public function getRue(): string { return $this->rue; } public function getCp(): int { return $this->cp; } public function getVille(): string { return $this->ville; } public function axiosDefinition(): array { return ['cp', 'ville']; } } class Personne { protected string $nom = 'Dupont'; protected string $prenom = 'Robert'; protected int $age = 42; protected Adresse $adresse; public function __construct() { $this->adresse = new Adresse(); } public function getNom(): string { return $this->nom; } public function getPrenom(): string { return $this->prenom; } public function getAge(): int { return $this->age; } public function isMajeur(): bool { return $this->age >= 18; } public function getAdresse(): Adresse { return $this->adresse; } } $personnes = [new Personne(),new Personne()]; $properties = ['nom', 'prenom', 'isMajeur', 'adresse']; $extracted = \UnicaenVue\Axios\AxiosExtractor::extract($personnes,$properties); var_dump($extracted); No newline at end of file echo "Il y a $minutes minutes de différences";
front/Mission/Suivi.vue +10 −2 Changes for front/Mission/Suivi.vue: 10 added lines, 2 removed lines. Original line number Diff line number Diff line Loading @@ -45,7 +45,11 @@ export default { addVolumeHoraire(dateObj, event) { event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-saisie', {intervenant:this.intervenant}); const urlParams = { intervenant:this.intervenant, date:dateObj.toISOString().slice(0,10) // date au format Y-m-d }; event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-ajout/:date', urlParams); modAjax(event.currentTarget, (widget) => { this.refresh(); }); Loading @@ -53,7 +57,11 @@ export default { editVolumeHoraire(calEvent, event) { event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-saisie/:guid', {intervenant:this.intervenant,guid:calEvent.guid}); const urlParams = { intervenant:this.intervenant, id:calEvent.id }; event.currentTarget.dataset.url = unicaenVue.url('intervenant/:intervenant/missions-suivi-modification/:id', urlParams); modAjax(event.currentTarget, (widget) => { this.refresh(); }); Loading
module/Mission/config/module.config.php +10 −3 Changes for module/Mission/config/module.config.php: 10 added lines, 3 removed lines. Original line number Diff line number Diff line Loading @@ -37,10 +37,17 @@ return [ 'privileges' => Privileges::MISSION_VISUALISATION, //'assertion' => Assertion\MissionAssertion::class, ], 'missions-suivi-saisie' => [ 'route' => '/:intervenant/missions-suivi-saisie[/:guid]', 'missions-suivi-ajout' => [ 'route' => '/:intervenant/missions-suivi-ajout[/:date]', 'controller' => MissionController::class, 'action' => 'suivi-saisie', 'action' => 'suivi-ajout', 'privileges' => Privileges::MISSION_EDITION_REALISE, //'assertion' => Assertion\MissionAssertion::class, ], 'missions-suivi-modification' => [ 'route' => '/:intervenant/missions-suivi-modification/:volumeHoraireMission', 'controller' => MissionController::class, 'action' => 'suivi-modification', 'privileges' => Privileges::MISSION_EDITION_REALISE, //'assertion' => Assertion\MissionAssertion::class, ], Loading
module/Mission/src/Controller/MissionController.php +39 −11 Changes for module/Mission/src/Controller/MissionController.php: 39 added lines, 11 removed lines. Original line number Diff line number Diff line Loading @@ -12,10 +12,10 @@ use Laminas\View\Model\JsonModel; use Laminas\View\Model\ViewModel; use Mission\Entity\Db\Mission; use Mission\Entity\Db\VolumeHoraireMission; use Mission\Entity\MissionSuivi; use Mission\Form\MissionFormAwareTrait; use Mission\Form\MissionSuiviFormAwareTrait; use Mission\Service\MissionServiceAwareTrait; use Service\Service\TypeVolumeHoraireServiceAwareTrait; use UnicaenVue\Axios\AxiosExtractor; use UnicaenVue\View\Model\AxiosModel; use UnicaenVue\View\Model\VueModel; Loading @@ -34,6 +34,7 @@ class MissionController extends AbstractController use ValidationServiceAwareTrait; use WorkflowServiceAwareTrait; use MissionSuiviFormAwareTrait; use TypeVolumeHoraireServiceAwareTrait; /** Loading Loading @@ -147,18 +148,45 @@ class MissionController extends AbstractController * * @return ViewModel */ public function suiviSaisieAction(): ViewModel public function suiviAjoutAction(): ViewModel { /** @var Intervenant $intervenant */ $intervenant = $this->getEvent()->getParam('intervenant'); $guid = $this->params()->fromRoute('guid', null); $date = $this->params()->fromRoute('date'); if ($guid) { $missionSuivi = $this->getServiceMission()->suivi($intervenant, $guid); $volumeHoraireMission = new VolumeHoraireMission(); $volumeHoraireMission->setTypeVolumeHoraire($this->getServiceTypeVolumeHoraire()->getRealise()); $volumeHoraireMission->setDate($date); return $this->suiviSaisieAction($intervenant, $volumeHoraireMission); } /** * Modifie une mission (form) * * @return ViewModel */ public function suiviModificationAction(): ViewModel { /** @var Intervenant $intervenant */ $intervenant = $this->getEvent()->getParam('intervenant'); $volumeHoraireMissionId = $this->params()->fromRoute('volumeHoraireMission', null); $volumeHoraireMission = $this->getServiceMission()->suivi($intervenant, $volumeHoraireMissionId); return $this->suiviSaisieAction($intervenant, $volumeHoraireMission); } protected function suiviSaisieAction(Intervenant $intervenant, VolumeHoraireMission $volumeHoraireMission) { if ($volumeHoraireMission->getId()) { $title = 'Modification d\'un suivi de mission'; } else { $missionSuivi = new MissionSuivi(); $title = 'Ajout d\'un suivi de mission'; } Loading @@ -166,13 +194,13 @@ class MissionController extends AbstractController $form->setIntervenant($intervenant); $form->build(); $form->bindRequestSave($missionSuivi, $this->getRequest(), function ($missionSuivi) { $this->getServiceMission()->saveSuivi($missionSuivi); $this->updateTableauxBord($missionSuivi->getMission()); $form->bindRequestSave($volumeHoraireMission, $this->getRequest(), function ($vhm) { $this->getServiceMission()->saveVolumeHoraire($vhm); $this->updateTableauxBord($vhm->getMission()); $this->flashMessenger()->addSuccessMessage('Suivi bien enregistré'); }); // on passe le data-guid pour pouvoir le récupérer dans la vue et mettre à jour la liste $form->setAttribute('data-guid', $missionSuivi->guid()); // on passe l'id pour pouvoir le récupérer dans la vue et mettre à jour la liste $form->setAttribute('data-id', $volumeHoraireMission->getId()); $vm = new ViewModel(); $vm->setTemplate('mission/suivi-saisie'); Loading