entityManager = $entityManager; } /** * @param ExportTemplateOption $option * * @return ExportTemplateOption */ public function save(ExportTemplateOption $option): ExportTemplateOption { $this->entityManager->persist($option); $this->entityManager->flush(); return $option; } /** * @param int $id * * @return ExportTemplateOption|null */ public function findById(int $id): ?ExportTemplateOption { return $this->entityManager ->createQueryBuilder() ->select('o') ->from(ExportTemplateOption::class, 'o') ->where('o.id = :id') ->setParameter('id', $id) ->getQuery() ->getOneOrNullResult() ; } /** * @param int $export * @param int $option * * @return ExportTemplateOption|null */ public function findByExportAndOptionId(int $export, int $option): ?ExportTemplateOption { return $this->entityManager ->createQueryBuilder() ->select('o') ->from(ExportTemplateOption::class, 'o') ->innerJoin('o.export', 'e') ->where('o.templateOptionId = :option') ->andWhere('e.id = :export') ->setParameters(['export'=> $export, 'option' => $option]) ->getQuery() ->getOneOrNullResult() ; } /** * @param int $export * @param int $option * @param int $pageFlatplan * * @return ExportTemplateOption|null */ public function findByExportOptionIdAndPageFlatplan(int $export, int $option, int $pageFlatplan, ?int $pageDuplicateId): ?ExportTemplateOption { $qb = $this->entityManager ->createQueryBuilder() ->select('o') ->from(ExportTemplateOption::class, 'o') ->innerJoin('o.export', 'e') ->where('o.templateOptionId = :option') ->andWhere('e.id = :export') ->andWhere('o.flatplanPageId = :pageFlatplan'); if(!empty($pageDuplicateId)){ $qb->leftJoin('o.pageDuplicate','p') ->andWhere('p.id = :pageDupliId') ->setParameter('pageDupliId', $pageDuplicateId); } else { $qb->andWhere("o.pageDuplicate is null"); } return $qb->setParameter('export', $export) ->setParameter('option', $option) ->setParameter('pageFlatplan', $pageFlatplan) ->getQuery() ->getOneOrNullResult() ; } public function findMultiple(int $export, ?int $page, int $nbOptions) { $return = $this->entityManager ->createQueryBuilder() ->select('o') ->from(ExportTemplateOption::class, 'o'); if ($page) { $return->where('o.flatplanPageId = :page') ->setParameter('page', $page); } else { $return->innerJoin('o.export', 'e') ->where('o.templateOptionId <= :nbOptions') ->andWhere('e.id = :export') ->setParameters(['export'=> $export, 'nbOptions' => $nbOptions]); } return $return->andWhere("o.pageDuplicate is null") ->getQuery() ->getResult(); } public function findMultiplePageDuplicate(int $export, ?int $page, int $nbOptions, ?int $pageDuplicateId) { $return = $this->entityManager ->createQueryBuilder() ->select('o') ->from(ExportTemplateOption::class, 'o') ->innerJoin('o.pageDuplicate','p'); if ($page) { $return->where('o.flatplanPageId = :page') ->setParameter('page', $page); } else { $return->innerJoin('o.export', 'e') ->where('o.templateOptionId <= :nbOptions') ->andWhere('e.id = :export') ->setParameters(['export'=> $export, 'nbOptions' => $nbOptions]); } $return->andWhere('p.id = :pageDuplicate') ->setParameter('pageDuplicate', $pageDuplicateId); return $return->getQuery() ->getResult(); } public function updatePageId(int $oldId, int $newId) { try { $query = $this->entityManager->createQuery(); $query->setDQL( "UPDATE ".ExportTemplateOption::class." o SET o.flatplanPageId = '" . $newId . "' WHERE o.flatplanPageId = " . $oldId ); $query->execute(); return true; } catch (Exception $exception) { return false; } } }