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

if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    echo json_encode(['error' => 'غير مصرح']);
    exit();
}

require_once '../config/db.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['error' => 'طريقة غير مسموحة']);
    exit();
}

// الحصول على البيانات المرسلة
$data = json_decode(file_get_contents('php://input'), true);

if (!isset($data['sales']) || empty($data['sales'])) {
    http_response_code(400);
    echo json_encode(['error' => 'بيانات المبيعات مطلوبة']);
    exit();
}

try {
    $db = new Database();
    $pdo = $db->getConnection();
    
    // بدء المعاملة
    $pdo->beginTransaction();
    
    foreach ($data['sales'] as $sale) {
        // التحقق من صحة البيانات
        if (!isset($sale['product_id']) || !isset($sale['quantity'])) {
            throw new Exception('بيانات غير صالحة');
        }
        
        // التحقق من وجود المنتج والكمية المتوفرة
        $stmt = $pdo->prepare("SELECT quantity FROM products WHERE id = ?");
        $stmt->execute([$sale['product_id']]);
        $product = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if (!$product) {
            throw new Exception('المنتج غير موجود');
        }
        
        if ($product['quantity'] < $sale['quantity']) {
            throw new Exception('الكمية المطلوبة غير متوفرة');
        }
        
        // تحديث كمية المنتج
        $newQuantity = $product['quantity'] - $sale['quantity'];
        $stmt = $pdo->prepare("UPDATE products SET quantity = ? WHERE id = ?");
        $stmt->execute([$newQuantity, $sale['product_id']]);
        
        // إضافة حركة مخزون
        $stmt = $pdo->prepare("
            INSERT INTO stock_movements (product_id, quantity, type, reason)
            VALUES (?, ?, 'out', ?)
        ");
        $stmt->execute([
            $sale['product_id'],
            $sale['quantity'],
            'بيع'
        ]);
    }
    
    // تأكيد المعاملة
    $pdo->commit();
    
    echo json_encode(['success' => true]);
    
} catch (Exception $e) {
    // التراجع عن المعاملة في حالة حدوث خطأ
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    
    http_response_code(400);
    echo json_encode(['error' => $e->getMessage()]);
}
