pageQuery = $pageQuery; $this->pageAutoGenerationQuery = $pageAutoGenerationQuery; $this->messageBus = $messageBus; } /** * {@inheritDoc} */ public function autoAssignMedias(array $pages): array { $ids = [ "pageIds" => [], "pageOptionsId" => [] ]; foreach ($pages as $page) { $idProducts = json_decode($page->getIdProducts(), true); if ($page instanceof Page) { $template = $page->getOption()->getTemplate(); $exportId = $page->getCdf()->getExport()->getId(); $pageId = $page->getId(); $versionExport = null; $pageDuplicateId = null; $pageOptionId = $page->getOption()->getId(); } else if ($page instanceof PageDuplicate) { $template = $page->getPage()->getOption()->getTemplate(); $exportId = $page->getPage()->getCdf()->getExport()->getId(); $pageId = $page->getPage()->getId(); $versionExport = $page->getVersion()->getId(); $pageDuplicateId = $page->getId(); $pageOptionId = $page->getPage()->getOption()->getId(); } else { throw new UnprocessableEntityMaestroException("Unhandled object " . get_class($page)); } if (!empty($idProducts) && $template) { $templateMediasForElement = $template->getMedias()->filter(function ($templateMedia) { return $templateMedia->getForElement() === true; })->toArray(); if (!empty($templateMediasForElement)) { $this->pageQuery->autoAssignPhotoPositions($idProducts, $exportId, $templateMediasForElement, $pageId, $versionExport, $pageDuplicateId); } } $ids["pageIds"][] = $page->getId(); if (!empty($template)) { $ids["pageOptionsId"][] = $pageOptionId; } } return $ids; } /** * {@inheritDoc} */ public function managePagesGeneration(array $pageOptionsId, array $pages, string $token, array $pageDuplicatesId = []): void { if (count($pageOptionsId) > 1) { $this->messageBus->dispatch(new AutoGenerationMessage($pages, $pageOptionsId, $pageDuplicatesId, $token), [new AmqpStamp('execute_auto_generation')]); } else { $this->pageAutoGenerationQuery->addPageToGenerate($pages); $this->pageQuery->generatePages($pageOptionsId, $pageDuplicatesId, $token); } } }