Commit 0e8e4ac1 authored by Thomas Hamel's avatar Thomas Hamel
Browse files

fix xml pb merge

parent 2596f927
Loading
Loading
Loading
Loading
+0 −1
Changes for module/Application/src/Application/Controller/Rapport/RapportCsiController.php: 0 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@ class RapportCsiController extends RapportController

        return new ViewModel([
            'rapports' => $rapportsAvecAutorisationInscription ?? $this->rapportsTeleverses,
            'autorisationsInscription' => $this->fetchAutorisationsInscriptionParThese($this->these),
            'these' => $this->these,
            'form' => $this->form,
            'isTeleversementPossible' => $this->isTeleversementPossible(),
+6 −6
Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.AutorisationInscription.dcm.xml: 6 added lines, 6 removed lines.
Original line number Diff line number Diff line
@@ -13,17 +13,17 @@

    <many-to-one field="individu" target-entity="Individu\Entity\Db\Individu">
      <join-columns>
        <join-column name="INDIVIDU_ID" referenced-column-name="ID"/>
        <join-column name="INDIVIDU_ID" referenced-column-name="id"/>
      </join-columns>
    </many-to-one>

    <many-to-one field="these" target-entity="These\Entity\Db\These">
      <join-column name="THESE_ID" referenced-column-name="ID"/>
      <join-column name="THESE_ID" referenced-column-name="id"/>
    </many-to-one>

    <many-to-one field="rapport" target-entity="Application\Entity\Db\Rapport">
      <join-columns>
        <join-column name="RAPPORT_ID" referenced-column-name="ID"/>
        <join-column name="RAPPORT_ID" referenced-column-name="id"/>
      </join-columns>
    </many-to-one>
    <field name="histoCreation" type="datetime" column="HISTO_CREATION"/>
@@ -32,17 +32,17 @@

    <many-to-one field="histoModificateur" target-entity="Application\Entity\Db\Utilisateur">
      <join-columns>
        <join-column name="HISTO_MODIFICATEUR_ID" referenced-column-name="ID"/>
        <join-column name="HISTO_MODIFICATEUR_ID" referenced-column-name="id"/>
      </join-columns>
    </many-to-one>
    <many-to-one field="histoDestructeur" target-entity="Application\Entity\Db\Utilisateur">
      <join-columns>
        <join-column name="HISTO_DESTRUCTEUR_ID" referenced-column-name="ID"/>
        <join-column name="HISTO_DESTRUCTEUR_ID" referenced-column-name="id"/>
      </join-columns>
    </many-to-one>
    <many-to-one field="histoCreateur" target-entity="Application\Entity\Db\Utilisateur">
      <join-columns>
        <join-column name="HISTO_CREATEUR_ID" referenced-column-name="ID"/>
        <join-column name="HISTO_CREATEUR_ID" referenced-column-name="id"/>
      </join-columns>
    </many-to-one>

+2 −2
Changes for module/Application/src/Application/Entity/Db/Mapping/Application.Entity.Db.TitreAcces.dcm.xml: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -29,13 +29,13 @@

        <many-to-one field="etablissement" target-entity="Structure\Entity\Db\Etablissement">
            <join-columns>
                <join-column name="etab_id" referenced-column-name="ID"/>
                <join-column name="etab_id" referenced-column-name="id"/>
            </join-columns>
        </many-to-one>

        <many-to-one field="pays" target-entity="Application\Entity\Db\Pays">
            <join-columns>
                <join-column name="pays_id" referenced-column-name="ID"/>
                <join-column name="pays_id" referenced-column-name="id"/>
            </join-columns>
        </many-to-one>

+1 −205
Changes for module/Application/src/Application/Service/AutorisationInscription/AutorisationInscriptionService.php: 1 added line, 205 removed lines.
Original line number Diff line number Diff line
@@ -57,8 +57,7 @@ class AutorisationInscriptionService extends BaseService

    public function createQueryBuilder() : QueryBuilder
    {
        $qb = $this->getEntityManager()->getRepository(AutorisationInscription::class)->createQueryBuilder('autorisationInscription');
        return $qb;
        return $this->getRepository()->createQueryBuilder('autorisationInscription');
    }

    public function create(AutorisationInscription $autorisationInscription) : AutorisationInscription
@@ -131,211 +130,8 @@ class AutorisationInscriptionService extends BaseService
        return $autorisationInscription;
    }

    /**
     * @param int $id
     * @return Rapport
     * @throws NoResultException
     */
    public function findRapportById(int $id): Rapport
    {
        $qb = $this->getRepository()->createQueryBuilder('ra');
        $qb
            ->addSelect('t, f')
            ->join('ra.these', 't')
            ->join('ra.fichier', 'f')
            ->where('ra = :id')->setParameter('id', $id);

        try {
            return $qb->getQuery()->getSingleResult();
        } catch (NonUniqueResultException $e) {
            throw new RuntimeException("Impossible mais vrai !");
        }
    }

    /**
     * @param These $these
     * @param TypeRapport|null $type
     * @return Rapport[]
     */
    public function findRapportsForThese(These $these, TypeRapport $type = null): array
    {
        $qb = $this->getRepository()->createQueryBuilder('ra');
        $qb
            ->addSelect('t, f')
            ->addSelect('tr')->join('ra.typeRapport', 'tr')
            ->join('ra.these', 't', Join::WITH, 't =:these')->setParameter('these', $these)
            ->join('ra.fichier', 'f')
            ->andWhereNotHistorise()
            ->orderBy('ra.anneeUniv');

        if ($type !== null) {
            $qb->andWhere('tr = :type')->setParameter('type', $type);
        }

        return $qb->getQuery()->getResult();
    }

    /**
     * Enregistre le rapport spécifié, après avoir créé le fichier à partir des données d'upload fournies.
     *
     * @param Rapport $rapport
     * @param array $uploadData Données résultant de l'upload de fichiers
     * @return Rapport Rapport annuel créé
     */
    public function saveRapport(Rapport $rapport, array $uploadData): Rapport
    {
        $codeNatureFichier = $this->computeCodeNatureFichierFromTypeRapport($rapport);

        $this->fichierService->setNomFichierFormatter(new NomFichierRapportFormatter($rapport));
        $fichiers = $this->fichierService->createFichiersFromUpload($uploadData, $codeNatureFichier);

        $this->entityManager->beginTransaction();
        try {
            $this->fichierService->saveFichiers($fichiers);

            $fichier = array_pop($fichiers); // il n'y a en fait qu'un seul fichier
            $rapport->setFichier($fichier);

            $these = $rapport->getThese();
            $these->addRapport($rapport);

            $this->entityManager->persist($rapport);
            $this->entityManager->flush($rapport);
            $this->entityManager->commit();
        } catch (Exception $e) {
            $this->entityManager->rollback();
            throw new RuntimeException("Erreur survenue lors de l'enregistrement des rapports annuels, rollback!", 0, $e);
        }

        return $rapport;
    }

    public function updateRapport(Rapport $rapport): Rapport
    {
        $this->entityManager->beginTransaction();
        try {
            $this->entityManager->persist($rapport);
            $this->entityManager->flush($rapport);
            $this->entityManager->commit();
        } catch (Exception $e) {
            $this->entityManager->rollback();
            throw new RuntimeException("Erreur survenue lors de l'enregistrement des rapports, rollback!", 0, $e);
        }

        return $rapport;
    }

    private function computeCodeNatureFichierFromTypeRapport(Rapport $rapport): string
    {
        switch ($rapport->getTypeRapport()->getCode()) {
            case TypeRapport::RAPPORT_CSI:
                return NatureFichier::CODE_RAPPORT_CSI;
            case TypeRapport::RAPPORT_MIPARCOURS:
                return NatureFichier::CODE_RAPPORT_MIPARCOURS;
            default:
                throw new InvalidArgumentException("Le type du rapport spécifié n'est pas supporté");
        }
    }

    /**
     * @param Rapport $rapport
     */
    public function deleteRapport(Rapport $rapport)
    {
        $fichier = $rapport->getFichier();
        $these = $rapport->getThese();

        $this->entityManager->beginTransaction();
        try {
            $this->rapportValidationService->deleteAllForRapport($rapport);
            $this->fichierService->supprimerFichiers([$fichier]);
            $these->removeRapport($rapport);
            $this->entityManager->remove($rapport);
            $this->entityManager->commit();
        } catch (Exception $e) {
            $this->entityManager->rollback();
            throw new RuntimeException("Erreur survenue lors de la suppression des rapports, rollback!", 0, $e);
        }
    }

    /**
     * @param TypeRapport $typeRapport
     * @param bool $cacheable
     * @return array
     */
    public function findDistinctAnnees(TypeRapport $typeRapport, bool $cacheable = false): array
    {
        $qb = $this->getRepository()->createQueryBuilder('ra');
        $qb
            ->distinct()
            ->select("ra.anneeUniv")
            ->join('ra.typeRapport', 'tr', Join::WITH, 'tr = :type')->setParameter('type', $typeRapport)
            ->orderBy("ra.anneeUniv", 'desc');

        $qb->setCacheable($cacheable);

        return array_map(function($value) {
            return current($value);
        }, $qb->getQuery()->getScalarResult());
    }

    /**
     * @param \These\Entity\Db\These $these
     * @param TypeRapport $typeRapport
     * @param bool $cacheable
     * @return Rapport[] [int => Rapport[]]
     */
    public function findRapportsParAnneesForThese(These $these, TypeRapport $typeRapport, bool $cacheable = false): array
    {
        $qb = $this->getRepository()->createQueryBuilder('ra');
        $qb
            ->join('ra.these', 't', Join::WITH, 't = :these')->setParameter('these', $these)
            ->join('ra.typeRapport', 'tr', Join::WITH, 'tr = :type')->setParameter('type', $typeRapport)
            ->orderBy("ra.anneeUniv", 'desc');

        /** @var Rapport $rapports */
        $rapports = $qb->setCacheable($cacheable)->getQuery()->getArrayResult();

        $rapportsParAnnees = [];
        foreach ($rapports as $rapport) {
            $anneeUniv = $rapport['anneeUniv'];
            if (!array_key_exists($anneeUniv, $rapportsParAnnees)) {
                $rapportsParAnnees[$anneeUniv] = [];
            }
            $rapportsParAnnees[$anneeUniv][] = $rapport;
        }

        return $rapportsParAnnees;
    }

    /**
     * @param string $typeRapportCode
     * @return TypeRapport
     */
    public function findTypeRapportByCode(string $typeRapportCode): TypeRapport
    {
        $qb = $this->getEntityManager()->getRepository(TypeRapport::class);

        /** @var TypeRapport $type */
        $type = $qb->findOneBy(['code' => $typeRapportCode]);

        return $type;
    }

    /**
     * @param \Application\Entity\AnneeUniv $anneeUniv
     * @return \Closure
     */
    public function getFilterRapportsByAnneeUniv(AnneeUniv $anneeUniv): Closure
    {
        return function (Rapport $rapport) use ($anneeUniv) {
            return $rapport->getAnneeUniv() === $anneeUniv;
        };
    }

    /**
     * @param These $these
     * @param bool $cacheable
     * @return array
     */
    public function findAutorisationsInscriptionParThese(These $these): array
+6 −3
Changes for module/Application/view/application/rapport/partial/rapports-table.phtml: 6 added lines, 3 removed lines.
Original line number Diff line number Diff line
@@ -19,7 +19,10 @@ use Application\View\Renderer\PhpRenderer;

/**
 * @var PhpRenderer $this
 * @var array $rapports
 * @var array{
 *      rapport: Rapport,
 *      autorisationInscription: AutorisationInscription
 *  } | array<Rapport> $rapports
 * @var AutorisationInscription[] $autorisationsInscription
 *
 * @var string $routeName
@@ -158,7 +161,7 @@ $acteursFormatterCodirecteurs->asSeparated()
    <?php foreach ($rapports as $ra): ?>
        <tr>
            <?php
            $rapport = $ra["rapport"] ?? $ra;
            $rapport = is_array($ra) && $ra["rapport"] ? $ra["rapport"] : $ra;
            $these = $rapport->getThese();
            $rapportValidation = $rapport->getRapportValidation();
            $rapportAvis = $rapport->getRapportAvis();
@@ -327,7 +330,7 @@ $acteursFormatterCodirecteurs->asSeparated()
                $derniereAnneeUnivInscription = AnneeUniv::fromPremiereAnnee(max($anneesInscriptionThese));

                /** @var AutorisationInscription|null $autorisationInscription */
                $autorisationInscription = $ra["autorisationInscription"] ?? null;
                $autorisationInscription = is_array($ra) && $ra["autorisationInscription"] ? $ra["autorisationInscription"] : null;
                $hasAutorisation = $autorisationInscription?->getAutorisationInscription();

                if ($derniereAnneeUnivInscription === $rapport->getAnneeUniv() && $hasAutorisation === null): ?>
Loading