update mapado event working

This commit is contained in:
isUnknown 2024-08-28 08:46:00 +02:00
parent 4cd3bfba57
commit c98d5eb36b
8 changed files with 184 additions and 126 deletions

View file

@ -87,4 +87,80 @@ function fetchMapadoEvents($request) {
$responseJson = json_encode(json_decode($responseString));
return $responseJson;
}
function createMapadoEventRequest($page) {
$request = [
"requestEndPoint" => "ticketings/" . $page->mapadoId()->value(),
"requestParams" => [],
"requestFields" => [
["name" => "title"],
["name" => "address"],
["name" => "slug"],
[
"name" => "eventDateList",
"subfields" => [
["name" => "startDate"],
["name" => "endDate"],
["name" => "bookableStock"]
]
],
]
];
return $request;
}
function saveMapadoEvent($mapadoEvent, $page) {
$kirby = kirby();
$kirby->impersonate('kirby');
$duration = '';
$sessionsToSave = [];
if ($mapadoEvent->{"@type"} === 'hydra:Error') {
$error = null;
if ($page->mapadoId()->isEmpty()) {
$error = 'Entrez l\'identifiant de l\'événement Mapado dans l\'onglet "Réglages".';
} else {
$error = 'Aucun événement Mapado ne correspond à l\'identifiant ' . $page->mapado()->value() . '. En êtes-vous sûr•e ?';
}
throw new Exception($error, 1);
}
foreach ($mapadoEvent->eventDateList as $session) {
$sessionMonth = substr($session->startDate, 0, 7);
$day = intval(substr($session->startDate, 8, 2));
$startTime = substr($session->startDate, 11, 5);
$eventDateId = explode('/', $session->{'@id'});
$eventDateId = $eventDateId[count($eventDateId) - 1];
$ticketingUrl = option('ticketingUrl') . 'event/' . $mapadoEvent->slug . '?eventDate=' . $eventDateId;
if (isset($session->endDate) && !$duration) {
$endTime = substr($session->endDate, 11 , 5);
$duration = getTimeDifference($startTime, $endTime);
}
$sessionsToSave[] = [
"date" => substr($session->startDate, 0, 10),
"time" => str_replace(':', 'h', $startTime),
"ticketingUrl" => $ticketingUrl,
"bookableStock" => $session->bookableStock
];
}
$dataToSave = [
"mapadoSlug" => $mapadoEvent->slug,
"remoteDuration" => $duration,
"remoteSessions" => $sessionsToSave
];
$page->update($dataToSave);
return $dataToSave;
}