Loading module/EntretienProfessionnel/src/EntretienProfessionnel/Service/Campagne/CampagneService.php +17 −41 Original line number Diff line number Diff line Loading @@ -17,11 +17,11 @@ use EntretienProfessionnel\Provider\Parametre\EntretienProfessionnelParametres; use Laminas\Mvc\Controller\AbstractActionController; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use Laminas\Mvc\Controller\AbstractActionController; use UnicaenEtat\Entity\Db\Etat; use UnicaenEtat\Service\Etat\EtatServiceAwareTrait; use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait; use UnicaenParametre\Service\Parametre\ParametreServiceAwareTrait; class CampagneService { class CampagneService { use EntityManagerAwareTrait; use AgentServiceAwareTrait; use EtatTypeServiceAwareTrait; Loading Loading @@ -90,8 +90,7 @@ class CampagneService { try { $qb = $this->getEntityManager()->getRepository(Campagne::class)->createQueryBuilder('campagne') ->addSelect('precede')->leftJoin('campagne.precede', 'precede') ->addSelect('entretien')->leftJoin('campagne.entretiens', 'entretien') ; ->addSelect('entretien')->leftJoin('campagne.entretiens', 'entretien'); // $qb = EntretienProfessionnel::decorateWithEtats($qb, "entretien"); } catch (NotSupported $e) { throw new RuntimeException("Un problème est survenu lors de la création du QueryBuilder de [" . Campagne::class . "]", 0, $e); Loading Loading @@ -158,13 +157,12 @@ class CampagneService { if ($date === null) $date = new DateTime(); $qb = $this->createQueryBuilder() ->andWhere('campagne.dateFin < :date') ->setParameter('date', $date) ; ->setParameter('date', $date); $result = $qb->getQuery()->getResult(); $last = null; /** @var Campagne $item */ foreach ($result as $item) { if ($last === null OR $item->getAnnee() > $last->getAnnee()) $last = $item; if ($last === null or $item->getAnnee() > $last->getAnnee()) $last = $item; } return $last; } Loading @@ -175,10 +173,13 @@ class CampagneService { */ public function getEntretiensByCampagneAndEtats(Campagne $campagne, array $etats): array { try { $qb = $this->getEntityManager()->getRepository(EntretienProfessionnel::class)->createQueryBuilder('entretien') ->andWhere('entretien.campagne in (:campagne)')->setParameter('campagne', $campagne) ->andWhere('entretien.histoDestruction IS NULL') ; ->andWhere('entretien.histoDestruction IS NULL'); } catch (NotSupported $e) { throw new RuntimeException("Un probleme est sruvenu lors de la création du QueryBuilder",0,$e); } $qb = EntretienProfessionnel::decorateWithEtats($qb, 'entretien', $etats); $result = $qb->getQuery()->getResult(); Loading Loading @@ -267,7 +268,9 @@ class CampagneService { public function getAgentsEligibles(Campagne $campagne): array { $agents = $this->getAgentService()->getAgents(); $agents = array_filter($agents, function (Agent $a) use ($campagne) { return $campagne->isEligible($a); }); $agents = array_filter($agents, function (Agent $a) use ($campagne) { return $campagne->isEligible($a); }); return $agents; } Loading @@ -287,37 +290,10 @@ class CampagneService { return $scolaire; } /** * Cette fonction retourne la liste des agents adminstratifs associés à des structures aux débuts de la campagne * @param array $structures * @param Campagne $campagne * @return Agent[] */ public function computeAgentByStructures(array $structures, Campagne $campagne) : array { $qb = $this->getEntityManager()->getRepository(Agent::class)->createQueryBuilder('agent') ->join('agent.affectations', 'affectation') ->join('agent.statuts', 'statut') ->join('agent.grades', 'grade') ->andWhere('affectation.dateFin IS NULL OR affectation.dateDebut <= :date') ->andWhere('affectation.dateFin IS NULL OR affectation.dateFin >= :date')->setParameter('date', $campagne->getDateDebut()) // Affecté·e à une des structures ->andWhere('affectation.structure in (:structures)')->setParameter('structures', $structures) // En contrat ... ->andWhere('statut.titulaire = :on OR statut.cdd = :on OR statut.cdi = :on')->setParameter('on', 'O') ->andWhere('statut.retraite = :off')->setParameter('off', 'N') // Est Administratif ->andWhere('statut.administratif = :on') ->orderBy('agent.nomUsuel, agent.prenom','ASC') ; $result = $qb->getQuery()->getResult(); return $result; } public function trierAgents(Campagne $campagne, array $agents): array { $obligatoires = []; $facultatifs = []; $obligatoires = []; $facultatifs = []; $dateMinEnPoste = (DateTime::createFromFormat('d/m/Y', $campagne->getDateFin()->format('d/m/Y')))->sub(new DateInterval('P12M')); /** @var Agent $agent */ Loading Loading
module/EntretienProfessionnel/src/EntretienProfessionnel/Service/Campagne/CampagneService.php +17 −41 Original line number Diff line number Diff line Loading @@ -17,11 +17,11 @@ use EntretienProfessionnel\Provider\Parametre\EntretienProfessionnelParametres; use Laminas\Mvc\Controller\AbstractActionController; use UnicaenApp\Exception\RuntimeException; use UnicaenApp\Service\EntityManagerAwareTrait; use Laminas\Mvc\Controller\AbstractActionController; use UnicaenEtat\Entity\Db\Etat; use UnicaenEtat\Service\Etat\EtatServiceAwareTrait; use UnicaenEtat\Service\EtatType\EtatTypeServiceAwareTrait; use UnicaenParametre\Service\Parametre\ParametreServiceAwareTrait; class CampagneService { class CampagneService { use EntityManagerAwareTrait; use AgentServiceAwareTrait; use EtatTypeServiceAwareTrait; Loading Loading @@ -90,8 +90,7 @@ class CampagneService { try { $qb = $this->getEntityManager()->getRepository(Campagne::class)->createQueryBuilder('campagne') ->addSelect('precede')->leftJoin('campagne.precede', 'precede') ->addSelect('entretien')->leftJoin('campagne.entretiens', 'entretien') ; ->addSelect('entretien')->leftJoin('campagne.entretiens', 'entretien'); // $qb = EntretienProfessionnel::decorateWithEtats($qb, "entretien"); } catch (NotSupported $e) { throw new RuntimeException("Un problème est survenu lors de la création du QueryBuilder de [" . Campagne::class . "]", 0, $e); Loading Loading @@ -158,13 +157,12 @@ class CampagneService { if ($date === null) $date = new DateTime(); $qb = $this->createQueryBuilder() ->andWhere('campagne.dateFin < :date') ->setParameter('date', $date) ; ->setParameter('date', $date); $result = $qb->getQuery()->getResult(); $last = null; /** @var Campagne $item */ foreach ($result as $item) { if ($last === null OR $item->getAnnee() > $last->getAnnee()) $last = $item; if ($last === null or $item->getAnnee() > $last->getAnnee()) $last = $item; } return $last; } Loading @@ -175,10 +173,13 @@ class CampagneService { */ public function getEntretiensByCampagneAndEtats(Campagne $campagne, array $etats): array { try { $qb = $this->getEntityManager()->getRepository(EntretienProfessionnel::class)->createQueryBuilder('entretien') ->andWhere('entretien.campagne in (:campagne)')->setParameter('campagne', $campagne) ->andWhere('entretien.histoDestruction IS NULL') ; ->andWhere('entretien.histoDestruction IS NULL'); } catch (NotSupported $e) { throw new RuntimeException("Un probleme est sruvenu lors de la création du QueryBuilder",0,$e); } $qb = EntretienProfessionnel::decorateWithEtats($qb, 'entretien', $etats); $result = $qb->getQuery()->getResult(); Loading Loading @@ -267,7 +268,9 @@ class CampagneService { public function getAgentsEligibles(Campagne $campagne): array { $agents = $this->getAgentService()->getAgents(); $agents = array_filter($agents, function (Agent $a) use ($campagne) { return $campagne->isEligible($a); }); $agents = array_filter($agents, function (Agent $a) use ($campagne) { return $campagne->isEligible($a); }); return $agents; } Loading @@ -287,37 +290,10 @@ class CampagneService { return $scolaire; } /** * Cette fonction retourne la liste des agents adminstratifs associés à des structures aux débuts de la campagne * @param array $structures * @param Campagne $campagne * @return Agent[] */ public function computeAgentByStructures(array $structures, Campagne $campagne) : array { $qb = $this->getEntityManager()->getRepository(Agent::class)->createQueryBuilder('agent') ->join('agent.affectations', 'affectation') ->join('agent.statuts', 'statut') ->join('agent.grades', 'grade') ->andWhere('affectation.dateFin IS NULL OR affectation.dateDebut <= :date') ->andWhere('affectation.dateFin IS NULL OR affectation.dateFin >= :date')->setParameter('date', $campagne->getDateDebut()) // Affecté·e à une des structures ->andWhere('affectation.structure in (:structures)')->setParameter('structures', $structures) // En contrat ... ->andWhere('statut.titulaire = :on OR statut.cdd = :on OR statut.cdi = :on')->setParameter('on', 'O') ->andWhere('statut.retraite = :off')->setParameter('off', 'N') // Est Administratif ->andWhere('statut.administratif = :on') ->orderBy('agent.nomUsuel, agent.prenom','ASC') ; $result = $qb->getQuery()->getResult(); return $result; } public function trierAgents(Campagne $campagne, array $agents): array { $obligatoires = []; $facultatifs = []; $obligatoires = []; $facultatifs = []; $dateMinEnPoste = (DateTime::createFromFormat('d/m/Y', $campagne->getDateFin()->format('d/m/Y')))->sub(new DateInterval('P12M')); /** @var Agent $agent */ Loading