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 libs\utils\JsonUtils;
|
||||||
use Illuminate\Support\Facades\Config;
|
use Illuminate\Support\Facades\Config;
|
||||||
|
use models\summit\SummitAttendee;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class SummitAttendeeSerializer
|
* Class SummitAttendeeSerializer
|
||||||
@ -45,10 +46,17 @@ final class SummitAttendeeSerializer extends SilverStripeSerializer
|
|||||||
{
|
{
|
||||||
if(!count($relations)) $relations = $this->getAllowedRelations();
|
if(!count($relations)) $relations = $this->getAllowedRelations();
|
||||||
$attendee = $this->object;
|
$attendee = $this->object;
|
||||||
|
if(!$attendee instanceof SummitAttendee) return [];
|
||||||
|
|
||||||
$summit = $attendee->getSummit();
|
$summit = $attendee->getSummit();
|
||||||
$values = parent::serialize($expand, $fields, $relations, $params);
|
$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();
|
$tickets = array();
|
||||||
foreach($attendee->getTickets() as $t)
|
foreach($attendee->getTickets() as $t)
|
||||||
|
@ -245,9 +245,16 @@ class SummitAttendee extends SilverstripeBaseModel
|
|||||||
* @return int[]
|
* @return int[]
|
||||||
*/
|
*/
|
||||||
public function getScheduledEventsIds(){
|
public function getScheduledEventsIds(){
|
||||||
return $this->schedule->map(function($entity) {
|
$sql = <<<SQL
|
||||||
return $entity->getEvent()->getId();
|
SELECT SummitEventID
|
||||||
})->toArray();
|
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