<?php
/**
 * API: Update Order Status
 */

try {
    require_once dirname(__DIR__) . '/config.php';
    checkCashierAuth();

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

    // الحصول على بيانات POST
    $input = json_decode(file_get_contents('php://input'), true);
    $order_id = isset($input['order_id']) ? (int)$input['order_id'] : 0;
    $status = isset($input['status']) ? $conn->real_escape_string($input['status']) : '';
    $captain_id = isset($input['captain_id']) ? (int)$input['captain_id'] : 0;
    $notes = isset($input['notes']) ? $conn->real_escape_string($input['notes']) : '';
    
    // الحصول على معرف الكاشير الحالي
    $cashier_id = $_SESSION[CASHIER_SESSION_KEY];

    if (!$order_id || !$status) {
        echo json_encode(['success' => false, 'message' => 'البيانات المطلوبة غير كاملة']);
        exit;
    }

    // الحالات المسموح بها
    $allowed_statuses = ['accepted', 'preparing', 'ready', 'on_the_way', 'delivered', 'cancelled'];
    if (!in_array($status, $allowed_statuses)) {
        echo json_encode(['success' => false, 'message' => 'حالة غير صالحة']);
        exit;
    }

    // التحقق من أن هذا الطلب يخص هذا الكاشير (ما عدا حالة الإلغاء يمكن للكاشير إلغاء أي طلب)
    $check_sql = "SELECT id FROM orders WHERE id = $order_id AND (cashier_id = $cashier_id OR status = 'pending')";
    $check = $conn->query($check_sql);
    if ($check->num_rows === 0) {
        echo json_encode(['success' => false, 'message' => 'ليس لديك صلاحية لتحديث هذا الطلب']);
        exit;
    }

    // بناء استعلام التحديث
    $sql = "UPDATE orders SET status = '$status'";

    if ($captain_id > 0) {
        $sql .= ", captain_id = $captain_id";
    }

    if ($status === 'delivered') {
        $sql .= ", delivered_at = NOW()";
    }

    if ($notes) {
        $notes_escaped = $conn->real_escape_string($notes);
        $sql .= ", notes = CONCAT(IFNULL(notes, ''), '\n[" . date('Y-m-d H:i') . "] $status: ', '$notes_escaped')";
    }

    $sql .= " WHERE id = $order_id";

    if ($conn->query($sql)) {
        // مسح الكاش
        global $cache;
        $cache->delete('cashier_stats_' . date('Y-m-d'));
        
        echo json_encode(['success' => true, 'message' => 'تم تحديث الحالة بنجاح']);
    } else {
        throw new Exception($conn->error);
    }

} catch (Exception $e) {
    header('Content-Type: application/json');
    echo json_encode([
        'success' => false,
        'message' => 'خطأ في الخادم: ' . $e->getMessage()
    ]);
}
?>