getId() == 0) return null; return $this->getEntityManager() ->createQueryBuilder() ->select("c") ->from(SpeakerSummitRegistrationPromoCode::class, "c") ->where("c.speaker = :speaker") ->andWhere("c.summit = :summit") ->setParameter("speaker", $speaker) ->setParameter("summit", $summit) ->setMaxResults(1) ->getQuery() ->getOneOrNullResult(); } /** * @param string $code * @param Summit $summit * @return bool */ public function isAssignedCode($code, Summit $summit) { return $this->getAssignedCode($code, $summit) != null; } /** * @param string $code * @param Summit $summit * @return SpeakerSummitRegistrationPromoCode */ public function getAssignedCode($code, Summit $summit) { return $this->getEntityManager() ->createQueryBuilder() ->select("c") ->from(SpeakerSummitRegistrationPromoCode::class, "c") ->where("c.speaker is not null") ->andWhere("c.summit = :summit") ->andWhere("c.code = :code") ->setParameter("summit", $summit) ->setParameter("code", trim($code)) ->setMaxResults(1) ->getQuery() ->getOneOrNullResult(); } /** * @param string $code * @param Summit $summit * @return SpeakerSummitRegistrationPromoCode */ public function getNotAssignedCode($code, Summit $summit) { return $this->getEntityManager() ->createQueryBuilder() ->select("c") ->from(SpeakerSummitRegistrationPromoCode::class, "c") ->where("c.speaker is null") ->andWhere("c.summit = :summit") ->andWhere("c.code = :code") ->setParameter("summit", $summit) ->setParameter("code", trim($code)) ->setMaxResults(1) ->getQuery() ->getOneOrNullResult(); } /** * @param Summit $summit * @param string $type * @return SpeakerSummitRegistrationPromoCode */ public function getNextAvailableByType(Summit $summit, $type) { return $this->getEntityManager() ->createQueryBuilder() ->select("c") ->from(SpeakerSummitRegistrationPromoCode::class, "c") ->where("c.speaker is null") ->andWhere("c.summit = :summit") ->andWhere("c.type = :type") ->setParameter("summit", $summit) ->setParameter("type", trim($type)) ->setMaxResults(1) ->getQuery() ->getOneOrNullResult(); } }