72 lines
2.2 KiB
PHP
72 lines
2.2 KiB
PHP
<?php
|
|
// Buffer per scartare eventuale HTML degli include: risposta JSON pulita
|
|
ob_start();
|
|
require_once('include/headscript.php');
|
|
|
|
/**
|
|
* Restituisce l'elenco delle classi schedulate con posti occupati,
|
|
* per la tendina di riprogrammazione. Risposta JSON.
|
|
*/
|
|
$pdo = DBHandlerSelect::getInstance()->getConnection();
|
|
|
|
function jsonOut(array $payload): void
|
|
{
|
|
if (ob_get_length() !== false) {
|
|
ob_end_clean();
|
|
}
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
echo json_encode($payload, JSON_UNESCAPED_UNICODE);
|
|
exit;
|
|
}
|
|
|
|
try {
|
|
$sql = "SELECT
|
|
ss.idserviceschedule,
|
|
s.servicename,
|
|
COALESCE(s.maxcapacity, 0) AS maxcapacity,
|
|
DATE_FORMAT(ss.dateschedule, '%d %M %Y %H:%i') AS display_dateschedule,
|
|
DATE_FORMAT(ss.dateschedule, '%Y-%m-%d %H:%i') AS iso_dateschedule,
|
|
(SELECT COUNT(*)
|
|
FROM bookingclass bc
|
|
WHERE bc.idserviceschedule = ss.idserviceschedule
|
|
AND bc.status != 'cancelled') AS occupied_seats
|
|
FROM serviceschedule ss
|
|
LEFT JOIN service s ON ss.idservice = s.idservice
|
|
ORDER BY ss.dateschedule ASC";
|
|
|
|
$rows = $pdo->query($sql)->fetchAll();
|
|
|
|
$italianMonths = [
|
|
'January' => 'Gennaio',
|
|
'February' => 'Febbraio',
|
|
'March' => 'Marzo',
|
|
'April' => 'Aprile',
|
|
'May' => 'Maggio',
|
|
'June' => 'Giugno',
|
|
'July' => 'Luglio',
|
|
'August' => 'Agosto',
|
|
'September' => 'Settembre',
|
|
'October' => 'Ottobre',
|
|
'November' => 'Novembre',
|
|
'December' => 'Dicembre',
|
|
];
|
|
|
|
$classes = [];
|
|
foreach ($rows as $row) {
|
|
// Traduci il mese in italiano nella data leggibile
|
|
$row['display_dateschedule'] = strtr($row['display_dateschedule'], $italianMonths);
|
|
|
|
// Assicura maxcapacity positivo (fallback)
|
|
if ((int) $row['maxcapacity'] <= 0) {
|
|
$row['maxcapacity'] = 1;
|
|
}
|
|
|
|
$classes[] = $row;
|
|
}
|
|
|
|
jsonOut(['classes' => $classes]);
|
|
} catch (Throwable $ex) {
|
|
error_log('get_available_classes error: ' . $ex->getMessage());
|
|
jsonOut(['error' => 'Errore durante il recupero delle lezioni.']);
|
|
}
|