diff --git a/public/Connections/bkngstm.php b/public/Connections/bkngstm.php index efc91c5..aee0d27 100644 --- a/public/Connections/bkngstm.php +++ b/public/Connections/bkngstm.php @@ -9,10 +9,10 @@ $dotenv = Dotenv::createImmutable(__DIR__ . '/../../'); $dotenv->load(); // Prende i valori dal .env -$hostname_bkngstm = $_ENV['DB_HOST'] ?? 'localhost'; -$database_bkngstm = $_ENV['DB_DATABASE'] ?? 'yogibookaury'; -$username_bkngstm = $_ENV['DB_USERNAME'] ?? 'root'; -$password_bkngstm = $_ENV['DB_PASSWORD'] ?? ''; +$hostname_bkngstm = $_ENV['DB_HOST']; +$database_bkngstm = $_ENV['DB_DATABASE']; +$username_bkngstm = $_ENV['DB_USERNAME']; +$password_bkngstm = $_ENV['DB_PASSWORD']; $servername = $hostname_bkngstm; $username = $username_bkngstm; diff --git a/public/adminpanel.php b/public/adminpanel.php index 64875e1..5734ffb 100644 --- a/public/adminpanel.php +++ b/public/adminpanel.php @@ -39,7 +39,6 @@ $bookedclass->execute(); ?> connect_error) { @@ -108,7 +107,6 @@ $conn->close(); - YogiBook - Prenotazioni YogaSoul @@ -150,6 +148,7 @@ $conn->close(); @@ -422,7 +443,6 @@ $conn->close(); margin-top: 5px; border-bottom: 1px solid #ccc; border: 1px solid #333; - /* Aggiunto il bordo grigio scuro */ } .booking-row td { @@ -432,14 +452,11 @@ $conn->close(); .delete-cell { text-align: left; - /* Allinea il contenuto a sinistra */ vertical-align: top; - /* Allinea il contenuto in alto */ } .delete-button { display: block; - /* Per occupare l'intera larghezza del cell */ padding: 6px 12px; border: none; background-color: #e74c3c; @@ -455,38 +472,22 @@ $conn->close(); - - - -
- -
@@ -511,423 +509,304 @@ $conn->close();
-
- +
- - -
- - - - - - -
- - -
- - -
-
-
-
- -
-
-
-
- +
+
+
+
+
+
+
+
+
+ +
-
- -
-
- 0) { - echo ''; - } - ?> - +
+
+ 0) { + echo ''; + } + ?> +
-
- -
- - - - -
- - - - - -
- - - - - "Gennaio", - "February" => "Febbraio", - "March" => "Marzo", - "April" => "Aprile", - "May" => "Maggio", - "June" => "Giugno", - "July" => "Luglio", - "August" => "Agosto", - "September" => "Settembre", - "October" => "Ottobre", - "November" => "Novembre", - "December" => "Dicembre" - ]; - - ?> -
- - - -

- - - -
- - - - - - TotalRows == 0) { - echo "

Classi non presenti per questo mese

"; - } else { - while (!$bookedclass->atEnd()) { - $wa_startindex = $bookedclass->Index; - ?> - getColumnVal("dateschedule") - $dateschedule = $bookedclass->getColumnVal("dateschedule"); - - // Converti la data in un oggetto DateTime - $dateObj = new DateTime($dateschedule); - - // Estrai il giorno e il mese in italiano - $dayInItalian = $dateObj->format("d"); - $monthInItalian = $dateObj->format("F"); - - // Mappa dei nomi dei mesi in italiano - $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" - ]; - - // Sostituisci il nome del mese con la versione italiana - $monthInItalian = $italianMonths[$monthInItalian]; - ?> - getColumnVal("dateschedule") - $dateschedule = $bookedclass->getColumnVal("dateschedule"); - - // Converti la data in un oggetto DateTime - $dateObj = new DateTime($dateschedule); - - // Formatta la data nel nuovo formato desiderato - $newDateFormat = $dateObj->format("d-m-Y H:i"); - - // Calculate the time difference in hours - $currentTime = new DateTime(); - $classTime = new DateTime($dateschedule); - $timeDifference = $classTime->diff($currentTime); - $hoursDifference = $timeDifference->h + $timeDifference->days * 24; - - // Check if the time difference is less than 6 hours - $timetocancel = $optionquery->getColumnVal("maxbeforetimecancell"); - $canBeDeleted = ($hoursDifference >= $timetocancel); - - - - ?> - getColumnVal("idserviceschedule"); - $bookingQuery = "SELECT bookingclass.*, auth_users.first_name, auth_users.last_name, auth_users.id - FROM bookingclass - LEFT JOIN auth_users ON bookingclass.iduser=auth_users.id - WHERE bookingclass.idserviceschedule = ? AND bookingclass.status='booked'"; - $stmt = $mysqli->prepare($bookingQuery); - $stmt->bind_param("i", $eventId); - $stmt->execute(); - $bookingResult = $stmt->get_result(); - - // Calcola il numero di persone prenotate - $countPersons = $bookingResult->num_rows; - $stmt->close(); - $mysqli->close(); - ?> - -
-
-
-
-
-
"> -

getColumnVal("servicename")); ?> -/getColumnVal("maxcapacity")); ?>

-

Quando:

-

Luogo: via Valassina 62/B Seregno - Sala Contesto Yoga

-
- -
- - - - - - -
+ if (isset($_GET['success'])) { + if ($_GET['success'] == 1) { ?> + - - - - - - - - - - - moveNext(); - } + + + moveFirst(); // Ritorna all'inizio del recordset - unset($wa_startindex); - unset($wa_repeatcount); ?> - +
+ "Gennaio", + "February" => "Febbraio", + "March" => "Marzo", + "April" => "Aprile", + "May" => "Maggio", + "June" => "Giugno", + "July" => "Luglio", + "August" => "Agosto", + "September" => "Settembre", + "October" => "Ottobre", + "November" => "Novembre", + "December" => "Dicembre" + ]; + ?> +
+ + + +

+ + + +
+ TotalRows == 0) { + echo "

Classi non presenti per questo mese

"; + } else { + while (!$bookedclass->atEnd()) { + $wa_startindex = $bookedclass->Index; + ?> + getColumnVal("dateschedule"); + $dateObj = new DateTime($dateschedule); + $dayInItalian = $dateObj->format("d"); + $monthInItalian = $dateObj->format("F"); + $monthInItalian = $italianMonths[$monthInItalian]; + $newDateFormat = $dateObj->format("d-m-Y H:i"); + $currentTime = new DateTime(); + $classTime = new DateTime($dateschedule); + $timeDifference = $classTime->diff($currentTime); + $hoursDifference = $timeDifference->h + $timeDifference->days * 24; + $timetocancel = $optionquery->getColumnVal("maxbeforetimecancell"); + $canBeDeleted = ($hoursDifference >= $timetocancel); + $mysqli = new mysqli($servername, $username, $password, $dbname); + $eventId = $bookedclass->getColumnVal("idserviceschedule"); + $bookingQuery = "SELECT bookingclass.*, auth_users.first_name, auth_users.last_name, auth_users.id + FROM bookingclass + LEFT JOIN auth_users ON bookingclass.iduser=auth_users.id + WHERE bookingclass.idserviceschedule = ? AND bookingclass.status='booked'"; + $stmt = $mysqli->prepare($bookingQuery); + $stmt->bind_param("i", $eventId); + $stmt->execute(); + $bookingResult = $stmt->get_result(); + $countPersons = $bookingResult->num_rows; + $stmt->close(); + $mysqli->close(); + ?> +
+
+
+
+
+
"> +

getColumnVal("servicename")); ?> -/getColumnVal("maxcapacity")); ?>

+

Quando:

+

Luogo: via Valassina 62/B Seregno - Sala Contesto Yoga

+
+ +
+ + +
+
+ + + moveNext(); + } + } + $bookedclass->moveFirst(); + unset($wa_startindex); + unset($wa_repeatcount); + ?> +
+
- - -
- -
- - - - - - - - - - \ No newline at end of file diff --git a/public/bookandgo.php b/public/bookandgo.php index 1171752..06a1cb3 100644 --- a/public/bookandgo.php +++ b/public/bookandgo.php @@ -1,107 +1,165 @@ -connect_error) { + die("Connessione al database fallita: " . $conn->connect_error); +} - - $sqlnewbook = "SELECT dateschedule FROM serviceschedule WHERE idserviceschedule = $idnewbooking"; -$resultnew = $conn->query($sqlnewbook); +// Recupera dateschedule e servicename +$query = "SELECT serviceschedule.dateschedule, service.servicename + FROM serviceschedule + LEFT JOIN service ON service.idservice = ? + WHERE serviceschedule.idserviceschedule = ?"; +$stmt = $conn->prepare($query); +$stmt->bind_param("ii", $idservicenew, $idnewbooking); +$stmt->execute(); +$resultnew = $stmt->get_result(); - // Estrai il risultato e memorizzalo in $newtime +if ($resultnew->num_rows > 0) { $rownew = $resultnew->fetch_assoc(); - $newtime = $rownew["dateschedule"]; + $newtime = $rownew['dateschedule']; + $servicename = $rownew['servicename'] ?? 'N/D'; +} else { + $stmt->close(); + $conn->close(); + die("Errore: Nessun orario trovato per idserviceschedule = $idnewbooking."); +} +$stmt->close(); +// Formatta la data per l'email +$newtimeformat = date("d-m-Y H:i", strtotime($newtime)); +// Inserisce la nuova prenotazione in bookingclass +$insertQuery = "INSERT INTO bookingclass (idserviceschedule, iduser, prevbookingstart, idprevserviceschedule, idservice, idorder, bookingstart, status) + VALUES (?, ?, '0', '0', ?, ?, ?, 'pending')"; +$stmt = $conn->prepare($insertQuery); +$stmt->bind_param("iiiis", $idnewbooking, $iduser, $idservicenew, $idorder, $newtime); +if (!$stmt->execute()) { + $stmt->close(); + $conn->close(); + die("Errore durante l'inserimento della nuova prenotazione: " . $conn->error); +} +$stmt->close(); - // Effettua l'inserimento del nuovo record nella tabella bookingclass - $insertQuery = "INSERT INTO bookingclass (idserviceschedule, iduser, prevbookingstart, idprevserviceschedule, idservice, idorder, bookingstart, status) - VALUES ($idnewbooking, $iduser, '0', '0', $idservicenew, $idorder, '$newtime', 'pending')"; - $conn->query($insertQuery); +// Aggiorna una prenotazione cancellata a pending (se esiste) +$updateQuery = "UPDATE bookingclass + SET status = 'pending' + WHERE iduser = ? AND idorder = ? AND status = 'cancelled' + LIMIT 1"; +$stmt = $conn->prepare($updateQuery); +$stmt->bind_param("ii", $iduser, $idorder); +$stmt->execute(); +$stmt->close(); - // Chiudi la connessione al database - $conn->close(); - $newtimeformat = date("d-m-Y H:i", strtotime($newtime)); - require 'phpmailer/src/Exception.php'; -require 'phpmailer/src/PHPMailer.php'; -require 'phpmailer/src/SMTP.php'; - //mail to client -$messageedit="

Ciao $firstname ,

-

Hai inviato una richiesta di riprogrammazione della tua lezione

-

Ecco il dettaglio della riprogrammazione $newtimeformat

-

La tua richiesta è in fase di accettazione! Verrai avvisata se la riprogrammazione è stata accettata

-
-

Per vedere e gestire le tue lezioni clicca qui: https://yogibook.yogasoul.it

-
-

Per il primo accesso devi per prima cosa resettare la password cliccando di seguito

-
- - Reset Password +// Chiudi la connessione al database +$conn->close(); + +// Configura il contenuto dell'email +$messageedit = " +

+ + Ciao $firstname, + +

+

+ + Hai inviato una richiesta di riprogrammazione della tua lezione per il servizio $servicename. + +

+

+ + Ecco il dettaglio della riprogrammazione: $newtimeformat + +

+

+ + La tua richiesta è in fase di accettazione! Verrai avvisata/o se la riprogrammazione è stata accettata. + +

+
+

+ + Per vedere e gestire le tue lezioni clicca qui: + YogiBook + +

+
+

+ + Per il primo accesso devi prima resettare la password cliccando qui: + +

+
+ + Reset Password -
-
-

Ci vediamo sul tappetino!

-

Il Team Yogasoul

"; +
+
+

+ + Ci vediamo sul tappetino! + +

+

+ + Il Team Yogasoul + +

"; -$buttonedit=" - YogiBook - YogaSoul - "; - - -$mail = new PHPMailer(true); - -$mail->isSMTP(); // Set mailer to use SMTP -$mail->Host = 'mail.yogasoul.it'; // Specify main and backup server -$mail->SMTPAuth = true; // Enable SMTP authentication -$mail->Username = 'info@yogasoul.it'; // SMTP username -$mail->Password = '!Testolina88'; // SMTP password -$mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted -$mail->Port = '587'; - +$buttonedit = " + YogiBook - YogaSoul +"; +// Integra $messageedit in $mailmessage1 include('mail/emailtemplate2.php'); -// Email body content -//$trfnmbmail=$appformn.'r'.$revnumb; -$htmlContent = $mailmessage1; - - -$mail->From = 'info@yogasoul.it'; -$mail->FromName = 'YogiBook [YogaSoul]'; -$mail->addAddress($emailuser); // Add a recipient - +// Configura l'email +$mail = new PHPMailer(true); +try { + $mail->isSMTP(); + $mail->Host = 'mail.yogasoul.it'; + $mail->SMTPAuth = true; + $mail->Username = 'info@yogasoul.it'; + $mail->Password = '!Testolina88'; + $mail->SMTPSecure = 'tls'; + $mail->Port = 587; - + $mail->setFrom('info@yogasoul.it', 'YogiBook [YogaSoul]'); + $mail->addAddress($emailuser); -$mail->Subject = "Proposta di riprogrammazione!"; -$mail->Body = $htmlContent; -$mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; + $mail->Subject = "Proposta di riprogrammazione!"; + $mail->Body = $mailmessage1; + $mail->AltBody = 'Hai inviato una richiesta di riprogrammazione della tua lezione per il servizio ' . $servicename . ' il ' . $newtimeformat . '. La tua richiesta è in fase di accettazione.'; $mail->send(); - - //mail sent - - - +} catch (Exception $e) { + die("Errore durante l'invio dell'email: " . $mail->ErrorInfo); +} - // Esegui il reindirizzamento - header("Location: userpanel.php?reprogram=Y"); - exit(); - -?> \ No newline at end of file +// Esegui il reindirizzamento +header("Location: userpanel.php?reprogram=Y"); +exit(); diff --git a/public/calculate_expiry.php b/public/calculate_expiry.php new file mode 100644 index 0000000..118680c --- /dev/null +++ b/public/calculate_expiry.php @@ -0,0 +1,67 @@ +connect_error) { + die(json_encode(['error' => 'Connessione al database fallita'])); +} + +if (isset($_GET['idorder'])) { + $idorder = $_GET['idorder']; + + // Recupera i dati necessari dall'ordine + $order_query = "SELECT idservice, quantityclass, first_lesson_date FROM orderbook WHERE idorderbook = ?"; + $stmt_order = $conn->prepare($order_query); + $stmt_order->bind_param("i", $idorder); + $stmt_order->execute(); + $order_result = $stmt_order->get_result(); + + if ($order_result->num_rows > 0) { + $order_row = $order_result->fetch_assoc(); + $service_id = $order_row['idservice']; + $quantity_class = $order_row['quantityclass']; + $first_lesson_date = $order_row['first_lesson_date']; + + // Recupera expirylessons da expiryparameter + $expiry_lessons_query = "SELECT expirylessons FROM expiryparameter WHERE quantityclass = ?"; + $stmt_expiry_lessons = $conn->prepare($expiry_lessons_query); + $stmt_expiry_lessons->bind_param("i", $quantity_class); + $stmt_expiry_lessons->execute(); + $expiry_lessons_result = $stmt_expiry_lessons->get_result(); + + if ($expiry_lessons_result->num_rows > 0) { + $expiry_row = $expiry_lessons_result->fetch_assoc(); + $expirylessons = $expiry_row['expirylessons']; + + // Calcola la data della expirylessons-esima lezione + $expiry_date_query = "SELECT dateschedule FROM serviceschedule WHERE idservice = ? AND dateschedule >= ? ORDER BY dateschedule LIMIT ?, 1"; + $stmt_expiry_date = $conn->prepare($expiry_date_query); + $offset = $expirylessons - 1; + $stmt_expiry_date->bind_param("isi", $service_id, $first_lesson_date, $offset); + $stmt_expiry_date->execute(); + $expiry_date_result = $stmt_expiry_date->get_result(); + + if ($expiry_date_result->num_rows > 0) { + $date_row = $expiry_date_result->fetch_assoc(); + $expireon = $date_row['dateschedule']; + echo json_encode(['expiry_date' => $expireon]); + } else { + echo json_encode(['error' => 'Non abbastanza lezioni disponibili per calcolare la scadenza']); + } + $stmt_expiry_date->close(); + } else { + echo json_encode(['error' => 'Nessun record in expiryparameter per quantityclass: ' . $quantity_class]); + } + $stmt_expiry_lessons->close(); + } else { + echo json_encode(['error' => 'Ordine non trovato']); + } + $stmt_order->close(); +} + +$conn->close(); diff --git a/public/cancella-prenotazione.php b/public/cancella-prenotazione.php index 9f76704..390e563 100644 --- a/public/cancella-prenotazione.php +++ b/public/cancella-prenotazione.php @@ -273,8 +273,8 @@ file_put_contents($logFile, $logMessage, FILE_APPEND); confirmButtonText: "Cancella Lezione", cancelButtonText: "Riprogramma Lezione", showDenyButton: true, - denyButtonText: "Torna al Portale", - denyButtonColor: "#6c757d" + denyButtonText: "Riprogramma Lezione", + denyButtonColor: "#e47c06ff" }).then((result) => { if (result.isConfirmed) { console.log("Cliccato 'Cancella Lezione' per ID "); @@ -302,7 +302,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND); alert("Errore: impossibile reindirizzare a rebook-from-cancel.php. Controlla la console del browser."); } } else if (result.isDenied) { - console.log("Cliccato 'Torna al Portale', reindirizzamento a: https://yogibook.yogasoul.it"); + console.log("Cliccato 'Riprogramma Lezione', reindirizzamento a: https://yogibook.yogasoul.it"); window.location.replace("rebook-from-cancel.php?idbookingclass=&token="); } }); diff --git a/public/cancella_prenotazione_log.txt b/public/cancella_prenotazione_log.txt new file mode 100644 index 0000000..b095410 --- /dev/null +++ b/public/cancella_prenotazione_log.txt @@ -0,0 +1,6 @@ +Esecuzione cancellazione: 2025-10-13 14:36:02 +Accesso a modale per ID 4, token: f596e67a-a517-11f0-afe1-145afc4aef92, opzione riprogrammazione: rebook-from-cancel.php?idbookingclass=4&token=f596e67a-a517-11f0-afe1-145afc4aef92 +Esecuzione cancellazione: 2025-10-13 14:37:22 +Accesso a modale per ID 4, token: f596e67a-a517-11f0-afe1-145afc4aef92, opzione riprogrammazione: rebook-from-cancel.php?idbookingclass=4&token=f596e67a-a517-11f0-afe1-145afc4aef92 +Esecuzione cancellazione: 2025-10-13 14:38:20 +Accesso a modale per ID 4, token: f596e67a-a517-11f0-afe1-145afc4aef92, opzione riprogrammazione: rebook-from-cancel.php?idbookingclass=4&token=f596e67a-a517-11f0-afe1-145afc4aef92 diff --git a/public/dashboard_log.txt b/public/dashboard_log.txt new file mode 100644 index 0000000..2dee93a --- /dev/null +++ b/public/dashboard_log.txt @@ -0,0 +1,1497 @@ +Esecuzione dashboard: 2025-10-14 08:34:00 +Database connesso: yogibookaury +Esecuzione dashboard: 2025-10-14 08:34:00 +Database connesso: yogibookaury +Esecuzione dashboard: 2025-10-14 08:34:29 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:34:29 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:35:02 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:35:02 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:35:53 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:35:53 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:36:43 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:36:43 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:42:11 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:42:11 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:42:24 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:42:24 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:42:41 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:42:41 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:46:10 +Database connesso: yogibookaury +Valore di iduserlogin: 2 +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:46:10 +Database connesso: yogibookaury +Valore di iduserlogin: 2 +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12, Expire On: 2025-10-30 +Esecuzione dashboard: 2025-10-14 08:46:26 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:46:26 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:46:35 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:46:35 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:46:45 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:46:45 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:46:56 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:46:56 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:50:41 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:50:41 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:52:02 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:52:02 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:52:36 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:52:36 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:55:43 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:55:43 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:56:52 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:56:52 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:57:00 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:57:00 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:57:37 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:57:37 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:57:57 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:57:57 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:58:16 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:58:16 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:59:40 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:59:40 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 08:59:58 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 08:59:58 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 09:00:54 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 09:00:54 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 09:01:14 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 09:01:14 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 09:02:50 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 09:02:50 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 09:04:43 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Esecuzione dashboard: 2025-10-14 09:04:43 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Order ID: 1, Lessons count: 12 +Esecuzione dashboard: 2025-10-14 12:44:25 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Esecuzione dashboard: 2025-10-14 12:44:25 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Order ID: 1, Lessons count: 12 +Order ID: 3, Lessons count: 4 +Esecuzione dashboard: 2025-10-15 07:57:52 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Esecuzione dashboard: 2025-10-15 07:57:52 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Order ID: 1, Lessons count: 12 +Order ID: 3, Lessons count: 4 +Esecuzione dashboard: 2025-10-15 14:38:07 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Esecuzione dashboard: 2025-10-15 14:38:07 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Order ID: 1, Lessons count: 12 +Order ID: 3, Lessons count: 4 +Esecuzione dashboard: 2025-10-15 14:41:30 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Esecuzione dashboard: 2025-10-15 14:41:30 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Order ID: 1, Lessons count: 12 +Order ID: 3, Lessons count: 4 +Esecuzione dashboard: 2025-10-15 14:42:08 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Esecuzione dashboard: 2025-10-15 14:42:08 +Database connesso: yogibookaury +Elaborazione ordine: idorderbook = 1, order_id = 1 +Query lezioni per idorderbook 1: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 1: 12 +Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"pending","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"} +Lezioni per idorderbook 1: 12 +Elaborazione ordine: idorderbook = 3, order_id = +Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename + FROM bookingclass bc + LEFT JOIN service s ON bc.idservice = s.idservice + WHERE bc.idorder = ? +Numero di lezioni trovate per idorderbook 3: 4 +Lezione aggiunta: {"idbookingclass":15,"bookingstart":"2025-10-20T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":16,"bookingstart":"2025-10-27T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"} +Lezioni per idorderbook 3: 4 +Order ID: 1, Lessons count: 12 +Order ID: 3, Lessons count: 4 diff --git a/public/include/options.php b/public/include/options.php new file mode 100644 index 0000000..5f10b17 --- /dev/null +++ b/public/include/options.php @@ -0,0 +1,211 @@ + +connect_error) { + die("Connessione fallita: " . $conn->connect_error); +} + +// ID dell'utente (esempio, da sostituire con l'utente loggato) +$userid = 1; // Sostituisci con l'ID utente corrente, ad esempio da sessione + +// Query per ottenere il valore di lessonnotification +$query = "SELECT lessonnotification FROM auth_users WHERE id = ?"; +$stmt = $conn->prepare($query); +$stmt->bind_param("i", $userid); +$stmt->execute(); +$result = $stmt->get_result(); + +if ($result->num_rows > 0) { + $row = $result->fetch_assoc(); + $lessonnotification = $row['lessonnotification']; +} else { + $lessonnotification = 'Y'; // Valore di default se l'utente non esiste +} + +$stmt->close(); +$conn->close(); +?> + + + + + + + YogiBook - Opzioni + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+ + +
+ +
+
+ +
+
+
+ +
+
+
+
+
+
+

Impostazioni Notifiche

+
+ > + +
+
+
+
+
+ +
+
+ + + + + + + + + \ No newline at end of file diff --git a/public/include/sidebar.php b/public/include/sidebar.php index a5d2787..73163c5 100644 --- a/public/include/sidebar.php +++ b/public/include/sidebar.php @@ -62,6 +62,13 @@ Profilo utente + +
  • + + + Opzioni + +
  • diff --git a/public/include/update_lessonnotification.php b/public/include/update_lessonnotification.php new file mode 100644 index 0000000..2369ca4 --- /dev/null +++ b/public/include/update_lessonnotification.php @@ -0,0 +1,35 @@ +connect_error) { + die(json_encode(['success' => false, 'error' => 'Connessione fallita: ' . $conn->connect_error])); +} + +if (isset($_POST['userid']) && isset($_POST['lessonnotification'])) { + $userid = $_POST['userid']; + $lessonnotification = $_POST['lessonnotification']; + + // Validate lessonnotification value + if (!in_array($lessonnotification, ['Y', 'N'])) { + echo json_encode(['success' => false, 'error' => 'Valore lessonnotification non valido']); + exit; + } + + $query = "UPDATE auth_users SET lessonnotification = ? WHERE id = ?"; + $stmt = $conn->prepare($query); + $stmt->bind_param("si", $lessonnotification, $userid); + + if ($stmt->execute()) { + echo json_encode(['success' => true]); + } else { + echo json_encode(['success' => false, 'error' => $conn->error]); + } + + $stmt->close(); +} else { + echo json_encode(['success' => false, 'error' => 'Parametri mancanti']); +} + +$conn->close(); diff --git a/public/options.php b/public/options.php new file mode 100644 index 0000000..866ac8f --- /dev/null +++ b/public/options.php @@ -0,0 +1,212 @@ + +connect_error) { + die("Connessione fallita: " . $conn->connect_error); +} + +// ID dell'utente (esempio, da sostituire con l'utente loggato) +$userid = 1; // Sostituisci con l'ID utente corrente, ad esempio da sessione + +// Query per ottenere il valore di lessonnotification +$query = "SELECT lessonnotification FROM auth_users WHERE id = ?"; +$stmt = $conn->prepare($query); +$stmt->bind_param("i", $userid); +$stmt->execute(); +$result = $stmt->get_result(); + +if ($result->num_rows > 0) { + $row = $result->fetch_assoc(); + $lessonnotification = $row['lessonnotification']; +} else { + $lessonnotification = 'Y'; // Valore di default se l'utente non esiste +} + +$stmt->close(); +$conn->close(); +?> + + + + + + + YogiBook - Opzioni + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + +
    + +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +

    Impostazioni Notifiche

    +
    + > + +

    con questa notifica riceverai un promemoria qualche ora prima della lezione, che ti permetterà , entro i limiti consentiti, di cancellare o riprogrammare la lezione

    +
    +
    +
    +
    +
    + +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/public/orderbooklist.php b/public/orderbooklist.php index dbdba13..637bdc7 100644 --- a/public/orderbooklist.php +++ b/public/orderbooklist.php @@ -272,7 +272,7 @@ if (!$result) { echo "" . $row['iduser'] . ""; echo "" . $row['cod'] . ""; echo "" . $row['quantityclass'] . ""; - echo "" . "
    " . ""; + echo ""; echo "" . "" . ""; echo ""; } @@ -381,6 +381,55 @@ if (!$result) { + \ No newline at end of file diff --git a/public/orders.php b/public/orders.php index a733eaa..526dfb1 100644 --- a/public/orders.php +++ b/public/orders.php @@ -1,69 +1,92 @@ - setQuery("SELECT * FROM option"); -$optionquery->execute(); -?> +// Abilita visualizzazione errori PHP (solo per debug) +ini_set('display_errors', 1); +ini_set('display_startup_errors', 1); +error_reporting(E_ALL); + +require_once('include/headscript.php'); + +// Inizializza log +$logFile = 'dashboard_log.txt'; +$logMessage = "Esecuzione dashboard: " . date('Y-m-d H:i:s') . "\n"; -connect_error) { + $logMessage .= "Connessione al database fallita: " . $conn->connect_error . "\n"; + file_put_contents($logFile, $logMessage, FILE_APPEND); die("Connessione al database fallita: " . $conn->connect_error); } - $iduserlogin = $_POST["iduserlogin"]; + $iduserlogin = filter_var($_POST["iduserlogin"], FILTER_VALIDATE_INT); + $logMessage .= "ID utente ricevuto dal form: $iduserlogin\n"; $conn->close(); + } else { + $logMessage .= "Errore caricamento file o iduserlogin non valido\n"; + file_put_contents($logFile, $logMessage, FILE_APPEND); } } -?> -connect_error) { + $logMessage .= "Connessione al database fallita: " . $conn->connect_error . "\n"; + file_put_contents($logFile, $logMessage, FILE_APPEND); die("Connessione al database fallita: " . $conn->connect_error); } +$logMessage .= "Database connesso: $dbname\n"; + // Query per selezionare i dati filtrati per iduser -$query = "SELECT o.*, s.servicename, s.day, s.time +$iduserlogin = $iduserlogin; // Sostituisci con $iduserlogin in produzione +$query = "SELECT o.idorderbook, o.order_id, o.idservice, o.order_date_created, o.quantityclass, o.first_lesson_date, o.expireon, s.servicename, s.day, s.time FROM orderbook o LEFT JOIN service s ON o.idservice = s.idservice - WHERE o.iduser = '$iduserlogin'"; -$result = $conn->query($query); + WHERE o.iduser = ?"; +$stmt = $conn->prepare($query); +$stmt->bind_param("i", $iduserlogin); +$stmt->execute(); +$result = $stmt->get_result(); $documents = array(); while ($row = $result->fetch_assoc()) { // Get lesson details for each order - $order_id = $row['order_id']; - echo ""; - $lesson_query = "SELECT bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, s.servicename + $idorderbook = $row['idorderbook']; + $logMessage .= "Elaborazione ordine: idorderbook = $idorderbook, order_id = {$row['order_id']}\n"; + + $lesson_query = "SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, s.servicename FROM bookingclass bc LEFT JOIN service s ON bc.idservice = s.idservice - WHERE bc.idorder = '$order_id'"; - $lesson_result = $conn->query($lesson_query); + WHERE bc.idorder = ?"; + $lesson_stmt = $conn->prepare($lesson_query); + $lesson_stmt->bind_param("i", $idorderbook); + $lesson_stmt->execute(); + $lesson_result = $lesson_stmt->get_result(); $lessons = array(); - echo ""; + $logMessage .= "Query lezioni per idorderbook $idorderbook: $lesson_query\n"; if ($lesson_result) { - echo ""; + $logMessage .= "Numero di lezioni trovate per idorderbook $idorderbook: " . $lesson_result->num_rows . "\n"; while ($lesson_row = $lesson_result->fetch_assoc()) { - $lesson_row['bookingstart'] = date('c', strtotime($lesson_row['bookingstart'])); // Formato ISO 8601 + $lesson_row['bookingstart'] = date('c', strtotime($lesson_row['bookingstart'])); $lessons[] = $lesson_row; - echo ""; + $logMessage .= "Lezione aggiunta: " . json_encode($lesson_row) . "\n"; } } else { - echo ""; + $logMessage .= "Errore nella query per idorderbook $idorderbook: " . $conn->error . "\n"; } $row['lessons'] = $lessons; $documents[] = $row; - echo ""; + $logMessage .= "Lezioni per idorderbook $idorderbook: " . count($lessons) . "\n"; + $lesson_stmt->close(); } +$stmt->close(); +file_put_contents($logFile, $logMessage, FILE_APPEND); ?> - + @@ -76,7 +99,7 @@ while ($row = $result->fetch_assoc()) { - + @@ -89,10 +112,11 @@ while ($row = $result->fetch_assoc()) { // Handle order click for popup $('.order-row').click(function() { var lessons = $(this).data('lessons'); - console.log('Lezioni ricevute:', lessons); // Debug + console.log('Lezioni ricevute:', lessons); var total = $(this).data('total'); var orderId = $(this).data('order-id'); - var isExpired = $(this).data('is-expired'); + var isExpired = $(this).data('is-expired') === true; // Converti in booleano + var expireOn = $(this).data('expireon'); // Calcolo delle date var now = new Date(); @@ -111,6 +135,12 @@ while ($row = $result->fetch_assoc()) { }).length; var toSchedule = total - (booked + completed + lost + expired); + // Se l'ordine è scaduto, sposta le lezioni "Da Programmare" in "Scadute" + if (isExpired) { + expired += toSchedule; + toSchedule = 0; + } + console.log({ booked: booked, completed: completed, @@ -120,46 +150,55 @@ while ($row = $result->fetch_assoc()) { total: total }); + var expireOnFormatted = expireOn ? new Date(expireOn).toLocaleDateString('it-IT', { + day: '2-digit', + month: '2-digit', + year: 'numeric' + }) : 'Non specificata'; + var htmlContent = ` -

    - Dettagli Ordine #${orderId} - - ${isExpired ? 'Scaduto' : 'Attivo'} - -

    -
    -
    -
    Totale
    -

    ${total}

    -
    -
    -
    Fatte
    -

    ${completed}

    -
    -
    -
    Perse
    -

    ${lost}

    -
    -
    -
    Scadute
    -

    ${expired}

    -
    -
    -
    Da Programmare
    -

    ${toSchedule}

    -
    -
    -
    - - - - - - - - - - `; +

    + Dettagli Ordine #${orderId} + + ${isExpired ? 'Scaduto' : 'Attivo'} + +

    +
    +
    +
    Totale
    +

    ${total}

    +
    +
    +
    Praticate
    +

    ${completed}

    +
    +
    +
    Perse
    +

    ${lost}

    +
    +
    +
    Scadute
    +

    ${expired}

    +
    +
    +
    Da Programmare
    +

    ${toSchedule}

    +
    +
    +
    +

    + Il tuo ordine scadrà il ${expireOnFormatted} +

    +
    Data e OraLezioneStato
    + + + + + + + + +`; if (lessons.length === 0) { htmlContent += ` @@ -234,17 +273,16 @@ while ($row = $result->fetch_assoc()) { // Handle details button click $('.details-btn').click(function(e) { - e.stopPropagation(); // Prevent row click event + e.stopPropagation(); var row = $(this).closest('tr'); var lessons = row.data('lessons'); var total = row.data('total'); var orderId = row.data('order-id'); - var isExpired = row.data('is-expired'); + var isExpired = row.data('is-expired') === true; + var expireOn = row.data('expireon'); - // Calcolo delle date var now = new Date(); - // Calcolo dei conteggi var completed = lessons.filter(l => { var lessonDate = new Date(l.bookingstart); return (l.status === 'completed') || @@ -258,6 +296,18 @@ while ($row = $result->fetch_assoc()) { }).length; var toSchedule = total - (booked + completed + lost + expired); + // Se l'ordine è scaduto, sposta le lezioni "Da Programmare" in "Scadute" + if (isExpired) { + expired += toSchedule; + toSchedule = 0; + } + + var expireOnFormatted = expireOn ? new Date(expireOn).toLocaleDateString('it-IT', { + day: '2-digit', + month: '2-digit', + year: 'numeric' + }) : 'Non specificata'; + var htmlContent = `

    Dettagli Ordine #${orderId} @@ -266,27 +316,29 @@ while ($row = $result->fetch_assoc()) {

    -
    +
    Totale

    ${total}

    -
    -
    Fatte
    +
    +
    Praticate

    ${completed}

    -
    +
    Perse

    ${lost}

    -
    +
    Scadute

    ${expired}

    -
    +
    Da Programmare

    ${toSchedule}

    -
    +

    + Il tuo ordine scadrà il ${expireOnFormatted} +

    Data e OraLezioneStato
    @@ -369,24 +421,24 @@ while ($row = $result->fetch_assoc()) { } }); }); - }); - function confirmDelete(id, deletePageUrl) { - Swal.fire({ - title: "Sei sicuro?", - text: "Questa prenotazione verrà cancellata definitivamente! Ricordati poi di riprogrammare la tua lezione!", - icon: "warning", - showCancelButton: true, - confirmButtonColor: "#d33", - cancelButtonColor: "#3085d6", - confirmButtonText: "Sì, cancella!", - cancelButtonText: "Annulla" - }).then((result) => { - if (result.isConfirmed) { - window.location.href = `deleteclass.php?id=${id}`; - } - }); - } + function confirmDelete(id, deletePageUrl) { + Swal.fire({ + title: "Sei sicuro?", + text: "Questa prenotazione verrà cancellata definitivamente! Ricordati poi di riprogrammare la tua lezione!", + icon: "warning", + showCancelButton: true, + confirmButtonColor: "#d33", + cancelButtonColor: "#3085d6", + confirmButtonText: "Sì, cancella!", + cancelButtonText: "Annulla" + }).then((result) => { + if (result.isConfirmed) { + window.location.href = `deleteclass.php?id=${id}`; + } + }); + } + }); -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -

    Riprogrammazione Lezione

    -

    Lezione attuale: del

    -

    Scadenza abbonamento:

    -
    -
    -
    -
    -
    - - - -

    - - - -
    - num_rows == 0): ?> -

    Classi non presenti per questo mese o oltre la data di scadenza.

    - Torna al portale - - fetch_assoc()): ?> - format("d"); - $monthInItalian = $italianMonths[$dateObj->format("F")]; - $newDateFormat = $dateObj->format("d-m-Y H:i"); - - $eventId = $row['idserviceschedule']; - $bookingQuery = "SELECT iduser FROM bookingclass WHERE idserviceschedule = ? AND status='booked'"; - $stmtBooking = $conn->prepare($bookingQuery); - $stmtBooking->bind_param("i", $eventId); - $stmtBooking->execute(); - $bookingResult = $stmtBooking->get_result(); - $countPersons = $bookingResult->num_rows; - $stmtBooking->close(); - - $maxcapacity = $row['maxcapacity']; - $freeplace = $maxcapacity - $countPersons; - - $idcheckservice = $row['idserviceschedule']; - $query = "SELECT * FROM bookingclass WHERE idserviceschedule = ? AND iduser = ?"; - $stmtCheck = $conn->prepare($query); - $stmtCheck->bind_param("ii", $idcheckservice, $iduser); - $stmtCheck->execute(); - $resultcheck = $stmtCheck->get_result(); - $alreadybooked = $resultcheck->num_rows > 0 ? 'Y' : 'N'; - $stmtCheck->close(); - ?> -
    - -
    - 0): ?> -
    - -
    - -
    -
    -
    - -
    - 0): ?> -
    - -
    - -

    - /

    -

    Quando:

    -

    Luogo: via Valassina 62/B Seregno - Sala Contesto Yoga

    -
    - - - 0): ?> - - - - - - -
    -
    -
    - - -
    - - - -

    - - - -
    -
    -
    - -
    -
    - - - - - - + +
    + diff --git a/public/rebook_from_cancel_log.txt b/public/rebook_from_cancel_log.txt new file mode 100644 index 0000000..494ef78 --- /dev/null +++ b/public/rebook_from_cancel_log.txt @@ -0,0 +1,63 @@ +Esecuzione riprogrammazione: 2025-10-13 15:06:31 +Database connesso: yogibookaury +Query lezioni disponibili: SELECT ss.*, s.servicename, s.colorclass, s.maxcapacity + FROM serviceschedule ss + LEFT JOIN service s ON ss.idservice = s.idservice + WHERE ss.dateschedule BETWEEN ? AND DATE_ADD(?, INTERVAL 1 DAY) + AND ss.dateschedule <= '2025-10-30 23:59:59' + AND ss.idservice IN (?,?,?,?,?,?,?,?) + ORDER BY ss.dateschedule +Parametri: ["2025-10-01","2025-10-31",42,41,42,43,45,47,44,48] +Esecuzione riprogrammazione: 2025-10-13 15:06:31 +Database connesso: yogibookaury +Query lezioni disponibili: SELECT ss.*, s.servicename, s.colorclass, s.maxcapacity + FROM serviceschedule ss + LEFT JOIN service s ON ss.idservice = s.idservice + WHERE ss.dateschedule BETWEEN ? AND DATE_ADD(?, INTERVAL 1 DAY) + AND ss.dateschedule <= '2025-10-30 23:59:59' + AND ss.idservice IN (?,?,?,?,?,?,?,?) + ORDER BY ss.dateschedule +Parametri: ["2025-10-01","2025-10-31",42,41,42,43,45,47,44,48] +Caricata pagina di riprogrammazione per ID 4, mese: 2025-10-01 +Esecuzione riprogrammazione: 2025-10-13 15:06:38 +Database connesso: yogibookaury +Query lezioni disponibili: SELECT ss.*, s.servicename, s.colorclass, s.maxcapacity + FROM serviceschedule ss + LEFT JOIN service s ON ss.idservice = s.idservice + WHERE ss.dateschedule BETWEEN ? AND DATE_ADD(?, INTERVAL 1 DAY) + AND ss.dateschedule <= '2025-10-30 23:59:59' + AND ss.idservice IN (?,?,?,?,?,?,?,?) + ORDER BY ss.dateschedule +Parametri: ["2025-11-01","2025-11-30",42,41,42,43,45,47,44,48] +Esecuzione riprogrammazione: 2025-10-13 15:06:38 +Database connesso: yogibookaury +Query lezioni disponibili: SELECT ss.*, s.servicename, s.colorclass, s.maxcapacity + FROM serviceschedule ss + LEFT JOIN service s ON ss.idservice = s.idservice + WHERE ss.dateschedule BETWEEN ? AND DATE_ADD(?, INTERVAL 1 DAY) + AND ss.dateschedule <= '2025-10-30 23:59:59' + AND ss.idservice IN (?,?,?,?,?,?,?,?) + ORDER BY ss.dateschedule +Parametri: ["2025-11-01","2025-11-30",42,41,42,43,45,47,44,48] +Caricata pagina di riprogrammazione per ID 4, mese: 2025-11-01 +Esecuzione riprogrammazione: 2025-10-13 15:06:41 +Database connesso: yogibookaury +Query lezioni disponibili: SELECT ss.*, s.servicename, s.colorclass, s.maxcapacity + FROM serviceschedule ss + LEFT JOIN service s ON ss.idservice = s.idservice + WHERE ss.dateschedule BETWEEN ? AND DATE_ADD(?, INTERVAL 1 DAY) + AND ss.dateschedule <= '2025-10-30 23:59:59' + AND ss.idservice IN (?,?,?,?,?,?,?,?) + ORDER BY ss.dateschedule +Parametri: ["2025-10-01","2025-10-31",42,41,42,43,45,47,44,48] +Esecuzione riprogrammazione: 2025-10-13 15:06:41 +Database connesso: yogibookaury +Query lezioni disponibili: SELECT ss.*, s.servicename, s.colorclass, s.maxcapacity + FROM serviceschedule ss + LEFT JOIN service s ON ss.idservice = s.idservice + WHERE ss.dateschedule BETWEEN ? AND DATE_ADD(?, INTERVAL 1 DAY) + AND ss.dateschedule <= '2025-10-30 23:59:59' + AND ss.idservice IN (?,?,?,?,?,?,?,?) + ORDER BY ss.dateschedule +Parametri: ["2025-10-01","2025-10-31",42,41,42,43,45,47,44,48] +Caricata pagina di riprogrammazione per ID 4, mese: 2025-10-01 diff --git a/public/ripristina_campo_lost.php b/public/ripristina_campo_lost.php new file mode 100644 index 0000000..43b6059 --- /dev/null +++ b/public/ripristina_campo_lost.php @@ -0,0 +1,26 @@ +connect_error) { + die("Connessione fallita: " . $conn->connect_error); +} + +if (isset($_POST['idbookingclass'])) { + $idbookingclass = $_POST['idbookingclass']; + + $query = "UPDATE bookingclass SET lostlesson = 'N' WHERE idbookingclass = ?"; + $stmt = $conn->prepare($query); + $stmt->bind_param("i", $idbookingclass); + + if ($stmt->execute()) { + echo json_encode(['success' => true]); + } else { + echo json_encode(['success' => false, 'error' => $conn->error]); + } + + $stmt->close(); +} + +$conn->close(); diff --git a/public/selectorder.php b/public/selectorder.php index 6a10172..d20fe49 100644 --- a/public/selectorder.php +++ b/public/selectorder.php @@ -1,6 +1,6 @@ setQuery("SELECT * FROM option"); $optionquery->execute(); ?> @@ -8,410 +8,354 @@ $optionquery->execute(); connect_error) { - die("Connessione al database fallita: " . $conn->connect_error); - } - - // Ottieni l'ID dell'utente (da dove viene?) - $iduserlogin = $_POST["iduserlogin"]; - - - - // Chiudi la connessione al database - $conn->close(); - } -} -?> - - - -connect_error) { + die("Connessione al database fallita: " . $conn->connect_error); + } + + // Ottieni l'ID dell'utente (da dove viene?) + $iduserlogin = $_POST["iduserlogin"]; + + // Chiudi la connessione al database + $conn->close(); + } +} +?> + +connect_error) { - die("Connessione al database fallita: " . $conn->connect_error); + die("Connessione al database fallita: " . $conn->connect_error); } - - -// Query per selezionare i dati filtrati per iduser -$query = "SELECT * FROM orderbook LEFT JOIN service ON orderbook.idservice=service.idservice WHERE iduser = '$iduserlogin'"; -$result = $conn->query($query); +// Query per selezionare i dati filtrati per iduser, includendo servicename +$query = "SELECT orderbook.idorderbook, orderbook.nticket, orderbook.expireon, orderbook.idservice, service.servicename + FROM orderbook LEFT JOIN service ON orderbook.idservice=service.idservice + WHERE orderbook.iduser = ?"; +$stmt = $conn->prepare($query); +$stmt->bind_param("i", $iduserlogin); +$stmt->execute(); +$result = $stmt->get_result(); // Array per memorizzare i risultati $documents = array(); while ($row = $result->fetch_assoc()) { - $documents[] = $row; + $documents[] = $row; } - +$stmt->close(); +$conn->close(); ?> + - + + + YogiBook - Prenotazioni YogaSoul + + + + + - -YogiBook - Prenotazioni YogaSoul - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - -
    - - -
    - -
    - - -
    - - -
    -
    - -
    -
    -
    - - - - -
    -
    -
    - - -
    -
    -
    -
    -
    Benvenuta/o
    -

    Di seguito puoi visualizzare i tuoi ordini

    -
    -
    - - connect_error) { - die("Connessione fallita: " . $conn->connect_error); -} - -// ID dell'utente per il quale vuoi filtrare gli ordini -$userid = $iduserlogin; - -// Query per ottenere la somma dei ticket per ogni ordine dell'utente -$query = "SELECT iduser, idorderbook, SUM(nticket) as total_tickets - FROM orderbook - WHERE iduser = $userid - GROUP BY iduser"; - -$result = $conn->query($query); - -if (!$result) { - die("Query fallita: " . $conn->error); - } - -if ($result->num_rows > 0) { - while ($row = $result->fetch_assoc()) { - $idOrdine = $row["idorderbook"]; - $totalTickets = $row["total_tickets"]; - - } -} else { - $totalTickets = 0; // Imposta a zero se non ci sono righe nella query -} - -$conn->close(); -?>connect_error) { - die("Connessione al database fallita: " . $conn->connect_error); -} - -// ID dell'utente per il quale si desidera eseguire la query -$iduser = $iduserlogin; // Sostituisci con l'ID utente desiderato - -// Data e ora attuali -$currentDateTime = date("Y-m-d H:i:s"); - -// Query per contare i record con data e ora passate e future -$query = "SELECT COUNT(*) AS total, - SUM(CASE WHEN serviceschedule.dateschedule <= '$currentDateTime' THEN 1 ELSE 0 END) AS passed, - SUM(CASE WHEN serviceschedule.dateschedule > '$currentDateTime' THEN 1 ELSE 0 END) AS future - FROM bookingclass - LEFT JOIN serviceschedule ON bookingclass.idserviceschedule = serviceschedule.idserviceschedule - WHERE bookingclass.iduser = $iduser"; - -$result = $conn->query($query); -if ($result) { - $row = $result->fetch_assoc(); - $totalRecords = $row['total']; - $passedRecords = $row['passed']; - $futureRecords = $row['future']; - - -} -// Chiusura della connessione -$conn->close(); -?> - - - - - - - - - - - - - - -
    OrdineDa prenotare
    -
    - - - -
    -
    -
    - - -
    -
  • -
    - - - - - -
    - -
    - - - - - -
    - + + + +
    +
    + +
    + +
    + +
    - +
    +
    +
    +
    +
    +
    +
    +
    Benvenuta/o
    +

    Di seguito puoi visualizzare i tuoi ordini

    +
    + + + + + + + + + + + + + connect_error) { + die("Connessione al database fallita: " . $conn->connect_error); + } - + $idorderbook = $document['idorderbook']; + $totalTickets = $document['nticket']; + $expireon = $document['expireon']; + $idservice = $document['idservice']; + $servicename = $document['servicename']; - + // Verifica se l'ordine è scaduto + $currentDate = date("Y-m-d"); + $isExpired = $expireon && $expireon < $currentDate; - - - - - + // Data e ora attuali + $currentDateTime = date("Y-m-d H:i:s"); - + // Query per contare i record per questo ordine, escludendo status = 'cancelled' + $query = "SELECT COUNT(*) AS total, + SUM(CASE WHEN serviceschedule.dateschedule <= ? AND bookingclass.status = 'booked' AND bookingclass.lostlesson = 'N' THEN 1 ELSE 0 END) AS passed, + SUM(CASE WHEN serviceschedule.dateschedule > ? AND bookingclass.status = 'booked' AND bookingclass.lostlesson = 'N' THEN 1 ELSE 0 END) AS future, + SUM(CASE WHEN bookingclass.lostlesson = 'Y' AND bookingclass.status != 'cancelled' THEN 1 ELSE 0 END) AS lost, + SUM(CASE WHEN bookingclass.status = 'pending' THEN 1 ELSE 0 END) AS pending + FROM bookingclass + LEFT JOIN serviceschedule ON bookingclass.idserviceschedule = serviceschedule.idserviceschedule + WHERE bookingclass.iduser = ? AND bookingclass.idorder = ? AND bookingclass.status != 'cancelled'"; + $stmt = $conn->prepare($query); + $stmt->bind_param("ssii", $currentDateTime, $currentDateTime, $iduserlogin, $idorderbook); + $stmt->execute(); + $result = $stmt->get_result(); - + if ($result) { + $row = $result->fetch_assoc(); + $passedRecords = $row['passed']; + $futureRecords = $row['future']; + $lost = $row['lost']; + $pending = $row['pending']; + } else { + $passedRecords = 0; + $futureRecords = 0; + $lost = 0; + $pending = 0; + } + + $toprogram = $totalTickets - $passedRecords - $futureRecords - $pending - $lost; + + $stmt->close(); + $conn->close(); + ?> + + + + + + + + + +
    OrdineServizioNumero di TicketScadenzaDa prenotare
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/public/update_expired_lessons.php b/public/update_expired_lessons.php new file mode 100644 index 0000000..e7aad1d --- /dev/null +++ b/public/update_expired_lessons.php @@ -0,0 +1,78 @@ +connect_error) { + $logMessage .= "Connessione al database fallita: " . $conn->connect_error . "\n"; + file_put_contents($logFile, $logMessage, FILE_APPEND); + die("Connessione al database fallita: " . $conn->connect_error); +} + +$logMessage .= "Database connesso: $dbname\n"; + +// Query per trovare ordini scaduti +$query_orders = "SELECT idorderbook, order_id, expireon + FROM orderbook + WHERE expireon < NOW()"; +$result_orders = $conn->query($query_orders); + +if (!$result_orders) { + $logMessage .= "Errore nella query degli ordini scaduti: " . $conn->error . "\n"; + file_put_contents($logFile, $logMessage, FILE_APPEND); + $conn->close(); + exit; +} + +$logMessage .= "Ordini scaduti trovati: " . $result_orders->num_rows . "\n"; + +$updated_lessons = 0; +$processed_orders = array(); + +// Aggiorna le lezioni per ogni ordine scaduto +while ($order = $result_orders->fetch_assoc()) { + $idorderbook = $order['idorderbook']; + $processed_orders[] = $idorderbook; + $logMessage .= "Elaborazione ordine: idorderbook = $idorderbook, expireon = {$order['expireon']}\n"; + + // Query per aggiornare le lezioni non completate e non perse + $update_query = "UPDATE bookingclass + SET expirylesson = 'Y' + WHERE idorder = ? + AND status != 'completed' + AND lostlesson != 'Y' + AND expirylesson != 'Y'"; + $stmt = $conn->prepare($update_query); + if (!$stmt) { + $logMessage .= "Errore preparazione query per idorderbook $idorderbook: " . $conn->error . "\n"; + continue; + } + + $stmt->bind_param("i", $idorderbook); + $stmt->execute(); + + $affected_rows = $stmt->affected_rows; + $updated_lessons += $affected_rows; + $logMessage .= "Lezioni aggiornate per idorderbook $idorderbook: $affected_rows\n"; + + $stmt->close(); +} + +$logMessage .= "Totale lezioni aggiornate: $updated_lessons\n"; +$logMessage .= "Ordini elaborati: " . implode(", ", $processed_orders) . "\n"; + +// Scrivi il log +file_put_contents($logFile, $logMessage, FILE_APPEND); + +// Chiudi la connessione +$conn->close(); diff --git a/public/update_expiry.php b/public/update_expiry.php new file mode 100644 index 0000000..593afef --- /dev/null +++ b/public/update_expiry.php @@ -0,0 +1,103 @@ +connect_error) { + ob_end_clean(); + header('Content-Type: application/json'); + error_log("Connessione al database fallita: " . $conn->connect_error); + echo json_encode(['status' => 'error', 'message' => 'Connessione al database fallita: ' . $conn->connect_error]); + exit; +} + +// Gestione della risposta AJAX +if ($_SERVER['REQUEST_METHOD'] !== 'POST' || !isset($_POST['update_expiry'])) { + ob_end_clean(); + header('Content-Type: application/json'); + error_log("Richiesta non valida a update_expiry.php: metodo=" . $_SERVER['REQUEST_METHOD'] . ", update_expiry=" . (isset($_POST['update_expiry']) ? 'set' : 'not set')); + echo json_encode(['status' => 'error', 'message' => 'Richiesta non valida']); + exit; +} + +// Verifica i parametri ricevuti +$order_id = isset($_POST['order_id']) ? intval($_POST['order_id']) : 0; +$new_expiry = isset($_POST['new_expiry']) ? $_POST['new_expiry'] : ''; + +// Log per debug +error_log("Tentativo di aggiornamento AJAX - idorderbook: $order_id, new_expiry: $new_expiry"); + +// Controlla se idorderbook è valido +if ($order_id <= 0) { + ob_end_clean(); + header('Content-Type: application/json'); + error_log("idorderbook non valido o mancante: $order_id"); + echo json_encode(['status' => 'error', 'message' => 'idorderbook non valido o mancante.']); + exit; +} + +// Verifica se l'idorderbook esiste +$checkStmt = $conn->prepare("SELECT idorderbook FROM orderbook WHERE idorderbook = ?"); +if (!$checkStmt) { + ob_end_clean(); + header('Content-Type: application/json'); + error_log("Errore preparazione query SELECT: " . $conn->error); + echo json_encode(['status' => 'error', 'message' => 'Errore preparazione query: ' . $conn->error]); + exit; +} +$checkStmt->bind_param("i", $order_id); +$checkStmt->execute(); +$checkResult = $checkStmt->get_result(); +if ($checkResult->num_rows === 0) { + ob_end_clean(); + header('Content-Type: application/json'); + error_log("idorderbook $order_id non trovato nel database."); + echo json_encode(['status' => 'error', 'message' => 'idorderbook non trovato nel database.']); + $checkStmt->close(); + exit; +} +$checkStmt->close(); + +// Esegui l'aggiornamento +$stmt = $conn->prepare("UPDATE orderbook SET expireon = ? WHERE idorderbook = ?"); +if (!$stmt) { + ob_end_clean(); + header('Content-Type: application/json'); + error_log("Errore preparazione query UPDATE: " . $conn->error); + echo json_encode(['status' => 'error', 'message' => 'Errore preparazione query UPDATE: ' . $conn->error]); + exit; +} +$stmt->bind_param("si", $new_expiry, $order_id); + +$response = []; +if ($stmt->execute()) { + if ($stmt->affected_rows > 0) { + $response['status'] = 'success'; + $response['message'] = 'Data di scadenza aggiornata con successo!'; + } else { + $response['status'] = 'error'; + $response['message'] = 'Nessuna riga aggiornata. Verifica l\'idorderbook.'; + error_log("Nessuna riga aggiornata per idorderbook: $order_id"); + } +} else { + $response['status'] = 'error'; + $response['message'] = 'Errore SQL: ' . $stmt->error; + error_log("Errore SQL: " . $stmt->error); +} + +$stmt->close(); +ob_end_clean(); +header('Content-Type: application/json'); +echo json_encode($response); +exit; diff --git a/public/update_lessonnotification.php b/public/update_lessonnotification.php new file mode 100644 index 0000000..2369ca4 --- /dev/null +++ b/public/update_lessonnotification.php @@ -0,0 +1,35 @@ +connect_error) { + die(json_encode(['success' => false, 'error' => 'Connessione fallita: ' . $conn->connect_error])); +} + +if (isset($_POST['userid']) && isset($_POST['lessonnotification'])) { + $userid = $_POST['userid']; + $lessonnotification = $_POST['lessonnotification']; + + // Validate lessonnotification value + if (!in_array($lessonnotification, ['Y', 'N'])) { + echo json_encode(['success' => false, 'error' => 'Valore lessonnotification non valido']); + exit; + } + + $query = "UPDATE auth_users SET lessonnotification = ? WHERE id = ?"; + $stmt = $conn->prepare($query); + $stmt->bind_param("si", $lessonnotification, $userid); + + if ($stmt->execute()) { + echo json_encode(['success' => true]); + } else { + echo json_encode(['success' => false, 'error' => $conn->error]); + } + + $stmt->close(); +} else { + echo json_encode(['success' => false, 'error' => 'Parametri mancanti']); +} + +$conn->close(); diff --git a/public/userpanel.php b/public/userpanel.php index f51f05b..7c5885f 100644 --- a/public/userpanel.php +++ b/public/userpanel.php @@ -30,7 +30,6 @@ if ($currentDate > $currentMonthStart) { } $currentMonthEnd = date("Y-m-t", strtotime($currentMonthStart)); -echo $currentMonthEnd; $bookedclass->setQuery("SELECT * FROM bookingclass LEFT JOIN service ON bookingclass.idservice = service.idservice LEFT JOIN serviceschedule ON bookingclass.idserviceschedule = serviceschedule.idserviceschedule @@ -85,15 +84,15 @@ $iduser = $iduserlogin; // Sostituisci con l'ID utente desiderato // Data e ora attuali $currentDateTime = date("Y-m-d H:i:s"); -// Query per contare i record con data e ora passate e future +// Query per contare i record con data e ora passate e future, escludendo status = 'cancelled' $query = "SELECT COUNT(*) AS total, SUM(CASE WHEN serviceschedule.dateschedule <= '$currentDateTime' AND bookingclass.status = 'booked' AND bookingclass.lostlesson = 'N' THEN 1 ELSE 0 END) AS passed, SUM(CASE WHEN serviceschedule.dateschedule > '$currentDateTime' AND bookingclass.status = 'booked' AND bookingclass.lostlesson = 'N' THEN 1 ELSE 0 END) AS future, - SUM(CASE WHEN bookingclass.lostlesson = 'Y' THEN 1 ELSE 0 END) AS lost, + SUM(CASE WHEN bookingclass.lostlesson = 'Y' AND bookingclass.status != 'cancelled' THEN 1 ELSE 0 END) AS lost, SUM(CASE WHEN bookingclass.status = 'pending' THEN 1 ELSE 0 END) AS pending FROM bookingclass LEFT JOIN serviceschedule ON bookingclass.idserviceschedule = serviceschedule.idserviceschedule - WHERE bookingclass.iduser = $iduser"; + WHERE bookingclass.iduser = $iduser AND bookingclass.status != 'cancelled'"; $result = $conn->query($query); if ($result) { diff --git a/readme.md b/readme.md index 5430deb..2425348 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,10 @@ -## Vanguard - Advanced PHP Login and User Management +## YogiBook Aury -- Website: https://vanguardapp.io -- Documentation: https://milos.support-hub.io -- Developed by [Milos Stojanovic](https://mstojanovic.net) \ No newline at end of file +- Website: https://vanguardapp.io +- Documentation: https://milos.support-hub.io +- Developed by [Milos Stojanovic](https://mstojanovic.net) + +Attenzione creati dei cron da mettere operativi + +update_expired_lessons.php --> identifica le lezioni scadute e le mette in bookinglcass come scadute +non serve il cron perchè le sacadute partono da essre da programmare \ No newline at end of file