<?php
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Validation\ValidationException;
class ProductRequest extends FormRequest {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() {
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules() {
$rules = [];
$rules['name'] = 'required|max:255';
$rules['category_id'] = 'required';
$rules['unit'] = 'required';
$rules['min_qty'] = 'required|numeric';
$rules['unit_price'] = 'required|numeric';
if ($this->get('discount_type') == 'amount') {
$rules['discount'] = 'required|numeric|lt:unit_price';
} else {
$rules['discount'] = 'required|numeric|lt:100';
}
$rules['current_stock'] = 'required|numeric';
return $rules;
}
/**
* Get the validation messages of rules that apply to the request.
*
* @return array
*/
public function messages() {
return [
'name.required' => 'El Nombre del Producto es Obligatorio',
'category_id.required' => 'La Categoría es Obligatoria',
'unit.required' => 'El Tipo de Unidad es Obligatorio',
'min_qty.required' => 'La Cantidad Mínima de Compra es Obligatoria',
'min_qty.numeric' => 'La Cantidad Mínima de Compra debe ser Numérica',
'unit_price.required' => 'El Precio del Producto es Obligatorio',
'unit_price.numeric' => 'El Precio del Producto debe ser Numérico',
'discount.required' => 'El Descuento es Obligatorio',
'discount.numeric' => 'El Descuento debe ser Numérico',
'discount.lt:unit_price' => 'El Descuento no Puede ser Mayor al Precio del Producto',
'current_stock.required' => 'El Número de Existencias es Obligatorio',
'current_stock.numeric' => 'El Número de Existencias debe ser Numérico',
];
}
/**
* Get the error messages for the defined validation rules.*
* @return array
*/
public function failedValidation(Validator $validator) {
// dd($this->expectsJson());
if ($this->expectsJson()) {
throw new HttpResponseException(response()->json([
'message' => $validator->errors()->all(),
'result' => false
], 422));
} else {
throw (new ValidationException($validator))
->errorBag($this->errorBag)
->redirectTo($this->getRedirectUrl());
}
}
}
|