Commit 74babc5d authored by Jean-Philippe Metivier's avatar Jean-Philippe Metivier
Browse files

Recherche des entretiens par agent et campgne gérer dans le service et non plus par la vue

parent f0b5acfc
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@
namespace Application\Entity\Db;

use Application\Provider\Etat\FichePosteEtats;
use Carriere\Entity\Db\Niveau;
use Carriere\Entity\Db\NiveauEnveloppe;
use Element\Entity\Db\Interfaces\HasApplicationCollectionInterface;
use Element\Entity\Db\Interfaces\HasCompetenceCollectionInterface;
+20 −0
Original line number Diff line number Diff line
@@ -563,4 +563,24 @@ class EntretienProfessionnelService {
        $result = $qb->getQuery()->getResult();
        return $result;
    }

    /**
     * @param Campagne $campagne
     * @param array $agents
     * @return EntretienProfessionnel[] @desc [agentId => entretien]
     */
    public function getEntretienProfessionnelByCampagneAndAgents(Campagne $campagne, array $agents) : array
    {
        $qb = $this->createQueryBuilder()
            ->andWhere('entretien.campagne = :campagne')->setParameter('campagne', $campagne)
            ->andWhere('entretien.agent in (:agents)')->setParameter('agents', $agents)
        ;
        $result = $qb->getQuery()->getResult();

        $dictionnaire = [];
        foreach ($result as $entretien) {
            $dictionnaire[$entretien->getAgent()->getId()] = $entretien;
        }
        return $dictionnaire;
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -159,6 +159,10 @@ $canAfficherInformationMetier = (
                    <?php endif; ?>
                    <dt class="col-md-4"> Lieu </dt>
                    <dd class="col-md-8"> <?php echo $entretien->getLieu(); ?> </dd>
                    <dt class="col-md-4"> État </dt>
                    <dd class="col-md-8">
                        <?php echo $this->etatbadge($entretien->getEtat()); ?>
                    </dd>
                </dl>
            </div>
        </div>
+10 −0
Original line number Diff line number Diff line
@@ -115,12 +115,20 @@ class StructureController extends AbstractActionController {

        /** Campagne */
        $last =  $this->getCampagneService()->getLastCampagne();

        /** Récupération des agents et postes liés aux structures */
        $agentsLast = ($last !== null)?$this->getAgentService()->getAgentsByStructures($structures, $last->getDateDebut()):[];
        $agentsForcesLast = array_map(function (StructureAgentForce $a) { return $a->getAgent(); }, $structure->getAgentsForces());
        $allAgentsLast = array_merge($agentsLast, $agentsForcesLast);
        $entretiensLast = $this->getEntretienProfessionnelService()->getEntretienProfessionnelByCampagneAndAgents($last, $allAgentsLast);


        $campagnes =  $this->getCampagneService()->getCampagnesActives();
        $entretiensArray = [];
        foreach ($campagnes as $campagne) {
            $entretiens = $this->getEntretienProfessionnelService()->getEntretienProfessionnelByCampagneAndAgents($campagne, $allAgents);
            $entretiensArray[$campagne->getId()] = $entretiens;
        }

        $delegues = $this->getDelegueService()->getDeleguesByStructure($structure);
//        $profils = $this->getFicheProfilService()->getFichesPostesByStructure($structure);
@@ -157,7 +165,9 @@ class StructureController extends AbstractActionController {

            'last' => $last,
            'agentsLast' => $allAgentsLast,
            'entretiensLast' => $entretiensLast,
            'campagnes' => $campagnes,
            'entretiensArray' => $entretiensArray,
            'delegues' => $delegues,

            //formations
+4 −40
Original line number Diff line number Diff line
@@ -53,7 +53,9 @@ class StructureService
    {
        $qb = $this->getEntityManager()->getRepository(Structure::class)->createQueryBuilder('structure')
            ->addSelect('gestionnaire')->leftJoin('structure.gestionnaires', 'gestionnaire')
            ->leftJoin('gestionnaire.agent', 'gAgent')->addSelect('gAgent')
            ->addSelect('responsable')->leftJoin('structure.responsables', 'responsable')
            ->leftJoin('responsable.agent', 'rAgent')->addSelect('rAgent')
            ->addSelect('type')->join('structure.type', 'type')
            ->andWhere('structure.deleted_on IS NULL')
            ->orderBy('structure.code')
@@ -232,7 +234,6 @@ left join structure_type st on st.id = s.type_id
where s.d_fermeture IS NULL
EOS;

        $tmp = null;
        try {
            $res = $this->getEntityManager()->getConnection()->executeQuery($sql, []);
            try {
@@ -443,41 +444,6 @@ EOS;
        return false;
    }

    /**
     * @param Structure $structure
     * @param bool $filles
     * @return User[]
     */
    public function getGestionnairesByStructure(Structure $structure, bool $filles = true) : array
    {
        $gestionnaires = [];
        $vue = [];

        $structures = [];
        $structures[] = $structure;
        $vue[$structure->getId()] = true;

        while (! empty($structures)) {
            $current = array_shift($structures);
            foreach ($current->getGestionnaires() as $gestionnaire) {
                $gestionnaires[$gestionnaire->getId()] = $gestionnaire;
            }
            foreach ($current->getResponsables() as $responsable) {
                $gestionnaires[$responsable->getId()] = $responsable;
            }
            if ($filles) {
                foreach ($current->getEnfants() as $enfant) {
                    if ($vue[$enfant->getId()] !== true) {
                        $structures[] = $enfant;
                        $vue[$enfant->getId()] = true;
                    }
                }
            }
        }
        return $gestionnaires;
    }


    /**
     * @return Structure[]
     */
@@ -505,7 +471,7 @@ EOS;
        if ($date === null) $date = new DateTime();
        $qb = $this->getEntityManager()->getRepository(AgentAffectation::class)->createQueryBuilder('affectation')
//            ->join('affectation.agent', 'agent')->addSelect('agent')
            // affecation en cours non principale dans la structure
            // affectation en cours non principale dans la structure
            ->andWhere('affectation.structure = :structure')
            ->setParameter('structure', $structure)
            ->andWhere('affectation.principale IS NULL OR affectation.principale = :N')
@@ -523,7 +489,7 @@ EOS;
        $listing = [];
        foreach ($result as $affectation) {
            $agent = $affectation->getAgent();
            $affectationPrincipale = $agent->getAffectationPrincipale($date);
            $affectationPrincipale = $agent->getAffectationPrincipale();
            if ($affectationPrincipale) {
                $structurePrincipale = $affectationPrincipale->getStructure();
                $listing[$structurePrincipale->getLibelleLong()][] = $agent->getDenomination();
@@ -534,8 +500,6 @@ EOS;
        return $listing;
    }

    //TODO RESPONSABLE_SERVICE ???

    /**
     * @param Structure|null $structure
     * @param DateTime|null $date
Loading