<?php
// Portfolio - Contact Form API Handler
require_once 'db.php';

header('Content-Type: application/json');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['status' => 'error', 'message' => 'Invalid request method.']);
    exit;
}

// Read inputs (from JSON or form-data)
$input = json_decode(file_get_contents('php://input'), true);
$name = trim($input['name'] ?? $_POST['name'] ?? '');
$email = trim($input['email'] ?? $_POST['email'] ?? '');
$message = trim($input['message'] ?? $_POST['message'] ?? '');

if (empty($name) || empty($email) || empty($message)) {
    echo json_encode(['status' => 'error', 'message' => 'กรุณากรอกข้อมูลให้ครบถ้วน']);
    exit;
}

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo json_encode(['status' => 'error', 'message' => 'รูปแบบอีเมลไม่ถูกต้อง']);
    exit;
}

// 1. Try to save in database
if ($pdo !== null) {
    try {
        $stmt = $pdo->prepare('INSERT INTO portfolio_contacts (name, email, message) VALUES (?, ?, ?)');
        $stmt->execute([$name, $email, $message]);
        echo json_encode(['status' => 'success', 'message' => 'ส่งข้อความสำเร็จ! ข้อมูลถูกบันทึกในระบบเรียบร้อยแล้ว']);
        exit;
    } catch (\PDOException $e) {
        // Fall through to JSON log if DB save fails
    }
}

// 2. Fallback to Local JSON log
$logFile = 'messages.json';
$messages = [];

if (file_exists($logFile)) {
    $currentData = file_get_contents($logFile);
    $messages = json_decode($currentData, true) ?: [];
}

$messages[] = [
    'name' => $name,
    'email' => $email,
    'message' => $message,
    'timestamp' => date('Y-m-d H:i:s')
];

if (file_put_contents($logFile, json_encode($messages, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE))) {
    echo json_encode(['status' => 'success', 'message' => 'ส่งข้อความสำเร็จ! (บันทึกข้อมูลแบบสำรองในเซิร์ฟเวอร์เรียบร้อยแล้ว)']);
} else {
    echo json_encode(['status' => 'error', 'message' => 'เกิดข้อผิดพลาดในการบันทึกข้อความลงเซิร์ฟเวอร์']);
}
?>
