false, 'error' => 'Method Not Allowed']); exit; } $name = $_POST['name'] ?? ''; $email = $_POST['email'] ?? ''; $phone = $_POST['phone'] ?? ''; $message = $_POST['message'] ?? ''; if (empty($name) || empty($email) || empty($message)) { http_response_code(400); echo json_encode(['success' => false, 'error' => 'Please fill in all required fields.']); exit; } if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { http_response_code(400); echo json_encode(['success' => false, 'error' => 'Invalid email format.']); exit; } $pdo = db(); if (!$pdo) { http_response_code(500); echo json_encode(['success' => false, 'error' => 'Database connection failed.']); exit; } try { $stmt = $pdo->prepare("INSERT INTO leads (name, email, phone, message) VALUES (?, ?, ?, ?)"); $stmt->execute([$name, $email, $phone, $message]); } catch (PDOException $e) { http_response_code(500); error_log('DB Insert Error: ' . $e->getMessage()); echo json_encode(['success' => false, 'error' => 'An error occurred while saving your message.']); exit; } $contactEmailResult = MailService::sendContactMessage($name, $email, $message); if (empty($contactEmailResult['success'])) { // Log the error, but don't block the user. The lead is already saved. error_log("Failed to send contact form email: " . ($contactEmailResult['error'] ?? 'Unknown error')); } if (!headers_sent()) { header('Content-Type: application/json'); } echo json_encode(['success' => true, 'message' => 'Thank you for your message! We will get back to you shortly.']);