<?php

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

function respond($status, $success, $message) {
    http_response_code($status);
    $response = ['success' => $success];
    $response[$success ? 'message' : 'error'] = $message;
    echo json_encode($response);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    respond(405, false, 'Invalid request.');
}

$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$type = trim($_POST['type'] ?? 'Not specified');
$subject = trim($_POST['subject'] ?? '');
$message = trim($_POST['message'] ?? '');
$captchaA = (int) ($_POST['captcha_a'] ?? 0);
$captchaB = (int) ($_POST['captcha_b'] ?? 0);
$captcha = trim($_POST['captcha'] ?? '');

if (
    $name === '' ||
    $subject === '' ||
    $message === '' ||
    !filter_var($email, FILTER_VALIDATE_EMAIL) ||
    $captcha === '' ||
    !ctype_digit($captcha) ||
    (int) $captcha !== $captchaA + $captchaB
) {
    respond(422, false, 'Please complete all required fields with a valid email address and CAPTCHA answer.');
}

// Remove line breaks from single-line fields so entries stay readable.
$name = preg_replace('/[\r\n]+/', ' ', $name);
$email = preg_replace('/[\r\n]+/', ' ', $email);
$type = preg_replace('/[\r\n]+/', ' ', $type);
$subject = preg_replace('/[\r\n]+/', ' ', $subject);
$message = str_replace("\0", '', $message);

$entry = "\n" . str_repeat('=', 60) . "\n"
    . 'Date: ' . date('Y-m-d H:i:s') . "\n"
    . 'Name: ' . $name . "\n"
    . 'Email: ' . $email . "\n"
    . 'Role: ' . $type . "\n"
    . 'Subject: ' . $subject . "\n"
    . "Message:\n" . $message . "\n";

$file = __DIR__ . '/contact-submissions.txt';

if (file_put_contents($file, $entry, FILE_APPEND | LOCK_EX) === false) {
    respond(500, false, 'Unable to save your message.');
}

respond(201, true, 'Message received.');