
<?php include("includes/db.php"); ?>
<?php include("includes/header.php"); ?>
<?php include("includes/nav.php"); ?>

<h1>Rezerwacja</h1>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $imie = trim($_POST['imie']);
    $nazwisko = trim($_POST['nazwisko']);
    $telefon = trim($_POST['telefon']);
    $email = trim($_POST['email']);
    $marka = trim($_POST['marka']);
    $model = trim($_POST['model']);
    $nr_rej = trim($_POST['nr_rejestracyjny']);
    $kolor = trim($_POST['kolor']);
    $id_uslugi = $_POST['id_uslugi'];
    $data = $_POST['data'];
    $godzina = $_POST['godzina'];
    $uwagi = trim($_POST['uwagi']);

    // Pobierz czas trwania usługi 
    $stmt = $conn->prepare("SELECT czas_trwania FROM uslugi WHERE id_uslugi=?");
    $stmt->bind_param("i", $id_uslugi);
    $stmt->execute();
    $stmt->bind_result($czas_trwania);
    $stmt->fetch();
    $stmt->close();

    // Oblicz start i koniec rezerwacji
    $start = new DateTime("$data $godzina");
    $end = clone $start;
    $end->modify("+$czas_trwania minutes");

    $start_str = $start->format("H:i:s");
    $end_str = $end->format("H:i:s");

    // Sprawdź czy termin się nakłada
    $stmt = $conn->prepare("
        SELECT r.id_rezerwacji
        FROM rezerwacje r
        JOIN uslugi u ON r.id_uslugi = u.id_uslugi
        WHERE r.data_rezerwacji = ?
        AND (
            (? < ADDTIME(r.godzina_rezerwacji, SEC_TO_TIME(u.czas_trwania*60)))
            AND
            (? > r.godzina_rezerwacji)
        )
    ");
    $stmt->bind_param("sss", $data, $start_str, $end_str);
    $stmt->execute();
    $stmt->store_result();

    if ($stmt->num_rows > 0) {
        echo "<p style='color:red;'>Wybrany termin nachodzi na inną rezerwację. Wybierz inny czas.</p>";
        $stmt->close();
        exit;
    }
    $stmt->close();

    // Sprawdź czy klient istnieje
    $stmt = $conn->prepare("SELECT id_klienta FROM klienci WHERE telefon=?");
    $stmt->bind_param("s", $telefon);
    $stmt->execute();
    $stmt->bind_result($id_klienta);
    $stmt->fetch();
    $stmt->close();

    if (!$id_klienta) {
        $stmt = $conn->prepare("INSERT INTO klienci (imie, nazwisko, telefon, email) VALUES (?, ?, ?, ?)");
        $stmt->bind_param("ssss", $imie, $nazwisko, $telefon, $email);

        if ($stmt->execute()) {
            $id_klienta = $stmt->insert_id;
        } else {
            echo "<p style='color:red;'>Błąd rejestracji klienta: " . $stmt->error . "</p>";
            exit;
        }
        $stmt->close();
    }

    // Dodaj pojazd 
    $stmt = $conn->prepare("INSERT INTO pojazdy (id_klienta, marka, model, nr_rejestracyjny, kolor) VALUES (?, ?, ?, ?, ?)");
    $stmt->bind_param("issss", $id_klienta, $marka, $model, $nr_rej, $kolor);

    if ($stmt->execute()) {
        $id_pojazdu = $stmt->insert_id;
    } else {
        echo "<p style='color:red;'>Błąd dodawania pojazdu: " . $stmt->error . "</p>";
        exit;
    }
    $stmt->close();

    // Dodaj rezerwację
    $stmt = $conn->prepare("
        INSERT INTO rezerwacje 
        (id_klienta, id_pojazdu, id_uslugi, data_rezerwacji, godzina_rezerwacji, uwagi) 
        VALUES (?, ?, ?, ?, ?, ?)
    ");
    $stmt->bind_param("iiisss", $id_klienta, $id_pojazdu, $id_uslugi, $data, $godzina, $uwagi);

    if ($stmt->execute()) {
        echo "<p style='color:green;'>Rezerwacja dodana pomyślnie!</p>";
    } else {
        echo "<p style='color:red;'>Błąd rezerwacji: " . $stmt->error . "</p>";
    }
    $stmt->close();
}
?>

<form method="POST">

    <h3>Dane klienta</h3>
    <label>Imię:</label><br>
    <input type="text" name="imie" required><br><br>

    <label>Nazwisko:</label><br>
    <input type="text" name="nazwisko" required><br><br>

    <label>Telefon:</label><br>
    <input type="text" name="telefon" required><br><br>

    <label>Email:</label><br>
    <input type="email" name="email"><br><br>

    <h3>Dane pojazdu</h3>
    <label>Marka:</label><br>
    <input type="text" name="marka" required><br><br>

    <label>Model:</label><br>
    <input type="text" name="model" required><br><br>

    <label>Nr rejestracyjny:</label><br>
    <input type="text" name="nr_rejestracyjny" required><br><br>

    <label>Kolor:</label><br>
    <input type="text" name="kolor"><br><br>

    <h3>Usługa</h3>
    <label>Wybierz usługę:</label><br>
    <select name="id_uslugi" required>
        <?php
        $res = $conn->query("SELECT * FROM uslugi");
        while ($row = $res->fetch_assoc()) {
            echo "<option value='{$row['id_uslugi']}'>
                {$row['nazwa_uslugi']} ({$row['cena']} zł)
            </option>";
        }
        ?>
    </select><br><br>

    <label>Data:</label><br>
    <input type="date" name="data" required><br><br>

    <label>Godzina:</label><br>
    <input type="time" name="godzina" required><br><br>

    <label>Uwagi:</label><br>
    <textarea name="uwagi"></textarea><br><br>

    <button type="submit">Zarezerwuj</button>

</form>

<?php include("includes/footer.php"); ?>