<?php
/**
 * إضافة منتج إلى السلة
 */

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

// التحقق من البيانات المطلوبة
if (!isset($_POST['product_id']) || !isset($_POST['quantity'])) {
    echo json_encode(['success' => false, 'message' => 'بيانات غير مكتملة']);
    exit;
}

$product_id = (int)$_POST['product_id'];
$quantity = (int)$_POST['quantity'];

// التحقق من صحة البيانات
if ($product_id <= 0 || $quantity <= 0) {
    echo json_encode(['success' => false, 'message' => 'بيانات غير صحيحة']);
    exit;
}

try {
    require_once '../../config/database.php';
    
    $database = new Database();
    $conn = $database->getConnection();
    
    // التحقق من وجود المنتج
    $query = "SELECT id, name, price, stock_quantity FROM products WHERE id = ? AND stock_quantity > 0";
    $stmt = $conn->prepare($query);
    $stmt->execute([$product_id]);
    $product = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$product) {
        echo json_encode(['success' => false, 'message' => 'المنتج غير متوفر']);
        exit;
    }
    
    // التحقق من الكمية المتوفرة
    if ($quantity > $product['stock_quantity']) {
        echo json_encode(['success' => false, 'message' => 'الكمية المطلوبة غير متوفرة']);
        exit;
    }
    
    if (isset($_SESSION['user_id'])) {
        // المستخدم مسجل الدخول - حفظ في قاعدة البيانات
        $user_id = $_SESSION['user_id'];
        
        // التحقق من وجود المنتج في السلة مسبقاً
        $query = "SELECT id, quantity FROM cart WHERE user_id = ? AND product_id = ?";
        $stmt = $conn->prepare($query);
        $stmt->execute([$user_id, $product_id]);
        $existing_item = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($existing_item) {
            // تحديث الكمية
            $new_quantity = $existing_item['quantity'] + $quantity;
            
            // التحقق من الكمية المتوفرة
            if ($new_quantity > $product['stock_quantity']) {
                echo json_encode(['success' => false, 'message' => 'لا يمكن إضافة هذه الكمية. الكمية المتوفرة: ' . $product['stock_quantity']]);
                exit;
            }
            
            $query = "UPDATE cart SET quantity = ? WHERE id = ?";
            $stmt = $conn->prepare($query);
            $stmt->execute([$new_quantity, $existing_item['id']]);
        } else {
            // إضافة منتج جديد
            $query = "INSERT INTO cart (user_id, product_id, quantity) VALUES (?, ?, ?)";
            $stmt = $conn->prepare($query);
            $stmt->execute([$user_id, $product_id, $quantity]);
        }
        
        // حساب إجمالي عدد المنتجات في السلة
        $query = "SELECT SUM(quantity) as total_count FROM cart WHERE user_id = ?";
        $stmt = $conn->prepare($query);
        $stmt->execute([$user_id]);
        $cart_count = $stmt->fetchColumn() ?: 0;
        
    } else {
        // مستخدم ضيف - حفظ في الجلسة
        if (!isset($_SESSION['guest_cart'])) {
            $_SESSION['guest_cart'] = [];
        }
        
        if (isset($_SESSION['guest_cart'][$product_id])) {
            $new_quantity = $_SESSION['guest_cart'][$product_id] + $quantity;
            
            // التحقق من الكمية المتوفرة
            if ($new_quantity > $product['stock_quantity']) {
                echo json_encode(['success' => false, 'message' => 'لا يمكن إضافة هذه الكمية. الكمية المتوفرة: ' . $product['stock_quantity']]);
                exit;
            }
            
            $_SESSION['guest_cart'][$product_id] = $new_quantity;
        } else {
            $_SESSION['guest_cart'][$product_id] = $quantity;
        }
        
        // حساب إجمالي عدد المنتجات في السلة
        $cart_count = array_sum($_SESSION['guest_cart']);
    }
    
    // إرسال إشعار تليجرام
    require_once '../../helpers/telegram-notifications.php';
    $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
    $device_type = preg_match('/mobile|android|iphone/i', $user_agent) ? 'Mobile' : 'Desktop';
    notifyAddToCart($_SESSION['user_id'] ?? null, $product_id, $quantity, $device_type);
    
    echo json_encode([
        'success' => true,
        'message' => 'تم إضافة المنتج إلى السلة بنجاح',
        'cart_count' => $cart_count,
        'product_name' => $product['name']
    ]);
    
} catch (PDOException $e) {
    error_log("Database error in add_to_cart.php: " . $e->getMessage());
    echo json_encode(['success' => false, 'message' => 'حدث خطأ في قاعدة البيانات']);
} catch (Exception $e) {
    error_log("General error in add_to_cart.php: " . $e->getMessage());
    echo json_encode(['success' => false, 'message' => 'حدث خطأ غير متوقع']);
}
?>