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

[Module Formation] Ajout d'un nouvel état de présence (Abscence non justifié)...

[Module Formation] Ajout d'un nouvel état de présence (Abscence non justifié) + Possibilité de renseigner les présences pour toute la session
parent a63c86e3
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@ Version 3.2.5 (XX/XX/2023)
- Division de l'événement d'envoi de l'avancement en deux événements : le premier vers les autorités le second vers les supérieur·es
- Ajout de l'extraction des agents et de leurs entretiens professionnels
- [Fix] Correction du souci de remonté des fiches de poste des agents forcés dans une structure
- [Module Formation] Ajout d'un nouvel état de présence (Abscence non justifié)
- [Module Formation] Possibilité de renseigner les présences pour toute la session

Modification en BD
---

@@ -32,6 +35,12 @@ VALUES ('rappel_campagne_superieur', 'Rappel avancement campagne EP [Supérieur
delete from unicaen_evenement_instance
where type_id in (select id from unicaen_evenement_type where code='rappel_campagne');

-- modification du statut de presence
alter table formation_presence add statut varchar(256) default 'NON RENSEIGNEE' not null;
update formation_presence set statut='NON RENSEIGNEE' where presence_temoin IS NULL;
update formation_presence set statut='PRESENCE' where presence_temoin IS true;
update formation_presence set statut='ABSENCE JUSTIFIEE' where presence_temoin IS false;
alter table formation_presence drop column presence_temoin;
```

Evolution des librairies 
+14 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ return [
                    'action' => [
                        'toggle-presence',
                        'toggle-presences',
                        'toggle-toutes-presences',
                    ],
                    'privileges' => [
                        FormationinstancepresencePrivileges::FORMATIONINSTANCEPRESENCE_MODIFIER,
@@ -56,6 +57,7 @@ return [
                        'options' => [
                            'route'    => '/toggle-presence/:journee/:inscrit',
                            'defaults' => [
                                /** @see PresenceController::togglePresenceAction() */
                                'controller' => PresenceController::class,
                                'action'     => 'toggle-presence',
                            ],
@@ -66,11 +68,23 @@ return [
                        'options' => [
                            'route'    => '/toggle-presences/:mode/:inscrit',
                            'defaults' => [
                                /** @see PresenceController::togglePresencesAction() */
                                'controller' => PresenceController::class,
                                'action'     => 'toggle-presences',
                            ],
                        ],
                    ],
                    'toggle-toutes-presences' => [
                        'type'  => Segment::class,
                        'options' => [
                            'route'    => '/toggle-toutes-presences/:mode/:formation-instance',
                            'defaults' => [
                                /** @see PresenceController::toggleToutesPresencesAction() */
                                'controller' => PresenceController::class,
                                'action'     => 'toggle-toutes-presences',
                            ],
                        ],
                    ],
                ],
            ],
        ],
+1 −1
Original line number Diff line number Diff line
@@ -601,7 +601,7 @@ class ImportationLagafController extends AbstractActionController {
                        $presence = new Presence();
                        $presence->setJournee($journee);
                        $presence->setInscrit($inscrit);
                        $presence->setPresent($data[$position_presence] === "1");
                        $presence->setStatut($data[$position_presence] === Presence::PRESENCE_PRESENCE);
                        $presence->setSource($this->sourceLagaf);
                        $presence->setIdSource($st_journee . "-" . $st_inscrit);
                        $presence->setPresenceType("LAGAF");
+38 −6
Original line number Diff line number Diff line
@@ -47,18 +47,18 @@ class PresenceController extends AbstractActionController
            $presence = new Presence();
            $presence->setJournee($journee);
            $presence->setInscrit($inscrit);
            $presence->setPresent(true);
            $presence->setStatut(Presence::PRESENCE_PRESENCE);
            $presence->setPresenceType("???");
            $this->getPresenceService()->create($presence);
        } else {
            $presence->setPresent(!$presence->isPresent());
            $presence->tooglePresence();
            $this->getPresenceService()->update($presence);
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/reponse');
        $vm->setVariables([
            'reponse' => $presence->isPresent(),
            'reponse' => $presence->getStatut(),
        ]);
        return $vm;
    }
@@ -79,11 +79,11 @@ class PresenceController extends AbstractActionController
                $presence = new Presence();
                $presence->setJournee($journee);
                $presence->setInscrit($inscrit);
                $presence->setPresent($mode === 'on');
                $presence->setStatut($mode);
                $presence->setPresenceType("???");
                $this->getPresenceService()->create($presence);
            } else {
                $presence->setPresent($mode === 'on');
                $presence->setStatut($mode);
                $this->getPresenceService()->update($presence);
            }
        }
@@ -91,7 +91,39 @@ class PresenceController extends AbstractActionController
        $vm = new ViewModel();
        $vm->setTemplate('application/default/reponse');
        $vm->setVariables([
            'reponse' => ($mode === 'on'),
            'reponse' => $mode,
        ]);
        return $vm;
    }

    public function toggleToutesPresencesAction() : ViewModel
    {
        $mode = $this->params()->fromRoute('mode');
        $instance = $this->getFormationInstanceService()->getRequestedFormationInstance($this);

        foreach ($instance->getInscrits() as $inscrit) {
            $journees = $instance->getJournees();
            /** @var  Presence $presence */
            foreach ($journees as $journee) {
                $presence = $this->getPresenceService()->getPresenceByJourneeAndInscrit($journee, $inscrit);
                if ($presence === null) {
                    $presence = new Presence();
                    $presence->setJournee($journee);
                    $presence->setInscrit($inscrit);
                    $presence->setStatut($mode);
                    $presence->setPresenceType("???");
                    $this->getPresenceService()->create($presence);
                } else {
                    $presence->setStatut($mode);
                    $this->getPresenceService()->update($presence);
                }
            }
        }

        $vm = new ViewModel();
        $vm->setTemplate('application/default/reponse');
        $vm->setVariables([
            'reponse' => $mode,
        ]);
        return $vm;
    }
+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
        </many-to-one>

        <field name="presenceType"      column="presence_type"   type="string"  length="256"    nullable="false"/>
        <field name="presenceTemoin"    column="presence_temoin" type="boolean"                 nullable="false"/>
        <field name="statut"            column="statut"          type="string"  length="256"    nullable="false"/>
        <field name="commentaire"       column="commentaire"     type="string"  length="4096"   nullable="true"/>

        <field name="source"            column="source_id"          type="string"   length="128" nullable="true"/>
Loading