entityManager = $entityManager; } /** * @param int $templateId * @param string $fileTypeName * @param string $fileTypeExtension * * @return DedicatedFile|null */ public function findByTemplateIdAndFileTypeProperties(int $templateId, string $fileTypeName, string $fileTypeExtension): ?DedicatedFile { $qb = $this->entityManager->createQueryBuilder(); $qb->select('df') ->from(DedicatedFile::class, 'df') ->innerJoin('df.template', 't') ->innerJoin('df.fileType', 'ft') ->where('df.deletedAt IS NULL') ->andWhere('df.archivedAt IS NULL') ->andWhere('t.id = :id') ->andWhere('ft.name = :name') ->andWhere('ft.extension = :extension') ->andWhere('ft.deletedAt IS NULL') ->setParameters(["id" => $templateId, "name" => $fileTypeName, "extension" => $fileTypeExtension]); return $qb->getQuery()->getOneOrNullResult(); } /** * @param int $templateId * @param string $fileTypeExtension * * @return array */ public function findByTemplateIdAndExtension(int $templateId, string $fileTypeExtension): array { $qb = $this->entityManager->createQueryBuilder(); $qb->select('df') ->from(DedicatedFile::class, 'df') ->innerJoin('df.template', 't') ->innerJoin('df.fileType', 'ft') ->where('df.deletedAt IS NULL') ->andWhere('df.archivedAt IS NULL') ->andWhere('t.id = :id') ->andWhere('ft.extension = :extension') ->andWhere('ft.deletedAt IS NULL') ->setParameters(["id" => $templateId, "extension" => $fileTypeExtension]); return $qb->getQuery()->getResult(); } /** * @param int $templateId * @param string $fileTypeName * @param string $fileTypeExtension * * @return array */ public function findFilesByTemplateIdAndFileTypeProperties(int $templateId, string $fileTypeName, array $fileTypeExtension): array { $qb = $this->entityManager->createQueryBuilder(); $qb->select('df') ->from(DedicatedFile::class, 'df') ->innerJoin('df.template', 't') ->innerJoin('df.fileType', 'ft') ->where('df.deletedAt IS NULL') ->andWhere('df.archivedAt IS NULL') ->andWhere('t.id = :id') ->andWhere('ft.name = :name') ->andWhere($qb->expr()->in('ft.extension', $fileTypeExtension)) ->andWhere('ft.deletedAt IS NULL') ->setParameters(["id" => $templateId, "name" => $fileTypeName]); return $qb->getQuery()->getResult(); } /** * @param int $templateId * @param string $fileType * * @return array */ public function findOldDedicatedFiles(int $templateId, string $fileType): array { $qb = $this->entityManager->createQueryBuilder(); $qb->select('df') ->from(DedicatedFile::class, 'df') ->innerJoin('df.template', 't') ->innerJoin('df.fileType', 'ft') ->where('df.deletedAt IS NULL') ->andWhere('df.archivedAt IS NULL') ->andWhere('ft.deletedAt IS NULL') ->andWhere('t.id = :templateId') ->setParameter("templateId", $templateId); if (is_numeric($fileType)) { $qb->andWhere('ft.id = :fileTypeId') ->setParameter("fileTypeId", $fileType); } else { $qb->andWhere('ft.name = :fileType') ->setParameter("fileType", $fileType); } return $qb->getQuery()->getResult(); } /** * @param array $templateIds * @param string $fileTypeName * @param string $fileTypeExtension * * @return array */ public function findDedicatedFilesByTemplateId(array $templateIds, string $fileTypeName = 'all'): array { $qb = $this->entityManager->createQueryBuilder(); $qb->select('df') ->from(DedicatedFile::class, 'df') ->innerJoin('df.template', 't') ->innerJoin('df.fileType', 'ft') ->where('df.deletedAt IS NULL') ->andWhere('df.archivedAt IS NULL') ->andWhere('t.id in (:ids)') ->andWhere('ft.deletedAt IS NULL') ->setParameter("ids", $templateIds); if ($fileTypeName !== 'all') { $qb->andWhere('ft.name LIKE :name')->setParameter('name', $fileTypeName); } return $qb->getQuery()->getResult(); } }