Skip to content
Snippets Groups Projects
Commit 964f07ca authored by Florian Joriot's avatar Florian Joriot
Browse files

Merge branch 'master' into Modularisation_Contrat_FJ_merge_master

parents 9ba55f3f 7d09811e
Branches
Tags
No related merge requests found
...@@ -240,6 +240,13 @@ class Structure implements HistoriqueAwareInterface, ResourceInterface, ImportAw ...@@ -240,6 +240,13 @@ class Structure implements HistoriqueAwareInterface, ResourceInterface, ImportAw
public function getLibelle(): string
{
return $this->getLibelleCourt();
}
/** /**
* Returns the string identifier of the Resource * Returns the string identifier of the Resource
* *
......
...@@ -16,7 +16,6 @@ use Mission\Form\MissionFormAwareTrait; ...@@ -16,7 +16,6 @@ use Mission\Form\MissionFormAwareTrait;
use Mission\Form\MissionSuiviFormAwareTrait; use Mission\Form\MissionSuiviFormAwareTrait;
use Mission\Service\MissionServiceAwareTrait; use Mission\Service\MissionServiceAwareTrait;
use Service\Service\TypeVolumeHoraireServiceAwareTrait; use Service\Service\TypeVolumeHoraireServiceAwareTrait;
use UnicaenVue\Axios\AxiosExtractor;
use UnicaenVue\View\Model\AxiosModel; use UnicaenVue\View\Model\AxiosModel;
...@@ -52,30 +51,6 @@ class SaisieController extends AbstractController ...@@ -52,30 +51,6 @@ class SaisieController extends AbstractController
protected function missionTriggers(): array
{
return [
'/' => function (Mission $original, array $extracted) {
$extracted['canSaisie'] = $this->isAllowed($original, Privileges::MISSION_EDITION);
$extracted['canValider'] = $this->isAllowed($original, Privileges::MISSION_VALIDATION);
$extracted['canDevalider'] = $this->isAllowed($original, Privileges::MISSION_DEVALIDATION);
$extracted['canSupprimer'] = $this->isAllowed($original, Privileges::MISSION_EDITION);
return $extracted;
},
'/volumesHorairesPrevus' => function ($original, $extracted) {
//$extracted['canSaisie'] = $this->isAllowed($original, Privileges::MISSION_EDITION);
$extracted['canValider'] = $this->isAllowed($original, Privileges::MISSION_VALIDATION);
$extracted['canDevalider'] = $this->isAllowed($original, Privileges::MISSION_DEVALIDATION);
$extracted['canSupprimer'] = $this->isAllowed($original, Privileges::MISSION_EDITION);
return $extracted;
},
];
}
/** /**
* Retourne les données pour une mission * Retourne les données pour une mission
* *
...@@ -91,9 +66,10 @@ class SaisieController extends AbstractController ...@@ -91,9 +66,10 @@ class SaisieController extends AbstractController
// Vidage du cache d'exécution Doctrine pour être sûr de bien filter les données de la mission // Vidage du cache d'exécution Doctrine pour être sûr de bien filter les données de la mission
$this->em()->clear(); $this->em()->clear();
$query = $this->getServiceMission()->query(['mission' => $mission]); $model = $this->getServiceMission()->data(['mission' => $mission]);
$model->returnFirstItem();
return new AxiosModel(AxiosExtractor::extract($query, [], $this->missionTriggers())[0]); return $model;
} }
...@@ -108,9 +84,9 @@ class SaisieController extends AbstractController ...@@ -108,9 +84,9 @@ class SaisieController extends AbstractController
/* @var $intervenant Intervenant */ /* @var $intervenant Intervenant */
$intervenant = $this->getEvent()->getParam('intervenant'); $intervenant = $this->getEvent()->getParam('intervenant');
$query = $this->getServiceMission()->query(['intervenant' => $intervenant]); $model = $this->getServiceMission()->data(['intervenant' => $intervenant]);
return new AxiosModel($query, [], $this->missionTriggers()); return $model;
} }
......
...@@ -70,6 +70,20 @@ class SuiviController extends AbstractController ...@@ -70,6 +70,20 @@ class SuiviController extends AbstractController
$query = $this->em()->createQuery($dql)->setParameters($parameters); $query = $this->em()->createQuery($dql)->setParameters($parameters);
$properties = [
'id',
['mission', ['id', 'libelleCourt']],
'date',
'heureDebut',
'heureFin',
'heures',
'nocturne',
'formation',
'description',
'valide',
'validation',
];
$triggers = [ $triggers = [
'/' => function (VolumeHoraireMission $original, array $extracted) { '/' => function (VolumeHoraireMission $original, array $extracted) {
$extracted['canEdit'] = $this->isAllowed($original, Privileges::MISSION_EDITION_REALISE); $extracted['canEdit'] = $this->isAllowed($original, Privileges::MISSION_EDITION_REALISE);
...@@ -81,7 +95,7 @@ class SuiviController extends AbstractController ...@@ -81,7 +95,7 @@ class SuiviController extends AbstractController
}, },
]; ];
return new AxiosModel($query, [], $triggers); return new AxiosModel($query, $properties, $triggers);
} }
......
...@@ -13,9 +13,8 @@ use Laminas\Permissions\Acl\Resource\ResourceInterface; ...@@ -13,9 +13,8 @@ use Laminas\Permissions\Acl\Resource\ResourceInterface;
use Paiement\Entity\Db\TauxRemu; use Paiement\Entity\Db\TauxRemu;
use UnicaenApp\Entity\HistoriqueAwareInterface; use UnicaenApp\Entity\HistoriqueAwareInterface;
use UnicaenApp\Entity\HistoriqueAwareTrait; use UnicaenApp\Entity\HistoriqueAwareTrait;
use UnicaenVue\Axios\AxiosExtractorInterface;
class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtractorInterface class Mission implements HistoriqueAwareInterface, ResourceInterface
{ {
use HistoriqueAwareTrait; use HistoriqueAwareTrait;
use IntervenantAwareTrait; use IntervenantAwareTrait;
...@@ -52,34 +51,6 @@ class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtra ...@@ -52,34 +51,6 @@ class Mission implements HistoriqueAwareInterface, ResourceInterface, AxiosExtra
public function axiosDefinition(): array
{
return [
'typeMission',
'dateDebut',
'dateFin',
'structure',
'tauxRemu',
'description',
'histoCreation',
'histoCreateur',
'heures',
'heuresValidees',
'heuresRealisees',
'volumesHorairesPrevus',
['etudiants',['id', 'code', 'nomUsuel', 'prenom', 'dateNaissance']],
'contrat',
'valide',
'validation',
'canSaisie',
'canValider',
'canDevalider',
'canSupprimer',
];
}
public function getResourceId() public function getResourceId()
{ {
return 'Mission'; return 'Mission';
......
...@@ -5,9 +5,8 @@ namespace Mission\Entity\Db; ...@@ -5,9 +5,8 @@ namespace Mission\Entity\Db;
use Application\Interfaces\ParametreEntityInterface; use Application\Interfaces\ParametreEntityInterface;
use Application\Traits\ParametreEntityTrait; use Application\Traits\ParametreEntityTrait;
use Paiement\Entity\Db\TauxRemu; use Paiement\Entity\Db\TauxRemu;
use UnicaenVue\Axios\AxiosExtractorInterface;
class TypeMission implements ParametreEntityInterface, AxiosExtractorInterface class TypeMission implements ParametreEntityInterface
{ {
use ParametreEntityTrait; use ParametreEntityTrait;
...@@ -23,17 +22,6 @@ class TypeMission implements ParametreEntityInterface, AxiosExtractorInterface ...@@ -23,17 +22,6 @@ class TypeMission implements ParametreEntityInterface, AxiosExtractorInterface
public function axiosDefinition(): array
{
return [
'id',
'libelle',
'accompagnementEtudiants',
];
}
public function getId(): ?int public function getId(): ?int
{ {
return $this->id; return $this->id;
......
...@@ -13,9 +13,8 @@ use UnicaenApp\Entity\HistoriqueAwareInterface; ...@@ -13,9 +13,8 @@ use UnicaenApp\Entity\HistoriqueAwareInterface;
use UnicaenApp\Entity\HistoriqueAwareTrait; use UnicaenApp\Entity\HistoriqueAwareTrait;
use UnicaenImport\Entity\Db\Interfaces\ImportAwareInterface; use UnicaenImport\Entity\Db\Interfaces\ImportAwareInterface;
use UnicaenImport\Entity\Db\Traits\ImportAwareTrait; use UnicaenImport\Entity\Db\Traits\ImportAwareTrait;
use UnicaenVue\Axios\AxiosExtractorInterface;
class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInterface, AxiosExtractorInterface, ResourceInterface class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInterface, ResourceInterface
{ {
use HistoriqueAwareTrait; use HistoriqueAwareTrait;
use ImportAwareTrait; use ImportAwareTrait;
...@@ -43,6 +42,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -43,6 +42,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
private Collection $validations; private Collection $validations;
public function __construct() public function __construct()
{ {
$this->validations = new ArrayCollection(); $this->validations = new ArrayCollection();
...@@ -57,55 +57,20 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -57,55 +57,20 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
public function axiosDefinition(): array
{
if ($this->getTypeVolumeHoraire()->isPrevu()) {
// pour un VH prévu
return [
'heures',
'valide',
'validation',
'histoCreation',
'histoCreateur',
'canValider',
'canDevalider',
'canSupprimer',
];
} else {
// Pour un VH réalisé
return [
'guid',
['mission', ['id', 'libelleCourt']],
'date',
'heureDebut',
'heureFin',
'heures',
'nocturne',
'formation',
'description',
'valide',
'validation',
'canEdit',
'canValider',
'canDevalider',
'canSupprimer',
];
}
}
public function getId(): ?int public function getId(): ?int
{ {
return $this->id; return $this->id;
} }
public function getMission(): ?Mission public function getMission(): ?Mission
{ {
return $this->mission; return $this->mission;
} }
public function setMission(?Mission $mission): VolumeHoraireMission public function setMission(?Mission $mission): VolumeHoraireMission
{ {
$this->mission = $mission; $this->mission = $mission;
...@@ -114,12 +79,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -114,12 +79,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function getHeures(): float public function getHeures(): float
{ {
return $this->heures; return $this->heures;
} }
public function setHeures(float $heures): VolumeHoraireMission public function setHeures(float $heures): VolumeHoraireMission
{ {
$this->heures = $heures; $this->heures = $heures;
...@@ -128,12 +95,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -128,12 +95,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function isAutoValidation(): bool public function isAutoValidation(): bool
{ {
return $this->autoValidation; return $this->autoValidation;
} }
public function setAutoValidation(bool $autoValidation): VolumeHoraireMission public function setAutoValidation(bool $autoValidation): VolumeHoraireMission
{ {
$this->autoValidation = $autoValidation; $this->autoValidation = $autoValidation;
...@@ -142,12 +111,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -142,12 +111,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function getHoraireDebut(): ?\DateTime public function getHoraireDebut(): ?\DateTime
{ {
return $this->horaireDebut; return $this->horaireDebut;
} }
public function setHoraireDebut(?\DateTime $horaireDebut): VolumeHoraireMission public function setHoraireDebut(?\DateTime $horaireDebut): VolumeHoraireMission
{ {
$this->horaireDebut = $horaireDebut; $this->horaireDebut = $horaireDebut;
...@@ -157,12 +128,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -157,12 +128,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function getHoraireFin(): ?\DateTime public function getHoraireFin(): ?\DateTime
{ {
return $this->horaireFin; return $this->horaireFin;
} }
public function setHoraireFin(?\DateTime $horaireFin): VolumeHoraireMission public function setHoraireFin(?\DateTime $horaireFin): VolumeHoraireMission
{ {
$this->horaireFin = $horaireFin; $this->horaireFin = $horaireFin;
...@@ -172,12 +145,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -172,12 +145,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function getDate(): ?string public function getDate(): ?string
{ {
return $this->getHoraireDebut()?->format('Y-m-d'); return $this->getHoraireDebut()?->format('Y-m-d');
} }
public function setDate(?string $dateStr): self public function setDate(?string $dateStr): self
{ {
if ($this->isValide() && $dateStr !== $this->getDate()) { if ($this->isValide() && $dateStr !== $this->getDate()) {
...@@ -202,12 +177,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -202,12 +177,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function getHeureDebut(): ?string public function getHeureDebut(): ?string
{ {
return $this->getHoraireDebut()?->format('H:i'); return $this->getHoraireDebut()?->format('H:i');
} }
public function setHeureDebut(?string $heureStr): self public function setHeureDebut(?string $heureStr): self
{ {
if (!$heureStr) { if (!$heureStr) {
...@@ -225,12 +202,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -225,12 +202,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function getHeureFin(): ?string public function getHeureFin(): ?string
{ {
return $this->getHoraireFin()?->format('H:i'); return $this->getHoraireFin()?->format('H:i');
} }
public function setHeureFin(?string $heureStr): self public function setHeureFin(?string $heureStr): self
{ {
if (!$heureStr) { if (!$heureStr) {
...@@ -248,6 +227,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -248,6 +227,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function setHeuresFromHoraires(): self public function setHeuresFromHoraires(): self
{ {
if ($this->horaireDebut instanceof \DateTime && $this->horaireFin instanceof \DateTime) { if ($this->horaireDebut instanceof \DateTime && $this->horaireFin instanceof \DateTime) {
...@@ -263,12 +243,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -263,12 +243,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function isNocturne(): bool public function isNocturne(): bool
{ {
return $this->nocturne; return $this->nocturne;
} }
public function setNocturne(bool $nocturne): VolumeHoraireMission public function setNocturne(bool $nocturne): VolumeHoraireMission
{ {
$this->nocturne = $nocturne; $this->nocturne = $nocturne;
...@@ -277,12 +259,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -277,12 +259,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function isFormation(): bool public function isFormation(): bool
{ {
return $this->formation; return $this->formation;
} }
public function setFormation(bool $formation): VolumeHoraireMission public function setFormation(bool $formation): VolumeHoraireMission
{ {
$this->formation = $formation; $this->formation = $formation;
...@@ -291,12 +275,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -291,12 +275,14 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function getDescription(): ?string public function getDescription(): ?string
{ {
return $this->description; return $this->description;
} }
public function setDescription(?string $description): VolumeHoraireMission public function setDescription(?string $description): VolumeHoraireMission
{ {
$this->description = $description; $this->description = $description;
...@@ -305,6 +291,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -305,6 +291,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
/** /**
* @return Collection|Validation[] * @return Collection|Validation[]
*/ */
...@@ -314,6 +301,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -314,6 +301,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function addValidation(Validation $validation): self public function addValidation(Validation $validation): self
{ {
$this->validations[] = $validation; $this->validations[] = $validation;
...@@ -322,6 +310,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -322,6 +310,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function removeValidation(Validation $validation): self public function removeValidation(Validation $validation): self
{ {
$this->validations->removeElement($validation); $this->validations->removeElement($validation);
...@@ -330,6 +319,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -330,6 +319,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function isValide(): bool public function isValide(): bool
{ {
if ($this->isAutoValidation()) return true; if ($this->isAutoValidation()) return true;
...@@ -344,6 +334,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -344,6 +334,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function getValidation(): ?Validation public function getValidation(): ?Validation
{ {
if ($this->isAutoValidation()) { if ($this->isAutoValidation()) {
...@@ -360,18 +351,21 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -360,18 +351,21 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function canEdit(): bool public function canEdit(): bool
{ {
return !$this->isValide(); return !$this->isValide();
} }
public function canValider(): bool public function canValider(): bool
{ {
return !$this->isValide(); return !$this->isValide();
} }
public function canDevalider(): bool public function canDevalider(): bool
{ {
if ($this->getTypeVolumeHoraire()->isPrevu()) { if ($this->getTypeVolumeHoraire()->isPrevu()) {
...@@ -383,6 +377,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter ...@@ -383,6 +377,7 @@ class VolumeHoraireMission implements HistoriqueAwareInterface, ImportAwareInter
} }
public function canSupprimer(): bool public function canSupprimer(): bool
{ {
if ($this->getTypeVolumeHoraire()->isPrevu()) { if ($this->getTypeVolumeHoraire()->isPrevu()) {
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
namespace Mission\Service; namespace Mission\Service;
use Application\Entity\Db\Intervenant; use Application\Provider\Privilege\Privileges;
use Application\Service\AbstractEntityService; use Application\Service\AbstractEntityService;
use Application\Service\Traits\SourceServiceAwareTrait; use Application\Service\Traits\SourceServiceAwareTrait;
use Doctrine\ORM\Query; use Doctrine\ORM\Query;
use Mission\Entity\Db\Mission; use Mission\Entity\Db\Mission;
use Mission\Entity\Db\VolumeHoraireMission; use Mission\Entity\Db\VolumeHoraireMission;
use Service\Entity\Db\TypeVolumeHoraire;
use Service\Service\TypeVolumeHoraireServiceAwareTrait; use Service\Service\TypeVolumeHoraireServiceAwareTrait;
use UnicaenVue\View\Model\AxiosModel;
/** /**
* Description of MissionService * Description of MissionService
...@@ -51,7 +51,7 @@ class MissionService extends AbstractEntityService ...@@ -51,7 +51,7 @@ class MissionService extends AbstractEntityService
public function query(array $parameters): Query public function data(array $parameters): AxiosModel
{ {
$dql = " $dql = "
SELECT SELECT
...@@ -77,7 +77,57 @@ class MissionService extends AbstractEntityService ...@@ -77,7 +77,57 @@ class MissionService extends AbstractEntityService
vh.histoCreation vh.histoCreation
"; ";
return $this->getEntityManager()->createQuery($dql)->setParameters($parameters); $query = $this->getEntityManager()->createQuery($dql)->setParameters($parameters);
$properties = [
'id',
['typeMission', ['libelle', 'accompagnementEtudiants']],
'dateDebut',
'dateFin',
['structure', ['libelle']],
['tauxRemu', ['libelle']],
'description',
'histoCreation',
'histoCreateur',
'heures',
'heuresValidees',
'heuresRealisees',
['volumesHorairesPrevus', [
'id',
'heures',
'valide',
'validation',
'histoCreation',
'histoCreateur',
]],
['etudiants', ['id', 'code', 'nomUsuel', 'prenom', 'dateNaissance']],
'contrat',
'valide',
'validation',
];
$triggers = [
[
'/' => function (Mission $original, array $extracted) {
$extracted['canSaisie'] = $this->getAuthorize()->isAllowed($original, Privileges::MISSION_EDITION);
$extracted['canValider'] = $this->getAuthorize()->isAllowed($original, Privileges::MISSION_VALIDATION);
$extracted['canDevalider'] = $this->getAuthorize()->isAllowed($original, Privileges::MISSION_DEVALIDATION);
$extracted['canSupprimer'] = $this->getAuthorize()->isAllowed($original, Privileges::MISSION_EDITION);
return $extracted;
},
'/volumesHorairesPrevus' => function ($original, $extracted) {
//$extracted['canSaisie'] = $this->getAuthorize()->isAllowed($original, Privileges::MISSION_EDITION);
$extracted['canValider'] = $this->getAuthorize()->isAllowed($original, Privileges::MISSION_VALIDATION);
$extracted['canDevalider'] = $this->getAuthorize()->isAllowed($original, Privileges::MISSION_DEVALIDATION);
$extracted['canSupprimer'] = $this->getAuthorize()->isAllowed($original, Privileges::MISSION_EDITION);
return $extracted;
},
]
];
return new AxiosModel($query, $properties, $triggers);
} }
......
...@@ -264,8 +264,7 @@ class TauxRemu implements HistoriqueAwareInterface, ResourceInterface ...@@ -264,8 +264,7 @@ class TauxRemu implements HistoriqueAwareInterface, ResourceInterface
public public function __toString(): string
function __toString(): string
{ {
return $this->getLibelle(); return $this->getLibelle();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment