Commit c2540eb1 authored by Antony Le Courtes's avatar Antony Le Courtes
Browse files

Contrôle dates à la saisie (mode calendaire) sur l'année universitaire (#53364)

parent 251457af
Loading
Loading
Loading
Loading
+44 −1
Original line number Diff line number Diff line
@@ -6,7 +6,9 @@ use Application\Entity\Db\Periode;
use Application\Filter\DateTimeFromString;
use Application\Filter\FloatFromString;
use Application\Form\AbstractForm;
use Application\Service\Traits\ContextServiceAwareTrait;
use Application\Service\Traits\PeriodeServiceAwareTrait;
use Contrat\Service\ContratServiceAwareTrait;
use Service\Service\TagServiceAwareTrait;
use Enseignement\Entity\VolumeHoraireListe;
use Enseignement\Hydrator\ListeFilterHydrator;
@@ -28,6 +30,7 @@ class VolumeHoraireSaisieCalendaireForm extends AbstractForm
    use TagServiceAwareTrait;
    use TypeInterventionServiceAwareTrait;
    use PeriodeServiceAwareTrait;
    use ContextServiceAwareTrait;

    /**
     * @var ElementPedagogique
@@ -379,6 +382,26 @@ class VolumeHoraireSaisieCalendaireForm extends AbstractForm
        return [
            'horaire-debut'             => [
                'required'   => true,
                'validators' => [[
                                     'name'    => 'Callback',
                                     'options' => [
                                         'messages' => [
                                             \Laminas\Validator\Callback::INVALID_VALUE => 'La date de début saisie n\'ai pas comprise dans la période de l\'année universitaire',
                                         ],
                                         'callback' => function ($value, $context = []) {
                                             $anneeContext = $this->getServiceContext()->getAnnee();
                                             $debAnnee     = $anneeContext->getDateDebut()->getTimestamp();
                                             $finAnnee     = $anneeContext->getDateFin()->getTimestamp();
                                             $horaireDebut = DateTimeFromString::run($context['horaire-debut']);
                                             $deb          = $horaireDebut->getTimestamp();
                                             if ($finAnnee > $deb && $debAnnee < $deb) {
                                                 return true;
                                             }

                                             return false;
                                         },
                                     ],
                                 ]],
            ],
            'horaire-fin'               => [
                'required'   => true,
@@ -400,6 +423,26 @@ class VolumeHoraireSaisieCalendaireForm extends AbstractForm
                                             return $diff >= 0;
                                         },
                                     ],
                                 ],
                                 [
                                     'name'    => 'Callback',
                                     'options' => [
                                         'messages' => [
                                             \Laminas\Validator\Callback::INVALID_VALUE => 'La date de fin saisie n\'ai pas comprise dans la période de l\'année universitaire',
                                         ],
                                         'callback' => function ($value, $context = []) {
                                             $anneeContext = $this->getServiceContext()->getAnnee();
                                             $debAnnee     = $anneeContext->getDateDebut()->getTimestamp();
                                             $finAnnee     = $anneeContext->getDateFin()->getTimestamp();
                                             $horaireFin   = DateTimeFromString::run($context['horaire-fin']);
                                             $fin          = $horaireFin->getTimestamp();
                                             if ($finAnnee > $fin && $debAnnee < $fin) {
                                                 return true;
                                             }

                                             return false;
                                         },
                                     ],
                                 ]],
            ],
            'motif-non-paiement'        => [