<?php
// المسار: admin/order_update_status.php
// تحديث حالة الطلب من لوحة الإدارة

declare(strict_types=1);

if (session_status() !== PHP_SESSION_ACTIVE) {
    ini_set('session.use_strict_mode', '1');
    session_start();
}

if (empty($_SESSION['admin'])) {
    header('Location: login.php');
    exit;
}

require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/functions.php'; // لاستخدام csrf_check

// السماح فقط بـ POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: orders.php');
    exit;
}

// التحقق من CSRF
$csrf = $_POST['csrf'] ?? '';
if (!function_exists('csrf_check') || !csrf_check($csrf)) {
    // حماية أساسية
    header('Location: orders.php?err=csrf');
    exit;
}

$orderId   = (int)($_POST['order_id'] ?? 0);
$newStatus = trim($_POST['new_status'] ?? '');

// تحقق من صحة المدخلات
$allowedStatuses = ['new','waiting_payment','processing','shipped','completed','cancelled'];

if ($orderId <= 0 || !in_array($newStatus, $allowedStatuses, true)) {
    header('Location: orders.php?err=bad_input');
    exit;
}

try {
    $st = $pdo->prepare("UPDATE orders SET status = :st WHERE id = :id LIMIT 1");
    $st->execute([
        ':st' => $newStatus,
        ':id' => $orderId,
    ]);
    header('Location: order_view.php?id=' . $orderId . '&updated=1');
    exit;
} catch (Throwable $e) {
    header('Location: order_view.php?id=' . $orderId . '&updated=0');
    exit;
}