entityManager = $entityManager; $this->container = $container; } public function create(Transitions $transition): Transitions { $this->entityManager->persist($transition); $this->entityManager->flush(); return $transition; } /** * @return mixed */ public function findByModule(string $module) { return $this->entityManager ->createQueryBuilder() ->select('t') ->from(Transitions::class, 't') ->join('t.configuration', 'c') ->where('c.module = :query') ->setParameter('query', $module) ->getQuery() ->getResult() ; } public function remove(Transitions $transition): bool { $this->entityManager->remove($transition); $this->entityManager->flush(); return true; } /** * @return mixed */ public function findByConfigId(int $configId) { return $this->entityManager ->createQueryBuilder() ->select('t') ->from(Transitions::class, 't') ->where('t.configuration = :configId') ->setParameter('configId', $configId) ->getQuery() ->getResult(); } /** * @throws NonUniqueResultException * * @return mixed */ public function findByKey(string $key) { return $this->entityManager ->createQueryBuilder() ->select('t') ->from(Transitions::class, 't') ->where('t.key = :key') ->setParameter('key', $key) ->getQuery() ->getOneOrNullResult(); } public function findByStartPlaceKey(string $key) { return $this->entityManager ->createQueryBuilder() ->select('t') ->from(Transitions::class, 't') ->innerJoin('t.startPlace', 'p') ->addSelect('p') ->where('p.key = :key') ->setParameter('key', $key) ->getQuery() ->getResult(); } public function findUsersByEndPlaceKey(string $key) { return $this->entityManager ->createQueryBuilder() ->select('t') ->from(Transitions::class, 't') ->innerJoin('t.endPlace', 'p') ->addSelect('p') ->where('p.key = :key') ->setParameter('key', $key) ->getQuery() ->getResult(); } public function findLastTransition(int $idConfig) { return $this->entityManager ->createQueryBuilder() ->select('t.id, t.key as keyInternal') ->from(Transitions::class, 't') ->innerJoin('t.configuration', 'c') ->where('c.id = :idConfig') ->andWhere('t.name NOT LIKE :name') ->setParameters(['idConfig'=> $idConfig, "name" => "%_Reject"]) ->orderBy('t.id','DESC') ->setMaxResults(1) ->getQuery() ->getOneOrNullResult(); } public function findFirstTransition(int $idConfig) { return $this->entityManager ->createQueryBuilder() ->select('t.key as keyInternal') ->from(Transitions::class, 't') ->innerJoin('t.configuration', 'c') ->innerJoin('t.startPlace','startPlace') ->innerJoin('t.endPlace','endPlace') ->where('c.id = :idConfig') ->andWhere('startPlace.id = endPlace.id') ->setParameter('idConfig', $idConfig) ->getQuery() ->getOneOrNullResult(); } public function findRejectByPlace(int $place_id, string $module) { $qb = $this->entityManager->createQueryBuilder(); return $qb->select('t') ->from(Transitions::class, 't') ->innerJoin('t.startPlace', 'p') ->where($qb->expr()->in('p.id', $place_id)) ->andWhere("t.name LIKE :reject") ->setParameter("reject", "%_Reject%") ->getQuery() ->getOneOrNullResult(); } }