<?php
declare(strict_types=1);

header('Content-Type: application/json; charset=UTF-8');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode([
        'success' => false,
        'message' => 'Метод не поддерживается.'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

function clean(string $value): string
{
    $value = trim($value);
    $value = str_replace(["\r", "\n"], ' ', $value);
    return htmlspecialchars($value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}

$name = clean((string)($_POST['name'] ?? ''));
$phone = clean((string)($_POST['phone'] ?? ''));
$program = clean((string)($_POST['program'] ?? ''));
$message = clean((string)($_POST['message'] ?? ''));

if ($name === '' || $phone === '' || $program === '') {
    http_response_code(422);
    echo json_encode([
        'success' => false,
        'message' => 'Заполните имя, телефон и программу.'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

$to = 'test@site.ru';
$subject = '=?UTF-8?B?' . base64_encode('Amber Spa Moscow: новая заявка') . '?=';
$host = $_SERVER['HTTP_HOST'] ?? 'localhost';
$sanitizedHost = preg_replace('/[^a-z0-9.-]/i', '', $host) ?: 'localhost';
$from = filter_var('no-reply@' . $sanitizedHost, FILTER_VALIDATE_EMAIL) ? 'no-reply@' . $sanitizedHost : 'no-reply@site.ru';
$timestamp = date('Y-m-d H:i:s');

$mailBody = <<<TEXT
Новая заявка с лендинга Amber Spa Moscow

Имя: {$name}
Телефон: {$phone}
Программа: {$program}
Комментарий: {$message}

Источник: https://{$host}
Дата: {$timestamp}
TEXT;

$headers = [
    'MIME-Version: 1.0',
    'Content-Type: text/plain; charset=UTF-8',
    'From: Amber Spa Moscow <' . $from . '>',
    'Reply-To: ' . $from,
    'X-Mailer: PHP/' . phpversion(),
];

$sent = @mail($to, $subject, $mailBody, implode("\r\n", $headers));

if (!$sent) {
    http_response_code(500);
    echo json_encode([
        'success' => false,
        'message' => 'Заявка не отправлена. Проверьте настройки mail() на хостинге или свяжитесь по телефону.'
    ], JSON_UNESCAPED_UNICODE);
    exit;
}

echo json_encode([
    'success' => true,
    'message' => 'Спасибо. Заявка отправлена, мы скоро свяжемся с вами.'
], JSON_UNESCAPED_UNICODE);
