From 6fc134ed0cd7425e8a8cfb7c865a6e4ad7a5d379 Mon Sep 17 00:00:00 2001 From: Sebastian Marcet Date: Tue, 20 Sep 2016 13:49:47 -0300 Subject: [PATCH] Member info endpoint optimization optimization of get schedule attendee Change-Id: I952110db2c571d6700e4e5144ca9df99a1137f04 --- app/ModelSerializers/SummitAttendeeSerializer.php | 10 +++++++++- .../Foundation/Summit/Attendees/SummitAttendee.php | 13 ++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/ModelSerializers/SummitAttendeeSerializer.php b/app/ModelSerializers/SummitAttendeeSerializer.php index f8394e8a..573984a1 100644 --- a/app/ModelSerializers/SummitAttendeeSerializer.php +++ b/app/ModelSerializers/SummitAttendeeSerializer.php @@ -14,6 +14,7 @@ use libs\utils\JsonUtils; use Illuminate\Support\Facades\Config; +use models\summit\SummitAttendee; /** * Class SummitAttendeeSerializer @@ -45,10 +46,17 @@ final class SummitAttendeeSerializer extends SilverStripeSerializer { if(!count($relations)) $relations = $this->getAllowedRelations(); $attendee = $this->object; + if(!$attendee instanceof SummitAttendee) return []; + $summit = $attendee->getSummit(); $values = parent::serialize($expand, $fields, $relations, $params); - $values['schedule'] = $attendee->getScheduledEventsIds(); + $schedule = []; + foreach ($attendee->getScheduledEventsIds() as $event_id){ + $schedule[] = intval($event_id); + } + + $values['schedule'] = $schedule; $tickets = array(); foreach($attendee->getTickets() as $t) diff --git a/app/Models/Foundation/Summit/Attendees/SummitAttendee.php b/app/Models/Foundation/Summit/Attendees/SummitAttendee.php index ba629cd0..b0b4bb7c 100644 --- a/app/Models/Foundation/Summit/Attendees/SummitAttendee.php +++ b/app/Models/Foundation/Summit/Attendees/SummitAttendee.php @@ -245,9 +245,16 @@ class SummitAttendee extends SilverstripeBaseModel * @return int[] */ public function getScheduledEventsIds(){ - return $this->schedule->map(function($entity) { - return $entity->getEvent()->getId(); - })->toArray(); + $sql = <<prepareRawSQL($sql); + $stmt->execute(['attendee_id' => $this->getId()]); + return $stmt->fetchAll(\PDO::FETCH_COLUMN); } } \ No newline at end of file