@@ -691,6 +692,31 @@ $italianMonths = [
}
$(document).ready(function() {
+ // Scroll automatico alla classe di oggi o alla prima futura
+ (function scrollToToday() {
+ var cards = document.querySelectorAll('.class-card[data-date]');
+ if (!cards.length) return;
+ var today = new Date();
+ today.setHours(0, 0, 0, 0);
+ var target = null;
+ for (var i = 0; i < cards.length; i++) {
+ var d = new Date(cards[i].getAttribute('data-date') + 'T00:00:00');
+ if (d >= today) {
+ target = cards[i];
+ break;
+ }
+ target = cards[i]; // se tutte passate, resta sull'ultima
+ }
+ if (target) {
+ setTimeout(function() {
+ target.scrollIntoView({
+ behavior: 'smooth',
+ block: 'start'
+ });
+ }, 200);
+ }
+ })();
+
$(document).on('click', '.mini-btn.lost', function() {
var id = $(this).data('idbookingclass');
Swal.fire({
@@ -708,7 +734,7 @@ $italianMonths = [
}
});
});
- $(document).on('click', '.mini-btn.restore', function() {
+ $(document).on('click', '.mini-btn.restore:not(.confirm-pending)', function() {
var id = $(this).data('idbookingclass');
Swal.fire({
title: 'Ripristinare questa lezione?',
@@ -725,6 +751,25 @@ $italianMonths = [
}
});
});
+
+ $(document).on('click', '.confirm-pending', function() {
+ var id = $(this).data('idbookingclass');
+ Swal.fire({
+ title: 'Confermare la prenotazione?',
+ text: 'La lezione passerà da "in attesa" a confermata.',
+ icon: 'question',
+ showCancelButton: true,
+ confirmButtonText: 'Sì, conferma',
+ cancelButtonText: 'Annulla'
+ })
+ .then((r) => {
+ if (r.isConfirmed) {
+ $.post('conferma_pending.php', {
+ idbookingclass: id
+ }).done(() => window.location.href = 'adminpanel.php?success=5').fail(() => Swal.fire('Errore durante la conferma', '', 'error'));
+ }
+ });
+ });
$(document).on('click', '.mini-btn.reprogram', function() {
var idbookingclass = $(this).data('idbookingclass');
$.ajax({
diff --git a/public/conferma_pending.php b/public/conferma_pending.php
new file mode 100644
index 0000000..95cc29e
--- /dev/null
+++ b/public/conferma_pending.php
@@ -0,0 +1,38 @@
+ booked.
+ */
+$pdo = DBHandlerSelect::getInstance()->getConnection();
+
+function jsonOut(array $payload): void
+{
+ if (ob_get_length() !== false) {
+ ob_end_clean();
+ }
+ header('Content-Type: application/json; charset=utf-8');
+ echo json_encode($payload, JSON_UNESCAPED_UNICODE);
+ exit;
+}
+
+$idbookingclass = isset($_POST['idbookingclass']) ? (int) $_POST['idbookingclass'] : 0;
+
+if ($idbookingclass <= 0) {
+ jsonOut(['success' => false, 'error' => 'ID prenotazione non valido.']);
+}
+
+try {
+ // Conferma solo se effettivamente in pending (evita conferme accidentali)
+ $stmt = $pdo->prepare(
+ "UPDATE bookingclass SET status = 'booked'
+ WHERE idbookingclass = :id AND status = 'pending'"
+ );
+ $stmt->execute([':id' => $idbookingclass]);
+ jsonOut(['success' => true]);
+} catch (Throwable $ex) {
+ error_log('conferma_pending error: ' . $ex->getMessage());
+ jsonOut(['success' => false, 'error' => 'Errore durante la conferma.']);
+}