<?php
/**
 * ================================================================
 *  KALENDARZ REZERWACJI — spala.cos.pl
 *  Plik: kalendarz-send.php
 *  Wgraj na serwer w głównym katalogu strony (np. public_html/)
 * ================================================================
 */

/* ================================================================
   ★  KONFIGURACJA — edytuj tylko tę sekcję  ★
   ================================================================ */

$CONFIG = [

    // --- E-mail odbiorcy (na ten adres przyjdą rezerwacje) ---
    'email_do'        => 'rezerwacje@spala.cos.pl',

    // --- Nazwa odbiorcy (pojawi się w polu "Do:") ---
    'nazwa_do'        => 'COS Spała — Rezerwacje',

    // --- Adres nadawcy (musi być domeną Twojego serwera) ---
    'email_od'        => 'noreply@spala.cos.pl',

    // --- Temat e-maila do administratora ---
    'temat_admin'     => 'Nowa prośba o rezerwację — {data} godz. {godzina}',

    // --- Czy wysyłać potwierdzenie do klienta? (true/false) ---
    'potwierdzenie_klient' => true,

    // --- Temat potwierdzenia do klienta ---
    'temat_klient'    => 'Potwierdzenie zgłoszenia rezerwacji — COS Spała',

    // --- Treść potwierdzenia do klienta (możesz edytować) ---
    'tresc_klient'    => "Dzień dobry {imie},\n\nDziękujemy za przesłanie prośby o rezerwację.\n\nSzczegóły zgłoszenia:\n  Data:     {data}\n  Godzina:  {godzina}\n  Usługa:   {usluga}\n\nSkontaktujemy się z Tobą wkrótce w celu potwierdzenia terminu.\n\nPozdrawiamy,\nCentralny Ośrodek Sportu – Ośrodek Przygotowań Olimpijskich w Spale\nspala.cos.pl",

    // --- Dozwolone domeny wysyłające żądania (zabezpieczenie CORS) ---
    // Wpisz domenę swojej strony, np. 'spala.cos.pl'
    'dozwolona_domena' => 'spala.cos.pl',

    // --- Maksymalna długość pola "uwagi" (znaki) ---
    'max_uwagi'       => 1000,

];

/* ================================================================
   NIE EDYTUJ PONIŻEJ TEJ LINII
   ================================================================ */

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: https://' . $CONFIG['dozwolona_domena']);
header('Access-Control-Allow-Methods: POST');

// Odrzuć nie-POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['ok' => false, 'msg' => 'Niedozwolona metoda.']);
    exit;
}

// Pobierz i wyczyść dane
function clean($val, $max = 300) {
    return mb_substr(trim(strip_tags($val)), 0, $max);
}

$imie    = clean($_POST['name']    ?? '');
$telefon = clean($_POST['phone']   ?? '');
$email   = clean($_POST['email']   ?? '');
$usluga  = clean($_POST['service'] ?? '');
$uwagi   = clean($_POST['notes']   ?? '', $CONFIG['max_uwagi']);
$data    = clean($_POST['date']    ?? '');
$godzina = clean($_POST['time']    ?? '');

// Walidacja wymaganych pól
if (empty($imie) || empty($telefon) || empty($data) || empty($godzina)) {
    echo json_encode(['ok' => false, 'msg' => 'Brakuje wymaganych danych.']);
    exit;
}

// Walidacja formatu daty (YYYY-MM-DD)
if (!preg_match('/^\d{4}-\d{2}-\d{2}$/', $data)) {
    echo json_encode(['ok' => false, 'msg' => 'Nieprawidłowy format daty.']);
    exit;
}

// Walidacja godziny (H:MM lub HH:MM)
if (!preg_match('/^\d{1,2}:\d{2}$/', $godzina)) {
    echo json_encode(['ok' => false, 'msg' => 'Nieprawidłowy format godziny.']);
    exit;
}

// Walidacja e-mail klienta (opcjonalny)
if (!empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo json_encode(['ok' => false, 'msg' => 'Nieprawidłowy adres e-mail.']);
    exit;
}

// Formatuj datę po polsku
$miesiac_pl = [
    '01'=>'stycznia','02'=>'lutego','03'=>'marca','04'=>'kwietnia',
    '05'=>'maja','06'=>'czerwca','07'=>'lipca','08'=>'sierpnia',
    '09'=>'września','10'=>'października','11'=>'listopada','12'=>'grudnia'
];
list($rok, $mies, $dzien) = explode('-', $data);
$data_pl = intval($dzien) . ' ' . ($miesiac_pl[$mies] ?? $mies) . ' ' . $rok;

// Podstaw zmienne w temacie
$temat_admin = str_replace(
    ['{data}', '{godzina}'],
    [$data_pl, $godzina],
    $CONFIG['temat_admin']
);

// Treść e-maila do administratora (HTML)
$tresc_admin = "
<html><body style='font-family:Arial,sans-serif;color:#222;max-width:600px'>
<h2 style='color:#1a3a5c;border-bottom:2px solid #1a3a5c;padding-bottom:8px'>
  Nowa prośba o rezerwację
</h2>
<table style='width:100%;border-collapse:collapse;margin-top:16px'>
  <tr style='background:#f0f4f8'>
    <td style='padding:10px 14px;font-weight:bold;width:35%'>Data</td>
    <td style='padding:10px 14px'>{$data_pl}</td>
  </tr>
  <tr>
    <td style='padding:10px 14px;font-weight:bold'>Godzina</td>
    <td style='padding:10px 14px'>{$godzina}</td>
  </tr>
  <tr style='background:#f0f4f8'>
    <td style='padding:10px 14px;font-weight:bold'>Imię i nazwisko</td>
    <td style='padding:10px 14px'>" . htmlspecialchars($imie) . "</td>
  </tr>
  <tr>
    <td style='padding:10px 14px;font-weight:bold'>Telefon</td>
    <td style='padding:10px 14px'>" . htmlspecialchars($telefon) . "</td>
  </tr>
  <tr style='background:#f0f4f8'>
    <td style='padding:10px 14px;font-weight:bold'>E-mail</td>
    <td style='padding:10px 14px'>" . (empty($email) ? '—' : htmlspecialchars($email)) . "</td>
  </tr>
  <tr>
    <td style='padding:10px 14px;font-weight:bold'>Usługa</td>
    <td style='padding:10px 14px'>" . (empty($usluga) ? '—' : htmlspecialchars($usluga)) . "</td>
  </tr>
  <tr style='background:#f0f4f8'>
    <td style='padding:10px 14px;font-weight:bold;vertical-align:top'>Uwagi</td>
    <td style='padding:10px 14px'>" . (empty($uwagi) ? '—' : nl2br(htmlspecialchars($uwagi))) . "</td>
  </tr>
</table>
<p style='margin-top:20px;font-size:12px;color:#888'>
  Wysłano ze strony spala.cos.pl — " . date('d.m.Y H:i') . "
</p>
</body></html>";

// Nagłówki maila do admina
$headers_admin  = "MIME-Version: 1.0\r\n";
$headers_admin .= "Content-Type: text/html; charset=UTF-8\r\n";
$headers_admin .= "From: {$CONFIG['nazwa_do']} <{$CONFIG['email_od']}>\r\n";
if (!empty($email)) {
    $headers_admin .= "Reply-To: " . htmlspecialchars($imie) . " <{$email}>\r\n";
}

// Wyślij do admina
$ok = mail(
    $CONFIG['email_do'],
    '=?UTF-8?B?' . base64_encode($temat_admin) . '?=',
    $tresc_admin,
    $headers_admin
);

if (!$ok) {
    echo json_encode(['ok' => false, 'msg' => 'Błąd serwera podczas wysyłki. Spróbuj ponownie lub zadzwoń do nas.']);
    exit;
}

// Wyślij potwierdzenie do klienta (jeśli podał e-mail i opcja włączona)
if ($CONFIG['potwierdzenie_klient'] && !empty($email)) {
    $tresc_klient = str_replace(
        ['{imie}', '{data}', '{godzina}', '{usluga}'],
        [$imie, $data_pl, $godzina, empty($usluga) ? '—' : $usluga],
        $CONFIG['tresc_klient']
    );
    $headers_klient  = "MIME-Version: 1.0\r\n";
    $headers_klient .= "Content-Type: text/plain; charset=UTF-8\r\n";
    $headers_klient .= "From: {$CONFIG['nazwa_do']} <{$CONFIG['email_od']}>\r\n";

    mail(
        $email,
        '=?UTF-8?B?' . base64_encode($CONFIG['temat_klient']) . '?=',
        $tresc_klient,
        $headers_klient
    );
}

echo json_encode(['ok' => true]);
