first commit
This commit is contained in:
Executable
+224
@@ -0,0 +1,224 @@
|
||||
<?php
|
||||
require_once __DIR__ . "/../includes/auth.php";
|
||||
requireRole("cliente");
|
||||
require_once __DIR__ . "/../config/database.php";
|
||||
$idCliente = (int) $_SESSION["idUtente"];
|
||||
$azione = $_POST["azione"] ?? null;
|
||||
$idIndirizzo = filter_input(INPUT_POST, "idIndirizzo", FILTER_VALIDATE_INT);
|
||||
$via = trim($_POST["via"] ?? "");
|
||||
$numeroCivico = trim($_POST["numeroCivico"] ?? "");
|
||||
$idComune = filter_input(INPUT_POST, "idComune", FILTER_VALIDATE_INT);
|
||||
$indirizzi = [];
|
||||
$messaggio = null;
|
||||
$comuni = [];
|
||||
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT
|
||||
comune.idComune,
|
||||
comune.nome AS nomeComune,
|
||||
provincia.nome AS nomeProvincia,
|
||||
provincia.sigla
|
||||
|
||||
FROM comune JOIN provincia ON comune.idProvincia = provincia.idProvincia
|
||||
");
|
||||
$stmt->execute();
|
||||
$comuni = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if (postMethod()) {
|
||||
|
||||
try {
|
||||
|
||||
switch($azione) {
|
||||
case "predefinito": {
|
||||
if (!$idIndirizzo) {
|
||||
$messaggio = "Id indirizzo non valido";
|
||||
die("Id indirizzo non valido");
|
||||
}
|
||||
|
||||
$pdo->beginTransaction();
|
||||
|
||||
// Rimozione dei precedenti indirizzi predefiniti
|
||||
$stmt = $pdo->prepare("
|
||||
UPDATE indirizzo
|
||||
SET predefinito = 0
|
||||
WHERE idCliente = :idCliente
|
||||
");
|
||||
$stmt->execute([
|
||||
"idCliente" => $idCliente
|
||||
]);
|
||||
|
||||
// Settando indirizzo corrente come predefinito
|
||||
$stmt = $pdo->prepare("
|
||||
UPDATE indirizzo
|
||||
SET predefinito = 1
|
||||
WHERE
|
||||
idCliente = :idCliente AND idIndirizzo = :idIndirizzo
|
||||
");
|
||||
$stmt->execute([
|
||||
"idCliente" => $idCliente,
|
||||
"idIndirizzo" => $idIndirizzo
|
||||
]);
|
||||
|
||||
$pdo->commit();
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case "inserisci": {
|
||||
if (
|
||||
$via === "" ||
|
||||
$numeroCivico === "" ||
|
||||
$idComune === ""
|
||||
) {
|
||||
$messaggio = "Compila i campi correttamente";
|
||||
die("Compila i campi correttamente");
|
||||
}
|
||||
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT EXISTS (
|
||||
SELECT 1
|
||||
FROM indirizzo
|
||||
WHERE idCliente = :idCliente
|
||||
) AS esiste
|
||||
");
|
||||
$stmt->execute([
|
||||
"idCliente" => $idCliente
|
||||
]);
|
||||
$predefinito = $stmt->fetchColumn();
|
||||
if ($predefinito) {
|
||||
// Sono presenti record di indirizzi
|
||||
$predefinito = 0;
|
||||
} else {
|
||||
// Non sono presenti record di indirizzi
|
||||
$predefinito = 1;
|
||||
}
|
||||
|
||||
$pdo->beginTransaction();
|
||||
$stmt = $pdo->prepare("
|
||||
INSERT INTO indirizzo (via, numeroCivico, predefinito, idComune, idCliente)
|
||||
VALUES (:via, :numeroCivico, :predefinito, :idComune, :idCliente)
|
||||
");
|
||||
$stmt->execute([
|
||||
"via" => $via,
|
||||
"numeroCivico" => $numeroCivico,
|
||||
"predefinito" => $predefinito,
|
||||
"idComune" => $idComune,
|
||||
"idCliente" => $idCliente
|
||||
]);
|
||||
$pdo->commit();
|
||||
break;
|
||||
}
|
||||
|
||||
case "elimina": {
|
||||
if (!$idIndirizzo) {
|
||||
$messaggio = "Id indirizzo non valido";
|
||||
die("Id indirizzo non valido");
|
||||
}
|
||||
|
||||
$pdo->beginTransaction();
|
||||
|
||||
$stmt = $pdo->prepare("
|
||||
DELETE FROM indirizzo
|
||||
WHERE
|
||||
idIndirizzo = :idIndirizzo AND idCliente = :idCliente
|
||||
");
|
||||
$stmt->execute([
|
||||
"idIndirizzo" => $idIndirizzo,
|
||||
"idCliente" => $idCliente
|
||||
]);
|
||||
$pdo->commit();
|
||||
|
||||
$messaggio = "Indirizzo eliminato con successo";
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
$messaggio = "Azione non valida";
|
||||
break;
|
||||
}
|
||||
|
||||
} catch (PDOException $e) {
|
||||
if ($pdo->inTransaction()) {
|
||||
$pdo->rollBack();
|
||||
}
|
||||
die(
|
||||
"Errore durante l'aggiunta dell'indirizzo di consegna: "
|
||||
. $e->getMessage()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$stmt = $pdo->prepare("
|
||||
SELECT
|
||||
indirizzo.idIndirizzo,
|
||||
indirizzo.via,
|
||||
indirizzo.numeroCivico,
|
||||
indirizzo.predefinito,
|
||||
comune.nome AS nomeComune,
|
||||
provincia.sigla AS siglaProvincia
|
||||
|
||||
FROM (indirizzo JOIN comune ON indirizzo.idComune = comune.idComune)
|
||||
JOIN provincia ON comune.idProvincia = provincia.idProvincia
|
||||
|
||||
WHERE idCliente = :idCliente
|
||||
");
|
||||
$stmt->execute([
|
||||
"idCliente" => $idCliente
|
||||
]);
|
||||
$indirizzi = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
$pageTitle = "Indirizzi"; $basePath = "..";
|
||||
require __DIR__ . "/../includes/header.php";
|
||||
?>
|
||||
<h1 class="h3">Indirizzi di consegna</h1>
|
||||
<?php if ($messaggio): ?><div class="alert alert-warning"><?= e($messaggio) ?></div><?php endif; ?>
|
||||
<div class="row g-4"><div class="col-lg-7">
|
||||
<?php foreach ($indirizzi as $i): ?>
|
||||
<div class="card mb-2">
|
||||
<div class="card-body d-flex justify-content-between">
|
||||
<div>
|
||||
<strong><?= e($i["via"] . " " . $i["numeroCivico"]) ?></strong>
|
||||
<br>
|
||||
<?= e(($i["nomeComune"] ?? "") . " " . ($i["siglaProvincia"] ?? "")) ?>
|
||||
<?php if (!empty($i["predefinito"])): ?>
|
||||
<span class="badge bg-success">Predefinito</span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<form method="post">
|
||||
<input type="hidden" name="idIndirizzo" value="<?= e($i["idIndirizzo"]) ?>">
|
||||
<button class="btn btn-sm btn-outline-primary" name="azione" value="predefinito">Predefinito</button>
|
||||
<button class="btn btn-sm btn-outline-danger" name="azione" value="elimina">Elimina</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<div class="col-lg-5">
|
||||
<form method="post" class="card card-body shadow-sm">
|
||||
<h2 class="h5">Nuovo indirizzo</h2>
|
||||
<input type="hidden" name="azione" value="inserisci">
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="via">Via</label>
|
||||
<input class="form-control" id="via" name="via" required></div>
|
||||
<div class="mb-3"><label class="form-label" for="numeroCivico">Numero civico</label>
|
||||
<input class="form-control" id="numeroCivico" name="numeroCivico" required></div>
|
||||
<div class="mb-3"><label class="form-label" for="idComune">Comune</label>
|
||||
<select class="form-select" id="idComune" name="idComune" required>
|
||||
<option value="">
|
||||
Seleziona un comune
|
||||
</option>
|
||||
<?php foreach ($comuni as $comune):?>
|
||||
<option value="<?= $comune["idComune"] ?>">
|
||||
<?=
|
||||
htmlspecialchars($comune["nomeComune"] . " - " . $comune["nomeProvincia"] . " - " . $comune["sigla"])
|
||||
?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<br>
|
||||
<button class="btn btn-primary">Salva</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<?php require __DIR__ . "/../includes/footer.php"; ?>
|
||||
Reference in New Issue
Block a user