Commit 7da1c0ad authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Preparation des controllers, services, form pour les tableaus de bord

parent 958d1885
Loading
Loading
Loading
Loading
Loading
+85 −0
Original line number Diff line number Diff line
<?php

use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
use UnicaenIndicateur\Controller\TableauDeBordController;
use UnicaenIndicateur\Controller\TableauDeBordControllerFactory;
use UnicaenIndicateur\Form\TableauDeBord\TableauDeBordForm;
use UnicaenIndicateur\Form\TableauDeBord\TableauDeBordFormFactory;
use UnicaenIndicateur\Form\TableauDeBord\TableauDeBordHydrator;
use UnicaenIndicateur\Form\TableauDeBord\TableauDeBordHydratorFactory;
use UnicaenIndicateur\Provider\Privilege\IndicateurPrivileges;
use UnicaenIndicateur\Service\TableauDeBord\TableauDeBordService;
use UnicaenIndicateur\Service\TableauDeBord\TableauDeBordServiceFactory;
use UnicaenPrivilege\Guard\PrivilegeController;

return [
    'bjyauthorize' => [
        'guards' => [
            PrivilegeController::class => [
                [
                    'controller' => TableauDeBordController::class,
                    'action' => [
                        'index',
                        'afficher',
                    ],
                    'privileges' => [
                        IndicateurPrivileges::AFFICHER,
                    ],
                ],
            ],

        ],
    ],

    'router'          => [
        'routes' => [
            'tableau-de-bord' => [
                'type'  => Literal::class,
                'options' => [
                    'route'    => '/tableau-de-bord',
                    'defaults' => [
                        'controller' => TableauDeBordController::class,
                        'action'     => 'index',
                    ],
                ],
                'may_terminate' => true,
                'child_routes' => [
                    'afficher' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/afficher/:tableau-de-bord',
                            'defaults' => [
                                'controller' => TableauDeBordController::class,
                                'action'     => 'afficher',
                            ],
                        ],
                        'may_terminate' => true,
                    ],
                ],
            ],
        ],
    ],

    'service_manager' => [
        'factories' => [
            TableauDeBordService::class => TableauDeBordServiceFactory::class,
        ],
    ],
    'controllers'     => [
        'factories' => [
            TableauDeBordController::class => TableauDeBordControllerFactory::class,
        ],
    ],
    'form_elements' => [
        'factories' => [
            TableauDeBordForm::class => TableauDeBordFormFactory::class,
        ],
    ],
    'hydrators' => [
        'factories' => [
            TableauDeBordHydrator::class => TableauDeBordHydratorFactory::class,
        ],
    ]

];
 No newline at end of file
+24 −1
Original line number Diff line number Diff line
create table unicaen_indicateur
create table unicaen_indicateur_indicateur
(
    id serial constraint indicateur_pk primary key,
    titre                    varchar(256)                                                   not null,
@@ -20,3 +20,26 @@ create table unicaen_indicateur_abonnement

create unique index abonnement_id_uindex on unicaen_indicateur_abonnement (id);
create unique index indicateur_id_uindex on unicaen_indicateur (id);

create table unicaen_indicateur_tableaudebord
(
    id serial constraint unicaen_indicateur_tableaudebord_pk primary key,
    titre varchar(1024) default 'Tableau de bord' not null,
    description text,
    nb_column   integer       default 1                 not null
);

create table unicaen_indicateur_tableau_indicateur
(
    tableau_id    integer not null
        constraint unicaen_indicateur_tableau_indicateur_tableaudebord_null_fk
            references unicaen_indicateur_tableaudebord (id)
            on delete cascade,
    indicateur_id integer not null
        constraint unicaen_indicateur_tableau_indicateur_indicateur_null_fk
            references unicaen_indicateur_indicateur (id)
            on delete cascade,
    constraint unicaen_indicateur_tableau_indicateur_pk
        primary key (tableau_id, indicateur_id)
);
+30 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use UnicaenIndicateur\Service\TableauDeBord\TableauDeBordServiceAwareTrait;

class TableauDeBordController extends AbstractActionController
{
    use TableauDeBordServiceAwareTrait;

    public function indexAction() : ViewModel
    {
        $tableaux = $this->getTableauDeBordService()->getTableauxdeBord();

        return new ViewModel([
            'tableaux' => $tableaux,
        ]);
    }

    public function afficherAction() : ViewModel
    {
        $tableau = $this->getTableauDeBordService()->getRequestedTableauDeBord($this);

        return new ViewModel([
            'tableau' => $tableau,
        ]);
    }
}
 No newline at end of file
+29 −0
Original line number Diff line number Diff line
<?php

namespace UnicaenIndicateur\Controller;

use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Container\NotFoundExceptionInterface;
use UnicaenIndicateur\Entity\Db\TableauDeBord;
use UnicaenIndicateur\Service\TableauDeBord\TableauDeBordService;

class TableauDeBordControllerFactory {

    /**
     * @param ContainerInterface $container
     * @return TableauDeBordController
     * @throws ContainerExceptionInterface
     * @throws NotFoundExceptionInterface
     */
    public function __invoke(ContainerInterface $container) : TableauDeBordController
    {
        /**
         * @var TableauDeBordService $tableauService
         */
        $tableauService = $container->get(TableauDeBordService::class);

        $controller = new TableauDeBordController();
        return $controller;
    }
}
 No newline at end of file
+15 −0
Original line number Diff line number Diff line
@@ -21,10 +21,12 @@ class Indicateur {
    private ?string $viewId = null;
    private ?string $entity = null;
    private Collection $abonnements;
    private Collection $tableaux;

    public function __construct()
    {
        $this->abonnements = new ArrayCollection();
        $this->tableaux = new ArrayCollection();
    }

    public function getId() : ?int
@@ -92,6 +94,8 @@ class Indicateur {
        $this->entity = $entity;
    }

    /** Abonnements **************************************************************** */

    /**
     * @return Abonnement[]
     */
@@ -114,4 +118,15 @@ class Indicateur {
    {
        return $this->abonnements->contains($abonnement);
    }

    /** Tableau *****************************************************************/

    /**
     * @return TableauDeBord[]
     */
    public function getTableauxDeBord() : array
    {
        return $this->tableaux->toArray();
    }

}
 No newline at end of file
Loading