some edit
This commit is contained in:
parent
9fdb56c7ed
commit
2392a267d1
1
.env
1
.env
@ -31,7 +31,6 @@ MAIL_USERNAME=info@yogasoul.it
|
||||
MAIL_PASSWORD=!Testolina88
|
||||
MAIL_ENCRYPTION=ssl
|
||||
|
||||
|
||||
PUSHER_APP_ID=
|
||||
PUSHER_APP_KEY=
|
||||
PUSHER_APP_SECRET=
|
||||
|
||||
1
phpinfo.php
Normal file
1
phpinfo.php
Normal file
@ -0,0 +1 @@
|
||||
<?php phpinfo();
|
||||
@ -1,4 +1,5 @@
|
||||
<?php
|
||||
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use PHPMailer\PHPMailer\Exception;
|
||||
?>
|
||||
@ -8,106 +9,95 @@ include('include/headscript.php');
|
||||
|
||||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||||
|
||||
|
||||
// Recupera il parametro "idbookingclass" dalla richiesta GET
|
||||
if (isset($_GET['idbookingclass'])) {
|
||||
$idbookingclass = $_GET['idbookingclass'];
|
||||
|
||||
// Aggiorna lo status a "booked" nella tabella "bookingclass"
|
||||
$query = "UPDATE bookingclass SET status = 'booked' WHERE idbookingclass = ?";
|
||||
|
||||
// Aggiorna lo status a "booked" e is_reprogrammed a "Y" nella tabella "bookingclass"
|
||||
$query = "UPDATE bookingclass SET status = 'booked', is_reprogrammed = 'Y' WHERE idbookingclass = ?";
|
||||
$stmt = $conn->prepare($query);
|
||||
|
||||
|
||||
if ($stmt) {
|
||||
$stmt->bind_param("i", $idbookingclass);
|
||||
if ($stmt->execute())
|
||||
|
||||
//query
|
||||
$query = "SELECT bookingclass.*, auth_users.*, service.*
|
||||
FROM bookingclass
|
||||
LEFT JOIN auth_users ON bookingclass.iduser = auth_users.id
|
||||
LEFT JOIN service ON bookingclass.idservice = service.idservice
|
||||
WHERE bookingclass.idbookingclass = $idbookingclass";
|
||||
if ($stmt->execute()) {
|
||||
// Query per recuperare i dettagli della prenotazione
|
||||
$query = "SELECT bookingclass.*, auth_users.*, service.*
|
||||
FROM bookingclass
|
||||
LEFT JOIN auth_users ON bookingclass.iduser = auth_users.id
|
||||
LEFT JOIN service ON bookingclass.idservice = service.idservice
|
||||
WHERE bookingclass.idbookingclass = $idbookingclass";
|
||||
|
||||
$result = $conn->query($query);
|
||||
$result = $conn->query($query);
|
||||
|
||||
if ($result) {
|
||||
// Elabora i risultati
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
// Ora puoi accedere ai dati delle tabelle
|
||||
$newtime = $row['bookingstart'];
|
||||
$emailuser = $row['email'];
|
||||
$firstname = $row['first_name'];
|
||||
|
||||
|
||||
$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=" <p style='font-size: 14px; line-height: 190%;'><span style='font-size: 18px; line-height: 34.2px;'><strong><span style='line-height: 34.2px; font-size: 18px;'> Ciao $firstname , </span></strong></span></p>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>La tua richiesta di riprogrammazione è stata accettata! </span></p>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Ecco il dettaglio della riprogrammazione $newtimeformat</span></p>
|
||||
<br>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Per vedere e gestire le tue lezioni clicca qui: https://yogibook.yogasoul.it </span></p>
|
||||
<br>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Per il primo accesso devi per prima cosa resettare la password cliccando di seguito</span></p>
|
||||
<br>
|
||||
<a href='https://yogibook.yogasoul.it/public/password/reset' target='_blank' class='v-button v-font-size' style='box-sizing: border-box;display: inline-block;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #3AAEE0; border-radius: 4px;-webkit-border-radius: 4px; -moz-border-radius: 4px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none;font-size: 14px;'>
|
||||
<span style='display:block;padding:10px 20px;line-height:120%;'><span style='line-height: 16.8px;'>Reset Password</span></span>
|
||||
</a>
|
||||
<br>
|
||||
<br>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Ci vediamo sul tappetino!</span></p>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Il Team Yogasoul</span></p>";
|
||||
if ($result) {
|
||||
// Elabora i risultati
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
// Ora puoi accedere ai dati delle tabelle
|
||||
$newtime = $row['bookingstart'];
|
||||
$emailuser = $row['email'];
|
||||
$firstname = $row['first_name'];
|
||||
|
||||
$buttonedit="<a href='https://yogibook.yogasoul.it/' target='_blank' class='v-button v-font-size' style='box-sizing: border-box;display: inline-block;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #3AAEE0; border-radius: 4px;-webkit-border-radius: 4px; -moz-border-radius: 4px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none;font-size: 14px;'>
|
||||
<span style='display:block;padding:10px 20px;line-height:120%;'><span style='line-height: 16.8px;'>YogiBook - YogaSoul</span></span>
|
||||
</a>";
|
||||
$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 = "
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 18px; line-height: 34.2px;'><strong><span style='line-height: 34.2px; font-size: 18px;'> Ciao $firstname , </span></strong></span></p>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>La tua richiesta di riprogrammazione è stata accettata! </span></p>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Ecco il dettaglio della riprogrammazione $newtimeformat</span></p>
|
||||
<br>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Per vedere e gestire le tue lezioni clicca qui: https://yogibook.yogasoul.it </span></p>
|
||||
<br>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Per il primo accesso devi per prima cosa resettare la password cliccando di seguito</span></p>
|
||||
<br>
|
||||
<a href='https://yogibook.yogasoul.it/public/password/reset' target='_blank' class='v-button v-font-size' style='box-sizing: border-box;display: inline-block;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #3AAEE0; border-radius: 4px;-webkit-border-radius: 4px; -moz-border-radius: 4px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none;font-size: 14px;'>
|
||||
<span style='display:block;padding:10px 20px;line-height:120%;'><span style='line-height: 16.8px;'>Reset Password</span></span>
|
||||
</a>
|
||||
<br>
|
||||
<br>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Ci vediamo sul tappetino!</span></p>
|
||||
<p style='font-size: 14px; line-height: 190%;'><span style='font-size: 16px; line-height: 30.4px;'>Il Team Yogasoul</span></p>";
|
||||
|
||||
$buttonedit = "<a href='https://yogibook.yogasoul.it/' target='_blank' class='v-button v-font-size' style='box-sizing: border-box;display: inline-block;text-decoration: none;-webkit-text-size-adjust: none;text-align: center;color: #FFFFFF; background-color: #3AAEE0; border-radius: 4px;-webkit-border-radius: 4px; -moz-border-radius: 4px; width:auto; max-width:100%; overflow-wrap: break-word; word-break: break-word; word-wrap:break-word; mso-border-alt: none;font-size: 14px;'>
|
||||
<span style='display:block;padding:10px 20px;line-height:120%;'><span style='line-height: 16.8px;'>YogiBook - YogaSoul</span></span>
|
||||
</a>";
|
||||
|
||||
$mail = new PHPMailer(true);
|
||||
$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';
|
||||
|
||||
$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';
|
||||
|
||||
include('mail/emailtemplate2.php');
|
||||
// Email body content
|
||||
include('mail/emailtemplate2.php');
|
||||
// Email body content
|
||||
$htmlContent = $mailmessage1;
|
||||
|
||||
//$trfnmbmail=$appformn.'r'.$revnumb;
|
||||
$htmlContent = $mailmessage1;
|
||||
|
||||
|
||||
$mail->From = 'info@yogasoul.it';
|
||||
$mail->FromName = 'YogiBook [YogaSoul]';
|
||||
$mail->addAddress($emailuser); // Add a recipient
|
||||
|
||||
$mail->From = 'info@yogasoul.it';
|
||||
$mail->FromName = 'YogiBook [YogaSoul]';
|
||||
$mail->addAddress($emailuser); // Add a recipient
|
||||
|
||||
|
||||
$mail->Subject = "YogiBook - Lezione riprogrammata con successo!";
|
||||
$mail->Body = $htmlContent;
|
||||
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
|
||||
|
||||
$mail->Subject = "YogiBook - Lezione riprogrammata con successo!";
|
||||
$mail->Body = $htmlContent;
|
||||
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
|
||||
$mail->send();
|
||||
}
|
||||
|
||||
$mail->send();
|
||||
|
||||
//mail sent
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Reindirizza alla pagina "pendingbookedclass.php" dopo l'aggiornamento
|
||||
header("Location: pendingbookedclass.php");
|
||||
exit(); // Assicura che il codice successivo non venga eseguito dopo il reindirizzamento
|
||||
// Reindirizza alla pagina "pendingbookedclass.php" dopo l'aggiornamento
|
||||
header("Location: pendingbookedclass.php");
|
||||
exit(); // Assicura che il codice successivo non venga eseguito dopo il reindirizzamento
|
||||
} else {
|
||||
echo "Errore durante l'esecuzione della query: " . $conn->error;
|
||||
}
|
||||
$stmt->close();
|
||||
} else {
|
||||
echo "Errore durante l'esecuzione della query: " . $stmt->error;
|
||||
}
|
||||
$stmt->close();
|
||||
} else {
|
||||
echo "Errore nella preparazione della query: " . $conn->error;
|
||||
}
|
||||
@ -117,10 +107,4 @@ $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
|
||||
|
||||
// Chiudi la connessione al database
|
||||
$conn->close();
|
||||
?>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
?>
|
||||
@ -1,17 +1,21 @@
|
||||
<?php require_once('include/headscript.php'); ?>
|
||||
<?php // require_once('Connections/bkngstm.php');
|
||||
?>
|
||||
<?php // require_once('webassist/mysqli/rsobj.php');
|
||||
?>
|
||||
<?php // require_once('webassist/mysqli/queryobj.php');
|
||||
?>
|
||||
<?php // optionquery
|
||||
$optionquery = new WA_MySQLi_RS("optionquery", $bkngstm, 0);
|
||||
$optionquery->setQuery("SELECT * FROM option");
|
||||
$optionquery->execute();
|
||||
?>
|
||||
|
||||
<?php
|
||||
$bookedclass = new WA_MySQLi_RS("bookedclass", $bkngstm, 0);
|
||||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||||
|
||||
if ($conn->connect_error) {
|
||||
die("Connessione fallita: " . $conn->connect_error);
|
||||
}
|
||||
|
||||
// Recupera maxbeforetimecancell dalla tabella option
|
||||
$option_query = "SELECT maxbeforetimecancell FROM option LIMIT 1";
|
||||
$option_result = $conn->query($option_query);
|
||||
if ($option_result && $option_result->num_rows > 0) {
|
||||
$option_row = $option_result->fetch_assoc();
|
||||
$timetocancel = $option_row['maxbeforetimecancell'];
|
||||
} else {
|
||||
$timetocancel = 24; // Valore predefinito se non trovato (es. 24 ore)
|
||||
}
|
||||
|
||||
// Verifica se è stata specificata una richiesta per cambiare il mese
|
||||
if (isset($_GET['prev_month'])) {
|
||||
@ -22,33 +26,17 @@ if (isset($_GET['prev_month'])) {
|
||||
$currentMonthStart = date("Y-m-01");
|
||||
}
|
||||
|
||||
$currentDate = date("Y-m-d");
|
||||
|
||||
// Modifica: Se la data odierna è dopo l'inizio del mese corrente, imposta la data odierna come inizio
|
||||
//if ($currentDate > $currentMonthStart) {
|
||||
// $currentMonthStart = $currentDate;
|
||||
//}
|
||||
|
||||
$currentMonthEnd = date("Y-m-t", strtotime($currentMonthStart));
|
||||
|
||||
$bookedclass = new WA_MySQLi_RS("bookedclass", $conn, 0);
|
||||
$bookedclass->setQuery("SELECT * FROM serviceschedule
|
||||
LEFT JOIN service ON serviceschedule.idservice = service.idservice
|
||||
WHERE serviceschedule.dateschedule BETWEEN '$currentMonthStart' AND DATE_ADD('$currentMonthEnd', INTERVAL 1 DAY) ORDER BY serviceschedule.dateschedule");
|
||||
$bookedclass->execute();
|
||||
|
||||
?>
|
||||
|
||||
<?php
|
||||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||||
|
||||
if ($conn->connect_error) {
|
||||
die("Connessione fallita: " . $conn->connect_error);
|
||||
}
|
||||
|
||||
// ID dell'utente per il quale vuoi filtrare gli ordini
|
||||
$userid = 1;
|
||||
|
||||
// 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
|
||||
@ -66,31 +54,17 @@ if ($result->num_rows > 0) {
|
||||
$totalTickets = $row["total_tickets"];
|
||||
}
|
||||
} else {
|
||||
$totalTickets = 0; // Imposta a zero se non ci sono righe nella query
|
||||
$totalTickets = 0;
|
||||
}
|
||||
|
||||
$conn->close();
|
||||
?>
|
||||
<?php //check tickets
|
||||
// Connessione al database
|
||||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||||
if ($conn->connect_error) {
|
||||
die("Connessione al database fallita: " . $conn->connect_error);
|
||||
}
|
||||
|
||||
// ID dell'utente per il quale si desidera eseguire la query
|
||||
$iduser = 1; // 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
|
||||
$currentDateTime = date("Y-m-d H:i:s");
|
||||
$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";
|
||||
WHERE bookingclass.iduser = $userid";
|
||||
|
||||
$result = $conn->query($query);
|
||||
if ($result) {
|
||||
@ -99,7 +73,7 @@ if ($result) {
|
||||
$passedRecords = $row['passed'];
|
||||
$futureRecords = $row['future'];
|
||||
}
|
||||
// Chiusura della connessione
|
||||
|
||||
$conn->close();
|
||||
?>
|
||||
|
||||
@ -112,25 +86,15 @@ $conn->close();
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta content="YogiBook - Prenotazione facile YogaSOul" name="description" />
|
||||
<meta content="Advanced Creative Solutions" name="author" />
|
||||
<!-- App favicon -->
|
||||
<link rel="shortcut icon" href="assets/images/favicon.ico">
|
||||
|
||||
<!-- Bootstrap Css -->
|
||||
<link href="assets/css/bootstrap.min.css" id="bootstrap-style" rel="stylesheet" type="text/css" />
|
||||
<!-- Icons Css -->
|
||||
<link href="assets/css/icons.min.css" rel="stylesheet" type="text/css" />
|
||||
<!-- App Css-->
|
||||
<link href="assets/css/app.min.css" id="app-style" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@10"></script>
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||
<script>
|
||||
// Function to handle the click event on the "Rimuovi" button
|
||||
function handleRemoveClick(idbookingclass) {
|
||||
// Display SweetAlert confirmation
|
||||
Swal.fire({
|
||||
title: 'Sei sicuro?',
|
||||
text: 'Questa azione rimuoverà la persona dalla classe. Vuoi procedere?',
|
||||
@ -140,19 +104,15 @@ $conn->close();
|
||||
cancelButtonText: 'Annulla',
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
// If user confirms, redirect to the removebooking.php page
|
||||
window.location.href = `removebooking.php?idbookingclass=${idbookingclass}`;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
|
||||
$(document).ready(function() {
|
||||
// Handle "Persa" button click
|
||||
$(".lost-button").click(function() {
|
||||
var idbookingclass = $(this).data("idbookingclass");
|
||||
|
||||
// Mostra un SweetAlert di conferma
|
||||
Swal.fire({
|
||||
title: 'Sei sicuro?',
|
||||
text: 'Vuoi davvero contrassegnare questa lezione come persa?',
|
||||
@ -162,7 +122,6 @@ $conn->close();
|
||||
cancelButtonText: 'Annulla'
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
// Se l'utente conferma, esegui l'aggiornamento
|
||||
$.ajax({
|
||||
url: "aggiorna_campo_lost.php",
|
||||
method: "POST",
|
||||
@ -170,7 +129,6 @@ $conn->close();
|
||||
idbookingclass: idbookingclass
|
||||
},
|
||||
success: function(response) {
|
||||
// Dopo aver contrassegnato con successo la lezione come persa, reindirizza all'adminpanel
|
||||
window.location.href = 'adminpanel.php?success=1';
|
||||
},
|
||||
error: function() {
|
||||
@ -184,8 +142,6 @@ $conn->close();
|
||||
// Handle "Ripristina" button click
|
||||
$(".restore-button").click(function() {
|
||||
var idbookingclass = $(this).data("idbookingclass");
|
||||
|
||||
// Mostra un SweetAlert di conferma
|
||||
Swal.fire({
|
||||
title: 'Sei sicuro?',
|
||||
text: 'Vuoi davvero ripristinare questa lezione?',
|
||||
@ -195,7 +151,6 @@ $conn->close();
|
||||
cancelButtonText: 'Annulla'
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
// Se l'utente conferma, esegui l'aggiornamento
|
||||
$.ajax({
|
||||
url: "ripristina_campo_lost.php",
|
||||
method: "POST",
|
||||
@ -203,7 +158,6 @@ $conn->close();
|
||||
idbookingclass: idbookingclass
|
||||
},
|
||||
success: function(response) {
|
||||
// Dopo aver ripristinato con successo la lezione, reindirizza all'adminpanel
|
||||
window.location.href = 'adminpanel.php?success=2';
|
||||
},
|
||||
error: function() {
|
||||
@ -213,12 +167,150 @@ $conn->close();
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
// Handle "Riprogramma" button click
|
||||
$(".reprogram-button").click(function() {
|
||||
var idbookingclass = $(this).data("idbookingclass");
|
||||
$.ajax({
|
||||
url: "get_available_classes.php?t=" + new Date().getTime(),
|
||||
method: "GET",
|
||||
dataType: "json",
|
||||
success: function(data) {
|
||||
if (data.error) {
|
||||
Swal.fire('Errore', data.error, 'error');
|
||||
console.error('Errore nella risposta JSON:', data.error);
|
||||
return;
|
||||
}
|
||||
|
||||
// Crea la tendina con le lezioni disponibili
|
||||
let selectOptions = '';
|
||||
let selectedSet = false;
|
||||
const now = new Date();
|
||||
const 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'
|
||||
};
|
||||
|
||||
data.classes.forEach(function(cls) {
|
||||
// Gestione della data
|
||||
let displayDate;
|
||||
if (cls.display_dateschedule) {
|
||||
displayDate = cls.display_dateschedule;
|
||||
} else if (cls.dateschedule) {
|
||||
// Converte dateschedule (es. "2024-10-28 19:30") in formato italiano
|
||||
const dateObj = new Date(cls.dateschedule);
|
||||
const day = dateObj.getDate().toString().padStart(2, '0');
|
||||
const month = italianMonths[dateObj.toLocaleString('en-US', {
|
||||
month: 'long'
|
||||
})];
|
||||
const year = dateObj.getFullYear();
|
||||
const hours = dateObj.getHours().toString().padStart(2, '0');
|
||||
const minutes = dateObj.getMinutes().toString().padStart(2, '0');
|
||||
displayDate = `${day} ${month} ${year} ${hours}:${minutes}`;
|
||||
} else {
|
||||
displayDate = 'Data non disponibile';
|
||||
}
|
||||
|
||||
// Gestione dell'occupazione
|
||||
const occupancy = (typeof cls.occupied_seats !== 'undefined' && typeof cls.maxcapacity !== 'undefined') ?
|
||||
`(${cls.occupied_seats}/${cls.maxcapacity})` :
|
||||
'(0/0)';
|
||||
|
||||
// Selezione della data per il confronto
|
||||
const classDate = cls.iso_dateschedule ? new Date(cls.iso_dateschedule) : (cls.dateschedule ? new Date(cls.dateschedule) : new Date());
|
||||
const isSelected = !selectedSet && classDate >= now ? 'selected' : '';
|
||||
if (!selectedSet && classDate >= now) selectedSet = true;
|
||||
|
||||
selectOptions += `<option value="${cls.idserviceschedule}" ${isSelected}>${cls.servicename} - ${displayDate} ${occupancy}</option>`;
|
||||
});
|
||||
|
||||
Swal.fire({
|
||||
title: 'Riprogramma Lezione',
|
||||
html: `
|
||||
<label for="class-select">Seleziona una lezione:</label>
|
||||
<select id="class-select" class="form-control" style="width: 100%;">
|
||||
${selectOptions}
|
||||
</select>
|
||||
<br>
|
||||
<label for="is-reprogrammed">Segna come riprogrammata:</label>
|
||||
<input type="checkbox" id="is-reprogrammed" name="is_reprogrammed" checked>
|
||||
`,
|
||||
showCancelButton: true,
|
||||
confirmButtonText: 'Riprogramma',
|
||||
cancelButtonText: 'Annulla',
|
||||
preConfirm: () => {
|
||||
const selectedClass = document.getElementById('class-select').value;
|
||||
const isReprogrammed = document.getElementById('is-reprogrammed').checked ? 'Y' : 'N';
|
||||
if (!selectedClass) {
|
||||
Swal.showValidationMessage('Seleziona una lezione');
|
||||
return false;
|
||||
}
|
||||
return {
|
||||
idbookingclass: idbookingclass,
|
||||
idserviceschedule: selectedClass,
|
||||
is_reprogrammed: isReprogrammed
|
||||
};
|
||||
}
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
$.ajax({
|
||||
url: "reprogramclass.php",
|
||||
method: "POST",
|
||||
data: {
|
||||
idbookingclass: result.value.idbookingclass,
|
||||
idserviceschedule: result.value.idserviceschedule,
|
||||
is_reprogrammed: result.value.is_reprogrammed
|
||||
},
|
||||
success: function(response) {
|
||||
window.location.href = 'adminpanel.php?success=3';
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error('Errore AJAX riprogrammazione:', status, error, xhr.responseText);
|
||||
Swal.fire('Errore durante la riprogrammazione', 'Dettagli: ' + status + ' - ' + error, 'error');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
error: function(xhr, status, error) {
|
||||
console.error('Errore AJAX:', status, error, xhr.responseText);
|
||||
Swal.fire('Errore durante il recupero delle lezioni', 'Dettagli: ' + status + ' - ' + error, 'error');
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
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}`;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.lost-button,
|
||||
.restore-button {
|
||||
.restore-button,
|
||||
.reprogram-button {
|
||||
background-color: orange;
|
||||
color: white;
|
||||
border: none;
|
||||
@ -233,6 +325,10 @@ $conn->close();
|
||||
background-color: green;
|
||||
}
|
||||
|
||||
.reprogram-button {
|
||||
background-color: #007bff;
|
||||
}
|
||||
|
||||
.lost-button:hover {
|
||||
background-color: darkorange;
|
||||
}
|
||||
@ -241,6 +337,10 @@ $conn->close();
|
||||
background-color: darkgreen;
|
||||
}
|
||||
|
||||
.reprogram-button:hover {
|
||||
background-color: #0056b3;
|
||||
}
|
||||
|
||||
.email-search-results {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
@ -357,8 +457,7 @@ $conn->close();
|
||||
font-size: 24px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
|
||||
.month-navigation {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
@ -377,27 +476,7 @@ $conn->close();
|
||||
font-size: 24px;
|
||||
margin: 0 20px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
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}`;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.pastel-color {
|
||||
border: 1px solid #D1C4CC;
|
||||
padding: 0px;
|
||||
@ -429,8 +508,7 @@ $conn->close();
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
|
||||
.booking-details {
|
||||
margin-top: 10px;
|
||||
border-top: 1px solid #ccc;
|
||||
@ -470,6 +548,7 @@ $conn->close();
|
||||
background-color: #d64937;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="layout-wrapper">
|
||||
@ -506,7 +585,6 @@ $conn->close();
|
||||
</div>
|
||||
</header>
|
||||
<?php include('include/sidebar.php'); ?>
|
||||
|
||||
<header class="ishorizontal-topbar">
|
||||
<div class="navbar-header">
|
||||
<div class="d-flex"></div>
|
||||
@ -565,6 +643,10 @@ $conn->close();
|
||||
<div class="alert alert-success success-message" role="alert">
|
||||
Lezione ripristinata con successo
|
||||
</div>
|
||||
<?php } elseif ($_GET['success'] == 3) { ?>
|
||||
<div class="alert alert-success success-message" role="alert">
|
||||
Lezione riprogrammata con successo
|
||||
</div>
|
||||
<?php }
|
||||
}
|
||||
?>
|
||||
@ -616,7 +698,6 @@ $conn->close();
|
||||
$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);
|
||||
@ -671,6 +752,9 @@ $conn->close();
|
||||
<button class="lost-button" data-idbookingclass="<?php echo $idbookedclass; ?>">
|
||||
<i class="fas fa-wind"></i> Persa
|
||||
</button>
|
||||
<button class="reprogram-button" data-idbookingclass="<?php echo $idbookedclass; ?>">
|
||||
<i class="fas fa-calendar-alt"></i> Riprogramma
|
||||
</button>
|
||||
<?php endif; ?>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@ -1495,3 +1495,539 @@ Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 12
|
||||
Order ID: 3, Lessons count: 4
|
||||
Esecuzione dashboard: 2025-10-16 09:27:32
|
||||
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: 13
|
||||
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":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"}
|
||||
Lezioni per idorderbook 1: 13
|
||||
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-15T19: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"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Esecuzione dashboard: 2025-10-16 09:27:32
|
||||
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: 13
|
||||
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":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"}
|
||||
Lezioni per idorderbook 1: 13
|
||||
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-15T19: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"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 13
|
||||
Order ID: 3, Lessons count: 4
|
||||
Esecuzione dashboard: 2025-10-16 09:33: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: 13
|
||||
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":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"}
|
||||
Lezioni per idorderbook 1: 13
|
||||
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-15T19: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"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Esecuzione dashboard: 2025-10-16 09:33: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: 13
|
||||
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":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"servicename":"Hatha Yoga"}
|
||||
Lezioni per idorderbook 1: 13
|
||||
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-15T19: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"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 13
|
||||
Order ID: 3, Lessons count: 4
|
||||
Esecuzione dashboard: 2025-10-16 09:55:38
|
||||
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, bc.is_reprogrammed, s.servicename
|
||||
FROM bookingclass bc
|
||||
LEFT JOIN service s ON bc.idservice = s.idservice
|
||||
WHERE bc.idorder = ?
|
||||
Numero di lezioni trovate per idorderbook 1: 13
|
||||
Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezioni per idorderbook 1: 13
|
||||
Elaborazione ordine: idorderbook = 3, order_id =
|
||||
Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Esecuzione dashboard: 2025-10-16 09:55:38
|
||||
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, bc.is_reprogrammed, s.servicename
|
||||
FROM bookingclass bc
|
||||
LEFT JOIN service s ON bc.idservice = s.idservice
|
||||
WHERE bc.idorder = ?
|
||||
Numero di lezioni trovate per idorderbook 1: 13
|
||||
Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezioni per idorderbook 1: 13
|
||||
Elaborazione ordine: idorderbook = 3, order_id =
|
||||
Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 13
|
||||
Order ID: 3, Lessons count: 4
|
||||
Esecuzione dashboard: 2025-10-16 11:35:22
|
||||
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, bc.is_reprogrammed, s.servicename
|
||||
FROM bookingclass bc
|
||||
LEFT JOIN service s ON bc.idservice = s.idservice
|
||||
WHERE bc.idorder = ?
|
||||
Numero di lezioni trovate per idorderbook 1: 13
|
||||
Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezioni per idorderbook 1: 13
|
||||
Elaborazione ordine: idorderbook = 3, order_id =
|
||||
Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Esecuzione dashboard: 2025-10-16 11:35:22
|
||||
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, bc.is_reprogrammed, s.servicename
|
||||
FROM bookingclass bc
|
||||
LEFT JOIN service s ON bc.idservice = s.idservice
|
||||
WHERE bc.idorder = ?
|
||||
Numero di lezioni trovate per idorderbook 1: 13
|
||||
Lezione aggiunta: {"idbookingclass":1,"bookingstart":"2025-09-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":13,"bookingstart":"2025-12-09T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezioni per idorderbook 1: 13
|
||||
Elaborazione ordine: idorderbook = 3, order_id =
|
||||
Query lezioni per idorderbook 3: SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 13
|
||||
Order ID: 3, Lessons count: 4
|
||||
Esecuzione dashboard: 2025-11-26 10:37: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, bc.is_reprogrammed, 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,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
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, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Esecuzione dashboard: 2025-11-26 10:37: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, bc.is_reprogrammed, 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,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":12,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
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, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 12
|
||||
Order ID: 3, Lessons count: 4
|
||||
Esecuzione dashboard: 2025-11-26 10:49: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, bc.is_reprogrammed, 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,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":25,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","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, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Esecuzione dashboard: 2025-11-26 10:49: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, bc.is_reprogrammed, 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,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":25,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","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, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 12
|
||||
Order ID: 3, Lessons count: 4
|
||||
Esecuzione dashboard: 2025-11-26 10:52:05
|
||||
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, bc.is_reprogrammed, 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,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":25,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","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, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Esecuzione dashboard: 2025-11-26 10:52:05
|
||||
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, bc.is_reprogrammed, 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,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":25,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","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, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 12
|
||||
Order ID: 3, Lessons count: 4
|
||||
Esecuzione dashboard: 2025-11-26 10:52:55
|
||||
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, bc.is_reprogrammed, 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,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":25,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","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, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Esecuzione dashboard: 2025-11-26 10:52:55
|
||||
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, bc.is_reprogrammed, 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,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":2,"bookingstart":"2025-09-23T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":3,"bookingstart":"2025-09-30T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":4,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":7,"bookingstart":"2025-10-10T18:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":8,"bookingstart":"2025-10-11T12:15:00+00:00","status":"booked","lostlesson":"Y","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":9,"bookingstart":"2025-10-11T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":10,"bookingstart":"2025-11-18T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":11,"bookingstart":"2025-11-25T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":14,"bookingstart":"2025-10-14T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezione aggiunta: {"idbookingclass":21,"bookingstart":"2025-11-24T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":25,"bookingstart":"2025-12-02T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"N","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, bc.is_reprogrammed, 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-15T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":17,"bookingstart":"2025-11-03T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":18,"bookingstart":"2025-11-10T19:30:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":41,"is_reprogrammed":"N","servicename":"Hatha Yoga"}
|
||||
Lezione aggiunta: {"idbookingclass":22,"bookingstart":"2025-10-21T18:15:00+00:00","status":"booked","lostlesson":"N","expirylesson":"N","idservice":42,"is_reprogrammed":"Y","servicename":"Aerial Yoga - intermedio"}
|
||||
Lezioni per idorderbook 3: 4
|
||||
Order ID: 1, Lessons count: 12
|
||||
Order ID: 3, Lessons count: 4
|
||||
|
||||
173
public/delete_lesson.php
Normal file
173
public/delete_lesson.php
Normal file
@ -0,0 +1,173 @@
|
||||
<?php
|
||||
require_once('Connections/bkngstm.php');
|
||||
require_once('webassist/mysqli/rsobj.php');
|
||||
include('include/headscript.php'); // $iduserlogin
|
||||
|
||||
/***********************
|
||||
* LOG (mail + debug)
|
||||
***********************/
|
||||
$logDir = __DIR__ . '/logs';
|
||||
if (!is_dir($logDir)) {
|
||||
@mkdir($logDir, 0755, true);
|
||||
}
|
||||
$mailLogFile = $logDir . '/mail_cancel.log';
|
||||
|
||||
function mail_log($file, $msg)
|
||||
{
|
||||
@file_put_contents($file, "[" . date("Y-m-d H:i:s") . "] " . $msg . PHP_EOL, FILE_APPEND);
|
||||
}
|
||||
|
||||
/***********************
|
||||
* INPUT
|
||||
***********************/
|
||||
if (!isset($_GET['id'])) {
|
||||
die("ID non fornito.");
|
||||
}
|
||||
|
||||
$id = (int)$_GET['id'];
|
||||
$userId = (int)$iduserlogin;
|
||||
|
||||
/***********************
|
||||
* DB
|
||||
***********************/
|
||||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||||
if ($conn->connect_error) {
|
||||
die("Connessione fallita: " . $conn->connect_error);
|
||||
}
|
||||
|
||||
/***********************
|
||||
* 1) USER INFO (auth_users)
|
||||
***********************/
|
||||
$stmt = $conn->prepare("SELECT email, first_name, last_name FROM auth_users WHERE id = ? LIMIT 1");
|
||||
$stmt->bind_param("i", $userId);
|
||||
$stmt->execute();
|
||||
$res = $stmt->get_result();
|
||||
$u = $res->fetch_assoc();
|
||||
$stmt->close();
|
||||
|
||||
$userEmail = $u['email'] ?? '';
|
||||
$userName = trim(($u['first_name'] ?? '') . ' ' . ($u['last_name'] ?? ''));
|
||||
|
||||
/***********************
|
||||
* 2) BOOKING INFO (nome classe + data) + ownership check
|
||||
***********************/
|
||||
$stmt = $conn->prepare("
|
||||
SELECT
|
||||
bc.idbookingclass,
|
||||
s.servicename,
|
||||
ss.dateschedule
|
||||
FROM bookingclass bc
|
||||
LEFT JOIN service s ON bc.idservice = s.idservice
|
||||
LEFT JOIN serviceschedule ss ON bc.idserviceschedule = ss.idserviceschedule
|
||||
WHERE bc.idbookingclass = ? AND bc.iduser = ?
|
||||
LIMIT 1
|
||||
");
|
||||
$stmt->bind_param("ii", $id, $userId);
|
||||
$stmt->execute();
|
||||
$res = $stmt->get_result();
|
||||
$bk = $res->fetch_assoc();
|
||||
$stmt->close();
|
||||
|
||||
if (!$bk) {
|
||||
$conn->close();
|
||||
header("Location: userpanel.php?deleted=0&err=notfound");
|
||||
exit();
|
||||
}
|
||||
|
||||
$className = $bk['servicename'] ?? 'Lezione';
|
||||
$classDateRaw = $bk['dateschedule'] ?? null;
|
||||
|
||||
$classDateTxt = $classDateRaw ? date("d-m-Y H:i", strtotime($classDateRaw)) : 'N/D';
|
||||
$cancelDateTxt = date("d-m-Y H:i");
|
||||
|
||||
/***********************
|
||||
* 3) DELETE (safe)
|
||||
***********************/
|
||||
$stmt = $conn->prepare("DELETE FROM bookingclass WHERE idbookingclass = ? AND iduser = ?");
|
||||
$stmt->bind_param("ii", $id, $userId);
|
||||
|
||||
if (!$stmt->execute()) {
|
||||
$err = $stmt->error;
|
||||
$stmt->close();
|
||||
$conn->close();
|
||||
die("Errore durante la cancellazione del record: " . htmlspecialchars($err));
|
||||
}
|
||||
|
||||
$stmt->close();
|
||||
$conn->close();
|
||||
|
||||
/***********************
|
||||
* 4) EMAIL (TO utente + CC info@yogasoul.it)
|
||||
* Usa le chiavi del tuo .env: MAIL_HOST, MAIL_PORT, MAIL_USERNAME, ...
|
||||
***********************/
|
||||
try {
|
||||
// Carica vendor/autoload + dotenv (il tuo file esistente)
|
||||
require_once(__DIR__ . '/class/mailer.php');
|
||||
|
||||
$mail = new \PHPMailer\PHPMailer\PHPMailer(true);
|
||||
|
||||
// Legge le variabili in stile Laravel (con trim per eventuali virgolette)
|
||||
$host = trim($_ENV['MAIL_HOST'] ?? 'mail.yogasoul.it', "\" \t\n\r\0\x0B");
|
||||
$port = (int)($_ENV['MAIL_PORT'] ?? 465);
|
||||
$user = $_ENV['MAIL_USERNAME'] ?? '';
|
||||
$pass = $_ENV['MAIL_PASSWORD'] ?? '';
|
||||
$enc = strtolower(trim($_ENV['MAIL_ENCRYPTION'] ?? 'ssl', "\" \t\n\r\0\x0B"));
|
||||
|
||||
$fromEmail = trim($_ENV['MAIL_FROM_ADDRESS'] ?? 'info@yogasoul.it', "\" \t\n\r\0\x0B");
|
||||
$fromName = trim($_ENV['MAIL_FROM_NAME'] ?? 'YogiBook', "\" \t\n\r\0\x0B");
|
||||
|
||||
// Config SMTP
|
||||
$mail->isSMTP();
|
||||
$mail->Host = $host;
|
||||
$mail->SMTPAuth = true;
|
||||
$mail->Username = $user;
|
||||
$mail->Password = $pass;
|
||||
$mail->Port = $port;
|
||||
|
||||
if (in_array($enc, ['tls', 'ssl'], true)) {
|
||||
$mail->SMTPSecure = $enc;
|
||||
}
|
||||
|
||||
// Timeout (utile su SMTP hosting)
|
||||
$mail->Timeout = 20;
|
||||
|
||||
$mail->setFrom($fromEmail, $fromName);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(true);
|
||||
|
||||
// Destinatari
|
||||
if (!empty($userEmail)) {
|
||||
$mail->addAddress($userEmail, $userName ?: '');
|
||||
}
|
||||
$mail->addCC('info@yogasoul.it');
|
||||
|
||||
// Log impostazioni usate (senza password)
|
||||
mail_log($mailLogFile, "SMTP in uso host={$host} porta={$port} enc={$enc} user={$user}");
|
||||
|
||||
// Contenuto (ITALIANO)
|
||||
$mail->Subject = "Lezione cancellata - {$className}";
|
||||
$mail->Body = "
|
||||
<div style='font-family:Arial,sans-serif;font-size:14px;color:#222'>
|
||||
<p>Ciao " . htmlspecialchars($userName ?: 'Yogi') . ",</p>
|
||||
<p>La tua lezione è stata <b>cancellata</b>.</p>
|
||||
<p>
|
||||
<b>Lezione:</b> " . htmlspecialchars($className) . "<br>
|
||||
<b>Data/ora prevista:</b> " . htmlspecialchars($classDateTxt) . "<br>
|
||||
<b>Data/ora cancellazione:</b> " . htmlspecialchars($cancelDateTxt) . "<br>
|
||||
<b>ID prenotazione:</b> #{$id}
|
||||
</p>
|
||||
<p>Grazie,<br>— " . htmlspecialchars($fromName) . "</p>
|
||||
</div>
|
||||
";
|
||||
|
||||
$mail->send();
|
||||
|
||||
mail_log($mailLogFile, "OK inviata. booking_id={$id} user_id={$userId} to={$userEmail} lezione='" . $className . "' prevista='{$classDateTxt}' cancellata='{$cancelDateTxt}'");
|
||||
} catch (Throwable $e) {
|
||||
mail_log($mailLogFile, "ERRORE invio. booking_id={$id} user_id={$userId} to={$userEmail} :: " . $e->getMessage());
|
||||
error_log("Mailer error (delete booking #{$id}, user #{$userId}): " . $e->getMessage());
|
||||
}
|
||||
|
||||
// Redirect
|
||||
header("Location: userpanel.php?deleted=1");
|
||||
exit();
|
||||
66
public/get_available_classes.php
Normal file
66
public/get_available_classes.php
Normal file
@ -0,0 +1,66 @@
|
||||
<?php
|
||||
ob_start();
|
||||
require_once('include/headscript.php');
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
|
||||
$conn = new mysqli($servername, $username, $password, $dbname);
|
||||
if ($conn->connect_error) {
|
||||
ob_end_clean();
|
||||
echo json_encode(['error' => 'Connessione al database fallita: ' . $conn->connect_error]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$query = "SELECT
|
||||
ss.idserviceschedule,
|
||||
s.servicename,
|
||||
COALESCE(s.maxcapacity, 0) AS maxcapacity,
|
||||
DATE_FORMAT(ss.dateschedule, '%d %M %Y %H:%i') AS display_dateschedule,
|
||||
DATE_FORMAT(ss.dateschedule, '%Y-%m-%d %H:%i') AS iso_dateschedule,
|
||||
(SELECT COUNT(*)
|
||||
FROM bookingclass bc
|
||||
WHERE bc.idserviceschedule = ss.idserviceschedule
|
||||
AND bc.status != 'cancelled') AS occupied_seats
|
||||
FROM serviceschedule ss
|
||||
LEFT JOIN service s ON ss.idservice = s.idservice
|
||||
ORDER BY ss.dateschedule ASC";
|
||||
|
||||
$result = $conn->query($query);
|
||||
|
||||
$classes = [];
|
||||
if ($result) {
|
||||
$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'
|
||||
];
|
||||
|
||||
while ($row = $result->fetch_assoc()) {
|
||||
// Traduci il mese in italiano
|
||||
foreach ($italianMonths as $en => $it) {
|
||||
$row['display_dateschedule'] = str_replace($en, $it, $row['display_dateschedule']);
|
||||
}
|
||||
|
||||
// Assicura che maxcapacity sia positivo
|
||||
if ($row['maxcapacity'] <= 0) {
|
||||
$row['maxcapacity'] = 1; // Valore positivo di fallback, cambialo se necessario
|
||||
}
|
||||
|
||||
$classes[] = $row;
|
||||
}
|
||||
ob_end_clean();
|
||||
echo json_encode(['classes' => $classes]);
|
||||
} else {
|
||||
ob_end_clean();
|
||||
echo json_encode(['error' => 'Errore nella query: ' . $conn->error]);
|
||||
}
|
||||
|
||||
$conn->close();
|
||||
2
public/logs/mail_cancel.log
Normal file
2
public/logs/mail_cancel.log
Normal file
@ -0,0 +1,2 @@
|
||||
[2026-02-18 13:43:57] ERROR sending. booking_id=29 user_id=2 to=info@claudiosironi.com :: SMTP Error: Could not connect to SMTP host. Failed to connect to server
|
||||
[2026-02-18 13:46:10] ERROR sending. booking_id=30 user_id=2 to=info@claudiosironi.com :: SMTP Error: Could not connect to SMTP host. Failed to connect to server
|
||||
@ -38,9 +38,9 @@ if ($conn->connect_error) {
|
||||
|
||||
$logMessage .= "Database connesso: $dbname\n";
|
||||
|
||||
// Query per selezionare i dati filtrati per iduser
|
||||
// Query per selezionare i dati filtrati per iduser, inclusi maxreschedule e reprogrammed
|
||||
$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
|
||||
$query = "SELECT o.idorderbook, o.order_id, o.idservice, o.order_date_created, o.quantityclass, o.first_lesson_date, o.expireon, o.maxreschedule, o.reprogrammed, s.servicename, s.day, s.time
|
||||
FROM orderbook o
|
||||
LEFT JOIN service s ON o.idservice = s.idservice
|
||||
WHERE o.iduser = ?";
|
||||
@ -55,7 +55,7 @@ while ($row = $result->fetch_assoc()) {
|
||||
$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
|
||||
$lesson_query = "SELECT bc.idbookingclass, bc.bookingstart, bc.status, bc.lostlesson, bc.expirylesson, bc.idservice, bc.is_reprogrammed, s.servicename
|
||||
FROM bookingclass bc
|
||||
LEFT JOIN service s ON bc.idservice = s.idservice
|
||||
WHERE bc.idorder = ?";
|
||||
@ -195,6 +195,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
<th>Data e Ora</th>
|
||||
<th>Lezione</th>
|
||||
<th>Stato</th>
|
||||
<th>Riprogrammata</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -203,7 +204,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
if (lessons.length === 0) {
|
||||
htmlContent += `
|
||||
<tr>
|
||||
<td colspan="3" style="text-align: center; padding: 10px; color: #666; font-size: 13px;">
|
||||
<td colspan="4" style="text-align: center; padding: 10px; color: #666; font-size: 13px;">
|
||||
Nessuna lezione trovata per questo ordine.
|
||||
</td>
|
||||
</tr>
|
||||
@ -235,6 +236,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
statusText = 'Programmata';
|
||||
}
|
||||
}
|
||||
var isReprogrammedText = lesson.is_reprogrammed === 'Y' ? 'Sì' : 'No';
|
||||
|
||||
htmlContent += `
|
||||
<tr class="${index % 2 === 0 ? 'even-row' : 'odd-row'}">
|
||||
@ -249,6 +251,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
<td style="padding: 8px;">
|
||||
<span class="badge ${badgeClass}" style="color: ${badgeTextColor}; padding: 6px 10px; font-size: 12px; font-weight: 500;">${statusText}</span>
|
||||
</td>
|
||||
<td style="padding: 8px; font-size: 13px;">${isReprogrammedText}</td>
|
||||
</tr>
|
||||
`;
|
||||
});
|
||||
@ -336,9 +339,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
<h5 style="margin: 0; color: #4c2c92; font-size: 14px;">Da Programmare</h5>
|
||||
<p style="font-size: 24px; font-weight: bold; margin: 5px 0; color: #4c2c92;">${toSchedule}</p>
|
||||
</div>
|
||||
</div> <p style="margin: 0 0 15px 0; color: #333; font-size: 14px; font-weight: 500;">
|
||||
Il tuo ordine scadrà il ${expireOnFormatted}
|
||||
</p>
|
||||
</div>
|
||||
<div style="background-color: #f8f9fa; padding: 15px; border-radius: 8px;">
|
||||
<table class="lesson-table">
|
||||
<thead>
|
||||
@ -346,6 +347,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
<th>Data e Ora</th>
|
||||
<th>Lezione</th>
|
||||
<th>Stato</th>
|
||||
<th>Riprogrammata</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@ -354,7 +356,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
if (lessons.length === 0) {
|
||||
htmlContent += `
|
||||
<tr>
|
||||
<td colspan="3" style="text-align: center; padding: 10px; color: #666; font-size: 13px;">
|
||||
<td colspan="4" style="text-align: center; padding: 10px; color: #666; font-size: 13px;">
|
||||
Nessuna lezione trovata per questo ordine.
|
||||
</td>
|
||||
</tr>
|
||||
@ -386,6 +388,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
statusText = 'Programmata';
|
||||
}
|
||||
}
|
||||
var isReprogrammedText = lesson.is_reprogrammed === 'Y' ? 'Sì' : 'No';
|
||||
|
||||
htmlContent += `
|
||||
<tr class="${index % 2 === 0 ? 'even-row' : 'odd-row'}">
|
||||
@ -400,6 +403,7 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
<td style="padding: 8px;">
|
||||
<span class="badge ${badgeClass}" style="color: ${badgeTextColor}; padding: 6px 10px; font-size: 12px; font-weight: 500;">${statusText}</span>
|
||||
</td>
|
||||
<td style="padding: 8px; font-size: 13px;">${isReprogrammedText}</td>
|
||||
</tr>
|
||||
`;
|
||||
});
|
||||
@ -676,6 +680,8 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
<th>N. Ticket</th>
|
||||
<th>Prima Lezione</th>
|
||||
<th>Scadenza</th>
|
||||
<th>Riprogr. Massime</th>
|
||||
<th>Riprogrammate</th>
|
||||
<th>Stato</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@ -696,7 +702,19 @@ file_put_contents($logFile, $logMessage, FILE_APPEND);
|
||||
<td><?php echo $document['day'] . ' ' . $document['time']; ?></td>
|
||||
<td><?php echo $document['quantityclass']; ?></td>
|
||||
<td><?php echo $document['first_lesson_date'] ? date('d-m-Y', strtotime($document['first_lesson_date'])) : '-'; ?></td>
|
||||
<td><?php echo date('d-m-Y', strtotime($document['expireon'])); ?></td>
|
||||
<td style="<?php echo $is_expired ? 'color: #dc3545;' : ''; ?>">
|
||||
<?php echo date('d-m-Y', strtotime($document['expireon'])); ?>
|
||||
</td>
|
||||
<td>
|
||||
<span style="display: inline-block; padding: 4px 8px; font-size: 11px; font-weight: 500; color: #fff; background-color: #17a2b8; border-radius: 4px;">
|
||||
<?php echo $document['maxreschedule']; ?>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<span style="display: inline-block; padding: 4px 8px; font-size: 11px; font-weight: 500; color: #fff; background-color: <?php echo ($document['reprogrammed'] >= $document['maxreschedule']) ? '#dc3545' : '#28a745'; ?>; border-radius: 4px;">
|
||||
<?php echo $document['reprogrammed']; ?>
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="badge <?php echo $is_expired ? 'bg-danger' : 'bg-primary'; ?>">
|
||||
<?php echo $is_expired ? 'Scaduto' : 'Attivo'; ?>
|
||||
|
||||
1
public/phpinfo.php
Normal file
1
public/phpinfo.php
Normal file
@ -0,0 +1 @@
|
||||
<?php phpinfo();
|
||||
@ -5,3 +5,15 @@ Email inviata a info@claudiosironi.com per lezione ID 8 (09-10-2025 18:15)
|
||||
Esecuzione cron: 2025-10-13 14:29:12
|
||||
Generati 0 token UUID per prenotazioni senza token.
|
||||
Email inviata a info@claudiosironi.com per lezione ID 4 (14-10-2025 18:15)
|
||||
Esecuzione cron: 2025-11-26 16:39:15
|
||||
Generati 7 token UUID per prenotazioni senza token.
|
||||
Nessuna prenotazione trovata per domani (dalle 17:00) o dopodomani (fino alle 16:59).
|
||||
Esecuzione cron: 2025-11-26 16:44:22
|
||||
Generati 0 token UUID per prenotazioni senza token.
|
||||
Nessuna prenotazione trovata per domani (dalle 17:00) o dopodomani (fino alle 16:59).
|
||||
Esecuzione cron: 2025-11-26 16:44:25
|
||||
Generati 0 token UUID per prenotazioni senza token.
|
||||
Nessuna prenotazione trovata per domani (dalle 17:00) o dopodomani (fino alle 16:59).
|
||||
Esecuzione cron: 2025-11-26 16:44:28
|
||||
Generati 0 token UUID per prenotazioni senza token.
|
||||
Nessuna prenotazione trovata per domani (dalle 17:00) o dopodomani (fino alle 16:59).
|
||||
|
||||
BIN
public/user/document/1761053120_IMG_6134.jpeg
Normal file
BIN
public/user/document/1761053120_IMG_6134.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 MiB |
BIN
public/user/document/1761053626_IMG_6134.jpeg
Normal file
BIN
public/user/document/1761053626_IMG_6134.jpeg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.7 MiB |
@ -30,11 +30,15 @@ if ($currentDate > $currentMonthStart) {
|
||||
}
|
||||
|
||||
$currentMonthEnd = date("Y-m-t", strtotime($currentMonthStart));
|
||||
$bookedclass->setQuery("SELECT * FROM bookingclass
|
||||
$bookedclass->setQuery("SELECT bookingclass.*, service.*, serviceschedule.*, orderbook.expireon
|
||||
FROM bookingclass
|
||||
LEFT JOIN service ON bookingclass.idservice = service.idservice
|
||||
LEFT JOIN serviceschedule ON bookingclass.idserviceschedule = serviceschedule.idserviceschedule
|
||||
LEFT JOIN orderbook ON bookingclass.idorder = orderbook.idorderbook
|
||||
WHERE bookingclass.iduser = '$iduserlogin' AND bookingclass.status = 'booked'
|
||||
AND serviceschedule.dateschedule BETWEEN '$currentMonthStart' AND DATE_ADD('$currentMonthEnd', INTERVAL 1 DAY) ORDER BY serviceschedule.dateschedule");
|
||||
AND serviceschedule.dateschedule BETWEEN '$currentMonthStart' AND DATE_ADD('$currentMonthEnd', INTERVAL 1 DAY)
|
||||
ORDER BY serviceschedule.dateschedule");
|
||||
|
||||
$bookedclass->execute();
|
||||
?>
|
||||
|
||||
@ -310,6 +314,29 @@ $conn->close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function confirmDeleteOnly(idbookingclass, expirydate) {
|
||||
Swal.fire({
|
||||
title: "Attenzione",
|
||||
html: `
|
||||
<strong>Confermi di voler cancellare questa lezione?</strong><br><br>
|
||||
<strong>RICORDA:</strong> dovrai riprogrammarla entro la scadenza del tuo abbonamento per non perderla!<br><br>
|
||||
<span style="font-size:20px;color:#d33;font-weight:bold;">
|
||||
Scadenza: ${expirydate}
|
||||
</span>
|
||||
`,
|
||||
icon: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonText: "Procedi",
|
||||
cancelButtonText: "Annulla",
|
||||
confirmButtonColor: "#d33",
|
||||
cancelButtonColor: "#3085d6"
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
window.location.href = "delete_lesson.php?id=" + idbookingclass;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<body>
|
||||
@ -422,6 +449,14 @@ $conn->close();
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if (isset($_GET['deleted'])) { ?>
|
||||
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
||||
<i class="mdi mdi-check-all me-2"></i>
|
||||
Lezione cancellata con successo! Grazie per aver liberato il posto!
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
@ -561,11 +596,17 @@ $conn->close();
|
||||
</button>
|
||||
<?php $idbookingclass = $bookedclass->getColumnVal("idbookingclass"); ?>
|
||||
<?php $idservice = $bookedclass->getColumnVal("idservice"); ?>
|
||||
<?php $expirydate = date("d/m/Y", strtotime($bookedclass->getColumnVal("expireon"))); ?>
|
||||
<?php if ($canBeDeleted && $canReprogram) : ?>
|
||||
<button class="custom-action-button" onclick="confirmDelete(<?php echo $idbookingclass; ?>, <?php echo $idservice; ?>, 'bookingpanel.php')">
|
||||
<i class="fas fa-calendar-alt"></i> Riprogramma
|
||||
</button>
|
||||
<button class="custom-action-button"
|
||||
onclick="confirmDeleteOnly(<?php echo $idbookingclass; ?>, '<?php echo $expirydate; ?>')">
|
||||
<i class="fas fa-trash"></i> Cancella
|
||||
</button>
|
||||
<?php else : ?>
|
||||
|
||||
<button class="custom-action-button"> <i class="fas fa-exclamation-circle"></i> Non puoi riprogrammare</button>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
@ -438,7 +438,7 @@ $conn->close();
|
||||
<input type="text" class="form-control" name="documentDescription" value="Certificato Medico" required><br>
|
||||
<label for="expiryDate">Data di Scadenza:</label>
|
||||
<input type="text" id="expiryDate" class="form-control" name="expiryDate" required><br>
|
||||
<label for="fileToUpload">Seleziona un File:</label>
|
||||
<label for="fileToUpload">Seleziona un File: (peso massimo 16 MB)</label>
|
||||
<input type="file" class="form-control" name="fileToUpload" required><br>
|
||||
I documenti caricati sono solo a fini di sicurezza e cliccando su carica documento accetti il nostro regolamento privacy <br><br>
|
||||
<input type="submit" class="btn btn-primary w-md" value="Carica Documento" name="submit">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user