Commit fdd68ccb authored by Laurent Lécluse's avatar Laurent Lécluse
Browse files

Merge branch 'Modulateurs-Statuts' into 'Calendaire'

Modulateurs statuts

See merge request !10
parents 71781d07 f360bbf2
$this->add([
'name' => 'champtiret',
'options' => [
'label' => "champphrase",
],
'type' => 'Text',
]);
$this->add([
'name' => 'champtiret',
'options' => [
'label' => 'champphrase',
],
'attributes' => [
'class' => 'selectpicker',
'data-live-search' => 'true',
],
'type' => 'Select',
]);
$this->get('champtiret')
->setEmptyOption("(Aucun)")
->setValueOptions(\UnicaenApp\Util::collectionAsOptions($this->getServicechampmaj()->getList()));
<?php
namespace Application;
use Application\Provider\Privilege\Privileges;
use UnicaenAuth\Guard\PrivilegeController;
return [
'router' => [
'routes' => [
'nomtiret' => [
'type' => 'Literal',
'options' => [
'route' => '/nomtiret',
'defaults' => [
'controller' => 'Application\Controller\nommaj',
'action' => 'index',
],
],
'may_terminate' => true,
'child_routes' => [
'delete' => [
'type' => 'Segment',
'options' => [
'route' => '/delete/:nomtiret',
'constraints' => [
'nomtiret' => '[0-9]*',
],
'defaults' => [
'action' => 'delete',
],
],
],
'saisie' => [
'type' => 'Segment',
'options' => [
'route' => '/saisie/[:nomtiret]',
'constraints' => [
'nomtiret' => '[0-9]*',
],
'defaults' => [
'action' => 'saisie',
],
],
],
],
],
],
],
'navigation' => [
'default' => [
'home' => [
'pages' => [
'administration' => [
'pages' => [
'nomtiret' => [
'label' => 'nommaj',
'icon' => 'fa fa-graduation-cap',
'route' => 'nomtiret',
'resource' => PrivilegeController::getResourceId('Application\Controller\nommaj', 'index'),
'order' => 80,
'border-color' => '#BBCF55',
],
],
],
],
],
],
],
'bjyauthorize' => [
'guards' => [
PrivilegeController::class => [
[
'controller' => 'Application\Controller\nommaj',
'action' => ['index'],
'privileges' => Privileges::droitvisualisation,
],
[
'controller' => 'Application\Controller\nommaj',
'action' => ['saisie','delete'],
'privileges' => Privileges::droitedition,
],
],
],
],
'controllers' => [
'invokables' => [
'Application\Controller\nommaj' => Controller\nommajController::class,
],
],
'service_manager' => [
'invokables' => [
Service\nommajService::class => Service\nommajService::class,
],
],
'view_helpers' => [
],
'form_elements' => [
'invokables' => [
Form\nommaj\Saisie::class => Form\nommaj\Saisie::class,
],
],
];
<?php
namespace Application\Controller;
use Application\Entity\Db\nommaj;
use Application\Service\Traits\nommajServiceAwareTrait;
use Application\Exception\DbException;
use Application\Form\nommaj\Traits\nommajSaisieFormAwareTrait;
use UnicaenApp\View\Model\MessengerViewModel;
class nommajController extends AbstractController
{
use nommajServiceAwareTrait;
use nommajSaisieFormAwareTrait;
public function indexAction()
{
$this->em()->getFilters()->enable('historique')->init([
nommaj::class,
]);
$nomms = $this->getServicenommaj()->getList();
return compact('nomms');
}
public function saisieAction()
{
/* @var $nomm nommaj */
$nomm = $this->getEvent()->getParam('nomtiret');
$form = $this->getFormnommajSaisie();
if (empty($nomm)) {
$title = 'Création d\'une nouvelle nommaj';
$nomm = $this->getServicenommaj()->newEntity();
} else {
$title = 'Édition d\'une nommaj';
}
$form->bindRequestSave($nomm, $this->getRequest(), function (nommaj $fr) {
try {
$this->getServicenommaj()->save($fr);
$this->flashMessenger()->addSuccessMessage('Enregistrement effectué');
} catch (\Exception $e) {
$e = DbException::translate($e);
$this->flashMessenger()->addErrorMessage($e->getMessage() . ':' . $fr->getId());
}
});
return compact('form', 'title');
}
public function deleteAction()
{
$nomm = $this->getEvent()->getParam('nomtiret');
try {
$this->getServicenommaj()->delete($nomm);
$this->flashMessenger()->addSuccessMessage("nommaj supprimée avec succès.");
} catch (\Exception $e) {
$this->flashMessenger()->addErrorMessage(DbException::translate($e)->getMessage());
}
return new MessengerViewModel(compact('nomm'));
}
}
<?php
/**
* @var $this \Application\View\Renderer\PhpRenderer
* @var $nomms \Application\Entity\Db\nommaj[]
*/
use Application\Provider\Privilege\Privileges;
$this->headTitle()->append("nomsouss");
$canEdit = $this->isAllowed(Privileges::getResourceId(Privileges::droitedition));
?>
<h1 class="page-header">nomsouss</h1>
<table class="table table-bordered table-sort">
<thead>
<?php if ($canEdit) echo '<th>Actions</th>' ?>
</thead>
<tbody>
<?php foreach ($nomms as $fr): ?>
<tr>
<?php if ($canEdit) { ?>
<td style="text-align:center;width:1px;white-space: nowrap">
<a class="ajax-modal" data-event="nomtiret-saisie"
href="<?= $this->url('nomtiret/saisie', ['nomtiret' => $fr->getId()]) ?>"
title="Modifier la nommaj">
<span class="glyphicon glyphicon-edit"></span></a>
<a class="pop-ajax"
href="<?= $this->url('nomtiret/delete', ['nomtiret' => $fr->getId()]) ?>"
title="Supprimer la nommaj"
data-content="<p class='lead text-danger'><strong>Attention!</strong> Confirmez-vous cette suppression ?</p>"
data-confirm="true"
data-confirm-button="Oui"
data-cancel-button="Non"
data-submit-reload="true"
>
<span class="glyphicon glyphicon-remove"></span>
</a>
</td>
<?php } ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php if ($canEdit): ?>
<a class="btn btn-primary ajax-modal" data-event="nomtiret-saisie"
href="<?= $this->url('nomtiret/saisie') ?>"
title="Ajouter une nomsous">
<span class="glyphicon glyphicon-edit"></span>
Ajouter une nomsous</a>
<script type="text/javascript">
$(function () {
$("body").on("nomtiret-saisie", function (event, data) {
window.location.reload();
});
});
</script>
<?php endif ?>
<?php
namespace Application\Form\nommaj\Traits;
use Application\Form\nommaj\nommajSaisieForm;
/**
* Description of nommajSaisieFormAwareTrait
*
* @author UnicaenCode
*/
trait nommajSaisieFormAwareTrait
{
/**
* @var nommajSaisieForm
*/
private $formnommajSaisie;
/**
* @param nommajSaisieForm $formnommajSaisie
*
* @return self
*/
public function setFormnommajSaisie(nommajSaisieForm $formnommajSaisie)
{
$this->formnommajSaisie = $formnommajSaisie;
return $this;
}
/**
* Retourne un nouveau formulaire ou fieldset systématiquement, sauf si ce dernier a été fourni manuellement.
*
* @return nommajSaisieForm
*/
public function getFormnommajSaisie()
{
if (!empty($this->formnommajSaisie)) {
return $this->formnommajSaisie;
}
return \Application::$container->get('FormElementManager')->get(nommajSaisieForm::class);
}
}
<?php
/**
* @var $this \Application\View\Renderer\PhpRenderer
* @var $form \Application\Form\nommaj\nommajSaisieForm
*/
echo $this->messenger()->addCurrentMessagesFromFlashMessenger();
echo $this->form($form);
<?php
namespace Application\Service\Traits;
use Application\Service\nommajService;
/**
* Description of nommajAwareTrait
*
* @author UnicaenCode
*/
trait nommajServiceAwareTrait
{
/**
* @var nommajService
*/
private $servicenommaj;
/**
* @param nommajService $servicenommaj
*
* @return self
*/
public function setServicenommaj(nommajService $servicenommaj)
{
$this->servicenommaj = $servicenommaj;
return $this;
}
/**
* @return nommajService
*/
public function getServicenommaj()
{
if (empty($this->servicenommaj)) {
$this->servicenommaj = \Application::$container->get(nommajService::class);
}
return $this->servicenommaj;
}
}
<?php
namespace Application\Service;
use Doctrine\ORM\QueryBuilder;
/**
* Description of nommaj
*
*/
class nommajService extends AbstractEntityService
{
/**
* retourne la classe des entit?s
*
* @return string
* @throws RuntimeException
*/
public function getEntityClass()
{
return \Application\Entity\Db\nommaj::class;
}
/**
* Retourne l'alias d'entit? courante
*
* @return string
*/
public function getAlias()
{
return 'fr';
}
public function getList(QueryBuilder $qb = null, $alias = null)
{
list($qb, $alias) = $this->initQuery();
return parent::getList($qb, $alias);
}
}
......@@ -73,6 +73,32 @@ return [
],
'may_terminate' => true,
],
'type-modulateur-structure-saisie' => [
'type' => 'Segment',
'options' => [
'route' => '/type-modulateur-structure-saisie/:typeModulateur',
'constraints' => [
'typeModulateur' => '[0-9]*',
],
'defaults' => [
'action' => 'type-modulateur-structure-saisie',
],
],
'may_terminate' => true,
],
'type-modulateur-structure-delete' => [
'type' => 'Segment',
'options' => [
'route' => '/type-modulateur-structure-delete/:typeModulateurStructure',
'constraints' => [
'typeModulateurStructure' => '[0-9]*',
],
'defaults' => [
'action' => 'type-modulateur-structure-delete',
],
],
'may_terminate' => true,
],
],
],
],
......@@ -106,7 +132,7 @@ return [
],
[
'controller' => 'Application\Controller\Modulateur',
'action' => ['saisie', 'delete', 'type-modulateur-saisie', 'type-modulateur-delete'],
'action' => ['saisie', 'delete', 'type-modulateur-saisie', 'type-modulateur-delete','type-modulateur-structure-saisie','type-modulateur-structure-delete'],
'privileges' => [Privileges::MODULATEUR_EDITION],
],
],
......@@ -143,6 +169,7 @@ return [
'invokables' => [
Form\Modulateur\ModulateurSaisieForm::class => Form\Modulateur\ModulateurSaisieForm::class,
Form\Modulateur\TypeModulateurSaisieForm::class => Form\Modulateur\TypeModulateurSaisieForm::class,
Form\Modulateur\TypeModulateurStructureSaisieForm::class => Form\Modulateur\TypeModulateurStructureSaisieForm::class,
],
],
];
......@@ -12,6 +12,7 @@ use Application\Form\Modulateur\Traits\ModulateurSaisieFormAwareTrait;
use UnicaenApp\View\Model\MessengerViewModel;
use Application\Service\Traits\TypeModulateurServiceAwareTrait;
use Application\Form\Modulateur\Traits\TypeModulateurSaisieFormAwareTrait;
use Application\Form\Modulateur\Traits\TypeModulateurStructureSaisieFormAwareTrait;
use Application\Service\Traits\ContextServiceAwareTrait;
class modulateurController extends AbstractController
......@@ -21,6 +22,7 @@ class modulateurController extends AbstractController
use ModulateurSaisieFormAwareTrait;
use TypeModulateurSaisieFormAwareTrait;
use TypeModulateurStructureServiceAwareTrait;
use TypeModulateurStructureSaisieFormAwareTrait;
use ContextServiceAwareTrait;
......@@ -138,6 +140,49 @@ class modulateurController extends AbstractController
$this->flashMessenger()->addErrorMessage(DbException::translate($e)->getMessage());
}
return new MessengerViewModel(compact('typeModulateur'));
}
public function typeModulateurStructureSaisieAction()
{
/* @var $typeModulateurStructure typeModulateurStructure */
/* @var $typeModulateur typeModulateur */
$typeModulateur = $this->getEvent()->getParam('typeModulateur');
$form = $this->getFormTypeModulateurStructureSaisie();
// if (empty($typeModulateurStructure)) {
$title = 'Création d\'un nouveau Type de Modulateur de Structure';
$typeModulateurStructure = $this->getServiceTypeModulateurStructure()->newEntity()
->setTypeModulateur($typeModulateur);
// } else {
//$title = 'Édition d\'un Type de Modulateur pour une structure';
//}
$form->bindRequestSave($typeModulateurStructure, $this->getRequest(), function (typeModulateurStructure $tms) {
try {
$this->getServiceTypeModulateurStructure()->save($tms);
$this->flashMessenger()->addSuccessMessage('Enregistrement effectué');
} catch (\Exception $e) {
$e = DbException::translate($e);
$this->flashMessenger()->addErrorMessage($e->getMessage() . ':' . $tms->getId().':'.$tms->getTypeModulateur());
}
});
return compact('form', 'title');
}
public function typeModulateurStructureDeleteAction()
{
/* @var $typeModulateurStructure typeModulateurStructure */
$typeModulateurStructure = $this->getEvent()->getParam('typeModulateurStructure');
try {
$this->getServiceTypeModulateurStructure()->delete($typeModulateurStructure);
$this->flashMessenger()->addSuccessMessage("Type de Modulateur de structure supprimé avec succès.");
} catch (\Exception $e) {
$this->flashMessenger()->addErrorMessage(DbException::translate($e)->getMessage());
}
return new MessengerViewModel(compact('typeModulateur'));
}
}
\ No newline at end of file
......@@ -13,10 +13,17 @@
</unique-constraints>
<id name="id" type="integer" column="ID">
<generator strategy="SEQUENCE"/>
<sequence-generator sequence-name="TYPE_MODULATEUR_STRUCTU_ID_SEQ" allocation-size="1"/>
</id>
<field name="histoCreation" type="datetime" column="HISTO_CREATION" nullable="false"/>
<field name="histoDestruction" type="datetime" column="HISTO_DESTRUCTION" nullable="true"/>
<field name="histoModification" type="datetime" column="HISTO_MODIFICATION" nullable="false"/>
<many-to-one field="anneeDebut" target-entity="Application\Entity\Db\Annee">
<join-column name="ANNEE_DEBUT_ID" referenced-column-name="ID"/>
</many-to-one>
<many-to-one field="anneeFin" target-entity="Application\Entity\Db\Annee">
<join-column name="ANNEE_FIN_ID" referenced-column-name="ID"/>
</many-to-one>
<many-to-one field="histoModificateur" target-entity="Application\Entity\Db\Utilisateur">
<join-columns>
<join-column name="HISTO_MODIFICATEUR_ID" referenced-column-name="ID"/>
......
......@@ -26,6 +26,15 @@ class TypeModulateurStructure implements HistoriqueAwareInterface
*/
protected $structure;
/**
* @var Annee
*/
private $anneeDebut;
/**
* @var Annee
*/
private $anneeFin;
/**
......@@ -93,4 +102,51 @@ class TypeModulateurStructure implements HistoriqueAwareInterface
{
return $this->structure;
}
/**
* @return Annee
*/
public function getAnneeDebut()
{
return $this->anneeDebut;
}
/**
* @param Annee $anneeDebut
*
* @return TypeInterventionStructure
*/
public function setAnneeDebut(Annee $anneeDebut = null)
{
$this->anneeDebut = $anneeDebut;
return $this;
}
/**
* @return Annee
*/
public function getAnneeFin()
{
return $this->anneeFin;
}
/**
* @param Annee $anneeFin
*