regenrates pages

This commit is contained in:
2026-08-09 07:01:23 +02:00
parent b553f7e9e9
commit 8e68820ba1
13 changed files with 3183 additions and 3058 deletions
+42 -37
View File
@@ -1,33 +1,41 @@
<?php
// Buffer per scartare eventuale HTML degli include: risposta JSON pulita
ob_start();
require_once('include/headscript.php');
header('Content-Type: application/json; charset=utf-8');
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
ob_end_clean();
echo json_encode(['error' => 'Connessione al database fallita: ' . $conn->connect_error]);
/**
* 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;
}
$query = "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";
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";
$result = $conn->query($query);
$rows = $pdo->query($sql)->fetchAll();
$classes = [];
if ($result) {
$italianMonths = [
'January' => 'Gennaio',
'February' => 'Febbraio',
@@ -40,27 +48,24 @@ if ($result) {
'September' => 'Settembre',
'October' => 'Ottobre',
'November' => 'Novembre',
'December' => 'Dicembre'
'December' => 'Dicembre',
];
while ($row = $result->fetch_assoc()) {
// Traduci il mese in italiano
foreach ($italianMonths as $en => $it) {
$row['display_dateschedule'] = str_replace($en, $it, $row['display_dateschedule']);
}
$classes = [];
foreach ($rows as $row) {
// Traduci il mese in italiano nella data leggibile
$row['display_dateschedule'] = strtr($row['display_dateschedule'], $italianMonths);
// Assicura che maxcapacity sia positivo
if ($row['maxcapacity'] <= 0) {
$row['maxcapacity'] = 1; // Valore positivo di fallback, cambialo se necessario
// Assicura maxcapacity positivo (fallback)
if ((int) $row['maxcapacity'] <= 0) {
$row['maxcapacity'] = 1;
}
$classes[] = $row;
}
ob_end_clean();
echo json_encode(['classes' => $classes]);
} else {
ob_end_clean();
echo json_encode(['error' => 'Errore nella query: ' . $conn->error]);
}
$conn->close();
jsonOut(['classes' => $classes]);
} catch (Throwable $ex) {
error_log('get_available_classes error: ' . $ex->getMessage());
jsonOut(['error' => 'Errore durante il recupero delle lezioni.']);
}