entityManager = $entityManager; } /** * @param int $pageOptionId * @param int $generationType * * @return array */ public function findByPageOptionsAndType(string $pageOptionId, int $generationType, ?int $pageDuplicateId): array { $parameters = [ 'pageId' => $pageOptionId, 'generationType' => $generationType ]; $qb = $this->entityManager->createQueryBuilder(); $qb->select('g') ->from(GenerationFileData::class, 'g') ->innerJoin('g.pageOptions', 'p'); if (isset($pageDuplicateId)) { $qb->innerJoin('g.pageDuplicate', 'd'); } $qb->where('p.id = :pageId') ->andWhere('g.type = :generationType') ->andWhere('g.archivedAt IS NULL') ->andWhere('g.deletedAt IS NULL'); if (isset($pageDuplicateId)) { $qb->andWhere('d.id = :pageDuplicateId'); $parameters['pageDuplicateId'] = $pageDuplicateId; } else { $qb->andWhere('g.pageDuplicate is null'); } $qb->setParameters($parameters); $result = $qb->getQuery() ->getResult(); return $result; } /** * @param array $generationFileDatas * * @return bool|Exception */ public function archive(array $generationFileDatas) { try { foreach ($generationFileDatas as $generationFileData) { $generationFileData->setArchivedAt(new DateTime()); $this->entityManager->persist($generationFileData); } $this->entityManager->flush(); $result = true; } catch (Exception $e) { $result = $e; } return $result; } /** * @param string $pageOptionId * @param int $generationType * @param string $fileType * @param int|null $version * * @return array */ public function findPreview(string $pageOptionId, int $generationType, string $fileType, ?int $pageDuplicateId): array { $parameters = [ 'pageOptionId' => $pageOptionId, 'generationType' => $generationType, 'fileType' => $fileType ]; $qb = $this->entityManager->createQueryBuilder(); $qb->select('g') ->from(GenerationFileData::class, 'g') ->innerJoin('g.pageOptions', 'po'); if (isset($pageDuplicateId)) { $qb->innerJoin('g.pageDuplicate', 'd'); } $qb->where('po.id = :pageOptionId') ->andWhere('g.type = :generationType') ->andWhere('g.extension = :fileType') ->andWhere('g.archivedAt IS NULL') ->andWhere('g.deletedAt IS NULL'); if (isset($pageDuplicateId)) { $qb->andWhere('d.id = :pageDuplicateId'); $parameters['pageDuplicateId'] = $pageDuplicateId; } else { $qb->andWhere('g.pageDuplicate is null'); } $qb->setParameters($parameters); $result = $qb->getQuery() ->getResult(); return $result; } /** * @param string $pageOptionId * @param int $generationType * @param string $fileType * @param int|null $version * * @return array */ public function findPreviewHTML(string $pageOptionId, int $generationType, string $fileType, ?int $pageDuplicateId): array { $parameters = [ 'pageOptionId' => $pageOptionId, 'generationType' => $generationType, 'fileType' => $fileType, 'name' => "%_preview%" ]; $qb = $this->entityManager->createQueryBuilder(); $qb->select('g') ->from(GenerationFileData::class, 'g') ->innerJoin('g.pageOptions', 'po'); if (isset($pageDuplicateId)) { $qb->innerJoin('g.pageDuplicate', 'd'); } $qb->where('po.id = :pageOptionId') ->andWhere('g.type = :generationType') ->andWhere('g.extension = :fileType') ->andWhere('g.archivedAt IS NULL') ->andWhere('g.deletedAt IS NULL') ->andWhere('g.name LIKE :name'); if (isset($pageDuplicateId)) { $qb->andWhere('d.id = :pageDuplicateId'); $parameters['pageDuplicateId'] = $pageDuplicateId; } else { $qb->andWhere('g.pageDuplicate is null'); } $qb->setParameters($parameters); $result = $qb->getQuery() ->getResult(); return $result; } /** * @param string $pageOptionId * @param int $generationType * @param string $fileType * * @return array */ public function findGenerateFileHTML(string $pageOptionId, ?int $pageDuplicateId): array { $parameters = [ 'pageOptionId' => $pageOptionId, 'generationType' => '0', 'fileType' => 'html', 'name' => "%_preview%" ]; $qb = $this->entityManager->createQueryBuilder(); $qb->select('g') ->from(GenerationFileData::class, 'g') ->innerJoin('g.pageOptions', 'po'); if (isset($pageDuplicateId)) { $qb->innerJoin('g.pageDuplicate', 'd'); } $qb->where('po.id = :pageOptionId') ->andWhere('g.type = :generationType') ->andWhere('g.extension = :fileType') ->andWhere('g.archivedAt IS NULL') ->andWhere('g.deletedAt IS NULL') ->andWhere('g.name NOT LIKE :name'); if (isset($pageDuplicateId)) { $qb->andWhere('d.id = :pageDuplicateId'); $parameters['pageDuplicateId'] = $pageDuplicateId; } else { $qb->andWhere('g.pageDuplicate is null'); } $qb->setParameters($parameters); $result = $qb->getQuery() ->getResult(); return $result; } /** * {@inheritDoc} */ public function findByPageOptionIdsAndGenerationType(array $ids, int $generationType): array { $qb = $this->entityManager->createQueryBuilder(); return $qb->select('g') ->from(GenerationFileData::class, 'g') ->innerJoin('g.pageOptions', 'po') ->where($qb->expr()->in('po.id', $ids)) ->andWhere('g.type = :generationType') ->andWhere('g.archivedAt IS NULL') ->andWhere('g.deletedAt IS NULL') ->setParameter("generationType", $generationType) ->getQuery() ->getResult(); } }