fixed products

This commit is contained in:
2025-12-06 20:11:54 +01:00
parent 279bdd615e
commit 8c5b9a0d85
4 changed files with 641 additions and 290 deletions
+77 -22
View File
@@ -449,10 +449,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
} else {
// Verifica che la variazione appartenga alla scuola
$stmt = $pdo->prepare("
SELECT day_of_week, start_time, typical_duration, teacher_id
FROM class_types
WHERE id = ? AND school_id = ?
");
SELECT ct.day_of_week, ct.start_time, ct.typical_duration, ct.teacher_id, ct.class_id, ct.school_id, ct.max_capacity, ct.notes
FROM class_types ct
WHERE ct.id = ? AND ct.school_id = ?
");
$stmt->execute([$class_type_id, $school_id]);
$variation = $stmt->fetch();
if (!$variation) {
@@ -519,45 +519,89 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$end_date_dt = new DateTime($end_date);
$end_date_dt->setTime(23, 59, 59); // Include l'ultimo giorno
// Prepara la query per verificare se una sessione esiste già
$checkStmt = $pdo->prepare("
SELECT id
FROM class_sessions
WHERE class_type_id = ? AND session_date = ?
");
// Prepara la query di inserimento
$stmt = $pdo->prepare("
INSERT INTO class_sessions (class_type_id, session_date, start_time, end_time, teacher_id, status, propagation_id)
VALUES (?, ?, ?, ?, ?, 'scheduled', ?)
");
INSERT INTO class_sessions (class_id, school_id, class_type_id, session_date, start_time, end_time, teacher_id, max_capacity, notes, status, propagation_id)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'scheduled', ?)
");
$sessions_created = 0;
$sessions_skipped = 0;
while ($current_date <= $end_date_dt) {
$day_of_week = $current_date->format('l'); // Giorno della settimana in inglese (es. Monday)
$day_of_week = $current_date->format('l');
$current_date_str = $current_date->format('Y-m-d');
// Verifica se il giorno è un giorno di chiusura e se corrisponde al giorno della settimana della variazione
if (!in_array($current_date_str, $off_dates) && $day_of_week === $day_of_week_english) {
$session_date = $current_date->format('Y-m-d');
$start_time_str = $start_time->format('H:i:s');
$end_time_str = $end_time->format('H:i:s');
// Verifica se una sessione esiste già per questa variazione e data
$checkStmt->execute([$class_type_id, $session_date]);
if ($checkStmt->fetch()) {
$sessions_skipped++;
continue; // Salta se esiste già
}
try {
$stmt->execute([
$variation['class_id'],
$variation['school_id'],
$class_type_id,
$session_date,
$start_time_str,
$end_time_str,
$variation['teacher_id'],
$variation['max_capacity'],
$variation['notes'],
$propagation_id
]);
$sessions_created++;
} catch (PDOException $e) {
// Ignora errori di chiave unica (sessioni già esistenti)
if ($e->getCode() != 23000) {
$error = "Errore durante la propagazione delle sessioni: " . $e->getMessage();
break;
}
$error = "Errore durante la propagazione delle sessioni: " . $e->getMessage();
break;
}
}
$current_date->modify('+1 day');
}
if (!isset($error)) {
$success_message = "Propagate $sessions_created sessioni con successo! (Saltate $sessions_skipped sessioni già esistenti) (ID Propagazione: $propagation_id)";
echo "<script>
document.addEventListener('DOMContentLoaded', function() {
var successModalElement = document.getElementById('successPropagationModal');
var successModal = new bootstrap.Modal(successModalElement, { backdrop: true });
document.getElementById('successPropagationMessage').innerText = '$success_message';
successModal.show();
setTimeout(function() {
successModal.hide();
// Rimuove il backdrop manualmente
document.querySelector('.modal-backdrop')?.remove();
document.body.classList.remove('modal-open');
document.body.style.overflow = 'auto'; // Ripristina lo scroll
// Reindirizza dopo la chiusura del modale
window.location.href = 'school_dashboard.php';
}, 3000); // Chiude il modale dopo 3 secondi
});
</script>";
}
if (!isset($error)) {
$success_message = "Propagate $sessions_created sessioni con successo! (ID Propagazione: $propagation_id)";
echo "<script>
document.addEventListener('DOMContentLoaded', function() {
var successModal = new bootstrap.Modal(document.getElementById('successPropagationModal'), {});
document.getElementById('successPropagationMessage').innerText = '$success_message';
successModal.show();
});
</script>";
}
}
}
@@ -664,9 +708,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
}
}
// Reindirizza per evitare il doppio invio del form
header("Location: school_dashboard.php");
exit;
// Non Reindirizza per evitare il doppio invio del form
}
}
@@ -847,11 +890,6 @@ $daily_sessions = $stmt->fetchAll();
</div>
</div>
<div class="card-body">
<?php if (isset($success_message)): ?>
<div class="alert alert-success" role="alert">
<?php echo $success_message; ?>
</div>
<?php endif; ?>
<?php if (isset($error)): ?>
<div class="alert alert-danger" role="alert">
<?php echo $error; ?>
@@ -1553,6 +1591,23 @@ $daily_sessions = $stmt->fetchAll();
</div>
</div>
</div>
<!-- Modale per il messaggio di successo della propagazione -->
<div class="modal fade" id="successPropagationModal" tabindex="-1" aria-labelledby="successPropagationModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="successPropagationModalLabel">Propagazione Completata</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<p id="successPropagationMessage"></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-bs-dismiss="modal">Chiudi</button>
</div>
</div>
</div>
</div>
<div class="overlay toggle-icon"></div>
<a href="javaScript:;" class="back-to-top"><i class='bx bxs-up-arrow-alt'></i></a>
<?php include('include/footer.php'); ?>