Commit 72f79dda authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

En mode calendaire, filtrage de la période et des types d'intervention...

En mode calendaire, filtrage de la période et des types d'intervention possibles pour l'élément pédagogique lors de la saisie d'heures (#51141)
parent 5130bf28
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ use Application\Entity\Db\Periode;
use Application\Entity\Db\Structure;
use Application\Service\Traits\IntervenantServiceAwareTrait;
use Doctrine\ORM\QueryBuilder;
use OffreFormation\Entity\Db\ElementPedagogique;
use Paiement\Service\MiseEnPaiementIntervenantStructureServiceAwareTrait;
use Paiement\Service\MiseEnPaiementServiceAwareTrait;

@@ -115,6 +116,23 @@ class PeriodeService extends AbstractEntityService
        return $qb;
    }

    public function findPeriodeByElementPedagogique (ElementPedagogique $elementPedagogique): array
    {
        $sql = "
            SELECT 
                p.id, p.libelle_long              
            FROM 
              element_pedagogique ep 
              JOIN periode p ON p.id = ep.periode_id
            WHERE 
              ep.id = :elementPedagogique
        ";

        $res = $this->getEntityManager()->getConnection()->fetchAllKeyValue($sql, ['elementPedagogique' => $elementPedagogique->getId()]);

        return $res;
    }



    public function finderByMiseEnPaiement(Structure $structure = null, QueryBuilder $qb = null, $alias = null)
+8 −2
Original line number Diff line number Diff line
@@ -75,7 +75,14 @@ class VolumeHoraireController extends AbstractController

    public function saisieCalendaireAction()
    {
        return $this->saisieMixte($this->getFormVolumeHoraireSaisieCalendaire());
        /**
         * @var Service $service
         */
        $service = $this->getEvent()->getParam('service');
        $form    = $this->getFormVolumeHoraireSaisieCalendaire();
        $form->setElementPedagogique($service->getElementPedagogique());

        return $this->saisieMixte($form);
    }


@@ -114,7 +121,6 @@ class VolumeHoraireController extends AbstractController
        /**
         * @var VolumeHoraireSaisieForm $form
         */

        $form->setViewMNP($canViewMNP);
        $form->setEditMNP($canEditMNP);
        $form->setViewTag($canViewTag);
+25 −10
Original line number Diff line number Diff line
@@ -13,6 +13,7 @@ use Enseignement\Hydrator\ListeFilterHydrator;
use Laminas\Form\Element\DateTimeLocal;
use Laminas\Form\Element\Hidden;
use Laminas\Hydrator\HydratorInterface;
use OffreFormation\Entity\Db\ElementPedagogique;
use OffreFormation\Entity\Db\TypeIntervention;
use OffreFormation\Service\Traits\TypeInterventionServiceAwareTrait;
use Paiement\Entity\Db\MotifNonPaiement;
@@ -28,6 +29,11 @@ class VolumeHoraireSaisieCalendaireForm extends AbstractForm
    use TypeInterventionServiceAwareTrait;
    use PeriodeServiceAwareTrait;

    /**
     * @var ElementPedagogique
     */
    protected $elementPedagogique = null;

    /**
     * @var boolean
     */
@@ -83,7 +89,7 @@ class VolumeHoraireSaisieCalendaireForm extends AbstractForm
            'type'       => 'Select',
            'options'    => [
                'label'         => 'Période',
                'value_options' => Util::collectionAsOptions($this->getPeriodes()),
                'value_options' => $this->getValuesOptionsPeriodes(),
            ],
            'attributes' => [
                'value' => '',
@@ -196,14 +202,14 @@ class VolumeHoraireSaisieCalendaireForm extends AbstractForm


    /**
     * @return Periode[]
     * @return array
     */
    protected function getPeriodes ()
    protected function getValuesOptionsPeriodes (): array
    {
        $qb = $this->getServicePeriode()->finderByHistorique();
        $this->getServicePeriode()->finderByEnseignement($qb);
        $periodes = $this->getServicePeriode()->findPeriodeByElementPedagogique($this->elementPedagogique);

        return $periodes;

        return $this->getServicePeriode()->getList($qb);
    }


@@ -211,12 +217,11 @@ class VolumeHoraireSaisieCalendaireForm extends AbstractForm
    /**
     * @return TypeIntervention[]
     */
    protected function getTypesIntervention ()
    protected function getTypesIntervention (): array
    {
        $qb = $this->getServiceTypeIntervention()->finderByContext();
        $this->getServiceTypeIntervention()->finderByHistorique($qb);
        $typeInterventions = $this->getServiceTypeIntervention()->findTypeInterventionByElementPedagogique($this->elementPedagogique);

        return $this->getServiceTypeIntervention()->getList($qb);
        return $typeInterventions;
    }


@@ -327,7 +332,17 @@ class VolumeHoraireSaisieCalendaireForm extends AbstractForm
        return $this;
    }

    /**
     * @param ElementPedagogique $elementPedagogique
     *
     * @return VolumeHoraireSaisieCalendaireForm
     */
    public function setElementPedagogique (ElementPedagogique $elementPedagogique): self
    {
        $this->elementPedagogique = $elementPedagogique;

        return $this;
    }

    /**
     * Should return an array specification compatible with
+18 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ namespace OffreFormation\Service;
use Application\Service\AbstractEntityService;
use Application\Service\RuntimeException;
use Doctrine\ORM\QueryBuilder;
use OffreFormation\Entity\Db\ElementPedagogique;
use OffreFormation\Entity\Db\TypeIntervention;

/**
@@ -100,4 +101,21 @@ class TypeInterventionService extends AbstractEntityService
            return null;
        }
    }

    public function findTypeInterventionByElementPedagogique (ElementPedagogique $elementPedagogique): array
    {
        $sql = "
              SELECT ti.id, ti.code  
              FROM element_pedagogique ep 
              JOIN type_intervention_ep tie ON ep.id = tie.element_pedagogique_id AND tie.histo_destruction IS NULL
			  JOIN type_intervention ti	ON ti.id = tie.type_intervention_id              
			  WHERE ep.id = :elementPedagogique
        ";

        $res = $this->getEntityManager()->getConnection()->fetchAllKeyValue($sql, ['elementPedagogique' => $elementPedagogique->getId()]);

        return $res;
    }


}
 No newline at end of file