Loading SQL/01_schemas.sql +33 −1 Original line number Diff line number Diff line Loading @@ -325,3 +325,35 @@ from atelier_programme prg left join site_ville sv on ss.ville_id = sv.id order by prg.id; ; /* etudiant import etablissement */ /* "école supérieure d'arts & médias ",ESAM */ drop table public.etudiant_etablissement; create table public.etudiant_etablissement ( id integer default nextval('etudiant_etablissement_id_seq'::regclass) not null constraint etudiant_etablissement_pk primary key, libelle varchar(256) not null, sigle varchar(20) not null, histo_createur_id integer not null constraint formation_groupe_createur_fk references public.unicaen_utilisateur_user, histo_creation timestamp not null, histo_modificateur_id integer constraint formation_groupe_modificateur_fk references public.unicaen_utilisateur_user, histo_modification timestamp, histo_destructeur_id integer constraint formation_groupe_destructeur_fk references public.unicaen_utilisateur_user, histo_destruction timestamp ); alter table public.etudiant_etablissement owner to ad_suac_pp; module/Etudiant/config/merged/etablissement.config.php 0 → 100644 +180 −0 Original line number Diff line number Diff line <?php use Etudiant\Controller\EtablissementController; use Etudiant\Controller\EtablissementControllerFactory; use Etudiant\Form\Etablissement\EtablissementForm; use Etudiant\Form\Etablissement\EtablissementFormFactory; use Etudiant\Form\Etablissement\EtablissementHydrator; use Etudiant\Form\Etablissement\EtablissementHydratorFactory; use Etudiant\Provider\Privilege\EtablissementPrivileges; use Etudiant\Service\Etablissement\EtablissementService; use Etudiant\Service\Etablissement\EtablissementServiceFactory; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use UnicaenPrivilege\Guard\PrivilegeController; return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => EtablissementController::class, 'action' => [ 'index', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_INDEX, ], ], [ 'controller' => EtablissementController::class, 'action' => [ 'afficher', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_AFFICHER, ], ], [ 'controller' => EtablissementController::class, 'action' => [ 'ajouter', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_AJOUTER, ], ], [ 'controller' => EtablissementController::class, 'action' => [ 'modifier', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_MODIFIER, ], ], [ 'controller' => EtablissementController::class, 'action' => [ 'supprimer', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_SUPPRIMER, ], ], ], ], ], 'router' => [ 'routes' => [ 'etudiant' => [ 'child_routes' => [ 'etablissement' => [ 'type' => Literal::class, 'options' => [ 'route' => '/etablissement', 'defaults' => [ /** @see EtablissementController::indexAction() */ 'controller' => EtablissementController::class, 'action' => 'index', ], ], 'may_terminate' => true, 'child_routes' => [ 'afficher' => [ 'type' => Segment::class, 'options' => [ 'route' => '/afficher/:etablissement', 'defaults' => [ /** @see EtablissementController::afficherAction() */ 'action' => 'afficher', ], ], ], 'ajouter' => [ 'type' => Literal::class, 'options' => [ 'route' => '/ajouter', 'defaults' => [ /** @see EtablissementController::ajouterAction() */ 'action' => 'ajouter', ], ], ], 'modifier' => [ 'type' => Segment::class, 'options' => [ 'route' => '/modifier/:etablissement', 'defaults' => [ /** @see EtablissementController::modifierAction() */ 'action' => 'modifier', ], ], ], 'supprimer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer/:etablissement', 'defaults' => [ /** @see EtablissementController::supprimerAction() */ 'action' => 'supprimer', ], ], ], ], ], ], ], ], ], 'navigation' => [ 'default' => [ 'home' => [ 'pages' => [ 'gestion' => [ 'pages' => [ 'etablissement' => [ 'label' => "Gestion des établissements", 'route' => 'etudiant/etablissement', 'resource' => PrivilegeController::getResourceId(EtablissementController::class, 'index'), 'order' => 1000 + 400, 'icon' => 'fas fa-angle-right', ], ], ], ], ], ], ], 'controllers' => [ 'factories' => [ EtablissementController::class => EtablissementControllerFactory::class, ], ], 'service_manager' => [ 'factories' => [ EtablissementService::class => EtablissementServiceFactory::class, ], ], 'form_elements' => [ 'factories' => [ EtablissementForm::class => EtablissementFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ EtablissementHydrator::class => EtablissementHydratorFactory::class, ], ], 'view_helpers' => [ 'invokables' => [ ], 'factories' => [ ], 'aliases' => [ ], ], ]; module/Etudiant/src/Controller/EtablissementController.php 0 → 100644 +101 −0 Original line number Diff line number Diff line <?php namespace Etudiant\Controller; use Etudiant\Entity\Db\Etablissement; use Etudiant\Form\Etablissement\EtablissementFormAwareTrait; use Etudiant\Service\Etablissement\EtablissementServiceAwareTrait; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class EtablissementController extends AbstractActionController { use EtablissementServiceAwareTrait; use EtablissementFormAwareTrait; public function indexAction(): ViewModel { $etablissements = $this->getEtablissementService()->getEtablissements(); return new ViewModel([ 'etablissements' => $etablissements, ]); } public function afficherAction(): ViewModel { $etablissement = $this->getEtablissementService()->getRequestedEtablissement($this); return new ViewModel([ 'etablissement' => $etablissement, ]); } public function ajouterAction(): ViewModel { $etablissement = new Etablissement(); $form = $this->getEtablissementForm(); $form->setAttribute('action', $this->url()->fromRoute('etudiant/etablissement/ajouter')); $form->setAttribute('method', 'post'); $form->bind($etablissement); if ($this->getRequest()->isPost()) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $this->getEtablissementService()->create($etablissement); exit(); } } $vm = new ViewModel(); $vm->setTemplate('default/default-form'); $vm->setVariables([ 'title' => 'Ajouter un établissement', 'form' => $form, ]); return $vm; } public function modifierAction(): ViewModel { $etablissement = $this->getEtablissementService()->getRequestedEtablissement($this); $form = $this->getEtablissementForm(); $form->setAttribute('action', $this->url()->fromRoute('etudiant/etablissement/modifier', ['etablissement' => $etablissement->getId()])); $form->setAttribute('method', 'post'); $form->bind($etablissement); if ($this->getRequest()->isPost()) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $this->getEtablissementService()->update($etablissement); exit(); } } $vm = new ViewModel(); $vm->setTemplate('default/default-form'); $vm->setVariables([ 'title' => 'Modifier un établissement', 'form' => $form, ]); return $vm; } public function supprimerAction(): ViewModel { $etablissement = $this->getEtablissementService()->getRequestedEtablissement($this); if ($this->getRequest()->isPost()) { $data = $this->getRequest()->getPost(); if ($data["reponse"] === "oui") $this->getEtablissementService()->delete($etablissement); exit(); } $vm = new ViewModel(); $vm->setTemplate('default/confirmation'); $vm->setVariables([ 'title' => "Suppression de l'établissement [" . $etablissement->getLibelle() . "]", 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('etudiant/etablissement/supprimer', ["etablissement" => $etablissement->getId()], [], true), ]); return $vm; } } No newline at end of file module/Etudiant/src/Controller/EtablissementControllerFactory.php 0 → 100644 +28 −0 Original line number Diff line number Diff line <?php namespace Etudiant\Controller; use Etudiant\Form\Etablissement\EtablissementForm; use Etudiant\Service\Etablissement\EtablissementService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; class EtablissementControllerFactory { /** * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container): EtablissementController { $etablissementService = $container->get(EtablissementService::class); $etablissementForm = $container->get('FormElementManager')->get(EtablissementForm::class); $controller = new EtablissementController(); $controller->setEtablissementService($etablissementService); $controller->setEtablissementForm($etablissementForm); return $controller; } } No newline at end of file module/Etudiant/src/Entity/Db/Etablissement.php 0 → 100644 +41 −0 Original line number Diff line number Diff line <?php namespace Etudiant\Entity\Db; use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait; class Etablissement implements HistoriqueAwareInterface { use HistoriqueAwareTrait; private ?int $id = null; private ?string $libelle = null; private ?string $sigle = null; public function getId(): ?int { return $this->id; } public function getLibelle(): ?string { return $this->libelle; } public function setLibelle(?string $libelle): void { $this->libelle = $libelle; } public function getSigle(): ?string { return $this->sigle; } public function setSigle(?string $sigle): void { $this->sigle = $sigle; } } No newline at end of file Loading
SQL/01_schemas.sql +33 −1 Original line number Diff line number Diff line Loading @@ -325,3 +325,35 @@ from atelier_programme prg left join site_ville sv on ss.ville_id = sv.id order by prg.id; ; /* etudiant import etablissement */ /* "école supérieure d'arts & médias ",ESAM */ drop table public.etudiant_etablissement; create table public.etudiant_etablissement ( id integer default nextval('etudiant_etablissement_id_seq'::regclass) not null constraint etudiant_etablissement_pk primary key, libelle varchar(256) not null, sigle varchar(20) not null, histo_createur_id integer not null constraint formation_groupe_createur_fk references public.unicaen_utilisateur_user, histo_creation timestamp not null, histo_modificateur_id integer constraint formation_groupe_modificateur_fk references public.unicaen_utilisateur_user, histo_modification timestamp, histo_destructeur_id integer constraint formation_groupe_destructeur_fk references public.unicaen_utilisateur_user, histo_destruction timestamp ); alter table public.etudiant_etablissement owner to ad_suac_pp;
module/Etudiant/config/merged/etablissement.config.php 0 → 100644 +180 −0 Original line number Diff line number Diff line <?php use Etudiant\Controller\EtablissementController; use Etudiant\Controller\EtablissementControllerFactory; use Etudiant\Form\Etablissement\EtablissementForm; use Etudiant\Form\Etablissement\EtablissementFormFactory; use Etudiant\Form\Etablissement\EtablissementHydrator; use Etudiant\Form\Etablissement\EtablissementHydratorFactory; use Etudiant\Provider\Privilege\EtablissementPrivileges; use Etudiant\Service\Etablissement\EtablissementService; use Etudiant\Service\Etablissement\EtablissementServiceFactory; use Laminas\Router\Http\Literal; use Laminas\Router\Http\Segment; use UnicaenPrivilege\Guard\PrivilegeController; return [ 'bjyauthorize' => [ 'guards' => [ PrivilegeController::class => [ [ 'controller' => EtablissementController::class, 'action' => [ 'index', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_INDEX, ], ], [ 'controller' => EtablissementController::class, 'action' => [ 'afficher', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_AFFICHER, ], ], [ 'controller' => EtablissementController::class, 'action' => [ 'ajouter', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_AJOUTER, ], ], [ 'controller' => EtablissementController::class, 'action' => [ 'modifier', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_MODIFIER, ], ], [ 'controller' => EtablissementController::class, 'action' => [ 'supprimer', ], 'privileges' => [ EtablissementPrivileges::ETABLISSEMENT_SUPPRIMER, ], ], ], ], ], 'router' => [ 'routes' => [ 'etudiant' => [ 'child_routes' => [ 'etablissement' => [ 'type' => Literal::class, 'options' => [ 'route' => '/etablissement', 'defaults' => [ /** @see EtablissementController::indexAction() */ 'controller' => EtablissementController::class, 'action' => 'index', ], ], 'may_terminate' => true, 'child_routes' => [ 'afficher' => [ 'type' => Segment::class, 'options' => [ 'route' => '/afficher/:etablissement', 'defaults' => [ /** @see EtablissementController::afficherAction() */ 'action' => 'afficher', ], ], ], 'ajouter' => [ 'type' => Literal::class, 'options' => [ 'route' => '/ajouter', 'defaults' => [ /** @see EtablissementController::ajouterAction() */ 'action' => 'ajouter', ], ], ], 'modifier' => [ 'type' => Segment::class, 'options' => [ 'route' => '/modifier/:etablissement', 'defaults' => [ /** @see EtablissementController::modifierAction() */ 'action' => 'modifier', ], ], ], 'supprimer' => [ 'type' => Segment::class, 'options' => [ 'route' => '/supprimer/:etablissement', 'defaults' => [ /** @see EtablissementController::supprimerAction() */ 'action' => 'supprimer', ], ], ], ], ], ], ], ], ], 'navigation' => [ 'default' => [ 'home' => [ 'pages' => [ 'gestion' => [ 'pages' => [ 'etablissement' => [ 'label' => "Gestion des établissements", 'route' => 'etudiant/etablissement', 'resource' => PrivilegeController::getResourceId(EtablissementController::class, 'index'), 'order' => 1000 + 400, 'icon' => 'fas fa-angle-right', ], ], ], ], ], ], ], 'controllers' => [ 'factories' => [ EtablissementController::class => EtablissementControllerFactory::class, ], ], 'service_manager' => [ 'factories' => [ EtablissementService::class => EtablissementServiceFactory::class, ], ], 'form_elements' => [ 'factories' => [ EtablissementForm::class => EtablissementFormFactory::class, ], ], 'hydrators' => [ 'factories' => [ EtablissementHydrator::class => EtablissementHydratorFactory::class, ], ], 'view_helpers' => [ 'invokables' => [ ], 'factories' => [ ], 'aliases' => [ ], ], ];
module/Etudiant/src/Controller/EtablissementController.php 0 → 100644 +101 −0 Original line number Diff line number Diff line <?php namespace Etudiant\Controller; use Etudiant\Entity\Db\Etablissement; use Etudiant\Form\Etablissement\EtablissementFormAwareTrait; use Etudiant\Service\Etablissement\EtablissementServiceAwareTrait; use Laminas\Mvc\Controller\AbstractActionController; use Laminas\View\Model\ViewModel; class EtablissementController extends AbstractActionController { use EtablissementServiceAwareTrait; use EtablissementFormAwareTrait; public function indexAction(): ViewModel { $etablissements = $this->getEtablissementService()->getEtablissements(); return new ViewModel([ 'etablissements' => $etablissements, ]); } public function afficherAction(): ViewModel { $etablissement = $this->getEtablissementService()->getRequestedEtablissement($this); return new ViewModel([ 'etablissement' => $etablissement, ]); } public function ajouterAction(): ViewModel { $etablissement = new Etablissement(); $form = $this->getEtablissementForm(); $form->setAttribute('action', $this->url()->fromRoute('etudiant/etablissement/ajouter')); $form->setAttribute('method', 'post'); $form->bind($etablissement); if ($this->getRequest()->isPost()) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $this->getEtablissementService()->create($etablissement); exit(); } } $vm = new ViewModel(); $vm->setTemplate('default/default-form'); $vm->setVariables([ 'title' => 'Ajouter un établissement', 'form' => $form, ]); return $vm; } public function modifierAction(): ViewModel { $etablissement = $this->getEtablissementService()->getRequestedEtablissement($this); $form = $this->getEtablissementForm(); $form->setAttribute('action', $this->url()->fromRoute('etudiant/etablissement/modifier', ['etablissement' => $etablissement->getId()])); $form->setAttribute('method', 'post'); $form->bind($etablissement); if ($this->getRequest()->isPost()) { $form->setData($this->getRequest()->getPost()); if ($form->isValid()) { $this->getEtablissementService()->update($etablissement); exit(); } } $vm = new ViewModel(); $vm->setTemplate('default/default-form'); $vm->setVariables([ 'title' => 'Modifier un établissement', 'form' => $form, ]); return $vm; } public function supprimerAction(): ViewModel { $etablissement = $this->getEtablissementService()->getRequestedEtablissement($this); if ($this->getRequest()->isPost()) { $data = $this->getRequest()->getPost(); if ($data["reponse"] === "oui") $this->getEtablissementService()->delete($etablissement); exit(); } $vm = new ViewModel(); $vm->setTemplate('default/confirmation'); $vm->setVariables([ 'title' => "Suppression de l'établissement [" . $etablissement->getLibelle() . "]", 'text' => "La suppression est définitive êtes-vous sûr·e de vouloir continuer ?", 'action' => $this->url()->fromRoute('etudiant/etablissement/supprimer', ["etablissement" => $etablissement->getId()], [], true), ]); return $vm; } } No newline at end of file
module/Etudiant/src/Controller/EtablissementControllerFactory.php 0 → 100644 +28 −0 Original line number Diff line number Diff line <?php namespace Etudiant\Controller; use Etudiant\Form\Etablissement\EtablissementForm; use Etudiant\Service\Etablissement\EtablissementService; use Psr\Container\ContainerExceptionInterface; use Psr\Container\ContainerInterface; use Psr\Container\NotFoundExceptionInterface; class EtablissementControllerFactory { /** * @throws ContainerExceptionInterface * @throws NotFoundExceptionInterface */ public function __invoke(ContainerInterface $container): EtablissementController { $etablissementService = $container->get(EtablissementService::class); $etablissementForm = $container->get('FormElementManager')->get(EtablissementForm::class); $controller = new EtablissementController(); $controller->setEtablissementService($etablissementService); $controller->setEtablissementForm($etablissementForm); return $controller; } } No newline at end of file
module/Etudiant/src/Entity/Db/Etablissement.php 0 → 100644 +41 −0 Original line number Diff line number Diff line <?php namespace Etudiant\Entity\Db; use UnicaenUtilisateur\Entity\Db\HistoriqueAwareInterface; use UnicaenUtilisateur\Entity\Db\HistoriqueAwareTrait; class Etablissement implements HistoriqueAwareInterface { use HistoriqueAwareTrait; private ?int $id = null; private ?string $libelle = null; private ?string $sigle = null; public function getId(): ?int { return $this->id; } public function getLibelle(): ?string { return $this->libelle; } public function setLibelle(?string $libelle): void { $this->libelle = $libelle; } public function getSigle(): ?string { return $this->sigle; } public function setSigle(?string $sigle): void { $this->sigle = $sigle; } } No newline at end of file