fixed products
This commit is contained in:
@@ -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'); ?>
|
||||
|
||||
Reference in New Issue
Block a user