api/
ved/
admin/
modules/
gyar/
admin/
cron/
api/ved/dayTimeframes.php1 lines
<?php
# dayTimeframes.php
# API endpoint
# Beräknar tidsramarna på en specifik dag. Används när en bokning ska läggas.
require_once "ved/modules/utility.php";
$functionGET = function () {
require_once "ved/modules/vedDatabase.php";
# Hämtar öppettider för den specifierade dagen.
$dateData = $db->query(
"SELECT
ROUND(TIME_TO_SEC((CASE WHEN e.exceptionId IS NULL THEN w.openingTime ELSE e.openingTime END))/60) openingTimeMinutes,
ROUND(TIME_TO_SEC(TIMEDIFF((CASE WHEN e.exceptionId IS NULL THEN w.closingTime ELSE e.closingTime END), (CASE WHEN e.exceptionId IS NULL THEN w.openingTime ELSE e.openingTime END)))/60) AS minutesOpen
FROM weekdayOpenHours w
LEFT JOIN openHoursException e
ON :date >= e.date1 AND :date <= e.date2
WHERE w.weekdayId = WEEKDAY(:date)",
array("date" => $_GET["date"])
);
# Hämtar alla bokningar på den dagen.
$bookings = $db->queryAll(
"SELECT ROUND(TIME_TO_SEC(b.datetime)/60) timeMinutes, b.adultCount + b.childCount peopleCount FROM booking b WHERE datetime BETWEEN :date AND ADDDATE(:date, 1) AND NOT removed;",
array("date" => $_GET["date"])
);
# Hämtar restauranginställningar.
$settings = $db->query("SELECT seatCount, bookingInterval, bookingLength FROM restaurantSettings;");
# Delar upp dagen i tidsramar. Varje tidsram lagrar antalet platser som används.
$timeframes = create_time_frames($dateData, $bookings, $settings);
# Kollar framåt för varje tidsram och beräknar max hur många platser finns tillgängliga en hel bokningslängd framåt.
$bookableFrames = create_bookable_time_frames($dateData, $timeframes, $settings);
$data = array("timeframes" => $bookableFrames);
return $data;
};
$api = new APIEndpoint();
$httpGET = new APIMethod("GET", $functionGET);
$httpGET->setRequiredGETParameters(array("date"));
$api->addMethod($httpGET);
return $api;
?>