Commit 0a3cb6c2 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Correction route console + categorie

parent 02d0d176
Loading
Loading
Loading
Loading
Loading
+42 −1
Original line number Diff line number Diff line
@@ -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',
                                    ],
                                ],
                            ],
                        ],
                    ],
                ],
            ],
+85 −0
Original line number Diff line number Diff line
@@ -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;

@@ -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
+2 −2
Original line number Diff line number Diff line
@@ -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;

    }
+18 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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,
        ]);
+5 −0
Original line number Diff line number Diff line
@@ -76,4 +76,9 @@ class Categorie {
        $this->indicateurs = $indicateurs;
    }

    public function setId(int $id)
    {
        $this->id = $id;
    }

}
 No newline at end of file
Loading