225 lines
7.7 KiB
PHP
Executable File
225 lines
7.7 KiB
PHP
Executable File
<?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"; ?>
|