regenrates pages
This commit is contained in:
@@ -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.']);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user