<?php

namespace App\Http\Requests;

use Illuminate\Contracts\Validation\Validator; 
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException; 

/**
 * use App\Http\Requests\ApiResponseRequest.
 * 
 * Extend this to your Requests instead of FormRequest in order to use this. 
 */

abstract class ApiResponseRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    protected function failedValidation(Validator $validator)
    {
        throw new HttpResponseException(
            response : response()->json(
                data : 
                [
                    'success' => false, 
                    'message' => "Form values did not pass validation!", 
                    'errors'  => [ $validator->errors() ]    
                ], 
                status : 422
            )
        );
    }

    abstract public function rules(); 
}
