<?php

namespace App\Http\Requests\Auth;

use App\Models\Admin;
use App\Rules\Turnstile;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\ValidationException;

class AdminForgotPasswordRequest extends FormRequest
{
    public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [
            'email' => 'required|email',
            'turnstile_token' => ['required', 'string', new Turnstile()],
        ];
    }

    public function messages(): array
    {
        return [
            'email.required' => 'El correo es obligatorio.',
            'email.email' => 'El correo no es válido.',
            'turnstile_token.required' => 'Completá la validación de seguridad.',
        ];
    }

    public function getAdmin(): Admin
    {
        $admin = Admin::query()
            ->where('email', $this->string('email')->toString())
            ->where('estado', true)
            ->first();

        if (! $admin) {
            throw ValidationException::withMessages([
                'email' => 'No existe un administrador activo con ese correo.',
            ]);
        }

        return $admin;
    }
}
