diff --git a/PHP/cliente/ordine.php b/PHP/cliente/ordine.php index 4b65118..01eed27 100755 --- a/PHP/cliente/ordine.php +++ b/PHP/cliente/ordine.php @@ -604,30 +604,29 @@ "); $stmt->execute([ - "idOrdine" => $idOrdine, - "idCliente" => $idCliente, "totale" => $totale, - "tempoPreparazione" => $tempoPreparazione + "tempoPreparazione" => $tempoPreparazione, + "idOrdine" => $idOrdine, + "idCliente" => $idCliente ]); - // Creazione dello storicoStato e statoOrdine $stmt = $pdo->prepare(" - INSERT - INTO statoOrdine - ( - nomeStato, - posizione - ) - - VALUES ( - 'inserito', - 1 - ) + SELECT + MIN(so1.idStatoOrdine) + + FROM + statoOrdine AS so1 + + WHERE + so1.nomeStato = 'inserito' + + LIMIT + 1 "); $stmt->execute(); - $idStatoOrdine = $pdo->lastInsertId(); + $idStatoOrdine = $stmt->fetchColumn(); $stmt = $pdo->prepare(" INSERT diff --git a/PHP/personale/dettaglio_ordine.php b/PHP/personale/dettaglio_ordine.php index 0d62f3c..bfe59ae 100755 --- a/PHP/personale/dettaglio_ordine.php +++ b/PHP/personale/dettaglio_ordine.php @@ -1,33 +1,292 @@ prepare(" + SELECT + uso.idOrdine, + uso.idStatoOrdine, + uso.nomeStato, + uso.posizione + + FROM + ultimoStatoOrdini AS uso + + WHERE + uso.idOrdine = :idOrdine + "); + + $stmt->execute([ + "idOrdine" => $idOrdine + ]); + + $ordine = $stmt->fetch(PDO::FETCH_ASSOC) ?: null; + + // Recupero delle righe + $stmt = $pdo->prepare(" + SELECT + ro1.idRigaOrdine, + p1.nome AS nomeProdotto, + ro1.quantita, + p1.proceduraPreparazione + + FROM + rigaOrdine AS ro1 + + JOIN prodotto AS p1 + ON ro1.idProdotto = p1.idProdotto + + WHERE + ro1.idOrdine = :idOrdine + "); + + $stmt->execute([ + "idOrdine" => $idOrdine + ]); + + $righe = $stmt->fetchAll(PDO::FETCH_ASSOC); + + // Recupero delle caratteristiche + $stmt = $pdo->prepare(" + SELECT + ro1.idRigaOrdine, + GROUP_CONCAT( + CONCAT(c1.nome, ' - ', c1.descrizione) + SEPARATOR ', ' + ) AS caratteristiche + + FROM + rigaOrdine AS ro1 + + JOIN rigaOrdineSelezionaCaratteristica AS rosc1 + ON ro1.idRigaOrdine = rosc1.idRigaOrdine + + JOIN caratteristica AS c1 + ON rosc1.idCaratteristica = c1.idCaratteristica + + WHERE + ro1.idOrdine = :idOrdine + + GROUP BY + ro1.idRigaOrdine + + "); + + $stmt->execute([ + "idOrdine" => $idOrdine + ]); + + $caratteristiche = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); + + // Recupero lo storico + $stmt = $pdo->prepare(" + SELECT + statoOrdini.timestamp, + statoOrdini.nomeStato, + statoOrdini.nomePersonale, + statoOrdini.cognomePersonale + + FROM + statoOrdini + + WHERE + statoOrdini.idOrdine = :idOrdine + "); + + $stmt->execute([ + "idOrdine" => $idOrdine + ]); + + $storico = $stmt->fetchAll(PDO::FETCH_ASSOC); + + // Recupero dello stato successivo + $stmt = $pdo->prepare(" + SELECT + uso.idOrdine, + so1.idStatoOrdine, + so1.nomeStato, + so1.posizione + + FROM + ultimoStatoOrdini AS uso + + JOIN statoOrdine AS so1 + ON so1.posizione = ( + SELECT + MIN(so2.posizione) + + FROM + statoOrdine AS so2 + + WHERE + so2.posizione > uso.posizione + ) + + WHERE + uso.idOrdine = :idOrdine + "); + + $stmt->execute([ + "idOrdine" => $idOrdine + ]); + + $statoSuccessivo = $stmt->fetch(PDO::FETCH_ASSOC) ?: null; + + if (postMethod()) { + + // Controllo input + if ( + $idOrdine === null || $idOrdine === false || + $idStatoOrdine === null || $idStatoOrdine === false || + $idPersonale <= 0 + ) { + $messaggio = "Errore: dati non validi per l'aggiornamento dello stato."; + } else { + // Aggiornamento dello stato attuale + try { + + $pdo->beginTransaction(); + + // Ottengo il nuovo stato + $idStatoOrdineSuccessivo = $statoSuccessivo["idStatoOrdine"] ?? null; + + $stmt = $pdo->prepare(" + INSERT + INTO storicoStato + ( + timestamp, + idOrdine, + idStatoOrdine + ) + + VALUES ( + NOW(), + :idOrdine, + :idStatoOrdine + ) + "); + + $stmt->execute([ + "idOrdine" => $idOrdine, + "idStatoOrdine" => $idStatoOrdineSuccessivo + ]); + + $pdo->commit(); + + // Pulizia + header("Location: dettaglio_ordine.php?idOrdine=" . $idOrdine); + + // Messaggio + $_SESSION["messaggio"] = "Ordine aggiornato con successo"; + + exit; + + } catch (PDOException $e) { + + if ($pdo -> inTransaction()) { + $pdo -> rollback(); + } + + $messaggio = + "Errore durante l'aggiornamento dello stato dell'ordine" . + $e -> getMessage(); + } + } + + } + $pageTitle = "Dettaglio ordine"; $basePath = ".."; + require __DIR__ . "/../includes/header.php"; ?> -
| Prodotto | Qtà | Caratteristiche | Procedura |
|---|---|---|---|
| = e($r["nomeProdotto"]) ?> | = e($r["quantita"]) ?> | = e($r["caratteristiche"] ?? "—") ?> | = e($r["proceduraPreparazione"] ?? "—") ?> |
Corrente: = e($ordine["nomeStato"] ?? "—") ?>
Progressione: inserito → in preparazione → pronto → in consegna → consegnato.
| Prodotto | +Qtà | +Caratteristiche | +Procedura | +
|---|---|---|---|
| + = e($r["nomeProdotto"]) ?> + | ++ = e($r["quantita"]) ?> + | ++ = e($caratteristiche[$r["idRigaOrdine"]] ?? "—") ?> + | ++ = e($r["proceduraPreparazione"] ?? "—") ?> + | +
Corrente: = e($ordine["nomeStato"] ?? "—") ?>
+Progressione: inserito → in preparazione → pronto → in consegna → consegnato.
+ +