<?php

namespace App\Console\Commands;

use App\Modules\Users\Models\User;
use Illuminate\Console\Command;

/**
 * يمنح مستخدمًا موجودًا صلاحية دخول لوحة التحكم (للتطوير / الطوارئ).
 */
class PromoteUserToAdmin extends Command
{
    protected $signature = 'madar:promote-admin {login : اسم المستخدم أو البريد أو الجوال}';

    protected $description = 'تعيين is_admin = true لمستخدم موجود';

    public function handle(): int
    {
        $login = trim((string) $this->argument('login'));

        $user = User::query()
            ->where(function ($q) use ($login) {
                $q->where('username', $login)
                    ->orWhere('email', $login)
                    ->orWhere('phone', $login);
            })
            ->first();

        if ($user === null) {
            $this->error('لم يُعثر على مستخدم بهذا المعرّف.');

            return self::FAILURE;
        }

        if ($user->is_admin) {
            $this->info("المستخدم «{$user->username}» لديه صلاحية لوحة التحكم مسبقاً.");

            return self::SUCCESS;
        }

        // تحديث مباشر على الجدول يضمن الحفظ حتى لو تغيّرت قواعد الـ fillable لاحقاً.
        User::query()->whereKey($user->id)->update(['is_admin' => true]);

        $this->info("تم منح صلاحية المسؤول للمستخدم: {$user->username} ({$user->email})");

        return self::SUCCESS;
    }
}
