Member info endpoint optimization
optimization of get schedule attendee Change-Id: I952110db2c571d6700e4e5144ca9df99a1137f04
This commit is contained in:
parent
68015ac8ae
commit
6fc134ed0c
@ -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)
|
||||
|
@ -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 = <<<SQL
|
||||
SELECT SummitEventID
|
||||
FROM SummitAttendee_Schedule
|
||||
INNER JOIN SummitEvent ON SummitEvent.ID = SummitAttendee_Schedule.SummitEventID
|
||||
WHERE SummitAttendeeID = :attendee_id AND SummitEvent.Published = 1
|
||||
SQL;
|
||||
|
||||
$stmt = $this->prepareRawSQL($sql);
|
||||
$stmt->execute(['attendee_id' => $this->getId()]);
|
||||
return $stmt->fetchAll(\PDO::FETCH_COLUMN);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user