entityManager = $entityManager; $this->container = $container; } public function findById(int $id) { return $this->entityManager->createQueryBuilder() ->select('l') ->from(Layout::class, 'l') ->where('l.id = :id') ->andWhere('l.deletedAt is null') ->setParameter("id", $id) ->getQuery()->getOneOrNullResult(); } /** * @param array $layouts [Array ] * * @return bool */ public function saveMultiple(array $layouts): bool { try { foreach ($layouts as $layout) { $this->entityManager->persist($layout); } $this->entityManager->flush(); return true; } catch (Exception $excep) { return false; } } /** * @param int $twigId * @param int $elementTypeId * @param int $templateId * * @return [type] */ public function getLayout(int $variableProjectId, int $elementTypeId) { return $this->entityManager->createQueryBuilder() ->select('l') ->from(Layout::class, 'l') ->innerJoin('l.elementType', 'et') ->innerJoin('l.variableProject', "vp") ->where('vp.id = :variableProjectId') ->andWhere('et.id = :elementTypeId') ->andWhere('l.deletedAt is null') ->setParameters(['variableProjectId' => $variableProjectId, 'elementTypeId' => $elementTypeId]) ->getQuery()->getOneOrNullResult(); } /** * @param int $idProject * @param array $elementTypes_id * @param array $layouts_id * * @return array */ public function getMultipleNotIn(int $idProject, array $elementTypes_id, array $layouts_id): array { $qb = $this->entityManager->createQueryBuilder(); return $qb->select('l') ->from(Layout::class, 'l') ->innerJoin('l.elementType', 'et') ->where($qb->expr()->in('et.id', $elementTypes_id)) ->andWhere($qb->expr()->notIn('l.id', $layouts_id)) ->andWhere('et.project = :idProject') ->andWhere('l.deletedAt is null') ->setParameter('idProject', $idProject) ->getQuery()->getResult(); } public function delete(Layout $layout) { $this->entityManager->remove($layout); $this->entityManager->flush(); } /** * @param int $elementTypeId * * @return bool */ public function deleteByElementTypePim(int $elementTypeId): bool { try { $dateNow = new \DateTime(); $connection = $this->container->get('doctrine.dbal.projects_connection'); $sql = ' UPDATE element_type_template_configuration SET deletedAt = "' . $dateNow->format('Y-m-d H:m:s') . '" WHERE elementType_id IN (SELECT id FROM project_element_type WHERE element_type_pim = ' . $elementTypeId . ')'; $stmt = $connection->prepare($sql); $stmt->execute(); return true; } catch (Exception $e) { return false; } } public function findByElementTypeId(int $elementType_id) { $qb = $this->entityManager->createQueryBuilder(); return $qb->select('l') ->from(Layout::class, 'l') ->innerJoin('l.elementType', 'e') ->where('e.id = :elementType_id') ->andWhere('l.deletedAt is null') ->setParameter('elementType_id', $elementType_id) ->getQuery() ->getResult(); } /** * @param array $layouts [description] * * @return bool|Exception [description] */ public function removeMultiple(array $layouts) { try { foreach ($layouts as $layout) { $this->entityManager->remove($layout); } $this->entityManager->flush(); $result = true; } catch (Exception $e) { $result = $e; } return $result; } /** * @param array templateTwigIds * * @return array */ public function findByTemplateTwigIds(array $templateTwigIds): array { $qb = $this->entityManager->createQueryBuilder(); return $qb->select('l') ->from(Layout::class, 'l') ->where($qb->expr()->in('l.templateTwigId', $templateTwigIds)) ->andWhere('l.deletedAt is null') ->getQuery() ->getResult(); } /** * @param int $idProject * * @return array */ public function findByProjectId(int $idProject): array { $qb = $this->entityManager->createQueryBuilder(); return $qb->select('l') ->from(Layout::class, 'l') ->innerJoin('l.elementType', 'et') ->where('et.project = :idProject') ->andWhere('l.deletedAt is null') ->setParameter('idProject', $idProject) ->getQuery() ->getResult(); } public function findByProjectIdAndElementTypeFieldIds(int $idProject, array $elementTypeFieldIds): array { $qb = $this->entityManager->createQueryBuilder(); return $qb->select('l') ->from(Layout::class, 'l') ->innerJoin('l.elementType', 'et') ->where('et.project = :idProject') ->andWhere($qb->expr()->in('l.elementTypeFieldId', $elementTypeFieldIds)) ->andWhere('l.deletedAt is null') ->setParameter('idProject', $idProject) ->getQuery() ->getResult(); } }