Verder haal ik lessen op uit een api die ik vervolgens op datum controleer en dus bij de juiste weekdag stop.
De api kan voor meerdere dagen lessen terug geven, Dus dat kan ook voor de aankomende 10 dagen zijn. Maar ik hoef alleen de lessen van deze week
static public function getWeekLessons(){
$current_week_number = date('W');
$current_year = date('Y');
$selected_week_number = (int) $_POST['currentWeekNumber'];
if (isset($_POST['prevOrNext'])) {
if ($_POST['prevOrNext'] == "prev" && !($selected_week_number <= $current_week_number)) {
$selected_week_number--; // Move to the previous week
} elseif ($_POST['prevOrNext'] == "next" && $selected_week_number < 52) {
$selected_week_number++; // Move to the next week, assuming 52 weeks in a year
}
}
$first_day_of_week = new DateTime();
$first_day_of_week->setISODate($current_year, $selected_week_number);
$weekdays = array();
for ($i = 0; $i < 7; $i++) {
$date = $first_day_of_week->format('d-m-Y');
$weekdays[$date] = [
'date' => $date,
'lessons' => []
];
$first_day_of_week->modify('+1 day');
}
$firstDayOfWeekFormatted = reset($weekdays)['date'];
$lastDayOfWeekFormatted = end($weekdays)['date'];
$firstDayOfWeekFormatted = (new DateTime($firstDayOfWeekFormatted))->format('d-m');
$lastDayOfWeekFormatted = (new DateTime($lastDayOfWeekFormatted))->format('d-m');
$client = new SportivityClient(13361);
$lessons = $client->getLocationLessons([])['LessonObjects'];
foreach ($lessons as $lesson) {
$startTime = DateTime::createFromFormat('d/m/Y H:i:s', $lesson['StartTime']);
$lessonDate = $startTime->format('d-m-Y');
if (!isset($weekdays[$lessonDate])) continue;
$lesson['LessonDate'] = $lessonDate;
$lesson['StartTimeConverted'] = $startTime->format('H:i');
$endTime = DateTime::createFromFormat('d/m/Y H:i:s', $lesson['EndTime']);
$lesson['EndTimeConverted'] = $endTime->format('H:i');
$interval = $endTime->diff($startTime);
$minutes = $interval->format('%i') + $interval->format('%h') * 60;
$lesson['Duration'] = $minutes;
$weekdays[$lessonDate]['lessons'][] = $lesson;
}
wp_send_json([
'selectedWeekNumber' => $selected_week_number,
'weekdays' => array_values($weekdays),
'firstDayOfWeek' => $firstDayOfWeekFormatted,
'lastDayOfWeek' => $lastDayOfWeekFormatted,
]);
}
Gek genoeg krijg ik 3-4 lege elementen extra er bij in de weekdays array waar niks in zit behalve een datum. Ik snap niet waarom hij die aanmaakt, want ik probeer het als ik het goed heb gedaan te omzeilen, dat alleen lessen mogen worden ingeschoten waarvan de datum in deze week zit. Weet iemand het probleem?