<?php

namespace App\Http\Requests\User;

use App\Models\Administration;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;

class SendThankCardRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     */
    public function rules(): array
    {
        return [
            'receiver' => [
                'required',
                Rule::exists('user', 'msnv')->where('status', config('constants.STATUS_ACTIVE'))
            ],
            'amount'   => 'required|integer|min:1|max:' . Administration::MAX_SEND_CARD_PER_MONTH,
            'template_id' => 'nullable|integer|in:1,2,3,4',
        ];
    }

    /**
     * Handle a failed validation attempt.
     */
    protected function failedValidation(\Illuminate\Contracts\Validation\Validator $validator)
    {
        throw new \Illuminate\Http\Exceptions\HttpResponseException(
            response()->json([
                'success' => false,
                'errors'  => $validator->errors()
            ], 422)
        );
    }
}

