diff --git a/app/Models/Foundation/Main/Member.php b/app/Models/Foundation/Main/Member.php index da58c5d5a..d05ffed4b 100644 --- a/app/Models/Foundation/Main/Member.php +++ b/app/Models/Foundation/Main/Member.php @@ -18,9 +18,11 @@ use App\Models\Foundation\Elections\Nomination; use App\Models\Foundation\Main\IGroup; use App\Models\Foundation\Main\Strategies\MemberSummitStrategyFactory; +use Doctrine\ORM\Query\ResultSetMappingBuilder; use Illuminate\Support\Facades\Config; use LaravelDoctrine\ORM\Facades\EntityManager; use models\summit\Presentation; +use models\summit\SummitAccessLevelType; use models\summit\SummitMetric; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Log; @@ -2110,6 +2112,15 @@ public function hasPermissionFor(Summit $summit): bool * @return int[] */ public function getPaidSummitTicketsIds(Summit $summit) + { + return $this->getPaidSummitTicketsIdsBySummitId($summit->getId()); + } + + /** + * @param int $summit_id + * @return mixed + */ + public function getPaidSummitTicketsIdsBySummitId(int $summit_id) { $sql = << $this->email, 'ticket_status' => IOrderConstants::PaidStatus, - 'summit_id' => $summit->getId(), + 'summit_id' => $summit_id, ] ); $res = $stmt->fetchAll(\PDO::FETCH_COLUMN); @@ -2151,7 +2162,7 @@ public function getPaidSummitTicketsIds(Summit $summit) [ 'member_id' => $this->getId(), 'ticket_status' => IOrderConstants::PaidStatus, - 'summit_id' => $summit->getId(), + 'summit_id' => $summit_id, ] ); @@ -2183,22 +2194,61 @@ public function getPaidSummitTickets(Summit $summit) */ public function getPaidSummitTicketsBySummitId(int $summit_id) { + $sql = <<createQuery("SELECT t from models\summit\SummitAttendeeTicket t - JOIN t.owner o - LEFT JOIN o.member m - JOIN o.summit su - WHERE su.id = :summit_id - and ( m.id = :member_id or o.email = :member_email) - and t.status = :ticket_status and t.is_active = :active"); + $rsm = new ResultSetMappingBuilder($this->getEM()); + $rsm->addRootEntityFromClassMetadata(SummitAttendeeTicket::class, 'T'); - return $query - ->setParameter('member_id', $this->getId()) - ->setParameter('member_email', $this->email) - ->setParameter('ticket_status', IOrderConstants::PaidStatus) - ->setParameter('summit_id', $summit_id) - ->setParameter('active', true) - ->getResult(); + // build rsm here + $native_query = $this->getEM()->createNativeQuery($sql, $rsm); + + $bindings = [ + 'member_email' => $this->email, + 'ticket_status' => IOrderConstants::PaidStatus, + 'summit_id' => $summit_id, + ]; + + foreach ($bindings as $k => $v) + $native_query->setParameter($k, $v); + + $res = $native_query->getResult(); + if(count($res) > 0 ) return $res; + + $sql = << $this->getId(), + 'ticket_status' => IOrderConstants::PaidStatus, + 'summit_id' => $summit_id, + ]; + + // build rsm here + $native_query = $this->getEM()->createNativeQuery($sql, $rsm); + + foreach ($bindings as $k => $v) + $native_query->setParameter($k, $v); + + return $native_query->getResult(); } /**