getEntityManager() ->createQueryBuilder() ->select("e") ->from($this->getBaseEntity(), "e") ->where("e.type = :type"); if(!is_null($source_id) && $source_id > 0){ if($type == ISummitMetricType::Event){ $query = $query->leftJoin(SummitEventAttendanceMetric::class, 'sam', 'WITH', 'e.id = sam.id') ->join("sam.event", "evt") ->andWhere("evt.id = :source_id") ->setParameter("source_id", $source_id); } if($type == ISummitMetricType::Sponsor){ $query = $query->leftJoin(SummitSponsorMetric::class, 'sm', 'WITH', 'e.id = sm.id') ->join("sm.sponsor", "sp") ->andWhere("sp.id = :source_id") ->setParameter("source_id", $source_id); } } return $query ->andWhere("e.outgress_date is null") ->andWhere("e.member = :member") ->setParameter("member", $member) ->setParameter("type", trim($type)) ->setMaxResults(1) ->orderBy('e.ingress_date', 'DESC') ->getQuery() ->getOneOrNullResult(); } }