Commit a3fecd9c authored by Laurent Lecluse's avatar Laurent Lecluse
Browse files

Refactoring de la complétude pour utiliser l'entité TblDossier

Mécanisme du passage automatique à l'étape suivante si l'intervenant finit de saisir son dossier
parent b089cc6d
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -403,11 +403,10 @@ class IntervenantDossierAssertion extends AbstractAssertion
    {

        $intervenantDossier = $this->getServiceDossier()->getByIntervenant($intervenant);
        $completudeDossier  = $this->getServiceDossier()->getCompletude($intervenantDossier);
        $isValidate         = $this->getServiceDossier()->getValidation($intervenant);

        return $this->asserts([
            $completudeDossier['dossier'],
            $intervenantDossier->getTblDossier()->getCompletude(),
            !$isValidate,
            $this->getRole()->hasPrivilege(Privileges::DOSSIER_VALIDATION),
        ]);
+16 −4
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ namespace Application\Controller;
use Application\Constants;
use Application\Entity\Db\IndicModifDossier;
use Application\Entity\Db\Intervenant;
use Application\Entity\Db\WfEtape;
use Application\Form\Intervenant\DossierValidation;
use Application\Form\Intervenant\Traits\AutresFormAwareTrait;
use Application\Form\Intervenant\Traits\IntervenantDossierFormAwareTrait;
@@ -65,13 +66,16 @@ class IntervenantDossierController extends AbstractController
        }
        /* Récupération du dossier de l'intervenant */
        $intervenantDossier = $this->getServiceDossier()->getByIntervenant($intervenant);

        /*Si dossier n'a pas encore d'id alors on le save et on calcule la completude*/
        if (!$intervenantDossier->getId()) {
            $this->getServiceDossier()->save($intervenantDossier);
            $this->updateTableauxBord($intervenantDossier->getIntervenant());
        }
        $intervenantDossierValidation = $this->getServiceDossier()->getValidation($intervenant);
        $tblDossier                   = $intervenantDossier->getTblDossier();

        $lastCompleted = $tblDossier->getCompletude();
        /* Initialisation du formulaire */
        $form = $this->getIntervenantDossierForm($intervenant);
        $form->bind($intervenantDossier);
@@ -87,12 +91,21 @@ class IntervenantDossierController extends AbstractController
                $this->getServiceDossier()->updateIndicModifDossier($intervenant, $intervenantDossier);
                //Recalcul des tableaux de bord nécessaires
                $this->updateTableauxBord($intervenantDossier->getIntervenant());
                $this->em()->refresh($tblDossier);

                /*On reinitialise le formulaire car le statut du dossier a
                pu être changé donc les règles d'affichage ne sont plus les mêmes*/
                $form = $this->getIntervenantDossierForm($intervenant);
                $form->bind($intervenantDossier);
                $this->flashMessenger()->addSuccessMessage('Enregistrement de vos données effectué');
                //return $this->redirect()->toUrl($this->url()->fromRoute('intervenant/dossier', [], [], true));

                if (!$lastCompleted && $tblDossier->getCompletude() && $role->getIntervenant()) { // on ne redirige que pour l'intervenant et seulement si le dossier a été nouvellement créé
                    $nextEtape = $this->getServiceWorkflow()->getNextEtape(WfEtape::CODE_DONNEES_PERSO_SAISIE, $intervenant);
                    if ($nextEtape && $url = $nextEtape->getUrl()) {
                        return $this->redirect()->toUrl($url);
                    }
                }
            } else {
                $this->flashMessenger()->addErrorMessage("Vos données n'ont pas été enregistré, veuillez vérifier les erreurs.");
            }
@@ -110,7 +123,6 @@ class IntervenantDossierController extends AbstractController
            'fieldset-employeur'               => $intervenantDossier->getStatut()->getDossierEmployeur(),
            'fieldset-autres'                  => (!empty($champsAutres)) ? 1 : 0,//Si le statut intervenant a au moins 1 champs autre
        ];
        $intervenantDossierCompletude = $this->getServiceDossier()->getCompletude($intervenantDossier);

        $iPrec    = $this->getServiceDossier()->intervenantVacataireAnneesPrecedentes($intervenant, 1);
        $lastHETD = $iPrec ? $this->getServiceService()->getTotalHetdIntervenant($iPrec) : 0;
@@ -135,7 +147,7 @@ class IntervenantDossierController extends AbstractController
            'intervenantDossier',
            'intervenantDossierValidation',
            'intervenantDossierStatut',
            'intervenantDossierCompletude',
            'tblDossier',
            'champsAutres',
            'fieldsetRules'
        );
+12 −6
Original line number Diff line number Diff line
@@ -2,12 +2,8 @@

namespace Application\Entity\Db;

use Application\Entity\Db\Traits\AnneeAwareTrait;
use Application\Entity\Db\Traits\CiviliteAwareTrait;
use Application\Entity\Db\Traits\DisciplineAwareTrait;
use Application\Entity\Db\Traits\EmployeurAwareTrait;
use Application\Entity\Db\Traits\GradeAwareTrait;
use Application\Entity\Db\Traits\StructureAwareTrait;
use Application\Entity\Traits\AdresseTrait;
use Application\Interfaces\AdresseInterface;
use Doctrine\Persistence\Mapping\ClassMetadata;
@@ -16,8 +12,6 @@ use Doctrine\Persistence\ObjectManagerAware;
use UnicaenApp\Entity\HistoriqueAwareInterface;
use UnicaenApp\Entity\HistoriqueAwareTrait;
use UnicaenApp\Service\EntityManagerAwareTrait;
use UnicaenImport\Entity\Db\Interfaces\ImportAwareInterface;
use UnicaenImport\Entity\Db\Traits\ImportAwareTrait;
use Zend\Permissions\Acl\Resource\ResourceInterface;

/**
@@ -157,6 +151,11 @@ class IntervenantDossier implements HistoriqueAwareInterface, ResourceInterface,
     */
    protected $intervenant;

    /**
     * @var TblDossier
     */
    protected $tblDossier;



    /**
@@ -831,6 +830,13 @@ class IntervenantDossier implements HistoriqueAwareInterface, ResourceInterface,



    public function getTblDossier(): ?TblDossier
    {
        return $this->tblDossier;
    }



    /**
     *
     * @param \Application\Entity\Db\Intervenant $intervenant
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@
        <field name="autre4" type="string" column="AUTRE_4" length="1000" nullable="true"/>
        <field name="autre5" type="string" column="AUTRE_5" length="1000" nullable="true"/>

        <one-to-one field="tblDossier" target-entity="Application\Entity\Db\TblDossier" mapped-by="dossier" />

        <many-to-one field="employeur" target-entity="Application\Entity\Db\Employeur">
            <join-column name="EMPLOYEUR_ID" referenced-column-name="ID"/>
+5 −10
Original line number Diff line number Diff line
@@ -3,17 +3,11 @@
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
    <entity name="Application\Entity\Db\TblDossier" table="TBL_DOSSIER">
        <indexes>
            <index name="IDX_126E18FDAA401F5C" columns="ANNEE_ID"/>
            <index name="IDX_126E18FD52CE5789" columns="DOSSIER_ID"/>
            <index name="IDX_126E18FDBC260C55" columns="VALIDATION_ID"/>
        </indexes>
        <unique-constraints>
            <unique-constraint name="tbl_dossier__un" columns="INTERVENANT_ID"/>
        </unique-constraints>
        <id name="id" type="integer" column="ID">
            <generator strategy="SEQUENCE"/>
            <sequence-generator sequence-name="TBL_DOSSIER_ID_seq" allocation-size="1" initial-value="1"/>
        </id>
        <field name="peutSaisirDossier" type="boolean" column="PEUT_SAISIR_DOSSIER" nullable="false">
            <options>
@@ -30,11 +24,14 @@
                <join-column name="INTERVENANT_ID" referenced-column-name="ID"/>
            </join-columns>
        </many-to-one>
        <many-to-one field="dossier" target-entity="Application\Entity\Db\IntervenantDossier" fetch="LAZY">
        <!--<one-to-one field="dossier" target-entity="Application\Entity\Db\IntervenantDossier" fetch="LAZY">
            <join-columns>
                <join-column name="DOSSIER_ID" referenced-column-name="ID"/>
            </join-columns>
        </many-to-one>
        </one-to-one>-->
        <one-to-one field="dossier" target-entity="Application\Entity\Db\IntervenantDossier" inversed-by="tblDossier">
            <join-column name="DOSSIER_ID" referenced-column-name="ID" />
        </one-to-one>
        <many-to-one field="annee" target-entity="Application\Entity\Db\Annee" fetch="LAZY">
            <join-columns>
                <join-column name="ANNEE_ID" referenced-column-name="ID"/>
@@ -49,7 +46,5 @@
        <field name="completudeEmployeur" type="boolean" column="COMPLETUDE_EMPLOYEUR" nullable="false"/>
        <field name="completudeAutres" type="boolean" column="COMPLETUDE_AUTRES" nullable="false"/>
        <field name="completudeStatut" type="boolean" column="COMPLETUDE_STATUT" nullable="false"/>


    </entity>
</doctrine-mapping>
Loading