first commit

This commit is contained in:
Emanuele Slusarz
2026-08-22 11:15:29 +02:00
commit ec30fb40b9
38 changed files with 3723 additions and 0 deletions
+20
View File
@@ -0,0 +1,20 @@
<?php
require_once __DIR__ . "/../includes/auth.php";
requireRole("personale");
require_once __DIR__ . "/../config/database.php";
$idPersonale = (int) $_SESSION["idUtente"];
$conteggi = [];
/*
* QUERY 11 - Conteggio degli ordini attivi divisi per stato di avanzamento
* Input: nessuno (l'id $idPersonale è disponibile per il contesto UI)
* Output atteso: idStatoOrdine, nomeStato, posizione, numeroOrdini
* TODO SQL: implementare manualmente la Query 11.
*/
$pageTitle = "Dashboard personale"; $basePath = "..";
require __DIR__ . "/../includes/header.php";
?>
<h1 class="h3">Dashboard personale</h1><p>Panoramica degli ordini attivi.</p>
<?php if (!$conteggi): ?><div class="alert alert-info">I conteggi saranno mostrati dopo l'implementazione della Query 11.</div><?php endif; ?>
<div class="row g-3 mb-4"><?php foreach ($conteggi as $c): ?><div class="col-sm-6 col-lg"><div class="card text-center h-100 shadow-sm"><div class="card-body"><div class="display-6"><?= e($c["numeroOrdini"]) ?></div><div><?= e($c["nomeStato"]) ?></div></div></div></div><?php endforeach; ?></div>
<a class="btn btn-primary" href="ordini.php">Apri gli ordini correnti</a>
<?php require __DIR__ . "/../includes/footer.php"; ?>
+33
View File
@@ -0,0 +1,33 @@
<?php
require_once __DIR__ . "/../includes/auth.php";
requireRole("personale");
require_once __DIR__ . "/../config/database.php";
$idPersonale = (int) $_SESSION["idUtente"];
$idOrdine = filter_input(INPUT_GET, "idOrdine", FILTER_VALIDATE_INT) ?: filter_input(INPUT_POST, "idOrdine", FILTER_VALIDATE_INT);
$idStatoOrdine = filter_input(INPUT_POST, "idStatoOrdine", FILTER_VALIDATE_INT);
$ordine = null; $righe = []; $storico = []; $statoSuccessivo = null; $messaggio = null;
/* TODO SQL DI SUPPORTO - Caricare testata, righe con caratteristiche,
* ingredienti/procedura, indirizzo, stato corrente e storico dell'ordine.
* Input: $idOrdine. Output: attributi omonimi dello schema e nomi descrittivi. */
if (postMethod()) {
/*
* QUERY 14 - Aggiornamento progressivo dello stato di un ordine
* Input: $idOrdine, $idStatoOrdine, $idPersonale
* Output: nuovo nomeStato, posizione e timestamp registrato
* Vincolo UI/DB: solo il successore dello stato corrente; mai regressioni.
* TODO SQL: implementare manualmente la Query 14.
*/
$messaggio = "Query 14 predisposta: stato non ancora aggiornato.";
}
$pageTitle = "Dettaglio ordine"; $basePath = "..";
require __DIR__ . "/../includes/header.php";
?>
<div class="d-flex justify-content-between"><h1 class="h3">Ordine #<?= e($idOrdine ?: "—") ?></h1><a class="btn btn-outline-secondary" href="ordini.php">Indietro</a></div>
<?php if (!$idOrdine): ?><div class="alert alert-danger">Specificare un ID ordine valido.</div><?php endif; ?>
<?php if ($messaggio): ?><div class="alert alert-warning"><?= e($messaggio) ?></div><?php endif; ?>
<?php if (!$ordine): ?><div class="alert alert-info">Il dettaglio sarà disponibile dopo il TODO SQL di supporto.</div><?php endif; ?>
<div class="row g-4"><div class="col-lg-8">
<div class="card shadow-sm mb-3"><div class="card-body"><h2 class="h5">Preparazione</h2><table class="table"><thead><tr><th>Prodotto</th><th>Qtà</th><th>Caratteristiche</th><th>Procedura</th></tr></thead><tbody><?php foreach ($righe as $r): ?><tr><td><?= e($r["nomeProdotto"]) ?></td><td><?= e($r["quantita"]) ?></td><td><?= e($r["caratteristiche"] ?? "—") ?></td><td><?= e($r["proceduraPreparazione"] ?? "—") ?></td></tr><?php endforeach; ?></tbody></table></div></div>
<div class="card shadow-sm"><div class="card-body"><h2 class="h5">Storico stati</h2><ol class="mb-0"><?php foreach ($storico as $s): ?><li><?= e($s["timestamp"]) ?> — <?= e($s["nomeStato"]) ?> (<?= e(($s["nomePersonale"] ?? "") . " " . ($s["cognomePersonale"] ?? "")) ?>)</li><?php endforeach; ?></ol></div></div>
</div><div class="col-lg-4"><div class="card shadow-sm"><div class="card-body"><h2 class="h5">Avanzamento</h2><p>Corrente: <span class="badge bg-primary"><?= e($ordine["nomeStato"] ?? "—") ?></span></p><p class="small text-muted">Progressione: inserito → in preparazione → pronto → in consegna → consegnato.</p><form method="post"><input type="hidden" name="idOrdine" value="<?= e($idOrdine) ?>"><input type="hidden" name="idStatoOrdine" value="<?= e($statoSuccessivo["idStatoOrdine"] ?? "") ?>"><button class="btn btn-success w-100" <?= $statoSuccessivo ? "" : "disabled" ?>>Passa a: <?= e($statoSuccessivo["nomeStato"] ?? "nessuno") ?></button></form></div></div></div></div>
<?php require __DIR__ . "/../includes/footer.php"; ?>
+24
View File
@@ -0,0 +1,24 @@
<?php
require_once __DIR__ . "/../includes/auth.php";
requireRole("personale");
require_once __DIR__ . "/../config/database.php";
$idPersonale = (int) $_SESSION["idUtente"];
$soloInRitardo = ($_GET["filtro"] ?? "") === "ritardo";
$ordini = [];
/*
* QUERY 5 - Ordini non ancora messi in preparazione dopo più di un'ora
* Input: nessuno; $soloInRitardo controlla la vista richiesta dalla UI
* Output atteso: idOrdine, dataOraCreazione, orarioConsegna, totale,
* nomeCliente, cognomeCliente, via, numeroCivico, nomeComune,
* nomeStato, timestampUltimoStato, minutiAttesa
* TODO SQL: implementare manualmente la Query 5.
*/
/* Per la vista completa degli ordini correnti predisporre inoltre una query
* di supporto con gli stessi campi, senza il vincolo "oltre un'ora". */
$pageTitle = "Ordini correnti"; $basePath = "..";
require __DIR__ . "/../includes/header.php";
?>
<div class="d-flex justify-content-between align-items-center mb-3"><h1 class="h3">Ordini correnti</h1><div><a class="btn btn-outline-secondary" href="ordini.php">Tutti</a> <a class="btn btn-warning" href="?filtro=ritardo">In attesa da oltre un'ora (Q5)</a></div></div>
<?php if (!$ordini): ?><div class="alert alert-info">Nessun risultato: completare la Query 5 o il caricamento di supporto.</div><?php endif; ?>
<div class="table-responsive"><table class="table table-striped align-middle"><thead><tr><th>Ordine</th><th>Cliente</th><th>Creato</th><th>Stato</th><th>Attesa</th><th>Consegna</th><th></th></tr></thead><tbody><?php foreach ($ordini as $o): ?><tr><td>#<?= e($o["idOrdine"]) ?></td><td><?= e(($o["nomeCliente"] ?? "") . " " . ($o["cognomeCliente"] ?? "")) ?></td><td><?= e($o["dataOraCreazione"]) ?></td><td><span class="badge bg-secondary"><?= e($o["nomeStato"]) ?></span></td><td><?= e($o["minutiAttesa"] ?? "—") ?> min</td><td><?= e($o["orarioConsegna"]) ?></td><td><a class="btn btn-sm btn-primary" href="dettaglio_ordine.php?idOrdine=<?= e($o["idOrdine"]) ?>">Dettaglio</a></td></tr><?php endforeach; ?></tbody></table></div>
<?php require __DIR__ . "/../includes/footer.php"; ?>