76 lines
2.2 KiB
PHP
76 lines
2.2 KiB
PHP
<?php
|
|
|
|
function getCorrespondingSeasons($request) {
|
|
$year = explode('-', $request['month'])[0];
|
|
return page('programme')->children()->filter(
|
|
fn ($season) => str_contains($season->title()->value(), $year)
|
|
);
|
|
}
|
|
|
|
return [
|
|
'pattern' => '/month-dates.json',
|
|
'method' => 'POST',
|
|
'action' => function () {
|
|
$jsonRequest = file_get_contents("php://input");
|
|
$request = json_decode($jsonRequest, true);
|
|
|
|
$dates = $request['dates'];
|
|
$requestMonth = $request['month'];
|
|
|
|
$correspondingSeasons = getCorrespondingSeasons($request);
|
|
|
|
foreach ($correspondingSeasons->children() as $event) {
|
|
if ($event->isMapadoEvent() == 'false') {
|
|
foreach ($event->sessions()->toStructure() as $session) {
|
|
|
|
$sessionMonth = $session->date()->toDate('Y-m');
|
|
if ($sessionMonth === $requestMonth) {
|
|
$day = $session->date()->toDate('d');
|
|
$dates[$day][] = [
|
|
"title" => $event->title()->value(),
|
|
"time" => $session->time()->value(),
|
|
"duration" => $event->duration()->value()
|
|
];
|
|
};
|
|
}
|
|
}
|
|
|
|
if ($event->isMapadoEvent() == 'true') {
|
|
$request = [
|
|
"requestEndPoint" => "ticketings/" . $event->mapadoId()->value(),
|
|
"requestParams" => [],
|
|
"requestFields" => [
|
|
["name" => "title"],
|
|
[
|
|
"name" => "eventDateList",
|
|
"subfields" => [
|
|
["name" => "startDate"],
|
|
["name" => "endDate"],
|
|
["name" => "bookableStock"]
|
|
]
|
|
],
|
|
]
|
|
];
|
|
|
|
$event = fetchMapadoEvent($request);
|
|
|
|
foreach ($event->eventDateList as $session) {
|
|
$sessionMonth = substr($session->startDate, 0, 7);
|
|
if ($sessionMonth === $requestMonth) {
|
|
|
|
$day = intval(substr($session->startDate, 8, 2));
|
|
$time = substr($session->startDate, 11, 5);
|
|
|
|
$dates[$day][] = [
|
|
"title" => $event->title,
|
|
"time" => str_replace(':', 'h', $time)
|
|
];
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
return json_encode($dates);
|
|
}
|
|
];
|