Skip to content
Snippets Groups Projects
Commit d17bc60e authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

V0 de unicaenValidation

parent 58e55792
No related branches found
No related tags found
No related merge requests found
Pipeline #15651 passed
Showing
with 1198 additions and 0 deletions
image: registre.unicaen.fr:5000/unicaen-dev-php7.3-apache
stages:
- publish
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- vendor/
update-satis:
stage: publish
script:
- curl https://gest.unicaen.fr/packagist/update
<?php
namespace UnicaenValidation;
//use UnicaenUtilisateur\Event\UserRoleSelectedEventListener;
use Laminas\Config\Factory as ConfigFactory;
use Laminas\Mvc\ModuleRouteListener;
use Laminas\Mvc\MvcEvent;
use Laminas\Stdlib\ArrayUtils;
use Laminas\Stdlib\Glob;
class Module
{
public function onBootstrap(MvcEvent $e)
{
$e->getApplication()->getServiceManager()->get('translator');
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
}
public function getConfig()
{
$configInit = [
__DIR__ . '/config/module.config.php'
];
$configFiles = ArrayUtils::merge(
$configInit,
Glob::glob(__DIR__ . '/config/merged/{,*.}{config}.php', Glob::GLOB_BRACE)
);
return ConfigFactory::fromFiles($configFiles);
}
public function getAutoloaderConfig()
{
return array(
'Laminas\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
}
{
"name": "unicaen/validation",
"description": "Module de gestion de validation (type et instance)",
"repositories": [
{
"type": "composer",
"url": "https://gest.unicaen.fr/packagist"
}
],
"require": {
"unicaen/app": "^4.0",
"unicaen/privilege": "^4.0",
"laminas/laminas-dependency-plugin": "^2.1"
},
"autoload": {
"psr-0": [],
"classmap": [
"./Module.php"
]
}
}
<?php
namespace UnicaenValidation;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenValidation\Controller\ValidationInstanceController;
use UnicaenValidation\Controller\ValidationInstanceControllerFactory;
use UnicaenValidation\Form\ValidationInstance\ValidationInstanceForm;
use UnicaenValidation\Form\ValidationInstance\ValidationInstanceFormFactory;
use UnicaenValidation\Form\ValidationInstance\ValidationInstanceHydrator;
use UnicaenValidation\Form\ValidationInstance\ValidationInstanceHydratorFactory;
use UnicaenValidation\Provider\Privilege\ValidationinstancePrivileges;
use UnicaenValidation\Service\ValidationInstance\ValidationInstanceService;
use UnicaenValidation\Service\ValidationInstance\ValidationInstanceServiceFactory;
use UnicaenValidation\View\Helper\ValidationAfficherViewHelper;
use UnicaenValidation\View\Helper\ValidationBadgeViewHelper;
use UnicaenValidation\View\Helper\ValidationValiderViewHelperFactory;
use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
return [
'bjyauthorize' => [
'guards' => [
PrivilegeController::class => [
[
'controller' => ValidationInstanceController::class,
'action' => [
'index',
],
'privileges' => [
ValidationinstancePrivileges::VALIDATIONINSTANCE_AFFICHER,
],
],
[
'controller' => ValidationInstanceController::class,
'action' => [
'ajouter',
'modifier',
],
'privileges' => [
ValidationinstancePrivileges::VALIDATIONINSTANCE_MODIFIER,
],
],
[
'controller' => ValidationInstanceController::class,
'action' => [
'historiser',
'restaurer',
],
'privileges' => [
ValidationinstancePrivileges::VALIDATIONINSTANCE_HISTORISER,
],
],
[
'controller' => ValidationInstanceController::class,
'action' => [
'detruire',
],
'privileges' => [
ValidationinstancePrivileges::VALIDATIONINSTANCE_DETRUIRE,
],
],
],
],
],
'router' => [
'routes' => [
'validation' => [
'child_routes' => [
'instance' => [
'type' => Literal::class,
'options' => [
'route' => '/instance',
'defaults' => [
'controller' => ValidationInstanceController::class,
'action' => 'index',
],
],
'may_terminate' => true,
'child_routes' => [
'ajouter' => [
'type' => Literal::class,
'options' => [
'route' => '/ajouter',
'defaults' => [
'controller' => ValidationInstanceController::class,
'action' => 'ajouter',
],
],
],
'modifier' => [
'type' => Segment::class,
'options' => [
'route' => '/modifier/:validation',
'defaults' => [
'controller' => ValidationInstanceController::class,
'action' => 'modifier',
],
],
],
'historiser' => [
'type' => Segment::class,
'options' => [
'route' => '/historiser/:validation',
'defaults' => [
'controller' => ValidationInstanceController::class,
'action' => 'historiser',
],
],
],
'restaurer' => [
'type' => Segment::class,
'options' => [
'route' => '/restaurer/:validation',
'defaults' => [
'controller' => ValidationInstanceController::class,
'action' => 'restaurer',
],
],
],
'detruire' => [
'type' => Segment::class,
'options' => [
'route' => '/detruire/:validation',
'defaults' => [
'controller' => ValidationInstanceController::class,
'action' => 'detruire',
],
],
],
],
],
],
],
],
],
'service_manager' => [
'factories' => [
ValidationInstanceService::class => ValidationInstanceServiceFactory::class,
],
],
'controllers' => [
'factories' => [
ValidationInstanceController::class => ValidationInstanceControllerFactory::class,
],
],
'form_elements' => [
'factories' => [
ValidationInstanceForm::class => ValidationInstanceFormFactory::class,
],
],
'hydrators' => [
'factories' => [
ValidationInstanceHydrator::class => ValidationInstanceHydratorFactory::class,
],
],
'view_helpers' => [
'invokables' => [
'validationAfficher' => ValidationAfficherViewHelper::class,
'validationBadge' => ValidationBadgeViewHelper::class,
],
'factories' => [
'validationValider' => ValidationValiderViewHelperFactory::class,
]
]
];
\ No newline at end of file
<?php
namespace UnicaenValidation;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenValidation\Controller\ValidationTypeController;
use UnicaenValidation\Controller\ValidationTypeControllerFactory;
use UnicaenValidation\Form\ValidationType\ValidationTypeForm;
use UnicaenValidation\Form\ValidationType\ValidationTypeFormFactory;
use UnicaenValidation\Form\ValidationType\ValidationTypeHydrator;
use UnicaenValidation\Form\ValidationType\ValidationTypeHydratorFactory;
use UnicaenValidation\Provider\Privilege\ValidationtypePrivileges;
use UnicaenValidation\Service\ValidationType\ValidationTypeService;
use UnicaenValidation\Service\ValidationType\ValidationTypeServiceFactory;
use Laminas\Router\Http\Literal;
use Laminas\Router\Http\Segment;
return [
'bjyauthorize' => [
'guards' => [
PrivilegeController::class => [
[
'controller' => ValidationTypeController::class,
'action' => [
'index',
],
'privileges' => [
ValidationtypePrivileges::VALIDATIONTYPE_AFFICHER,
],
],
[
'controller' => ValidationTypeController::class,
'action' => [
'ajouter',
'modifier',
],
'privileges' => [
ValidationtypePrivileges::VALIDATIONTYPE_MODIFIER,
],
],
[
'controller' => ValidationTypeController::class,
'action' => [
'detruire',
],
'privileges' => [
ValidationtypePrivileges::VALIDATIONTYPE_DETRUIRE,
],
],
],
],
],
'router' => [
'routes' => [
'validation' => [
'child_routes' => [
'type' => [
'type' => Literal::class,
'options' => [
'route' => '/type',
'defaults' => [
'controller' => ValidationTypeController::class,
'action' => 'index',
],
],
'may_terminate' => true,
'child_routes' => [
'ajouter' => [
'type' => Literal::class,
'options' => [
'route' => '/ajouter',
'defaults' => [
'controller' => ValidationTypeController::class,
'action' => 'ajouter',
],
],
],
'modifier' => [
'type' => Segment::class,
'options' => [
'route' => '/modifier/:type',
'defaults' => [
'controller' => ValidationTypeController::class,
'action' => 'modifier',
],
],
],
'detruire' => [
'type' => Segment::class,
'options' => [
'route' => '/detruire/:type',
'defaults' => [
'controller' => ValidationTypeController::class,
'action' => 'detruire',
],
],
],
],
],
],
],
],
],
'service_manager' => [
'factories' => [
ValidationTypeService::class => ValidationTypeServiceFactory::class,
],
],
'controllers' => [
'factories' => [
ValidationTypeController::class => ValidationTypeControllerFactory::class,
],
],
'form_elements' => [
'factories' => [
ValidationTypeForm::class => ValidationTypeFormFactory::class,
],
],
'hydrators' => [
'factories' => [
ValidationTypeHydrator::class => ValidationTypeHydratorFactory::class,
],
]
];
\ No newline at end of file
<?php
use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
use Doctrine\ORM\Mapping\Driver\XmlDriver;
use Laminas\Router\Http\Literal;
use UnicaenPrivilege\Guard\PrivilegeController;
use UnicaenValidation\Controller\ValidationInstanceController;
use UnicaenValidation\Controller\ValidationTypeController;
return [
'doctrine' => [
'driver' => [
'orm_default' => [
'class' => MappingDriverChain::class,
'drivers' => [
'UnicaenValidation\Entity\Db' => 'orm_default_xml_driver',
],
],
'orm_default_xml_driver' => [
'class' => XmlDriver::class,
'cache' => 'apc',
'paths' => [
__DIR__ . '/../src/UnicaenValidation/Entity/Db/Mapping',
],
],
],
'cache' => [
'apc' => [
'namespace' => 'UNICAEN-VALIDATION__' . __NAMESPACE__,
],
],
],
'router' => [
'routes' => [
'validation' => [
'type' => Literal::class,
'options' => [
'route' => '/validation',
],
'may_terminate' => false,
],
],
],
'navigation' => [
'default' => [
'home' => [
'pages' => [
'administration' => [
'pages' => [
'validations' => [
'label' => 'Validations',
'route' => 'validation/type',
'resource' => PrivilegeController::getResourceId(ValidationTypeController::class, 'index'),
'order' => 1111,
'pages' => [
'instance' => [
'label' => 'Instances de validation',
'route' => 'validation/instance',
'resource' => PrivilegeController::getResourceId(ValidationInstanceController::class, 'index'),
'order' => 1112,
],
],
],
],
],
],
],
],
],
'service_manager' => [
'invokables' => [
],
'factories' => [
],
],
'view_manager' => [
'template_path_stack' => [
__DIR__ . '/../view',
],
],
'view_helpers' => [
'aliases' => [
],
'factories' => [
],
],
];
create table unicaen_validation_type
(
id serial
constraint unicaen_validation_type_pk
primary key,
code varchar(256) not null,
libelle varchar(1024) not null,
refusable boolean default true not null
);
create unique index unicaen_validation_type_id_uindex
on unicaen_validation_type (id);
create table unicaen_validation_instance
(
id serial
constraint unicaen_validation_instance_pk
primary key,
type_id integer not null
constraint unicaen_validation_instance_unicaen_validation_type_id_fk
references unicaen_validation_type
on delete cascade,
valeur text,
histo_creation timestamp not null,
histo_createur_id integer not null
constraint unicaen_validation_instance_createur_fk
references unicaen_utilisateur_user,
histo_modification timestamp not null,
histo_modificateur_id integer not null
constraint unicaen_validation_instance_modificateur_fk
references unicaen_utilisateur_user,
histo_destruction timestamp,
histo_destructeur_id integer
constraint unicaen_validation_instance_destructeur_fk
references unicaen_utilisateur_user
);
create unique index unicaen_validation_instance_id_uindex
on unicaen_validation_instance (id);
INSERT INTO unicaen_privilege_categorie (code, libelle, ordre, namespace)
VALUES ('validation_type', 'Gestion des types de validation', 10000, 'UnicaenValidation\Provider\Privilege');
INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
SELECT 'validationtype_afficher', 'Affichage des types de validations', 10 UNION
SELECT 'validationtype_modifier', 'Modifier un type de validation', 20 UNION
SELECT 'validationtype_detruire', 'Détruire un type de validation', 30
)
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
JOIN unicaen_privilege_categorie cp ON cp.CODE = 'validation_type'
;
INSERT INTO unicaen_privilege_categorie (code, libelle, ordre, namespace)
VALUES ('validation_instance', 'Gestion des instances de validation', 10000, 'UnicaenValidation\Provider\Privilege');
INSERT INTO unicaen_privilege_privilege(CATEGORIE_ID, CODE, LIBELLE, ORDRE)
WITH d(code, lib, ordre) AS (
SELECT 'validationinstance_afficher', 'Affichage des instances de validations', 10 UNION
SELECT 'validationinstance_modifier', 'Modifier une instance de validation', 30 UNION
SELECT 'validationinstance_historiser', 'Historiser/restaurer une instance de validation', 40 UNION
SELECT 'validationinstance_detruire', 'Détruire une isntance de validation', 50
)
SELECT cp.id, d.code, d.lib, d.ordre
FROM d
JOIN unicaen_privilege_categorie cp ON cp.CODE = 'validation_instance'
;
\ No newline at end of file
<?php
namespace UnicaenValidation\Controller;
use Laminas\Http\Response;
use UnicaenValidation\Entity\Db\ValidationInstance;
use UnicaenValidation\Form\ValidationInstance\ValidationInstanceFormAwareTrait;
use UnicaenValidation\Service\ValidationInstance\ValidationInstanceServiceAwareTrait;
use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait;
use Laminas\Http\Request;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class ValidationInstanceController extends AbstractActionController {
use ValidationInstanceServiceAwareTrait;
use ValidationTypeServiceAwareTrait;
use ValidationInstanceFormAwareTrait;
public function indexAction() : ViewModel
{
$instances = $this->getValidationInstanceService()->getValidationsInstances();
return new ViewModel([
'instances' => $instances,
]);
}
public function ajouterAction() : ViewModel
{
$instance = new ValidationInstance();
$form = $this->getValidationInstancForm();
$form->setAttribute('action', $this->url()->fromRoute('validation/instance/ajouter', [], [], true));
$form->bind($instance);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
$form->setData($data);
if ($form->isValid()) {
$this->getValidationInstanceService()->create($instance);
}
}
$vm = new ViewModel();
$vm->setTemplate('unicaen-validation/default/default-form');
$vm->setVariables([
'title' => "Ajout d'un type de validation",
'form' => $form,
]);
return $vm;
}
public function modifierAction() : ViewModel
{
$instance = $this->getValidationInstanceService()->getRequestedValidationInstance($this);
$form = $this->getValidationInstancForm();
$form->setAttribute('action', $this->url()->fromRoute('validation/instance/modifier', ['validation' => $instance->getId()], [], true));
$form->bind($instance);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
$form->setData($data);
if ($form->isValid()) {
$this->getValidationInstanceService()->update($instance);
}
}
$vm = new ViewModel();
$vm->setTemplate('unicaen-validation/default/default-form');
$vm->setVariables([
'title' => "Modification d'un type de validation",
'form' => $form,
]);
return $vm;
}
public function historiserAction() : Response
{
$instance = $this->getValidationInstanceService()->getRequestedValidationInstance($this);
$this->getValidationInstanceService()->historise($instance);
$retour = $this->params()->fromQuery('retour');
if ($retour) return $this->redirect()->toUrl($retour);
return $this->redirect()->toRoute('validation/instance');
}
public function restaurerAction() : Response
{
$instance = $this->getValidationInstanceService()->getRequestedValidationInstance($this);
$this->getValidationInstanceService()->restore($instance);
$retour = $this->params()->fromQuery('retour');
if ($retour) return $this->redirect()->toUrl($retour);
return $this->redirect()->toRoute('validation/instance');
}
public function detruireAction() : ViewModel
{
$instance = $this->getValidationInstanceService()->getRequestedValidationInstance($this);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
if ($data["reponse"] === "oui") $this->getValidationInstanceService()->delete($instance);
exit();
}
$vm = new ViewModel();
if ($instance !== null) {
$vm->setTemplate('unicaen-validation/default/confirmation');
$vm->setVariables([
'title' => "Suppression de la validation ",
'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
'action' => $this->url()->fromRoute('validation/instance/detruire', ["validation" => $instance->getId()], [], true),
]);
}
return $vm;
}
}
<?php
namespace UnicaenValidation\Controller;
use Interop\Container\ContainerInterface;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use UnicaenValidation\Form\ValidationInstance\ValidationInstanceForm;
use UnicaenValidation\Service\ValidationInstance\ValidationInstanceService;
use UnicaenValidation\Service\ValidationType\ValidationTypeService;
class ValidationInstanceControllerFactory {
/**
* @param ContainerInterface $container
* @return ValidationInstanceController
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function __invoke(ContainerInterface $container) : ValidationInstanceController
{
/**
* @var ValidationInstanceService $validationInstanceService
* @var ValidationTypeService $validationTypeService
*/
$validationInstanceService = $container->get(ValidationInstanceService::class);
$validationTypeService = $container->get(ValidationTypeService::class);
/**
* @var ValidationInstanceForm $validationInstanceForm
*/
$validationInstanceForm = $container->get('FormElementManager')->get(ValidationInstanceForm::class);
$controller = new ValidationInstanceController();
$controller->setValidationInstanceService($validationInstanceService);
$controller->setValidationInstancForm($validationInstanceForm);
$controller->setValidationTypeService($validationTypeService);
return $controller;
}
}
\ No newline at end of file
<?php
namespace UnicaenValidation\Controller;
use UnicaenValidation\Entity\Db\ValidationType;
use UnicaenValidation\Form\ValidationType\ValidationTypeFormAwareTrait;
use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait;
use Laminas\Http\Request;
use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
class ValidationTypeController extends AbstractActionController
{
use ValidationTypeServiceAwareTrait;
use ValidationTypeFormAwareTrait;
public function indexAction() : ViewModel
{
$types = $this->getValidationTypeService()->getValidationsTypes();
return new ViewModel([
'types' => $types,
]);
}
public function ajouterAction() : ViewModel
{
$type = new ValidationType();
$form = $this->getValidationTypeForm();
$form->setAttribute('action', $this->url()->fromRoute('validation/type/ajouter', [], [], true));
$form->bind($type);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
$form->setData($data);
if ($form->isValid()) {
$this->getValidationTypeService()->create($type);
}
}
$vm = new ViewModel();
$vm->setTemplate('unicaen-validation/default/default-form');
$vm->setVariables([
'title' => "Ajout d'un type de validation",
'form' => $form,
]);
return $vm;
}
public function modifierAction() : ViewModel
{
$type = $this->getValidationTypeService()->getRequestedValidationType($this);
$form = $this->getValidationTypeForm();
$form->setAttribute('action', $this->url()->fromRoute('validation/type/modifier', ['type' => $type->getId()], [], true));
$form->bind($type);
$form->get('old-code')->setValue($type->getCode());
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
$form->setData($data);
$oldcode = $type->getCode();
if ($form->isValid()) {
$this->getValidationTypeService()->update($type);
}
}
$vm = new ViewModel();
$vm->setTemplate('unicaen-validation/default/default-form');
$vm->setVariables([
'title' => "Modification d'un type de validation",
'form' => $form,
]);
return $vm;
}
public function detruireAction() : ViewModel
{
$type = $this->getValidationTypeService()->getRequestedValidationType($this);
/** @var Request $request */
$request = $this->getRequest();
if ($request->isPost()) {
$data = $request->getPost();
if ($data["reponse"] === "oui") $this->getValidationTypeService()->delete($type);
exit();
}
$vm = new ViewModel();
if ($type !== null) {
$vm->setTemplate('unicaen-validation/default/confirmation');
$vm->setVariables([
'title' => "Suppression du type de validation " . $type->getLibelle(),
'text' => "La suppression est définitive êtes-vous sûr&middot;e de vouloir continuer ?",
'action' => $this->url()->fromRoute('validation/type/detruire', ["type" => $type->getId()], [], true),
]);
}
return $vm;
}
}
\ No newline at end of file
<?php
namespace UnicaenValidation\Controller;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\ContainerInterface;
use Psr\Container\NotFoundExceptionInterface;
use UnicaenValidation\Form\ValidationType\ValidationTypeForm;
use UnicaenValidation\Service\ValidationType\ValidationTypeService;
class ValidationTypeControllerFactory {
/**
* @param ContainerInterface $container
* @return ValidationTypeController
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
*/
public function __invoke(ContainerInterface $container) : ValidationTypeController
{
/**
* @var ValidationTypeService $validationTypeService
*/
$validationTypeService = $container->get(ValidationTypeService::class);
/**
* @var ValidationTypeForm $validationTypeForm
*/
$validationTypeForm = $container->get('FormElementManager')->get(ValidationTypeForm::class);
$controller = new ValidationTypeController();
$controller->setValidationTypeService($validationTypeService);
$controller->setValidationTypeForm($validationTypeForm);
return $controller;
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="UnicaenValidation\Entity\Db\ValidationInstance" table="unicaen_validation_instance">
<id name="id" type="integer" column="id">
<generator strategy="IDENTITY"/>
</id>
<many-to-one target-entity="UnicaenValidation\Entity\Db\ValidationType" field="type">
<join-column name="type_id" referenced-column-name="id"/>
</many-to-one>
<field name="valeur" type="string" column="valeur" nullable="true"/>
<field name="histoCreation" type="datetime" column="histo_creation" nullable="false"/>
<field name="histoModification" type="datetime" column="histo_modification" nullable="false"/>
<field name="histoDestruction" type="datetime" column="histo_destruction" nullable="true"/>
<many-to-one target-entity="UnicaenUtilisateur\Entity\Db\User" field="histoCreateur">
<join-column name="histo_createur_id" referenced-column-name="ID"/>
</many-to-one>
<many-to-one target-entity="UnicaenUtilisateur\Entity\Db\User" field="histoModificateur">
<join-column name="histo_modificateur_id" referenced-column-name="ID"/>
</many-to-one>
<many-to-one target-entity="UnicaenUtilisateur\Entity\Db\User" field="histoDestructeur">
<join-column name="histo_destructeur_id" referenced-column-name="ID"/>
</many-to-one>
</entity>
</doctrine-mapping>
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="UnicaenValidation\Entity\Db\ValidationType" table="unicaen_validation_type">
<id name="id" type="integer" column="id">
<generator strategy="IDENTITY"/>
</id>
<field name="code" type="string" length="256" column="code" nullable="false"/>
<field name="libelle" type="string" length="1024" column="libelle" nullable="false"/>
<field name="refusable" type="boolean" column="refusable" nullable="false"/>
</entity>
</doctrine-mapping>
<?php
namespace UnicaenValidation\Entity\Db;
use UnicaenUtilisateur\Entity\HistoriqueAwareInterface;
use UnicaenUtilisateur\Entity\HistoriqueAwareTrait;
class ValidationInstance implements HistoriqueAwareInterface {
use HistoriqueAwareTrait;
private int $id;
private ?ValidationType $type = null;
private ?string $valeur = null;
/**
* @return int
*/
public function getId() : int
{
return $this->id;
}
/**
* @return ValidationType|null
*/
public function getType() : ?ValidationType
{
return $this->type;
}
/**
* @param ValidationType $type
* @return ValidationInstance
*/
public function setType(ValidationType $type) : ValidationInstance
{
$this->type = $type;
return $this;
}
/**
* @return string|null
*/
public function getValeur() : ?string
{
return $this->valeur;
}
/**
* @param string|null $valeur
* @return ValidationInstance
*/
public function setValeur(?string $valeur) : ValidationInstance
{
$this->valeur = $valeur;
return $this;
}
public function generateTooltipText() : string
{
$text = "Validation effectuée<br/>";
$text .= "par <span class='user'>".$this->histoModificateur->getDisplayName()."</span><br/>";
$text .= "le <span class='date'>".$this->getHistoModification()->format('d/m/Y')."</span>";
return $text;
}
}
\ No newline at end of file
<?php
namespace UnicaenValidation\Entity\Db;
class ValidationType {
private int $id;
private ?string $code = null;
private ?string $libelle = null;
private ?bool $refusable = null;
/**
* @return int
*/
public function getId() : int
{
return $this->id;
}
/**
* @return string|null
*/
public function getCode() : ?string
{
return $this->code;
}
/**
* @param string $code
* @return ValidationType
*/
public function setCode(string $code) : ValidationType
{
$this->code = $code;
return $this;
}
/**
* @return string|null
*/
public function getLibelle() : ?string
{
return $this->libelle;
}
/**
* @param string $libelle
* @return ValidationType
*/
public function setLibelle(string $libelle) : ValidationType
{
$this->libelle = $libelle;
return $this;
}
/**
* @return bool
*/
public function isRefusable() : bool
{
return $this->refusable??false;
}
/**
* @param bool $refusable
* @return ValidationType
*/
public function setRefusable(bool $refusable) : ValidationType
{
$this->refusable = $refusable;
return $this;
}
}
\ No newline at end of file
<?php
namespace UnicaenValidation\Entity;
use UnicaenValidation\Entity\Db\ValidationInstance;
interface HasValidationsInterface {
public function getValidations() : array;
public function addValidation(ValidationInstance $validation) : void;
public function removeValidation(ValidationInstance $validation) : void;
public function getValidationsByTypeCode(string $typeCode) : array ;
public function getValidationActiveByTypeCode(string $typeCode) : ?ValidationInstance;
}
\ No newline at end of file
<?php
namespace UnicaenValidation\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use UnicaenValidation\Entity\Db\ValidationInstance;
trait HasValidationsTrait {
private Collection $validations;
/**
* @return ValidationInstance[]
*/
public function getValidations() : array
{
return $this->validations->toArray();
}
/**
* @param ValidationInstance $validation
* @return void
*/
public function addValidation(ValidationInstance $validation) : void
{
$this->validations->add($validation);
}
/**
* @param ValidationInstance $validation
* @return void
*/
public function removeValidation(ValidationInstance $validation) : void
{
$this->validations->removeElement($validation);
}
/**
* @param string $typeCode
* @return array
*/
public function getValidationsByTypeCode(string $typeCode) : array
{
$result = [];
/** @var ValidationInstance $validation */
foreach ($this->validations as $validation) {
if ($validation->getType()->getCode() === $typeCode AND $validation->estNonHistorise()) $result[] = $validation;
}
return $result;
}
/**
* @param string $typeCode
* @return ValidationInstance|null
*/
public function getValidationActiveByTypeCode(string $typeCode) : ?ValidationInstance
{
/** @var ValidationInstance $validation */
foreach ($this->validations as $validation) {
if ($validation->getType()->getCode() === $typeCode AND $validation->estNonHistorise()) return $validation;
}
return null;
}
}
\ No newline at end of file
<?php
namespace UnicaenValidation\Form\ValidationInstance;
use UnicaenValidation\Service\ValidationType\ValidationTypeServiceAwareTrait;
use Laminas\Form\Element\Button;
use Laminas\Form\Element\Select;
use Laminas\Form\Element\Text;
use Laminas\Form\Form;
use Laminas\InputFilter\Factory;
class ValidationInstanceForm extends Form {
use ValidationTypeServiceAwareTrait;
public function init() {
//type
$this->add([
'type' => Select::class,
'name' => 'type',
'options' => [
'label' => "Type de validation* :",
'empty_option' => "Choisir un type de validation",
'value_options' => $this->getValidationTypeService()->getValidationsTypesAsOptions(),
],
'attributes' => [
'id' => 'type',
'class' => 'bootstrap-selectpicker show-tick',
'data-live-search' => 'true',
],
]);
//valeur
$this->add([
'name' => 'valeur',
'type' => Text::class,
'options' => [
'label' => 'Refus (laisser vide si acceptation) : ',
'label_attributes' => [
'class' => 'control-label',
],
],
'attributes' => [
'id' => 'valeur',
]
]);
//submit
$this->add([
'type' => Button::class,
'name' => 'creer',
'options' => [
'label' => '<i class="fas fa-save"></i> Enregistrer' ,
'label_options' => [
'disable_html_escape' => true,
],
],
'attributes' => [
'type' => 'submit',
'class' => 'btn btn-primary',
],
]);
//inputfilter
$this->setInputFilter((new Factory())->createInputFilter([
'type' => [ 'required' => true, ],
'valeur' => [ 'required' => false, ],
]));
}
}
\ No newline at end of file
<?php
namespace UnicaenValidation\Form\ValidationInstance;
trait ValidationInstanceFormAwareTrait {
private ValidationInstanceForm $validationInstancForm;
/**
* @return ValidationInstanceForm
*/
public function getValidationInstancForm() : ValidationInstanceForm
{
return $this->validationInstancForm;
}
/**
* @param ValidationInstanceForm $validationInstancForm
*/
public function setValidationInstancForm(ValidationInstanceForm $validationInstancForm) : void
{
$this->validationInstancForm = $validationInstancForm;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment