<?php

namespace App\Http\Requests\Admin;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;

class ReopenDayLedgerRequest extends FormRequest
{
    public function authorize(): bool
    {
        $user = Auth::user();

        if (!$user) {
            return false;
        }

        $isSuperAdmin = DB::table('model_has_roles')
            ->join('roles', 'roles.id', '=', 'model_has_roles.role_id')
            ->where('model_has_roles.model_id', $user->id)
            ->where('model_has_roles.model_type', \App\Models\User::class)
            ->where('roles.name', 'super_admin')
            ->exists();

        if ($isSuperAdmin) {
            return true;
        }

        // Backward-compatible fallback:
        // if no user is assigned to super_admin yet, allow admin user_type.
        $superAdminAssigned = DB::table('model_has_roles')
            ->join('roles', 'roles.id', '=', 'model_has_roles.role_id')
            ->where('roles.name', 'super_admin')
            ->exists();

        return !$superAdminAssigned && (($user->user_type ?? null) === 'admin');
    }

    public function rules(): array
    {
        return [
            'date' => ['required', 'date'],
        ];
    }
}
