Commit 5be7cd28 authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

[EMC2] Changement sur la liste des entretiens professionnels des structures et...

[EMC2] Changement sur la liste des entretiens professionnels des structures et de la méthode de filtrage en fonction des structures
parent 71cf1570
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ Version 4.3.2 (XX/01/2024)
Évolution
---
- [EMC2] Ajout d'un bouton de retour à la liste des entretiens professionnels depuis un entretien professionnel
- [EMC2] Changement sur la liste des entretiens professionnels des structures et de la méthode de filtrage en fonction des structures

Modification en BD
---
+0 −1
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\Mvc\Plugin\FlashMessenger\FlashMessenger;
use Laminas\View\Model\JsonModel;
use Laminas\View\Model\ViewModel;
use Structure\Controller\StructureController;
use Structure\Provider\Role\RoleProvider as StructureRoleProvider;
use Structure\Service\Structure\StructureServiceAwareTrait;
use UnicaenApp\Exception\RuntimeException;
+35 −9
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ use Exception;
use Laminas\Mvc\Controller\AbstractActionController;
use Ramsey\Uuid\Uuid;
use Structure\Entity\Db\Structure;
use Structure\Service\Structure\StructureServiceAwareTrait;
use UnicaenApp\Exception\RuntimeException;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenAutoform\Service\Formulaire\FormulaireInstanceServiceAwareTrait;
@@ -31,6 +32,7 @@ class EntretienProfessionnelService
    use ConfigurationServiceAwareTrait;
    use FormulaireInstanceServiceAwareTrait;
    use ParametreServiceAwareTrait;
    use StructureServiceAwareTrait;
    use ValidationInstanceServiceAwareTrait;
    use ValidationTypeServiceAwareTrait;

@@ -405,15 +407,18 @@ class EntretienProfessionnelService
        if (isset($params['etat']) and $params['etat'] !== "") {
            $qb = $qb->andWhere('etype.id = :etat')->setParameter('etat', $params['etat']);
        }
        if (isset($params['structure-filtre']) and $params['structure-filtre']['id'] !== "") {
            $qb = $qb
                ->leftJoin('agent.affectations', 'affectation')->addSelect('affectation')
                ->leftJoin('affectation.structure', 'structure')->addSelect('structure')
                ->andWhere('structure.id = :structure')->setParameter('structure', $params['structure-filtre']['id'])
                ->andWhere('affectation.dateDebut IS NULL OR affectation.dateDebut <= entretien.dateEntretien')
                ->andWhere('affectation.dateFin IS NULL OR affectation.dateFin >= entretien.dateEntretien')
                ->andWhere('affectation.id IS NOT NULL');
        }
        // NOTE Changement provoqué par la gestion des structures "mères"
//        if (isset($params['structure-filtre']) and $params['structure-filtre']['id'] !== "") {
//            $qb = $qb
//                ->leftJoin('agent.affectations', 'affectation')->addSelect('affectation')
//                ->leftJoin('affectation.structure', 'structure')->addSelect('structure')
//                ->andWhere('structure.id = :structure')->setParameter('structure', $params['structure-filtre']['id'])
//                ->andWhere('affectation.dateDebut IS NULL OR affectation.dateDebut <= entretien.dateEntretien')
//                ->andWhere('affectation.dateFin IS NULL OR affectation.dateFin >= entretien.dateEntretien')
//                ->andWhere('affectation.id IS NOT NULL');
//        }


        if (isset($params['agent-filtre']) and $params['agent-filtre']['id'] !== "") {
            $qb = $qb->andWhere('agent.id = :id')->setParameter('id', $params['agent-filtre']['id']);
        }
@@ -422,6 +427,27 @@ class EntretienProfessionnelService
        }

        $result = $qb->getQuery()->getResult();

        if (isset($params['structure-filtre']) and $params['structure-filtre']['id'] !== "")
        {
            $structure = $this->getStructureService()->getStructure($params['structure-filtre']['id']);
            // NOTE Changement provoqué par la gestion des structures "mères"
            $entretiens = [];
            /** @var EntretienProfessionnel $item */
            foreach ($result as $item) {
                $agent = $item->getAgent();
                $affectations = $agent->getAffectations($item->getDateEntretien());
                //todo filtrer les affectations ?
                foreach ($affectations as $affectation) {
                    if ($affectation->getStructure()->isCompatible($structure)) {
                        $entretiens[] = $item;
                        break;
                    }
                }
            }
            $result = $entretiens;
        }

        return $result;
    }

+4 −0
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ use Doctrine\ORM\EntityManager;
use Interop\Container\ContainerInterface;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
use Structure\Service\Structure\StructureService;
use UnicaenAutoform\Service\Formulaire\FormulaireInstanceService;
use UnicaenParametre\Service\Parametre\ParametreService;
use UnicaenValidation\Service\ValidationInstance\ValidationInstanceService;
@@ -29,6 +30,7 @@ class EntretienProfessionnelServiceFactory
         * @var ConfigurationService $configurationService
         * @var FormulaireInstanceService $formulaireInstanceService
         * @var ParametreService $parametreService
         * @var StructureService $structureService
         * @var ValidationInstanceService $validationInstanceService
         * @var ValidationTypeService $validationTypeService
         */
@@ -37,6 +39,7 @@ class EntretienProfessionnelServiceFactory
        $configurationService = $container->get(ConfigurationService::class);
        $formulaireInstanceService = $container->get(FormulaireInstanceService::class);
        $parametreService = $container->get(ParametreService::class);
        $structureService = $container->get(StructureService::class);
        $validationInstanceService = $container->get(ValidationInstanceService::class);
        $validationTypeService = $container->get(ValidationTypeService::class);

@@ -46,6 +49,7 @@ class EntretienProfessionnelServiceFactory
        $service->setConfigurationService($configurationService);
        $service->setFormulaireInstanceService($formulaireInstanceService);
        $service->setParametreService($parametreService);
        $service->setStructureService($structureService);
        $service->setValidationInstanceService($validationInstanceService);
        $service->setValidationTypeService($validationTypeService);

+5 −2
Original line number Diff line number Diff line
@@ -32,10 +32,13 @@ use UnicaenEtat\Entity\Db\EtatType;
                    <div class="row">
                        <div class="col-md-4">
                            <?php
                            /** @see \EntretienProfessionnel\Controller\EntretienProfessionnelController::rechercherStructureAction() */
                            /** @see \Structure\Controller\StructureController::rechercherAction() */
                            $structureF = new SearchAndSelect('structure-filtre', ['label' => "Structure :"]);
                            $structureF
                                ->setAutocompleteSource($this->url('entretien-professionnel/rechercher-structure'))
                                /** @see \EntretienProfessionnel\Controller\EntretienProfessionnelController::rechercherStructureAction() */
//                                ->setAutocompleteSource($this->url('entretien-professionnel/rechercher-structure'))
                                /** @see \Structure\Controller\StructureController::rechercherAction() */
                                ->setAutocompleteSource($this->url('structure/rechercher'))
                                ->setSelectionRequired()
                                ->setAttributes([
                                    'id' => 'structure-filtre',
Loading