Loading config/merged/categorie.config.php +42 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,48 @@ return [ ], ], 'may_terminate' => true, 'child_routes' => [], 'child_routes' => [ 'afficher' => [ 'type' => Segment::class, 'options' => [ 'route' => '/afficher/:categorie', 'defaults' => [ /** @see CategorieController::afficherAction() */ 'action' => 'afficher', ], ], ], 'ajouter' => [ 'type' => Literal::class, 'options' => [ 'route' => '/ajouter', 'defaults' => [ /** @see CategorieController::ajouterAction() */ 'action' => 'ajouter', ], ], ], 'modifier' => [ 'type' => Segment::class, 'options' => [ 'route' => '/modifier/:categorie', 'defaults' => [ /** @see CategorieController::modifierAction() */ 'action' => 'modifier', ], ], ], 'supprimer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer/:categorie', 'defaults' => [ /** @see CategorieController::supprimerAction() */ 'action' => 'supprimer', ], ], ], ], ], ], ], Loading src/UnicaenIndicateur/Controller/CategorieController.php +85 −0 Original line number Diff line number Diff line Loading @@ -2,8 +2,10 @@ namespace UnicaenIndicateur\Controller; use Laminas\Http\Request; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use UnicaenIndicateur\Entity\Db\Categorie; use UnicaenIndicateur\Form\Categorie\CategorieFormAwareTrait; use UnicaenIndicateur\Service\Categorie\CategorieServiceAwareTrait; Loading @@ -21,8 +23,91 @@ class CategorieController extends AbstractActionController ]); } public function afficherAction(): ViewModel { $categorie = $this->getCategorieService()->getRequestedCategorie($this); return new ViewModel([ 'categorie' => $categorie, ]); } public function ajouterAction(): ViewModel { $categorie = new Categorie(); $form = $this->getCategorieForm(); $form->setAttribute('action', $this->url()->fromRoute('indicateur/categorie/ajouter', [], [], true)); $form->bind($categorie); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getCategorieService()->create($categorie); exit(); } } $vm = new ViewModel([ 'title' => "Ajout d'une catégorie d'indicateur", 'form' => $form, ]); $vm->setTemplate('unicaen-indicateur/default/default-form'); return $vm; } public function modifierAction(): ViewModel { $categorie = $this->getCategorieService()->getRequestedCategorie($this); $form = $this->getCategorieForm(); $form->setAttribute('action', $this->url()->fromRoute('indicateur/categorie/modifier', ['categorie' => $categorie->getId()], [], true)); $form->bind($categorie); $form->setOldCode($categorie->getCode()); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getCategorieService()->update($categorie); exit(); } } $vm = new ViewModel([ 'title' => "Modification d'une catégorie d'indicateur", 'form' => $form, ]); $vm->setTemplate('unicaen-indicateur/default/default-form'); return $vm; } public function supprimerAction(): ViewModel { $categorie = $this->getCategorieService()->getRequestedCategorie($this); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") { $this->getCategorieService()->delete($categorie); } exit(); } $vm = new ViewModel(); if ($categorie !== null) { $vm->setTemplate('unicaen-indicateur/default/confirmation'); $vm->setVariables([ 'title' => "Suppression de la catégorie " . $categorie->getLibelle(), 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('indicateur/categorie/supprimer', ["categorie" => $categorie->getId()], [], true), ]); } return $vm; } } No newline at end of file src/UnicaenIndicateur/Controller/CategorieControllerFactory.php +2 −2 Original line number Diff line number Diff line Loading @@ -21,11 +21,11 @@ class CategorieControllerFactory { * @var CategorieForm $categorieForm */ $categorieService = $container->get(CategorieService::class); // $categorieForm = $container->get('FormElementManager')->get(CategorieForm::class); $categorieForm = $container->get('FormElementManager')->get(CategorieForm::class); $controller = new CategorieController(); $controller->setCategorieService($categorieService); // $controller->setCategorieForm($categorieForm); $controller->setCategorieForm($categorieForm); return $controller; } Loading src/UnicaenIndicateur/Controller/IndicateurController.php +18 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ namespace UnicaenIndicateur\Controller; use DateTime; use Laminas\Http\Response; use UnicaenIndicateur\Entity\Db\Categorie; use UnicaenIndicateur\Entity\Db\Indicateur; use UnicaenIndicateur\Form\Indicateur\IndicateurFormAwareTrait; use UnicaenIndicateur\Service\Abonnement\AbonnementServiceAwareTrait; Loading @@ -29,12 +30,29 @@ class IndicateurController extends AbstractActionController { $user = $this->getUserService()->getConnectedUser(); $abonnements = $this->getAbonnementService()->getAbonnementsByUser($user); $sans = new Categorie(); $sans->setId(-1); $sans->setLibelle("Sans catégorie"); $sans->setOrdre(99999); $categories = []; $indicateursByCategorie = []; foreach ($indicateurs as $indicateur) { if ($indicateur->getCategorie()) { $categorie = $indicateur->getCategorie(); $categories[$categorie->getId()] = $categorie; $indicateursByCategorie[$categorie->getId()][] = $indicateur; } else { $categories[-1] = $sans; $indicateursByCategorie[-1][] = $indicateur; } } $array = []; foreach ($abonnements as $abonnement) { $array [$abonnement->getIndicateur()->getId()] = $abonnement; } usort($categories, function(Categorie $a, Categorie $b) { return $a->getOrdre() <=> $b->getOrdre(); }); return new ViewModel([ 'categories' => $categories, 'indicateursByCategorie' => $indicateursByCategorie, 'indicateurs' => $indicateurs, 'abonnements' => $array, ]); Loading src/UnicaenIndicateur/Entity/Db/Categorie.php +5 −0 Original line number Diff line number Diff line Loading @@ -76,4 +76,9 @@ class Categorie { $this->indicateurs = $indicateurs; } public function setId(int $id) { $this->id = $id; } } No newline at end of file Loading
config/merged/categorie.config.php +42 −1 Original line number Diff line number Diff line Loading @@ -70,7 +70,48 @@ return [ ], ], 'may_terminate' => true, 'child_routes' => [], 'child_routes' => [ 'afficher' => [ 'type' => Segment::class, 'options' => [ 'route' => '/afficher/:categorie', 'defaults' => [ /** @see CategorieController::afficherAction() */ 'action' => 'afficher', ], ], ], 'ajouter' => [ 'type' => Literal::class, 'options' => [ 'route' => '/ajouter', 'defaults' => [ /** @see CategorieController::ajouterAction() */ 'action' => 'ajouter', ], ], ], 'modifier' => [ 'type' => Segment::class, 'options' => [ 'route' => '/modifier/:categorie', 'defaults' => [ /** @see CategorieController::modifierAction() */ 'action' => 'modifier', ], ], ], 'supprimer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer/:categorie', 'defaults' => [ /** @see CategorieController::supprimerAction() */ 'action' => 'supprimer', ], ], ], ], ], ], ], Loading
src/UnicaenIndicateur/Controller/CategorieController.php +85 −0 Original line number Diff line number Diff line Loading @@ -2,8 +2,10 @@ namespace UnicaenIndicateur\Controller; use Laminas\Http\Request; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; use UnicaenIndicateur\Entity\Db\Categorie; use UnicaenIndicateur\Form\Categorie\CategorieFormAwareTrait; use UnicaenIndicateur\Service\Categorie\CategorieServiceAwareTrait; Loading @@ -21,8 +23,91 @@ class CategorieController extends AbstractActionController ]); } public function afficherAction(): ViewModel { $categorie = $this->getCategorieService()->getRequestedCategorie($this); return new ViewModel([ 'categorie' => $categorie, ]); } public function ajouterAction(): ViewModel { $categorie = new Categorie(); $form = $this->getCategorieForm(); $form->setAttribute('action', $this->url()->fromRoute('indicateur/categorie/ajouter', [], [], true)); $form->bind($categorie); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getCategorieService()->create($categorie); exit(); } } $vm = new ViewModel([ 'title' => "Ajout d'une catégorie d'indicateur", 'form' => $form, ]); $vm->setTemplate('unicaen-indicateur/default/default-form'); return $vm; } public function modifierAction(): ViewModel { $categorie = $this->getCategorieService()->getRequestedCategorie($this); $form = $this->getCategorieForm(); $form->setAttribute('action', $this->url()->fromRoute('indicateur/categorie/modifier', ['categorie' => $categorie->getId()], [], true)); $form->bind($categorie); $form->setOldCode($categorie->getCode()); $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); $form->setData($data); if ($form->isValid()) { $this->getCategorieService()->update($categorie); exit(); } } $vm = new ViewModel([ 'title' => "Modification d'une catégorie d'indicateur", 'form' => $form, ]); $vm->setTemplate('unicaen-indicateur/default/default-form'); return $vm; } public function supprimerAction(): ViewModel { $categorie = $this->getCategorieService()->getRequestedCategorie($this); /** @var Request $request */ $request = $this->getRequest(); if ($request->isPost()) { $data = $request->getPost(); if ($data["reponse"] === "oui") { $this->getCategorieService()->delete($categorie); } exit(); } $vm = new ViewModel(); if ($categorie !== null) { $vm->setTemplate('unicaen-indicateur/default/confirmation'); $vm->setVariables([ 'title' => "Suppression de la catégorie " . $categorie->getLibelle(), 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('indicateur/categorie/supprimer', ["categorie" => $categorie->getId()], [], true), ]); } return $vm; } } No newline at end of file
src/UnicaenIndicateur/Controller/CategorieControllerFactory.php +2 −2 Original line number Diff line number Diff line Loading @@ -21,11 +21,11 @@ class CategorieControllerFactory { * @var CategorieForm $categorieForm */ $categorieService = $container->get(CategorieService::class); // $categorieForm = $container->get('FormElementManager')->get(CategorieForm::class); $categorieForm = $container->get('FormElementManager')->get(CategorieForm::class); $controller = new CategorieController(); $controller->setCategorieService($categorieService); // $controller->setCategorieForm($categorieForm); $controller->setCategorieForm($categorieForm); return $controller; } Loading
src/UnicaenIndicateur/Controller/IndicateurController.php +18 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ namespace UnicaenIndicateur\Controller; use DateTime; use Laminas\Http\Response; use UnicaenIndicateur\Entity\Db\Categorie; use UnicaenIndicateur\Entity\Db\Indicateur; use UnicaenIndicateur\Form\Indicateur\IndicateurFormAwareTrait; use UnicaenIndicateur\Service\Abonnement\AbonnementServiceAwareTrait; Loading @@ -29,12 +30,29 @@ class IndicateurController extends AbstractActionController { $user = $this->getUserService()->getConnectedUser(); $abonnements = $this->getAbonnementService()->getAbonnementsByUser($user); $sans = new Categorie(); $sans->setId(-1); $sans->setLibelle("Sans catégorie"); $sans->setOrdre(99999); $categories = []; $indicateursByCategorie = []; foreach ($indicateurs as $indicateur) { if ($indicateur->getCategorie()) { $categorie = $indicateur->getCategorie(); $categories[$categorie->getId()] = $categorie; $indicateursByCategorie[$categorie->getId()][] = $indicateur; } else { $categories[-1] = $sans; $indicateursByCategorie[-1][] = $indicateur; } } $array = []; foreach ($abonnements as $abonnement) { $array [$abonnement->getIndicateur()->getId()] = $abonnement; } usort($categories, function(Categorie $a, Categorie $b) { return $a->getOrdre() <=> $b->getOrdre(); }); return new ViewModel([ 'categories' => $categories, 'indicateursByCategorie' => $indicateursByCategorie, 'indicateurs' => $indicateurs, 'abonnements' => $array, ]); Loading
src/UnicaenIndicateur/Entity/Db/Categorie.php +5 −0 Original line number Diff line number Diff line Loading @@ -76,4 +76,9 @@ class Categorie { $this->indicateurs = $indicateurs; } public function setId(int $id) { $this->id = $id; } } No newline at end of file