Formulaire mission complet : sélection sauveteur/statut, durée indéterminée, préparation
- Ajout get_statuts() et get_sauveteurs() pour les select du formulaire - Stockage ID utilisateur en session pour lier la mission au créateur - Durée indéterminée -> date_fin = 2099-12-31 - Checkbox "En préparation" - Renommage Opérations -> Missions (header + sub-nav) - Sub-nav harmonisée entre nouvelle mission et ajout sauveteur
This commit is contained in:
parent
70d457dd0b
commit
65abef740d
7 changed files with 101 additions and 27 deletions
|
|
@ -32,6 +32,7 @@ function verify_login_ctrl(?string $route)
|
||||||
|
|
||||||
if ($user && password_verify($passwd, $user['passwd'])) {
|
if ($user && password_verify($passwd, $user['passwd'])) {
|
||||||
session_regenerate_id(true);
|
session_regenerate_id(true);
|
||||||
|
$_SESSION['id'] = $user['ID'];
|
||||||
$_SESSION['login'] = $user['login'];
|
$_SESSION['login'] = $user['login'];
|
||||||
$_SESSION['role'] = $user['type'];
|
$_SESSION['role'] = $user['type'];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,24 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
function operations_form_ctrl() {
|
function operations_form_ctrl()
|
||||||
|
{
|
||||||
require_once('controllers/auth_utilities.php');
|
require_once('controllers/auth_utilities.php');
|
||||||
if (!has_any_role(['gestionnaire', 'administration'])) {
|
if (!has_any_role(['gestionnaire', 'administration'])) {
|
||||||
header('Location: index.php?route=auth&ask=operations');
|
header('Location: index.php?route=auth&ask=operations');
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
require('models/connection.php');
|
||||||
|
require('models/lecture_page_model.php');
|
||||||
|
$pdo = connection();
|
||||||
|
$sauveteurs = get_sauveteurs($pdo);
|
||||||
|
$statuts = get_statuts($pdo);
|
||||||
|
|
||||||
require('views/operations_view.php');
|
require('views/operations_view.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
function add_operation_write_ctrl() {
|
function add_operation_write_ctrl()
|
||||||
|
{
|
||||||
require_once('controllers/auth_utilities.php');
|
require_once('controllers/auth_utilities.php');
|
||||||
if (!has_any_role(['gestionnaire', 'administration'])) {
|
if (!has_any_role(['gestionnaire', 'administration'])) {
|
||||||
header('Location: index.php?route=auth&ask=operations');
|
header('Location: index.php?route=auth&ask=operations');
|
||||||
|
|
@ -20,29 +29,42 @@ function add_operation_write_ctrl() {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$date_debut = $_POST['date_debut'];
|
$id_sauveteur = (int) $_POST['id_sauveteur'];
|
||||||
$date_fin = $_POST['date_fin'];
|
$id_statut = (int) $_POST['id_statut'];
|
||||||
$lieu = $_POST['lieu'];
|
$lieu = $_POST['lieu'];
|
||||||
|
$date_debut = str_replace('T', ' ', $_POST['date_debut']) . ':00';
|
||||||
|
$en_prepa = isset($_POST['en_prepa']) ? 1 : 0;
|
||||||
|
$indeterminee = isset($_POST['duree_indeterminee']);
|
||||||
|
|
||||||
$date_debut = str_replace('T', ' ', $date_debut) . ':00';
|
// Durée indéterminée → date très lointaine
|
||||||
$date_fin = str_replace('T', ' ', $date_fin) . ':00';
|
if ($indeterminee || empty($_POST['date_fin'])) {
|
||||||
|
$date_fin = '2099-12-31 23:59:00';
|
||||||
|
} else {
|
||||||
|
$date_fin = str_replace('T', ' ', $_POST['date_fin']) . ':00';
|
||||||
|
}
|
||||||
|
|
||||||
// Valeurs par défaut pour les clés étrangères (à adapter quand l'auth sera active)
|
// Utilisateur connecté
|
||||||
$en_prepa = 0;
|
$id_utilisateur = isset($_SESSION['id']) ? (int) $_SESSION['id'] : 1;
|
||||||
$id_sauveteur = 1;
|
|
||||||
$id_statut = 1;
|
|
||||||
$id_utilisateur = 1;
|
|
||||||
|
|
||||||
require('models/connection.php');
|
require('models/connection.php');
|
||||||
$c = connection();
|
$c = connection();
|
||||||
require('models/operation_crud.php');
|
require('models/operation_crud.php');
|
||||||
|
|
||||||
$resultat = create_operation_crud($c, $date_debut, $date_fin, $lieu, $en_prepa, $id_sauveteur, $id_statut, $id_utilisateur);
|
$resultat = create_operation_crud(
|
||||||
|
$c,
|
||||||
|
$date_debut,
|
||||||
|
$date_fin,
|
||||||
|
$lieu,
|
||||||
|
$en_prepa,
|
||||||
|
$id_sauveteur,
|
||||||
|
$id_statut,
|
||||||
|
$id_utilisateur
|
||||||
|
);
|
||||||
|
|
||||||
if ($resultat) {
|
if ($resultat) {
|
||||||
$_SESSION['notification'] = 'Opération enregistrée avec succès.';
|
$_SESSION['notification'] = 'Mission enregistrée avec succès.';
|
||||||
} else {
|
} else {
|
||||||
$_SESSION['notification'] = 'Erreur lors de l\'enregistrement.';
|
$_SESSION['notification'] = 'Erreur lors de l\'enregistrement de la mission.';
|
||||||
}
|
}
|
||||||
|
|
||||||
header('Location: index.php?route=operations');
|
header('Location: index.php?route=operations');
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
function get_statuts(PDO $pdo): array
|
||||||
|
{
|
||||||
|
$sql = "SELECT ID, TypeStatut FROM Statut ORDER BY TypeStatut";
|
||||||
|
return $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
}
|
||||||
|
|
||||||
function get_sauveteurs(PDO $pdo): array
|
function get_sauveteurs(PDO $pdo): array
|
||||||
{
|
{
|
||||||
$sql = "SELECT ID, nom, prenom, specialite
|
$sql = "SELECT ID, nom, prenom, specialite
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
function recuperation_auth(PDO $connex, string $login):?array {
|
function recuperation_auth(PDO $connex, string $login):?array {
|
||||||
require_once('config/config.php');
|
require_once('config/config.php');
|
||||||
$req = "SELECT login, passwd, type FROM Utilisateur WHERE login = :login";
|
$req = "SELECT ID, login, passwd, type FROM Utilisateur WHERE login = :login";
|
||||||
|
|
||||||
$prep = $connex->prepare($req);
|
$prep = $connex->prepare($req);
|
||||||
$prep->bindValue(':login', $login);
|
$prep->bindValue(':login', $login);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
<?php require('views/header.php'); ?>
|
<?php require('views/header.php'); ?>
|
||||||
|
|
||||||
<h2>Ajout de personnes</h2>
|
<nav class="sub-nav">
|
||||||
|
<a href="index.php?route=operations">Nouvelle mission</a>
|
||||||
|
<a href="index.php?route=ajout_personnes">Ajout sauveteur</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<h2>Ajout d'un sauveteur</h2>
|
||||||
|
|
||||||
<form action="index.php?route=ajout_personnes" method="post">
|
<form action="index.php?route=ajout_personnes" method="post">
|
||||||
<p>
|
<p>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ if (is_logged()) {
|
||||||
$nav .= '<li><a href="index.php?route=planning">Accueil</a></li>';
|
$nav .= '<li><a href="index.php?route=planning">Accueil</a></li>';
|
||||||
|
|
||||||
if (has_any_role(['gestionnaire', 'administration'])) {
|
if (has_any_role(['gestionnaire', 'administration'])) {
|
||||||
$nav .= '<li><a href="index.php?route=operations">Opérations</a></li>';
|
$nav .= '<li><a href="index.php?route=operations">Missions</a></li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (has_role('administration')) {
|
if (has_role('administration')) {
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,41 @@
|
||||||
<?php require('views/header.php'); ?>
|
<?php require('views/header.php'); ?>
|
||||||
|
|
||||||
<nav class="sub-nav">
|
<nav class="sub-nav">
|
||||||
<a href="index.php?route=operations">Opérations</a>
|
<a href="index.php?route=operations">Nouvelle mission</a>
|
||||||
<a href="index.php?route=ajout_personnes">Ajout personnes</a>
|
<a href="index.php?route=ajout_personnes">Ajout sauveteur</a>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<h2>Création d'une opération</h2>
|
<h2>Assigner une mission</h2>
|
||||||
|
|
||||||
<form action="index.php?route=add_operation" method="POST">
|
<form action="index.php?route=add_operation" method="POST">
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<label for="id_sauveteur">Sauveteur :</label>
|
||||||
|
<select name="id_sauveteur" id="id_sauveteur" required>
|
||||||
|
<option value="">-- Choisir un sauveteur --</option>
|
||||||
|
<?php foreach ($sauveteurs as $s): ?>
|
||||||
|
<option value="<?= $s['ID'] ?>">
|
||||||
|
<?= htmlentities($s['nom'] . ' ' . $s['prenom']) ?> (<?= htmlentities($s['specialite']) ?>)
|
||||||
|
</option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<label for="id_statut">Statut :</label>
|
||||||
|
<select name="id_statut" id="id_statut" required>
|
||||||
|
<option value="">-- Choisir un statut --</option>
|
||||||
|
<?php foreach ($statuts as $st): ?>
|
||||||
|
<option value="<?= $st['ID'] ?>"><?= htmlentities($st['TypeStatut']) ?></option>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<label for="lieu">Lieu :</label>
|
||||||
|
<input type="text" id="lieu" name="lieu" placeholder="Ex : Grotte de Lestélas" required>
|
||||||
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<label for="date_debut">Date / heure début :</label>
|
<label for="date_debut">Date / heure début :</label>
|
||||||
<input type="datetime-local" id="date_debut" name="date_debut" required>
|
<input type="datetime-local" id="date_debut" name="date_debut" required>
|
||||||
|
|
@ -16,18 +43,31 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<label for="date_fin">Date / heure fin :</label>
|
<label for="date_fin">Date / heure fin :</label>
|
||||||
<input type="datetime-local" id="date_fin" name="date_fin" required>
|
<input type="datetime-local" id="date_fin" name="date_fin">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<label for="lieu">Lieu :</label>
|
<label>
|
||||||
<input type="text" id="lieu" name="lieu" placeholder="Saisir le lieu" required>
|
<input type="checkbox" name="duree_indeterminee" value="1" onclick="
|
||||||
|
var fin = document.getElementById('date_fin');
|
||||||
|
if (this.checked) { fin.disabled = true; fin.value = ''; }
|
||||||
|
else { fin.disabled = false; }
|
||||||
|
">
|
||||||
|
Durée indéterminée
|
||||||
|
</label>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<input type="submit" value="Enregistrer l'opération">
|
<label>
|
||||||
|
<input type="checkbox" name="en_prepa" value="1">
|
||||||
|
En préparation
|
||||||
|
</label>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<input type="submit" value="Enregistrer la mission">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<?php require('views/footer.php'); ?>
|
<?php require('views/footer.php'); ?>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue