<?php
header('Content-Type: application/json; charset=utf-8');
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/auth_middleware.php';

// Enforce view permission for materials page
checkApiPagePermission('materials', 'view');

$action = isset($_GET['action']) ? $_GET['action'] : '';

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    if ($action === 'list') {
        $commissions = [];
        $res = $conn->query("SELECT option_value FROM `commission_options` ORDER BY id ASC");
        if ($res) {
            while ($row = $res->fetch_assoc()) {
                $commissions[] = $row['option_value'];
            }
        }
        
        $worker_shares = [];
        $res2 = $conn->query("SELECT option_value FROM `worker_share_options` ORDER BY id ASC");
        if ($res2) {
            while ($row = $res2->fetch_assoc()) {
                $worker_shares[] = $row['option_value'];
            }
        }
        
        echo json_encode([
            'status' => 'success',
            'commissions' => $commissions,
            'worker_shares' => $worker_shares
        ], JSON_UNESCAPED_UNICODE);
        exit;
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $input = json_decode(file_get_contents('php://input'), true);
    if (!$input) {
        echo json_encode(['status' => 'error', 'message' => 'بيانات الطلب غير صالحة'], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    $type = isset($input['type']) ? trim($input['type']) : '';
    if ($type !== 'commission' && $type !== 'worker_share') {
        echo json_encode(['status' => 'error', 'message' => 'نوع الحقل غير صالح'], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    $table = $type === 'commission' ? 'commission_options' : 'worker_share_options';
    
    if ($action === 'add') {
        // Enforce edit/add permission
        checkApiPagePermission('materials', 'edit');
        
        $value = isset($input['value']) ? trim($input['value']) : '';
        if (empty($value)) {
            echo json_encode(['status' => 'error', 'message' => 'القيمة لا يمكن أن تكون فارغة'], JSON_UNESCAPED_UNICODE);
            exit;
        }
        if (preg_match('/[<>]/', $value)) {
            echo json_encode(['status' => 'error', 'message' => 'القيمة تحتوي على رموز غير مسموح بها'], JSON_UNESCAPED_UNICODE);
            exit;
        }
        
        // Check duplication
        $stmt = $conn->prepare("SELECT COUNT(*) AS c FROM `$table` WHERE `option_value` = ?");
        $stmt->bind_param('s', $value);
        $stmt->execute();
        $res = $stmt->get_result();
        $count = $res ? (int)$res->fetch_assoc()['c'] : 0;
        $stmt->close();
        
        if ($count > 0) {
            echo json_encode(['status' => 'error', 'message' => 'هذا الخيار مضاف بالفعل'], JSON_UNESCAPED_UNICODE);
            exit;
        }
        
        $stmt = $conn->prepare("INSERT INTO `$table` (option_value) VALUES (?)");
        $stmt->bind_param('s', $value);
        if ($stmt->execute()) {
            echo json_encode(['status' => 'success', 'message' => 'تم إضافة الخيار بنجاح'], JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode(['status' => 'error', 'message' => 'فشل إضافة الخيار في قاعدة البيانات'], JSON_UNESCAPED_UNICODE);
        }
        $stmt->close();
        exit;
    }
    
    if ($action === 'edit') {
        // Enforce edit permission
        checkApiPagePermission('materials', 'edit');
        
        $old_value = isset($input['old_value']) ? trim($input['old_value']) : '';
        $new_value = isset($input['new_value']) ? trim($input['new_value']) : '';
        
        if (empty($old_value) || empty($new_value)) {
            echo json_encode(['status' => 'error', 'message' => 'القيم القديمة أو الجديدة لا يمكن أن تكون فارغة'], JSON_UNESCAPED_UNICODE);
            exit;
        }
        if (preg_match('/[<>]/', $new_value)) {
            echo json_encode(['status' => 'error', 'message' => 'القيمة الجديدة تحتوي على رموز غير مسموح بها'], JSON_UNESCAPED_UNICODE);
            exit;
        }
        
        $stmt = $conn->prepare("UPDATE `$table` SET `option_value` = ? WHERE `option_value` = ?");
        $stmt->bind_param('ss', $new_value, $old_value);
        if ($stmt->execute()) {
            echo json_encode(['status' => 'success', 'message' => 'تم تعديل الخيار بنجاح'], JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode(['status' => 'error', 'message' => 'فشل تعديل الخيار في قاعدة البيانات'], JSON_UNESCAPED_UNICODE);
        }
        $stmt->close();
        exit;
    }
    
    if ($action === 'delete') {
        // Enforce delete permission
        checkApiPagePermission('materials', 'delete');
        
        $value = isset($input['value']) ? trim($input['value']) : '';
        if (empty($value)) {
            echo json_encode(['status' => 'error', 'message' => 'القيمة لا يمكن أن تكون فارغة'], JSON_UNESCAPED_UNICODE);
            exit;
        }
        
        $stmt = $conn->prepare("DELETE FROM `$table` WHERE `option_value` = ?");
        $stmt->bind_param('s', $value);
        if ($stmt->execute()) {
            echo json_encode(['status' => 'success', 'message' => 'تم حذف الخيار بنجاح'], JSON_UNESCAPED_UNICODE);
        } else {
            echo json_encode(['status' => 'error', 'message' => 'فشل حذف الخيار من قاعدة البيانات'], JSON_UNESCAPED_UNICODE);
        }
        $stmt->close();
        exit;
    }
}

echo json_encode(['status' => 'error', 'message' => 'طلب غير صالح'], JSON_UNESCAPED_UNICODE);
exit;
