Loading module/Oscar/src/Oscar/Entity/ActivityType.php +1 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ use Doctrine\ORM\Mapping as ORM; * Class ActivityType * @package Oscar\Entity * @ORM\Entity * @ORM\Entity(repositoryClass="Oscar\Entity\ActivityTypeRepository") */ class ActivityType implements ITrackable { Loading module/Oscar/src/Oscar/Entity/ActivityTypeRepository.php 0 → 100644 +26 −0 Original line number Diff line number Diff line <?php namespace Oscar\Entity; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query; class ActivityTypeRepository extends EntityRepository { /** * Retourne une "chaîne" des types (du plus proche au plus lointain, incluant ROOT) * @param ActivityType $activityType * @return int|mixed|string */ public function getChainFromActivityType( ActivityType $activityType ) { $query = $this->createQueryBuilder('at') ->where('at.lft < :lft AND at.rgt > :rgt') ->orderBy('at.lft', 'DESC'); return $query->getQuery()->setParameters([ 'lft' => $activityType->getLft(), 'rgt' => $activityType->getRgt() ])->getResult(); } } No newline at end of file module/Oscar/src/Oscar/Entity/PcruTypeContractRepository.php +31 −3 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ namespace Oscar\Entity; use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\NoResultException; use Oscar\Connector\IConnectedRepository; Loading Loading @@ -47,12 +48,17 @@ class PcruTypeContractRepository extends EntityRepository return $out; } public function getPcruContractLabelByActivityType( ActivityType $activityType ): ?PcruTypeContract /** * Retourne l'intitulé PCRU pour le type d'activité donnée. * * @param ActivityType $activityType * @return string|null * @throws \Doctrine\ORM\NonUniqueResultException */ public function getPcruContractByActivityType( ActivityType $activityType ): ?PcruTypeContract { try { $query = $this->createQueryBuilder('ptc') ->select('ptc.label label') ->where('ptc.activityType = :activityType') ->setParameter('activityType', $activityType) ->getQuery(); Loading @@ -63,4 +69,26 @@ class PcruTypeContractRepository extends EntityRepository return null; } } /** * Retourne l'intitulé PCRU pour le type d'activité donnée (en parsant l'arbre des types). * * @param ActivityType $activityType * @return string|null * @throws \Doctrine\ORM\NonUniqueResultException */ public function getPcruContractForActivityTypeChained( ActivityType $activityType) : ?PcruTypeContract { $labelPcru = $this->getPcruContractByActivityType($activityType); if( $labelPcru == null ){ $typeChain = $this->getEntityManager()->getRepository(ActivityType::class)->getChainFromActivityType($activityType); foreach ($typeChain as $type) { $type = $this->getPcruContractByActivityType($type); if( $type ){ return $type; } } } return null; } } No newline at end of file module/Oscar/src/Oscar/Factory/ActivityPcruInfoFromActivityFactory.php +2 −2 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ class ActivityPcruInfoFromActivityFactory $pcruContractTypeRepository = $this->entityManager->getRepository(PcruTypeContract::class); /** @var string $pcruContract */ $pcruContract = $pcruContractTypeRepository->getPcruContractLabelByActivityType($activity->getActivityType()); $pcruType = $pcruContractTypeRepository->getPcruContractForActivityTypeChained($activity->getActivityType()); $activityPcruInfos->setActivity($activity) ->setDocumentPath($documentSigned) Loading @@ -109,7 +109,7 @@ class ActivityPcruInfoFromActivityFactory ->setSourceFinancement($activity->getPcruSourceFinancementStr()) ->setResponsableScientifique($responsable) ->setCodeUniteLabintel($codeUniteLabintel) ->setTypeContrat($pcruContract) ->setTypeContrat($pcruType) ->setObjet($activity->getLabel()) ->setAcronyme($activity->getAcronym()) ->setMontantTotal($activity->getAmount()) Loading Loading
module/Oscar/src/Oscar/Entity/ActivityType.php +1 −0 Original line number Diff line number Diff line Loading @@ -13,6 +13,7 @@ use Doctrine\ORM\Mapping as ORM; * Class ActivityType * @package Oscar\Entity * @ORM\Entity * @ORM\Entity(repositoryClass="Oscar\Entity\ActivityTypeRepository") */ class ActivityType implements ITrackable { Loading
module/Oscar/src/Oscar/Entity/ActivityTypeRepository.php 0 → 100644 +26 −0 Original line number Diff line number Diff line <?php namespace Oscar\Entity; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query; class ActivityTypeRepository extends EntityRepository { /** * Retourne une "chaîne" des types (du plus proche au plus lointain, incluant ROOT) * @param ActivityType $activityType * @return int|mixed|string */ public function getChainFromActivityType( ActivityType $activityType ) { $query = $this->createQueryBuilder('at') ->where('at.lft < :lft AND at.rgt > :rgt') ->orderBy('at.lft', 'DESC'); return $query->getQuery()->setParameters([ 'lft' => $activityType->getLft(), 'rgt' => $activityType->getRgt() ])->getResult(); } } No newline at end of file
module/Oscar/src/Oscar/Entity/PcruTypeContractRepository.php +31 −3 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ namespace Oscar\Entity; use Doctrine\ORM\EntityManager; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\NoResultException; use Oscar\Connector\IConnectedRepository; Loading Loading @@ -47,12 +48,17 @@ class PcruTypeContractRepository extends EntityRepository return $out; } public function getPcruContractLabelByActivityType( ActivityType $activityType ): ?PcruTypeContract /** * Retourne l'intitulé PCRU pour le type d'activité donnée. * * @param ActivityType $activityType * @return string|null * @throws \Doctrine\ORM\NonUniqueResultException */ public function getPcruContractByActivityType( ActivityType $activityType ): ?PcruTypeContract { try { $query = $this->createQueryBuilder('ptc') ->select('ptc.label label') ->where('ptc.activityType = :activityType') ->setParameter('activityType', $activityType) ->getQuery(); Loading @@ -63,4 +69,26 @@ class PcruTypeContractRepository extends EntityRepository return null; } } /** * Retourne l'intitulé PCRU pour le type d'activité donnée (en parsant l'arbre des types). * * @param ActivityType $activityType * @return string|null * @throws \Doctrine\ORM\NonUniqueResultException */ public function getPcruContractForActivityTypeChained( ActivityType $activityType) : ?PcruTypeContract { $labelPcru = $this->getPcruContractByActivityType($activityType); if( $labelPcru == null ){ $typeChain = $this->getEntityManager()->getRepository(ActivityType::class)->getChainFromActivityType($activityType); foreach ($typeChain as $type) { $type = $this->getPcruContractByActivityType($type); if( $type ){ return $type; } } } return null; } } No newline at end of file
module/Oscar/src/Oscar/Factory/ActivityPcruInfoFromActivityFactory.php +2 −2 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ class ActivityPcruInfoFromActivityFactory $pcruContractTypeRepository = $this->entityManager->getRepository(PcruTypeContract::class); /** @var string $pcruContract */ $pcruContract = $pcruContractTypeRepository->getPcruContractLabelByActivityType($activity->getActivityType()); $pcruType = $pcruContractTypeRepository->getPcruContractForActivityTypeChained($activity->getActivityType()); $activityPcruInfos->setActivity($activity) ->setDocumentPath($documentSigned) Loading @@ -109,7 +109,7 @@ class ActivityPcruInfoFromActivityFactory ->setSourceFinancement($activity->getPcruSourceFinancementStr()) ->setResponsableScientifique($responsable) ->setCodeUniteLabintel($codeUniteLabintel) ->setTypeContrat($pcruContract) ->setTypeContrat($pcruType) ->setObjet($activity->getLabel()) ->setAcronyme($activity->getAcronym()) ->setMontantTotal($activity->getAmount()) Loading