From a1212248992fa74ebfbf2406cf4cbb30336673e2 Mon Sep 17 00:00:00 2001 From: Emanuele Slusarz Date: Sat, 22 Aug 2026 19:53:41 +0200 Subject: [PATCH] Aggiornamento lato PERSONALE --- PHP/cliente/ordine.php | 2 +- PHP/personale/dashboard.php | 2 +- PHP/personale/ordini.php | 629 ++++++++++++++++++++++++++++++++++-- SQL/01_schema.sql | 8 +- 4 files changed, 616 insertions(+), 25 deletions(-) diff --git a/PHP/cliente/ordine.php b/PHP/cliente/ordine.php index 8257f6b..4b65118 100755 --- a/PHP/cliente/ordine.php +++ b/PHP/cliente/ordine.php @@ -620,7 +620,7 @@ ) VALUES ( - 'IN LAVORAZIONE', + 'inserito', 1 ) "); diff --git a/PHP/personale/dashboard.php b/PHP/personale/dashboard.php index 2e9086b..16729da 100755 --- a/PHP/personale/dashboard.php +++ b/PHP/personale/dashboard.php @@ -57,7 +57,7 @@ $stmt->execute(); $conteggi = $stmt->fetchAll(PDO::FETCH_ASSOC); - + $pageTitle = "Dashboard personale"; $basePath = ".."; require __DIR__ . "/../includes/header.php"; ?> diff --git a/PHP/personale/ordini.php b/PHP/personale/ordini.php index 32de2d1..7b83fb9 100755 --- a/PHP/personale/ordini.php +++ b/PHP/personale/ordini.php @@ -1,24 +1,609 @@ prepare(" + SELECT + o1.idOrdine, + o1.dataOraCreazione, + o1.orarioConsegna, + o1.totale, + o1.idCliente, + o1.idIndirizzo, + abitazione.via, + abitazione.numeroCivico, + abitazione.nomeComune, + clienti.nome AS nomeCliente, + clienti.cognome AS cognomeCliente, + stati.nomeStato, + stati.timestampUltimoStato, + TIMESTAMPDIFF( + MINUTE, + stati.timestampUltimoStato, + CURRENT_TIMESTAMP + ) AS minutiAttesa + + FROM + ordine AS o1 + + LEFT JOIN ( + SELECT + ss2.idOrdine, + so2.nomeStato, + ss2.timestamp AS timestampUltimoStato + + FROM + storicoStato AS ss2 + + JOIN statoOrdine AS so2 + ON ss2.idStatoOrdine = so2.idStatoOrdine + + WHERE + so2.posizione = ( + SELECT + MAX(so3.posizione) + + FROM + storicoStato AS ss3 + + JOIN statoOrdine AS so3 + ON ss3.idStatoOrdine = so3.idStatoOrdine + + WHERE + ss3.idOrdine = ss2.idOrdine + ) + ) AS stati + ON o1.idOrdine = stati.idOrdine + + LEFT JOIN ( + SELECT + c4.idUtente, + u4.nome, + u4.cognome + + FROM + cliente AS c4 + + JOIN utente AS u4 + ON u4.idUtente = c4.idUtente + ) AS clienti + ON o1.idCliente = clienti.idUtente + + LEFT JOIN ( + SELECT + i5.idIndirizzo, + i5.via, + i5.numeroCivico, + c5.nome AS nomeComune + + FROM + indirizzo AS i5 + + JOIN comune AS c5 + ON i5.idComune = c5.idComune + ) AS abitazione + ON o1.idIndirizzo = abitazione.idIndirizzo + + WHERE + 1 + "); + + $stmt->execute(); + + $ordini = $stmt->fetchAll(PDO::FETCH_ASSOC); + + + // Dati di riepilogo ottenuti dagli ordini già caricati + $numeroOrdini = count($ordini); + + $numeroInRitardo = count( + array_filter( + $ordini, + function ($ordine) { + return isset($ordine["minutiAttesa"]) + && (int) $ordine["minutiAttesa"] >= 60; + } + ) + ); + + $valoreTotaleOrdini = array_sum( + array_map( + function ($ordine) { + return (float) ($ordine["totale"] ?? 0); + }, + $ordini + ) + ); + + + $pageTitle = "Ordini correnti"; + $basePath = ".."; + + require __DIR__ . "/../includes/header.php"; + ?> -

Ordini correnti

Tutti In attesa da oltre un'ora (Q5)
-
Nessun risultato: completare la Query 5 o il caricamento di supporto.
-
OrdineClienteCreatoStatoAttesaConsegna
# min">Dettaglio
- + + +
+ +
+

+ Ordini correnti +

+ +
+ Gestione degli ordini attualmente presenti nel sistema +
+
+ +
+ + Tutti + + + + In attesa da oltre un'ora (Q5) + +
+ +
+ + + + +
+ +
+ +
+ +
+ +
+ Ordini visualizzati +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ In attesa da almeno 60 minuti +
+ +
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ +
+ Valore complessivo +
+ +
+ € +
+ +
+ +
+ +
+ +
+ + + + +
+ Nessun risultato: completare la Query 5 o il caricamento di supporto. +
+ + + + +
+ +
+ + + Elenco ordini + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + = 60) { + + $classeAttesa = "bg-danger"; + + } elseif ($minutiAttesa >= 30) { + + $classeAttesa = "bg-warning text-dark"; + + } else { + + $classeAttesa = "bg-success"; + + } + + + // Colore badge stato + + switch ($o["nomeStato"] ?? "") { + + case "inserito": + $classeStato = "bg-secondary"; + break; + + case "in preparazione": + $classeStato = "bg-warning text-dark"; + break; + + case "pronto": + $classeStato = "bg-info text-dark"; + break; + + case "in consegna": + $classeStato = "bg-primary"; + break; + + case "consegnato": + $classeStato = "bg-success"; + break; + + default: + $classeStato = "bg-secondary"; + break; + + } + + ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Ordine + + Cliente + + Indirizzo + + Creato + + Stato + + Ultimo aggiornamento + + Attesa + + Consegna + + Totale + +
+ + + # + + + + +
+ + + +
+ +
+ + Cliente # + +
+ +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + + + + + + + — + + + + + + + + + + + + + + + + + + + + + + — + + + + + + + + + + + min + + + + + + + — + + + + + + + + + + + + + + Non definita + + + + + + + € + + + + " + > + Dettaglio + + +
+ +
+ +
+ + + + + + \ No newline at end of file diff --git a/SQL/01_schema.sql b/SQL/01_schema.sql index c112d68..f8832bc 100755 --- a/SQL/01_schema.sql +++ b/SQL/01_schema.sql @@ -88,7 +88,13 @@ CREATE TABLE ordine ( -- CREAZIONE RELAZIONE STATO ORDINE CREATE TABLE statoOrdine ( idStatoOrdine INT PRIMARY KEY AUTO_INCREMENT NOT NULL, - nomeStato VARCHAR(30) NOT NULL, + nomeStato ENUM( + 'inserito', + 'in preparazione', + 'pronto', + 'in consegna', + 'consegnato' + ), posizione TINYINT NOT NULL );