conferma pending
This commit is contained in:
+47
-2
@@ -472,6 +472,7 @@ $italianMonths = [
|
||||
'2' => ['success', 'Lezione ripristinata con successo.'],
|
||||
'3' => ['success', 'Lezione riprogrammata con successo.'],
|
||||
'4' => ['success', 'Classe eliminata con successo.'],
|
||||
'5' => ['success', 'Prenotazione confermata con successo.'],
|
||||
];
|
||||
$m = $msgMap[$_GET['success']] ?? null;
|
||||
if ($m) : ?>
|
||||
@@ -518,7 +519,7 @@ $italianMonths = [
|
||||
$isFull = $maxcap > 0 && $countPersons >= $maxcap;
|
||||
$colorclass = $sch['colorclass'] ?: '#e6f3ff';
|
||||
?>
|
||||
<div class="class-card">
|
||||
<div class="class-card" data-date="<?php echo e($dateObj->format('Y-m-d')); ?>">
|
||||
<div class="class-date">
|
||||
<div class="day"><?php echo e($dayNum); ?></div>
|
||||
<div class="month"><?php echo e($monthIt); ?></div>
|
||||
@@ -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({
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
// Buffer per scartare eventuale HTML degli include: risposta JSON pulita
|
||||
ob_start();
|
||||
require_once('include/headscript.php');
|
||||
|
||||
/**
|
||||
* Conferma una prenotazione in attesa: pending -> 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.']);
|
||||
}
|
||||
Reference in New Issue
Block a user