mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-31 09:18:24 +00:00 
			
		
		
		
	WIP [genericDoc][activity] add repository method to get activity linked to storedObject
This commit is contained in:
		| @@ -15,6 +15,7 @@ use Chill\ActivityBundle\Entity\Activity; | ||||
| use Chill\PersonBundle\Entity\AccompanyingPeriod; | ||||
| use Chill\PersonBundle\Entity\Person; | ||||
| use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; | ||||
| use Doctrine\ORM\Query\Expr; | ||||
| use Doctrine\Persistence\ManagerRegistry; | ||||
|  | ||||
| /** | ||||
| @@ -97,4 +98,15 @@ class ActivityRepository extends ServiceEntityRepository | ||||
|  | ||||
|         return $qb->getQuery()->getResult(); | ||||
|     } | ||||
|  | ||||
|     public function findOneByDocument(int $documentId): Activity | ||||
|     { | ||||
|         $qb = $this->createQueryBuilder('a'); | ||||
|         $qb->select('a'); | ||||
|  | ||||
|         $qb->innerJoin('a.documents', 'd', Expr\Join::WITH, 'd.storedobject_id = :documentId'); | ||||
|         $qb->setParameter('documentId', $documentId); | ||||
|  | ||||
|         return $qb->getQuery()->getResult(); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,72 @@ | ||||
| {% import "@ChillDocStore/Macro/macro.html.twig" as m %} | ||||
| {% import "@ChillDocStore/Macro/macro_mimeicon.html.twig" as mm %} | ||||
| {% import '@ChillPerson/Macro/updatedBy.html.twig' as mmm %} | ||||
|  | ||||
| {% set a = document.calendar %} | ||||
|  | ||||
| <div class="item-bloc"> | ||||
|     <div class="item-row"> | ||||
|         <div class="item-col" style="width: unset"> | ||||
|             {% if document.storedObject.isPending %} | ||||
|                 <div class="badge text-bg-info" data-docgen-is-pending="{{ document.storedObject.id }}">{{ 'docgen.Doc generation is pending'|trans }}</div> | ||||
|             {% elseif document.storedObject.isFailure %} | ||||
|                 <div class="badge text-bg-warning">{{ 'docgen.Doc generation failed'|trans }}</div> | ||||
|             {% endif %} | ||||
|             <div class="denomination h2"> | ||||
|                 {{ document.storedObject.title }} | ||||
|             </div> | ||||
|             <div> | ||||
|                 {{ 'chill_calendar.Document'|trans }} | ||||
|             </div> | ||||
|             {% if document.storedObject.hasTemplate %} | ||||
|                 <div> | ||||
|                     <p>{{ document.storedObject.template.name|localize_translatable_string }}</p> | ||||
|                 </div> | ||||
|             {% endif %} | ||||
|         </div> | ||||
|  | ||||
|         <div class="item-col"> | ||||
|             <div class="container"> | ||||
|                 <div class="dates row text-end"> | ||||
|                     <span>{{ document.storedObject.createdAt|format_date('short') }}</span> | ||||
|                 </div> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
|  | ||||
|     <div class="item-row separator"> | ||||
|         <div class="item-col"> | ||||
|             <p class="date-label"> | ||||
|                 {% if c.endDate.diff(c.startDate).days >= 1 %} | ||||
|                     {{ c.startDate|format_datetime('short', 'short') }} | ||||
|                     - {{ c.endDate|format_datetime('short', 'short') }} | ||||
|                 {% else %} | ||||
|                     {{ c.startDate|format_datetime('short', 'short') }} | ||||
|                     - {{ c.endDate|format_datetime('none', 'short') }} | ||||
|                 {% endif %} | ||||
|             </p> | ||||
|         </div> | ||||
|     </div> | ||||
|  | ||||
|     <div class="item-row separator"> | ||||
|         <div class="item-col item-meta"> | ||||
|             {{ mmm.createdBy(document) }} | ||||
|         </div> | ||||
|         <ul class="item-col record_actions flex-shrink-1"> | ||||
|             <li> | ||||
|                 {{ chill_entity_workflow_list('Chill\\PersonBundle\\Entity\\AccompanyingPeriod\\AccompanyingPeriodWorkEvaluationDocument', document.id) }} | ||||
|             </li> | ||||
|             {% if is_granted('CHILL_CALENDAR_DOC_SEE', document) %} | ||||
|                 <li> | ||||
|                     {{ document.storedObject|chill_document_button_group(document.storedObject.title, is_granted('CHILL_CALENDAR_CALENDAR_EDIT', c)) }} | ||||
|                 </li> | ||||
|             {% endif %} | ||||
|             {% if is_granted('CHILL_CALENDAR_CALENDAR_EDIT', c) %} | ||||
|                 <li> | ||||
|                     <a href="{{ chill_path_add_return_path('chill_calendar_calendar_edit', {'id': c.id, 'docId': document.id}) }}" class="btn btn-edit"></a> | ||||
|                 </li> | ||||
|             {% endif %} | ||||
|         </ul> | ||||
|  | ||||
|     </div> | ||||
| </div> | ||||
| @@ -27,7 +27,7 @@ final class AccompanyingPeriodActivityGenericDocProvider implements GenericDocFo | ||||
| { | ||||
|     public const KEY = 'accompanying_period_activity_document'; | ||||
|  | ||||
|     private EntityManagerInterface  $em; | ||||
|     private EntityManagerInterface $em; | ||||
|  | ||||
|     private Security $security; | ||||
|  | ||||
| @@ -49,7 +49,6 @@ final class AccompanyingPeriodActivityGenericDocProvider implements GenericDocFo | ||||
|     public function buildFetchQueryForAccompanyingPeriod(AccompanyingPeriod $accompanyingPeriod, ?DateTimeImmutable $startDate = null, ?DateTimeImmutable $endDate = null, ?string $content = null, ?string $origin = null): FetchQueryInterface | ||||
|     { | ||||
|         $storedObjectMetadata = $this->em->getClassMetadata(StoredObject::class); | ||||
| //        $activityMetadata = $this->em->getClassMetadata(Activity::class); | ||||
|  | ||||
|         $query = new FetchQuery( | ||||
|             self::KEY, | ||||
|   | ||||
| @@ -11,6 +11,7 @@ declare(strict_types=1); | ||||
|  | ||||
| namespace Chill\ActivityBundle\Service\GenericDoc\Renderers; | ||||
|  | ||||
| use Chill\ActivityBundle\Repository\ActivityRepository; | ||||
| use Chill\ActivityBundle\Service\GenericDoc\Providers\AccompanyingPeriodActivityGenericDocProvider; | ||||
| use Chill\DocStoreBundle\GenericDoc\GenericDocDTO; | ||||
| use Chill\DocStoreBundle\GenericDoc\Twig\GenericDocRendererInterface; | ||||
| @@ -18,11 +19,14 @@ use Chill\DocStoreBundle\Repository\StoredObjectRepository; | ||||
|  | ||||
| final class AccompanyingPeriodActivityGenericDocRenderer implements GenericDocRendererInterface | ||||
| { | ||||
|     private StoredObjectRepository $repository; | ||||
|     private StoredObjectRepository $objectRepository; | ||||
|  | ||||
|     public function __construct(StoredObjectRepository $storedObjectRepository) | ||||
|     private ActivityRepository $activityRepository; | ||||
|  | ||||
|     public function __construct(StoredObjectRepository $storedObjectRepository, ActivityRepository $activityRepository) | ||||
|     { | ||||
|         $this->repository = $storedObjectRepository; | ||||
|         $this->objectRepository = $storedObjectRepository; | ||||
|         $this->activityRepository = $activityRepository; | ||||
|     } | ||||
|  | ||||
|     public function supports(GenericDocDTO $genericDocDTO, $options = []): bool | ||||
| @@ -38,7 +42,8 @@ final class AccompanyingPeriodActivityGenericDocRenderer implements GenericDocRe | ||||
|     public function getTemplateData(GenericDocDTO $genericDocDTO, $options = []): array | ||||
|     { | ||||
|         return [ | ||||
|             'document' => $this->repository->find($genericDocDTO->identifiers['id']) | ||||
|             'activity' => $this->activityRepository->findOneByDocument($genericDocDTO->identifiers['id']), | ||||
|             'document' => $this->objectRepository->find($genericDocDTO->identifiers['id']) | ||||
|         ]; | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user