<?php
/**
 * رفع دسترسی خدمات میدانی — همگام‌سازی مجوزهای service با super_admin
 * C:\xampp\php\php.exe C:\xampp\htdocs\acc-engine\run-service-acl-fix.php
 */
declare(strict_types=1);

require_once __DIR__ . '/standalone/bootstrap.php';
require_once ACC_PATH . 'includes/helpers/acl-functions.php';

global $wpdb;
$pre = $wpdb->prefix;

$super_id = (int) $wpdb->get_var( "SELECT id FROM {$pre}acl_roles WHERE slug = 'super_admin' LIMIT 1" );
if ( ! $super_id ) {
    die( "❌ نقش super_admin یافت نشد\n" );
}

$perms = [ 'service.view', 'service.requests.manage', 'service.reports.manage', 'service.devices.manage',
    'service.senior.manage', 'service.technician.panel', 'service.dispatch' ];
$added = 0;
foreach ( $perms as $pk ) {
    $exists = $wpdb->get_var( $wpdb->prepare(
        "SELECT id FROM {$pre}acl_permissions WHERE permission_key = %s", $pk
    ) );
    if ( ! $exists ) {
        $wpdb->insert( "{$pre}acl_permissions", [
            'permission_key' => $pk,
            'label'          => $pk,
            'module'         => 'service',
            'resource'       => 'service',
            'action'         => 'view',
            'is_system'      => 1,
        ] );
    }
    $wpdb->query( $wpdb->prepare(
        "INSERT IGNORE INTO {$pre}acl_role_permissions (role_id, permission_key) VALUES (%d, %s)",
        $super_id, $pk
    ) );
    $added++;
}

// همگام کامل
$all = $wpdb->get_col( "SELECT permission_key FROM {$pre}acl_permissions" ) ?: [];
foreach ( $all as $pk ) {
    $wpdb->query( $wpdb->prepare(
        "INSERT IGNORE INTO {$pre}acl_role_permissions (role_id, permission_key) VALUES (%d, %s)",
        $super_id, $pk
    ) );
}

$menu_exists = $wpdb->get_var( $wpdb->prepare(
    "SELECT id FROM {$pre}acl_menus WHERE menu_key = %s", 'service'
) );
if ( ! $menu_exists ) {
    $wpdb->insert( "{$pre}acl_menus", [
        'menu_key'            => 'service',
        'parent_key'          => '',
        'title'               => '🔧 خدمات میدانی',
        'icon'                => '🔧',
        'route'               => 'service',
        'required_permission' => 'service.view',
        'sort_order'          => 16,
        'is_active'           => 1,
    ] );
}

$uid = 1;
$ok = acl_user_can( $uid, 'service.view' );

header( 'Content-Type: text/html; charset=utf-8' );
echo $ok
    ? "✅ دسترسی service.view برای کاربر {$uid} فعال شد. صفحه ERP را Ctrl+F5 رفرش کنید."
    : "⚠️ هنوز مجوز نیست — بررسی کنید کاربر {$uid} نقش super_admin دارد.";
