<?php
// Disable HTML error display to prevent JSON corruption
ini_set('display_errors', 0);
error_reporting(0);

session_start();

// Set JSON content type header
header('Content-Type: application/json');

// Include database connection and models
require_once '../../config/database.php';
require_once '../../models/review.php';

// Check if user is logged in
if (!isset($_SESSION['user_id'])) {
    echo json_encode(['success' => false, 'message' => 'يجب تسجيل الدخول أولاً']);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $database = new Database();
    $db = $database->getConnection();

    // Check if database connection failed
    if (!$db) {
        echo json_encode(['success' => false, 'message' => 'فشل في الاتصال بقاعدة البيانات']);
        exit;
    }

    $review = new Review($db);

    // Get and validate input data
    $service_id = isset($_POST['service_id']) ? (int)$_POST['service_id'] : 0;
    $rating = isset($_POST['rating']) ? (int)$_POST['rating'] : 0;
    $comment = isset($_POST['comment']) ? trim($_POST['comment']) : '';

    // Validate required fields
    if ($service_id <= 0) {
        echo json_encode(['success' => false, 'message' => 'معرف الخدمة غير صحيح']);
        exit;
    }

    if ($rating < 1 || $rating > 5) {
        echo json_encode(['success' => false, 'message' => 'التقييم يجب أن يكون بين 1 و 5 نجوم']);
        exit;
    }

    if (empty($comment)) {
        echo json_encode(['success' => false, 'message' => 'التعليق مطلوب']);
        exit;
    }

    // Check if user already reviewed this service
    if ($review->userHasReviewedService($_SESSION['user_id'], $service_id)) {
        echo json_encode(['success' => false, 'message' => 'لقد قمت بتقييم هذه الخدمة من قبل']);
        exit;
    }

    // Set review data
    $review->user_id = $_SESSION['user_id'];
    $review->service_id = $service_id;
    $review->product_id = null; // Ensure product_id is null for service reviews
    $review->rating = $rating;
    $review->comment = $comment;
    $review->is_approved = 1; // Auto-approve for now, can be changed to 0 for admin review
    $review->is_visible = 1; // Auto-visible for now

    // Create the review
    if ($review->create()) {
        echo json_encode(['success' => true, 'message' => 'تم إضافة تقييمك بنجاح!']);
        exit;
    } else {
        echo json_encode(['success' => false, 'message' => 'حدث خطأ في حفظ التقييم. يرجى المحاولة مرة أخرى.']);
        exit;
    }
} else {
    echo json_encode(['success' => false, 'message' => 'طلب غير صحيح']);
}
?>