<?php
/**
 * Cashier System Configuration - Standalone Version
 * @version 1.0.0
 */

// بدء الجلسة إذا لم تكن قد بدأت
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

// تعطيل عرض الأخطاء تماماً (لأننا نريد JSON فقط في API)
if (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false) {
    error_reporting(0);
    ini_set('display_errors', 0);
} else {
    // للصفحات العادية، يمكن تفعيل الأخطاء للتصحيح
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
}

// إعدادات قاعدة البيانات
define('DB_HOST', 'sql305.infinityfree.com');
define('DB_USER', 'if0_40375409');
define('DB_PASS', 'pDPSp6KEQfub');
define('DB_NAME', 'if0_40375409_aws');

// إنشاء الاتصال
$conn = @new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

// التحقق من الاتصال
if ($conn->connect_error) {
    // إذا كان طلب API، نرجع JSON
    if (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false) {
        header('Content-Type: application/json');
        echo json_encode(['success' => false, 'message' => 'فشل الاتصال بقاعدة البيانات']);
        exit;
    } else {
        die("فشل الاتصال بقاعدة البيانات: " . $conn->connect_error);
    }
}

// تعيين الترميز
$conn->set_charset('utf8mb4');

// إعدادات الكاشير
define('CASHIER_SESSION_KEY', 'cashier_id');
define('CASHIER_LOGIN_PAGE', 'login.php');
define('CASHIER_DASHBOARD', 'dashboard.php');

/**
 * التحقق من تسجيل دخول الكاشير
 */
function checkCashierAuth() {
    if (!isset($_SESSION[CASHIER_SESSION_KEY])) {
        header('Location: ' . CASHIER_LOGIN_PAGE);
        exit();
    }
}

/**
 * الحصول على معلومات الكاشير الحالي
 */
function getCurrentCashier() {
    global $conn;
    if (isset($_SESSION[CASHIER_SESSION_KEY])) {
        $id = (int)$_SESSION[CASHIER_SESSION_KEY];
        $result = $conn->query("SELECT id, name, phone, branch FROM cashiers WHERE id = $id AND status = 'active'");
        if ($result && $result->num_rows > 0) {
            return $result->fetch_assoc();
        }
    }
    return null;
}

/**
 * تنسيق العملة
 */
function formatMoney($amount) {
    return number_format($amount, 0) . ' ريال';
}

/**
 * الحصول على كلاس حالة الطلب
 */
function getStatusBadge($status) {
    $classes = [
        'pending' => 'badge-pending',
        'accepted' => 'badge-accepted',
        'preparing' => 'badge-preparing',
        'ready' => 'badge-ready',
        'on_the_way' => 'badge-ontheway',
        'delivered' => 'badge-delivered',
        'cancelled' => 'badge-cancelled'
    ];
    return $classes[$status] ?? 'badge-secondary';
}

/**
 * الحصول على نص الحالة بالعربية
 */
function getStatusText($status) {
    $texts = [
        'pending' => 'قيد الانتظار',
        'accepted' => 'تم القبول',
        'preparing' => 'جاري التحضير',
        'ready' => 'جاهز',
        'on_the_way' => 'في الطريق',
        'delivered' => 'تم التوصيل',
        'cancelled' => 'ملغي'
    ];
    return $texts[$status] ?? $status;
}

/**
 * دالة الأمان - ترميز HTML
 */
function e($str) {
    return htmlspecialchars($str, ENT_QUOTES, 'UTF-8');
}

/**
 * التحقق من أن الطلب POST
 */
function isPost() {
    return $_SERVER['REQUEST_METHOD'] === 'POST';
}

/**
 * الحصول على قيمة مدخلة
 */
function input($key, $default = '') {
    return $_POST[$key] ?? $_GET[$key] ?? $default;
}

/**
 * نظام كاش بسيط (اختياري)
 */
class SimpleCache {
    private $cache_dir = '';
    
    public function __construct() {
        $this->cache_dir = __DIR__ . '/cache/';
        if (!file_exists($this->cache_dir)) {
            mkdir($this->cache_dir, 0777, true);
        }
    }
    
    public function get($key) {
        $file = $this->cache_dir . md5($key) . '.cache';
        if (file_exists($file)) {
            $data = unserialize(file_get_contents($file));
            if ($data['expire'] > time()) {
                return $data['value'];
            }
            unlink($file);
        }
        return null;
    }
    
    public function set($key, $value, $ttl = 300) {
        $file = $this->cache_dir . md5($key) . '.cache';
        $data = serialize([
            'expire' => time() + $ttl,
            'value' => $value
        ]);
        file_put_contents($file, $data, LOCK_EX);
        return true;
    }
    
    public function delete($key) {
        $file = $this->cache_dir . md5($key) . '.cache';
        if (file_exists($file)) {
            unlink($file);
        }
        return true;
    }
    
    public function clear() {
        $files = glob($this->cache_dir . '*.cache');
        foreach ($files as $file) {
            unlink($file);
        }
        return true;
    }
}

// تهيئة الكاش
$cache = new SimpleCache();
?>