File "AddOrderProductRequest.php"
Full Path: /home/clickysoft/public_html/jmapi5.clickysoft.net/app/Http/Requests/Admin/AddOrderProductRequest.php
File size: 2.82 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Requests\Admin;
use App\Models\Order;
use App\Rules\ValidateImage;
use App\Rules\ValidateRange;
use Illuminate\Foundation\Http\FormRequest;
use Gate;
class AddOrderProductRequest extends FormRequest
{
public function authorize()
{
return Gate::allows('order_edit');
}
public function rules()
{
return [
'order_id' => [
'required',
'exists:orders,id'
],
'products' => [
'required',
'array',
],
'products.*.product_id' => [
'required',
'integer',
'exists:products,id',
],
'products.*.price_id' => [
'required',
'integer',
'exists:product_prices,id',
],
'products.*.quantity' => [
'required',
'integer',
'min:1',
new ValidateRange,
],
'products.*.customization' => [
'nullable',
'json',
],
'products.*.template' => [
'nullable',
'mimes:pdf,application/pdf',
'max:5120',
],
'products.*.image' => [
'nullable',
new ValidateImage,
],
];
}
public function messages()
{
return [
'products.*.product_id.required' => 'Product id for product #:position is required.',
'products.*.product_id.integer' => 'Product id for product #:position must be an integer.',
'products.*.product_id.exists' => 'Product id for product #:position is invalid.',
'products.*.price_id.required' => 'Price id for product #:position is required.',
'products.*.price_id.integer' => 'Price id for product #:position must be an integer.',
'products.*.price_id.exists' => 'Price id for product #:position is invalid.',
'products.*.quantity.required' => 'Quantity for product #:position is required.',
'products.*.quantity.integer' => 'Quantity for product #:position must be an integer.',
'products.*.quantity.min' => 'Quantity for product #:position must be greater than 0.',
'products.*.customization.json' => 'Customization for product #:position must be json.',
'products.*.template.mimes' => 'Template for product #:position must be of type pdf.',
'products.*.template.max' => 'Template size for product #:position can not exceed 5MB.',
'products.*.image.mimes' => 'Image for product #:position must be of type jpg, jpeg, png.',
'products.*.image.max' => 'Image size for product #:position can not exceed 5MB.',
];
}
}