entityManager = $entityManager; } public function save(PageAutoGene $pageAutoGene) { try { $this->entityManager->persist($pageAutoGene); $this->entityManager->flush(); } catch (\Exception $e) { throw $e; } } public function saveMultiple(array $pages) { try { foreach ($pages as $page) { $this->entityManager->persist($page); } $this->entityManager->flush(); } catch (\Exception $e) { throw $e; } } public function list() { return $this->entityManager->createQueryBuilder() ->select('p') ->from(PageAutoGene::class, 'p') ->where('p.dateGeneration is null') ->getQuery() ->getResult(); } public function delete(PageAutoGene $pageAutoGene) { try { $this->entityManager->remove($pageAutoGene); $this->entityManager->flush(); } catch (\Exception $e) { throw $e; } } public function findOneByPageId($pageId) { return $this->entityManager->createQueryBuilder() ->select('p') ->from(PageAutoGene::class, 'p') ->innerJoin('p.pageOption', "o") ->innerJoin('o.pages', "pages") ->where('p.dateGeneration is null') ->andWhere('pages.id = :pageId') ->andWhere('p.pageDuplicate is null') ->setParameter('pageId', $pageId) ->getQuery() ->getOneOrNullResult(); } public function findByPageAndDuplicate($pageId, $pageDuplicateId) { return $this->entityManager->createQueryBuilder() ->select('p') ->from(PageAutoGene::class, 'p') ->innerJoin('p.pageOption', "o") ->innerJoin('o.pages', "pages") ->innerJoin('p.pageDuplicate', 'd') ->where('p.dateGeneration is null') ->andWhere('pages.id = :pageId') ->andWhere('d.id = :pageDuplicateId') ->setParameters(['pageId' => $pageId, 'pageDuplicateId' => $pageDuplicateId]) ->getQuery() ->getResult(); } /** * {@inheritDoc} */ public function findByPageOptions(array $pageOptions, array $pageDuplicates): array { $qb = $this->entityManager->createQueryBuilder(); $qb->select('p') ->from(PageAutoGene::class, 'p') ->innerJoin('p.pageOption', "o") ->innerJoin('o.pages', "pages"); if (!empty($pageDuplicates)) { $qb->where($qb->expr()->in('p.pageDuplicate', $pageDuplicates)); } else { $qb->where($qb->expr()->in('p.pageOption', $pageOptions)); } $qb->andWhere('o.deletedAt is null'); return $qb->getQuery()->getResult(); } }