branch waiting list with update
This commit is contained in:
@@ -75,6 +75,40 @@ $stmtPending->execute([
|
||||
]);
|
||||
$pendingRows = $stmtPending->fetchAll();
|
||||
|
||||
// Lezioni in lista d'attesa (waiting) dell'utente, nel mese visualizzato
|
||||
$sqlWaiting = "SELECT bookingclass.*, service.servicename, service.colorclass, service.maxcapacity, serviceschedule.dateschedule
|
||||
FROM bookingclass
|
||||
LEFT JOIN service ON bookingclass.idservice = service.idservice
|
||||
LEFT JOIN serviceschedule ON bookingclass.idserviceschedule = serviceschedule.idserviceschedule
|
||||
WHERE bookingclass.iduser = :iduser
|
||||
AND bookingclass.status = 'waiting'
|
||||
AND serviceschedule.dateschedule BETWEEN :monthStart AND DATE_ADD(:monthEnd, INTERVAL 1 DAY)
|
||||
ORDER BY serviceschedule.dateschedule";
|
||||
$stmtWaiting = $pdo->prepare($sqlWaiting);
|
||||
$stmtWaiting->execute([
|
||||
':iduser' => $iduserlogin,
|
||||
':monthStart' => $currentMonthStart,
|
||||
':monthEnd' => $currentMonthEnd,
|
||||
]);
|
||||
$waitingRows = $stmtWaiting->fetchAll();
|
||||
|
||||
// Posizione in coda per ciascuna lezione waiting (1-based, ordine per created_at)
|
||||
$waitingPositions = [];
|
||||
foreach ($waitingRows as $wrow) {
|
||||
$sqlPos = "SELECT COUNT(*) AS pos
|
||||
FROM bookingclass
|
||||
WHERE idserviceschedule = :sched
|
||||
AND status = 'waiting'
|
||||
AND created_at <= :mycreated";
|
||||
$stmtPos = $pdo->prepare($sqlPos);
|
||||
$stmtPos->execute([
|
||||
':sched' => (int) $wrow['idserviceschedule'],
|
||||
':mycreated' => $wrow['created_at'],
|
||||
]);
|
||||
$rowPos = $stmtPos->fetch();
|
||||
$waitingPositions[(int) $wrow['idbookingclass']] = (int) ($rowPos['pos'] ?? 0);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------
|
||||
* 3) Somma dei ticket acquistati dall'utente
|
||||
* ---------------------------------------------------------------------- */
|
||||
@@ -541,6 +575,27 @@ $italianMonths = [
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if (isset($_GET['waiting'])) { ?>
|
||||
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
||||
<i class="fas fa-hourglass-half me-2"></i>
|
||||
La classe era piena: sei stata/o inserita/o in <strong>lista d'attesa</strong>. Se si libera un posto verrai avvisata/o.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if (isset($_GET['leftwaiting'])) { ?>
|
||||
<div class="alert alert-info alert-dismissible fade show" role="alert">
|
||||
<i class="fas fa-check me-2"></i>
|
||||
Sei uscita/o dalla lista d'attesa.
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
<?php } ?>
|
||||
<?php if (isset($_GET['full'])) { ?>
|
||||
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
||||
<i class="fas fa-ban me-2"></i>
|
||||
La classe è al completo e la lista d'attesa non è attiva. Prova con un altro orario.
|
||||
<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>
|
||||
@@ -636,6 +691,58 @@ $italianMonths = [
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if (!empty($waitingRows)) : ?>
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 style="color:#8a6d00;margin-bottom:14px;">
|
||||
<i class="fas fa-hourglass-half me-1"></i> In lista d'attesa
|
||||
</h5>
|
||||
<?php foreach ($waitingRows as $wrow) :
|
||||
$wDateObj = new DateTime($wrow['dateschedule']);
|
||||
$wDay = $wDateObj->format("d");
|
||||
$wMonth = $italianMonths[$wDateObj->format("F")];
|
||||
$wWhen = $wDateObj->format("d-m-Y H:i");
|
||||
$wColor = $wrow['colorclass'] ?? '#1ebf73';
|
||||
$wName = $wrow['servicename'] ?? '';
|
||||
$wPos = $waitingPositions[(int) $wrow['idbookingclass']] ?? 0;
|
||||
?>
|
||||
<div class="custom-card pending-card">
|
||||
<div class="custom-date-box" style="background:#9C9C9C;">
|
||||
<div class="custom-day"><?php echo e($wDay); ?></div>
|
||||
<div class="custom-month"><?php echo e($wMonth); ?></div>
|
||||
</div>
|
||||
<div class="custom-event-details" style="border-left-color:<?php echo e($wColor); ?>">
|
||||
<h2 class="custom-heading">
|
||||
<?php echo e($wName); ?>
|
||||
<span style="display:inline-block;background:#eee;color:#555;font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;margin-left:6px;vertical-align:middle;">In coda</span>
|
||||
</h2>
|
||||
<p class="custom-paragraph">Quando: <?php echo e($wWhen); ?></p>
|
||||
<p class="custom-paragraph">Luogo: via Valassina 62/B Seregno - Sala Contesto Yoga</p>
|
||||
<?php if ($wPos > 0) : ?>
|
||||
<p class="custom-paragraph" style="font-weight:700;color:#8a6d00;">
|
||||
<i class="fas fa-list-ol me-1"></i> La tua posizione in coda: <?php echo e($wPos); ?>
|
||||
</p>
|
||||
<?php endif; ?>
|
||||
<p class="custom-paragraph" style="font-size:13px;color:#9ca3af;">
|
||||
Se si libera un posto verrai avvisata/o. Non serve fare nulla.
|
||||
</p>
|
||||
<div style="margin-top:8px;">
|
||||
<button class="custom-action-button" style="background:#fbeef3;color:#d1698a;"
|
||||
onclick="confirmLeaveWaiting(<?php echo (int) $wrow['idbookingclass']; ?>)">
|
||||
<i class="fas fa-times-circle"></i> Esci dalla lista d'attesa
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-12">
|
||||
<div class="card">
|
||||
@@ -741,6 +848,23 @@ $italianMonths = [
|
||||
const outlookCalendarLink = `webcal://outlook.live.com/calendar/0/deeplink/compose?path=/calendar/action/compose&subject=${encodeURIComponent(eventName)}&startdt=${encodeURIComponent(eventDate)}`;
|
||||
window.open(outlookCalendarLink, '_blank');
|
||||
}
|
||||
|
||||
function confirmLeaveWaiting(id) {
|
||||
Swal.fire({
|
||||
title: "Uscire dalla lista d'attesa?",
|
||||
text: "Verrai rimossa/o dalla coda per questa lezione.",
|
||||
icon: "warning",
|
||||
showCancelButton: true,
|
||||
confirmButtonColor: "#d1698a",
|
||||
cancelButtonColor: "#3085d6",
|
||||
confirmButtonText: "Sì, esci",
|
||||
cancelButtonText: "Annulla"
|
||||
}).then((result) => {
|
||||
if (result.isConfirmed) {
|
||||
window.location.href = "leavewaiting.php?id=" + id;
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script src="assets/libs/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user