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

Fix du merge echoué

parent b791a063
Loading
Loading
Loading
Loading
+17 −41
Original line number Diff line number Diff line
@@ -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;
@@ -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);
@@ -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;
    }
@@ -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();

@@ -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;
    }

@@ -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 */