From 0a15c86a9d5696193c113090aee0e6839bc94e9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr>
Date: Fri, 19 Jun 2020 17:11:02 +0200
Subject: [PATCH] =?UTF-8?q?Possibilit=C3=A9=20de=20dupliquer,=20am=C3=A9li?=
=?UTF-8?q?oration=20de=20la=20pr=C3=A9cision=20de=20la=20recherche?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
code/test4.php | 5 +++-
.../Application/config/intervenant.config.php | 16 +++++++++--
.../Controller/IntervenantController.php | 18 ++++++++----
.../Controller/RechercheController.php | 28 ++++++++++++-------
.../src/Application/Entity/Db/Intervenant.php | 13 +++++++++
.../Service/ServiceReferentielService.php | 2 +-
.../Intervenant/IntervenantViewHelper.php | 2 +-
7 files changed, 64 insertions(+), 20 deletions(-)
diff --git a/code/test4.php b/code/test4.php
index 400c3bc0c5..dfce9d745f 100755
--- a/code/test4.php
+++ b/code/test4.php
@@ -9,4 +9,7 @@
*/
-return $controller->redirect()->toRoute('intervenant/voir', ['intervenant' => 51987], ['query' => ['tab' => 'edition']]);
\ No newline at end of file
+/* @var $intervenant \Application\Entity\Db\Intervenant */
+$intervenant = $container->get(\Application\Service\IntervenantService::class)->get(578);
+
+$ni = $intervenant->dupliquer();
\ No newline at end of file
diff --git a/module/Application/config/intervenant.config.php b/module/Application/config/intervenant.config.php
index ebb1de2d09..960139d6a3 100755
--- a/module/Application/config/intervenant.config.php
+++ b/module/Application/config/intervenant.config.php
@@ -62,7 +62,8 @@ return [
'options' => [
'route' => '/creer',
'defaults' => [
- 'action' => 'saisir',
+ 'action' => 'saisir',
+ 'action-detail' => 'creer',
],
],
],
@@ -71,7 +72,18 @@ return [
'options' => [
'route' => '/:intervenant/saisir',
'defaults' => [
- 'action' => 'saisir',
+ 'action' => 'saisir',
+ 'action-detail' => 'saisir',
+ ],
+ ],
+ ],
+ 'dupliquer' => [
+ 'type' => 'Segment',
+ 'options' => [
+ 'route' => '/:intervenant/dupliquer',
+ 'defaults' => [
+ 'action' => 'saisir',
+ 'action-detail' => 'dupliquer',
],
],
],
diff --git a/module/Application/src/Application/Controller/IntervenantController.php b/module/Application/src/Application/Controller/IntervenantController.php
index 95aa21d362..e9d6d3974c 100755
--- a/module/Application/src/Application/Controller/IntervenantController.php
+++ b/module/Application/src/Application/Controller/IntervenantController.php
@@ -261,11 +261,12 @@ class IntervenantController extends AbstractController
public function saisirAction()
{
- $role = $this->getServiceContext()->getSelectedIdentityRole();
- $intervenant = $role->getIntervenant() ?: $this->getEvent()->getParam('intervenant');
- $title = "Saisie d'un intervenant";
- $form = $this->getFormIntervenantEdition();
- $errors = [];
+ $role = $this->getServiceContext()->getSelectedIdentityRole();
+ $intervenant = $role->getIntervenant() ?: $this->getEvent()->getParam('intervenant');
+ $title = "Saisie d'un intervenant";
+ $form = $this->getFormIntervenantEdition();
+ $errors = [];
+ $actionDetail = $this->params()->fromRoute('action-detail');
$isNew = !$intervenant;
if (!$intervenant) {
@@ -277,6 +278,13 @@ class IntervenantController extends AbstractController
$intervenant->setCode(uniqid('OSE'));
}
+ if ($actionDetail == 'dupliquer') {
+ $intervenant = $intervenant->dupliquer();
+ $intervenant->setSource($this->getServiceSource()->getOse());
+ $intervenant->setSourceCode(null);
+ $intervenant->setStatut($this->getServiceStatutIntervenant()->getAutres());
+ }
+
$canEdit = $this->isAllowed($intervenant, Privileges::INTERVENANT_EDITION);
$form->setReadOnly(!$canEdit);
$form->bind($intervenant);
diff --git a/module/Application/src/Application/Controller/RechercheController.php b/module/Application/src/Application/Controller/RechercheController.php
index 50b7189a4a..55e80d5519 100755
--- a/module/Application/src/Application/Controller/RechercheController.php
+++ b/module/Application/src/Application/Controller/RechercheController.php
@@ -28,19 +28,27 @@ class RechercheController extends AbstractController
$result = [];
foreach ($res as $key => $r) {
- $feminin = $r['civilite'] != 'Monsieur';
-
- $civilite = $feminin ? 'M<sup>me</sup>' : 'M.';
- $nom = strtoupper($r['nom']);
- $prenom = ucfirst($r['prenom']);
- $naissance = 'né' . ($feminin ? 'e' : '') . ' le ' . $r['date-naissance']->format(Constants::DATE_FORMAT);
- $numeroPersonnel = 'N°' . $r['numero-personnel'];
- $structure = $r['structure'];
+ $feminin = $r['civilite'] == 'Madame';
+
+ $details = [];
+ if ($r['civilite']) {
+ $details['civilite'] = $feminin ? 'M<sup>me</sup>' : 'M.';
+ }
+ $details['nom'] = strtoupper($r['nom']);
+ $details['prenom'] = ucfirst($r['prenom']);
+ $details['naissance'] = 'né' . ($feminin ? 'e' : '') . ' le ' . $r['date-naissance']->format(Constants::DATE_FORMAT);
+ $details['code'] = 'N°' . $r['numero-personnel'];
+ if ($r['structure']) {
+ $details['structure'] = $r['structure'];
+ }
+ if ($r['statut']) {
+ $details['statut'] = $r['statut'];
+ }
$result[$key] = [
'id' => $key,
- 'label' => "$nom $prenom",
- 'extra' => "<small>($civilite, $naissance, $numeroPersonnel, $structure)</small>",
+ 'label' => $details['nom'] . ' ' . $details['prenom'],
+ 'extra' => "<small>(" . implode(', ', $details) . ")</small>",
];
}
diff --git a/module/Application/src/Application/Entity/Db/Intervenant.php b/module/Application/src/Application/Entity/Db/Intervenant.php
index e988d0e262..52f91a5139 100755
--- a/module/Application/src/Application/Entity/Db/Intervenant.php
+++ b/module/Application/src/Application/Entity/Db/Intervenant.php
@@ -18,6 +18,7 @@ use UnicaenApp\Entity\HistoriqueAwareTrait;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenImport\Entity\Db\Interfaces\ImportAwareInterface;
use UnicaenImport\Entity\Db\Traits\ImportAwareTrait;
+use Zend\Hydrator\ClassMethods;
use Zend\Permissions\Acl\Resource\ResourceInterface;
/**
@@ -1386,4 +1387,16 @@ class Intervenant implements HistoriqueAwareInterface, ResourceInterface, Import
return $validations;
}
+
+
+ public function dupliquer()
+ {
+ $intervenant = new Intervenant();
+
+ $hydrator = new ClassMethods();
+ $data = $hydrator->extract($this);
+ $hydrator->hydrate($data, $intervenant);
+
+ return $intervenant;
+ }
}
diff --git a/module/Application/src/Application/Service/ServiceReferentielService.php b/module/Application/src/Application/Service/ServiceReferentielService.php
index 245b0878bb..4de63723f3 100755
--- a/module/Application/src/Application/Service/ServiceReferentielService.php
+++ b/module/Application/src/Application/Service/ServiceReferentielService.php
@@ -379,7 +379,7 @@ class ServiceReferentielService extends AbstractEntityService
$tvhPrevu = $this->getServiceTypeVolumeHoraire()->getPrevu();
$evhValide = $this->getServiceEtatVolumeHoraire()->getSaisi();
- $intervenantPrec = $this->getServiceIntervenant()->getPrecedent();
+ $intervenantPrec = $this->getServiceIntervenant()->getPrecedent($intervenant);
$sVolumeHoraireReferentiel = $this->getServiceVolumeHoraireReferentiel();
diff --git a/module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php b/module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php
index 3676b0887c..010f23cfd5 100755
--- a/module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php
+++ b/module/Application/src/Application/View/Helper/Intervenant/IntervenantViewHelper.php
@@ -172,7 +172,7 @@ class IntervenantViewHelper extends AbstractHtmlElement
<?php endforeach; ?>
<?php if ($canAddIntervenant): ?>
<li class="ajout-intervenant">
- <a href="<?= $this->getView()->url('intervenant/voir', ['intervenant' => $intervenantId]); ?>"
+ <a href="<?= $this->getView()->url('intervenant/dupliquer', ['intervenant' => $intervenantId]); ?>"
title="Ajout d'un nouveau statut à l'intervenant"><span
class="glyphicon glyphicon-plus"></span></a>
</li>
--
GitLab