200 lines
8.8 KiB
PHP
200 lines
8.8 KiB
PHP
<?php
|
||
include('include/headscript.php');
|
||
|
||
$dbHandler = DBHandlerSelect::getInstance();
|
||
$pdo = $dbHandler->getConnection();
|
||
|
||
if (!isset($iduserlogin)) {
|
||
header("Location: login.php"); // o la tua pagina di login
|
||
exit;
|
||
}
|
||
|
||
// Se ha già un salone → torna alla dashboard
|
||
$stmt = $pdo->prepare("SELECT id FROM shops WHERE owner_id = ? LIMIT 1");
|
||
$stmt->execute([$iduserlogin]);
|
||
if ($stmt->fetch()) {
|
||
header("Location: salon_dashboard.php");
|
||
exit;
|
||
}
|
||
|
||
$errors = [];
|
||
$success = false;
|
||
|
||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||
$name = trim($_POST['name'] ?? '');
|
||
$address = trim($_POST['address'] ?? '');
|
||
$city = trim($_POST['city'] ?? '');
|
||
$province = strtoupper(trim($_POST['province'] ?? ''));
|
||
$zip_code = trim($_POST['zip_code'] ?? '');
|
||
$phone = trim($_POST['phone'] ?? '');
|
||
$email = trim($_POST['email'] ?? '');
|
||
|
||
// Validazioni minime
|
||
if (empty($name)) $errors[] = "Il nome del salone è obbligatorio";
|
||
if (empty($city)) $errors[] = "La città è obbligatoria";
|
||
if (empty($phone) && empty($email)) {
|
||
$errors[] = "Inserisci almeno telefono oppure email";
|
||
}
|
||
|
||
if (empty($errors)) {
|
||
// Slug generico ma unico abbastanza
|
||
$slug_base = strtolower(preg_replace('/[^a-z0-9]+/', '-', $name));
|
||
$slug = $slug_base . '-' . substr(md5(time()), 0, 6);
|
||
|
||
$stmt = $pdo->prepare("
|
||
INSERT INTO shops (
|
||
owner_id, name, slug, address, city, province, zip_code,
|
||
phone, email, active, created_at, updated_at
|
||
) VALUES (
|
||
?, ?, ?, ?, ?, ?, ?, ?, ?, 1, NOW(), NOW()
|
||
)
|
||
");
|
||
|
||
$ok = $stmt->execute([
|
||
$iduserlogin,
|
||
$name,
|
||
$slug,
|
||
$address,
|
||
$city,
|
||
$province,
|
||
$zip_code,
|
||
$phone,
|
||
$email
|
||
]);
|
||
|
||
if ($ok) {
|
||
$success = true;
|
||
// Opzionale: crea orari di default
|
||
$new_shop_id = $pdo->lastInsertId();
|
||
|
||
// Esempio orari base (lun-ven 9-19, sab 9-13, dom chiuso)
|
||
$default_hours = [
|
||
['day_of_week' => 1, 'is_open' => 1, 'open_time' => '09:00:00', 'close_time' => '19:00:00'],
|
||
['day_of_week' => 2, 'is_open' => 1, 'open_time' => '09:00:00', 'close_time' => '19:00:00'],
|
||
['day_of_week' => 3, 'is_open' => 1, 'open_time' => '09:00:00', 'close_time' => '19:00:00'],
|
||
['day_of_week' => 4, 'is_open' => 1, 'open_time' => '09:00:00', 'close_time' => '19:00:00'],
|
||
['day_of_week' => 5, 'is_open' => 1, 'open_time' => '09:00:00', 'close_time' => '19:00:00'],
|
||
['day_of_week' => 6, 'is_open' => 1, 'open_time' => '09:00:00', 'close_time' => '13:00:00'],
|
||
['day_of_week' => 0, 'is_open' => 0],
|
||
];
|
||
|
||
$stmt_hour = $pdo->prepare("
|
||
INSERT INTO shop_hours (shop_id, day_of_week, is_open, open_time, close_time)
|
||
VALUES (?, ?, ?, ?, ?)
|
||
");
|
||
foreach ($default_hours as $h) {
|
||
$stmt_hour->execute([
|
||
$new_shop_id,
|
||
$h['day_of_week'],
|
||
$h['is_open'],
|
||
$h['open_time'] ?? null,
|
||
$h['close_time'] ?? null
|
||
]);
|
||
}
|
||
|
||
// Reindirizza dopo 2 secondi
|
||
header("Refresh: 2; url=salon_dashboard.php");
|
||
} else {
|
||
$errors[] = "Errore durante la creazione del salone. Riprova.";
|
||
}
|
||
}
|
||
}
|
||
?>
|
||
|
||
<!doctype html>
|
||
<html lang="it">
|
||
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<?php include('cssinclude.php'); ?>
|
||
<title>Benvenuto - Crea il tuo Salone</title>
|
||
</head>
|
||
|
||
<body class="bg-light d-flex align-items-center min-vh-100">
|
||
<div class="container">
|
||
<div class="row justify-content-center">
|
||
<div class="col-lg-6 col-xl-5">
|
||
<div class="card shadow border-0">
|
||
<div class="card-header bg-primary text-white text-center py-4">
|
||
<h3 class="mb-1">Benvenuto nel tuo gestionale!</h3>
|
||
<p class="mb-0">Crea il tuo salone per iniziare</p>
|
||
</div>
|
||
|
||
<div class="card-body p-4 p-md-5">
|
||
<?php if ($success): ?>
|
||
<div class="alert alert-success text-center py-4">
|
||
<i class="bx bx-check-circle bx-lg mb-3 d-block"></i>
|
||
<h4>Salone creato con successo!</h4>
|
||
<p>Stai per essere reindirizzato alla dashboard...</p>
|
||
<div class="spinner-border text-primary mt-3" role="status"></div>
|
||
</div>
|
||
<?php else: ?>
|
||
<?php if ($errors): ?>
|
||
<div class="alert alert-danger">
|
||
<?php foreach ($errors as $err): ?>
|
||
<div>× <?= htmlspecialchars($err) ?></div>
|
||
<?php endforeach; ?>
|
||
</div>
|
||
<?php endif; ?>
|
||
|
||
<form method="POST" class="needs-validation" novalidate>
|
||
<div class="mb-4">
|
||
<label class="form-label fw-bold">Nome salone <span class="text-danger">*</span></label>
|
||
<input type="text" name="name" class="form-control form-control-lg" required
|
||
value="<?= htmlspecialchars($_POST['name'] ?? '') ?>">
|
||
</div>
|
||
|
||
<div class="mb-4">
|
||
<label class="form-label fw-bold">Città <span class="text-danger">*</span></label>
|
||
<input type="text" name="city" class="form-control form-control-lg" required
|
||
value="<?= htmlspecialchars($_POST['city'] ?? '') ?>">
|
||
</div>
|
||
|
||
<div class="row g-3">
|
||
<div class="col-md-6">
|
||
<label class="form-label">Indirizzo</label>
|
||
<input type="text" name="address" class="form-control"
|
||
value="<?= htmlspecialchars($_POST['address'] ?? '') ?>">
|
||
</div>
|
||
<div class="col-md-6">
|
||
<label class="form-label">CAP</label>
|
||
<input type="text" name="zip_code" class="form-control"
|
||
value="<?= htmlspecialchars($_POST['zip_code'] ?? '') ?>">
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row g-3 mt-3">
|
||
<div class="col-md-4">
|
||
<label class="form-label">Provincia</label>
|
||
<input type="text" name="province" class="form-control text-uppercase" maxlength="2"
|
||
placeholder="MI" value="<?= htmlspecialchars($_POST['province'] ?? '') ?>">
|
||
</div>
|
||
<div class="col-md-8">
|
||
<label class="form-label">Telefono o Email <span class="text-danger">*</span></label>
|
||
<div class="input-group">
|
||
<input type="tel" name="phone" class="form-control" placeholder="Telefono"
|
||
value="<?= htmlspecialchars($_POST['phone'] ?? '') ?>">
|
||
<input type="email" name="email" class="form-control" placeholder="Email"
|
||
value="<?= htmlspecialchars($_POST['email'] ?? '') ?>">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="d-grid mt-5">
|
||
<button type="submit" class="btn btn-primary btn-lg">
|
||
Crea il mio salone
|
||
</button>
|
||
</div>
|
||
</form>
|
||
<?php endif; ?>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<?php include('jsinclude.php'); ?>
|
||
</body>
|
||
|
||
</html>
|