diff --git a/app/Http/Requests/Document/Document.php b/app/Http/Requests/Document/Document.php index f52a3fd12..1b8398250 100644 --- a/app/Http/Requests/Document/Document.php +++ b/app/Http/Requests/Document/Document.php @@ -9,6 +9,8 @@ use Illuminate\Support\Str; class Document extends FormRequest { + protected $items_quantity_size = []; + /** * Get the validation rules that apply to the request. * @@ -43,13 +45,7 @@ class Document extends FormRequest // Get company id $company_id = (int) $this->request->get('company_id'); - $quantity_size = 5; - - if ((Str::substrCount($this->request->get('quantity'), '.') > 1) || (Str::substrCount($this->request->get('quantity'), ',') > 1)) { - $quantity_size = 7; - } - - return [ + $rules = [ 'type' => 'required|string', 'document_number' => 'required|string|unique:documents,NULL,' . $id . ',id,type,' . $type . ',company_id,' . $company_id . ',deleted_at,NULL', 'status' => 'required|string', @@ -57,7 +53,6 @@ class Document extends FormRequest 'due_at' => 'required|date_format:Y-m-d H:i:s|after_or_equal:issued_at', 'amount' => 'required', 'items.*.name' => 'required|string', - 'items.*.quantity' => 'required|max:' . $quantity_size, 'items.*.price' => 'required|amount', 'currency_code' => 'required|string|currency', 'currency_rate' => 'required|gt:0', @@ -67,6 +62,23 @@ class Document extends FormRequest 'company_logo' => $company_logo, 'attachment.*' => $attachment, ]; + + $items = $this->request->get('items'); + + if ($items) { + foreach ($items as $key => $item) { + $size = 5; + + if (Str::contains($item['quantity'], ['.', ','])) { + $size = 7; + } + + $rules['items.' . $key . '.quantity'] = 'required|max:' . $size; + $this->items_quantity_size[$key] = $size; + } + } + + return $rules; } public function withValidator($validator) @@ -83,13 +95,20 @@ class Document extends FormRequest public function messages() { - return [ + $messages = [ 'items.*.name.required' => trans('validation.required', ['attribute' => Str::lower(trans('general.name'))]), 'items.*.quantity.required' => trans('validation.required', ['attribute' => Str::lower(trans('invoices.quantity'))]), - 'items.*.quantity.size' => trans('validation.size', ['attribute' => Str::lower(trans('invoices.quantity'))]), 'items.*.price.required' => trans('validation.required', ['attribute' => Str::lower(trans('invoices.price'))]), 'items.*.currency.required' => trans('validation.custom.invalid_currency'), 'items.*.currency.string' => trans('validation.custom.invalid_currency'), ]; + + if ($this->items_quantity_size) { + foreach ($this->items_quantity_size as $key => $quantity_size) { + $messages['items.' . $key . '.quantity.max'] = trans('validation.size', ['attribute' => Str::lower(trans('invoices.quantity')), 'size' => $quantity_size]); + } + } + + return $messages; } } diff --git a/app/Http/Requests/Document/DocumentItem.php b/app/Http/Requests/Document/DocumentItem.php index d901eea3f..5e9cdb019 100644 --- a/app/Http/Requests/Document/DocumentItem.php +++ b/app/Http/Requests/Document/DocumentItem.php @@ -7,6 +7,8 @@ use Illuminate\Support\Str; class DocumentItem extends FormRequest { + protected $quantity_size = 5; + /** * Get the validation rules that apply to the request. * @@ -14,21 +16,26 @@ class DocumentItem extends FormRequest */ public function rules() { - $quantity_size = 5; - - if ((Str::substrCount($this->request->get('quantity'), '.') > 1) || (Str::substrCount($this->request->get('quantity'), ',') > 1)) { - $quantity_size = 7; + if (Str::contains($item['quantity'], ['.', ','])) { + $this->quantity_size = 7; } return [ 'type' => 'required|string', 'document_id' => 'required|integer', 'name' => 'required|string', - 'quantity' => 'required|max:' . $quantity_size, + 'quantity' => 'required|max:' . $this->quantity_size, 'price' => 'required|amount', 'total' => 'required', 'tax' => 'required', 'tax_id' => 'required', ]; } + + public function messages() + { + return [ + 'quantity.max' => trans('validation.size', ['attribute' => Str::lower(trans('invoices.quantity')), 'size' => $this->quantity_size]), + ]; + } }