From a5fd1dc5ea9a1f3b0bfe2a51c14d5be136a2cd65 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sat, 17 Feb 2024 05:57:15 +1100 Subject: [PATCH] Improvements for validation --- .../Requests/Client/StoreClientRequest.php | 4 ++- .../Requests/Client/UpdateClientRequest.php | 4 +-- .../Requests/Credit/StoreCreditRequest.php | 2 ++ .../Requests/Credit/UpdateCreditRequest.php | 2 ++ .../Requests/Expense/StoreExpenseRequest.php | 1 + .../Requests/Expense/UpdateExpenseRequest.php | 25 +++++++++++++------ .../Requests/Invoice/StoreInvoiceRequest.php | 3 +++ .../Requests/Invoice/UpdateInvoiceRequest.php | 3 +++ .../Requests/Payment/StorePaymentRequest.php | 2 ++ .../Requests/Payment/UpdatePaymentRequest.php | 2 ++ .../Requests/Product/StoreProductRequest.php | 2 ++ .../Requests/Product/UpdateProductRequest.php | 8 +++++- .../Requests/Project/StoreProjectRequest.php | 2 ++ .../Requests/Project/UpdateProjectRequest.php | 2 ++ .../StorePurchaseOrderRequest.php | 2 ++ .../UpdatePurchaseOrderRequest.php | 2 ++ app/Http/Requests/Quote/StoreQuoteRequest.php | 5 ++-- .../Requests/Quote/UpdateQuoteRequest.php | 2 ++ .../StoreRecurringInvoiceRequest.php | 2 ++ .../UpdateRecurringInvoiceRequest.php | 2 ++ app/Http/Requests/Task/StoreTaskRequest.php | 2 ++ app/Http/Requests/Task/UpdateTaskRequest.php | 2 ++ .../Requests/Vendor/StoreVendorRequest.php | 2 ++ .../Requests/Vendor/UpdateVendorRequest.php | 2 ++ 24 files changed, 71 insertions(+), 14 deletions(-) diff --git a/app/Http/Requests/Client/StoreClientRequest.php b/app/Http/Requests/Client/StoreClientRequest.php index 46b8bf9a2a..30697ab9b0 100644 --- a/app/Http/Requests/Client/StoreClientRequest.php +++ b/app/Http/Requests/Client/StoreClientRequest.php @@ -49,6 +49,9 @@ class StoreClientRequest extends Request } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; } + else { + $rules['documents'] = 'bail|sometimes|array'; + } if ($this->file('file') && is_array($this->file('file'))) { $rules['file.*'] = $this->file_validation; @@ -94,7 +97,6 @@ class StoreClientRequest extends Request $rules['number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', $user->company()->id)]; $rules['id_number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', $user->company()->id)]; $rules['classification'] = 'bail|sometimes|nullable|in:individual,business,company,partnership,trust,charity,government,other'; - $rules['documents'] = 'bail|sometimes|array'; return $rules; } diff --git a/app/Http/Requests/Client/UpdateClientRequest.php b/app/Http/Requests/Client/UpdateClientRequest.php index 26ae1f517d..11b8c4a60f 100644 --- a/app/Http/Requests/Client/UpdateClientRequest.php +++ b/app/Http/Requests/Client/UpdateClientRequest.php @@ -53,6 +53,8 @@ class UpdateClientRequest extends Request $rules['file.*'] = $this->file_validation; } elseif ($this->file('file')) { $rules['file'] = $this->file_validation; + } else { + $rules['documents'] = 'bail|sometimes|array'; } $rules['company_logo'] = 'mimes:jpeg,jpg,png,gif|max:10000'; @@ -84,8 +86,6 @@ class UpdateClientRequest extends Request //'regex:/[@$!%*#?&.]/', // must contain a special character ]; - $rules['documents'] = 'bail|sometimes|array'; - return $rules; } diff --git a/app/Http/Requests/Credit/StoreCreditRequest.php b/app/Http/Requests/Credit/StoreCreditRequest.php index 8d01aefc95..c24005063d 100644 --- a/app/Http/Requests/Credit/StoreCreditRequest.php +++ b/app/Http/Requests/Credit/StoreCreditRequest.php @@ -50,6 +50,8 @@ class StoreCreditRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Credit/UpdateCreditRequest.php b/app/Http/Requests/Credit/UpdateCreditRequest.php index 5ec021bc6e..7c0c3adc02 100644 --- a/app/Http/Requests/Credit/UpdateCreditRequest.php +++ b/app/Http/Requests/Credit/UpdateCreditRequest.php @@ -52,6 +52,8 @@ class UpdateCreditRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Expense/StoreExpenseRequest.php b/app/Http/Requests/Expense/StoreExpenseRequest.php index 9bab8f25b3..72c2e75068 100644 --- a/app/Http/Requests/Expense/StoreExpenseRequest.php +++ b/app/Http/Requests/Expense/StoreExpenseRequest.php @@ -52,6 +52,7 @@ class StoreExpenseRequest extends Request $rules['category_id'] = 'bail|nullable|sometimes|exists:expense_categories,id,company_id,'.$user->company()->id.',is_deleted,0'; $rules['payment_date'] = 'bail|nullable|sometimes|date:Y-m-d'; $rules['date'] = 'bail|sometimes|date:Y-m-d'; + $rules['documents'] = 'bail|sometimes|array'; return $this->globalRules($rules); } diff --git a/app/Http/Requests/Expense/UpdateExpenseRequest.php b/app/Http/Requests/Expense/UpdateExpenseRequest.php index 961a15709d..bece7242b0 100644 --- a/app/Http/Requests/Expense/UpdateExpenseRequest.php +++ b/app/Http/Requests/Expense/UpdateExpenseRequest.php @@ -29,25 +29,32 @@ class UpdateExpenseRequest extends Request */ public function authorize(): bool { - return auth()->user()->can('edit', $this->expense); + /** @var \App\Models\User $user */ + $user = auth()->user(); + + return $user->can('edit', $this->expense); } public function rules() { + /** @var \App\Models\User $user */ + $user = auth()->user(); + /* Ensure we have a client name, and that all emails are unique*/ $rules = []; if (isset($this->number)) { - $rules['number'] = Rule::unique('expenses')->where('company_id', auth()->user()->company()->id)->ignore($this->expense->id); + $rules['number'] = Rule::unique('expenses')->where('company_id', $user->company()->id)->ignore($this->expense->id); } if ($this->client_id) { - $rules['client_id'] = 'bail|sometimes|exists:clients,id,company_id,'.auth()->user()->company()->id; + $rules['client_id'] = 'bail|sometimes|exists:clients,id,company_id,'.$user->company()->id; } - $rules['category_id'] = 'bail|sometimes|nullable|exists:expense_categories,id,company_id,'.auth()->user()->company()->id.',is_deleted,0'; - $rules['transaction_id'] = 'bail|sometimes|nullable|exists:bank_transactions,id,company_id,'.auth()->user()->company()->id; - $rules['invoice_id'] = 'bail|sometimes|nullable|exists:invoices,id,company_id,'.auth()->user()->company()->id; + $rules['category_id'] = 'bail|sometimes|nullable|exists:expense_categories,id,company_id,'.$user->company()->id.',is_deleted,0'; + $rules['transaction_id'] = 'bail|sometimes|nullable|exists:bank_transactions,id,company_id,'.$user->company()->id; + $rules['invoice_id'] = 'bail|sometimes|nullable|exists:invoices,id,company_id,'.$user->company()->id; + $rules['documents'] = 'bail|sometimes|array'; return $this->globalRules($rules); @@ -55,6 +62,10 @@ class UpdateExpenseRequest extends Request public function prepareForValidation() { + + /** @var \App\Models\User $user */ + $user = auth()->user(); + $input = $this->all(); $input = $this->decodePrimaryKeys($input); @@ -64,7 +75,7 @@ class UpdateExpenseRequest extends Request } if (! array_key_exists('currency_id', $input) || strlen($input['currency_id']) == 0) { - $input['currency_id'] = (string) auth()->user()->company()->settings->currency_id; + $input['currency_id'] = (string) $user->company()->settings->currency_id; } /* Ensure the project is related */ diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php index acd2ad0655..018a1d7c7b 100644 --- a/app/Http/Requests/Invoice/StoreInvoiceRequest.php +++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php @@ -47,6 +47,8 @@ class StoreInvoiceRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { @@ -76,6 +78,7 @@ class StoreInvoiceRequest extends Request $rules['partial'] = 'bail|sometimes|nullable|numeric|gte:0'; $rules['partial_due_date'] = ['bail', 'sometimes', 'exclude_if:partial,0', Rule::requiredIf(fn () => $this->partial > 0), 'date']; + return $rules; } diff --git a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php index ad4d584ae6..501c2bab31 100644 --- a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php +++ b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php @@ -49,6 +49,8 @@ class UpdateInvoiceRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { @@ -77,6 +79,7 @@ class UpdateInvoiceRequest extends Request $rules['partial'] = 'bail|sometimes|nullable|numeric'; $rules['partial_due_date'] = ['bail', 'sometimes', 'exclude_if:partial,0', Rule::requiredIf(fn () => $this->partial > 0), 'date', 'before:due_date']; + return $rules; } diff --git a/app/Http/Requests/Payment/StorePaymentRequest.php b/app/Http/Requests/Payment/StorePaymentRequest.php index 361d9e07f5..25b3b43500 100644 --- a/app/Http/Requests/Payment/StorePaymentRequest.php +++ b/app/Http/Requests/Payment/StorePaymentRequest.php @@ -126,6 +126,8 @@ class StorePaymentRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Payment/UpdatePaymentRequest.php b/app/Http/Requests/Payment/UpdatePaymentRequest.php index 208f0445f0..52a3c29d89 100644 --- a/app/Http/Requests/Payment/UpdatePaymentRequest.php +++ b/app/Http/Requests/Payment/UpdatePaymentRequest.php @@ -55,6 +55,8 @@ class UpdatePaymentRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Product/StoreProductRequest.php b/app/Http/Requests/Product/StoreProductRequest.php index 9619815078..c53ad07edb 100644 --- a/app/Http/Requests/Product/StoreProductRequest.php +++ b/app/Http/Requests/Product/StoreProductRequest.php @@ -35,6 +35,8 @@ class StoreProductRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Product/UpdateProductRequest.php b/app/Http/Requests/Product/UpdateProductRequest.php index 1434945dcc..0a76f6a4ab 100644 --- a/app/Http/Requests/Product/UpdateProductRequest.php +++ b/app/Http/Requests/Product/UpdateProductRequest.php @@ -25,7 +25,11 @@ class UpdateProductRequest extends Request */ public function authorize(): bool { - return auth()->user()->can('edit', $this->product); + + /** @var \App\Models\User $user */ + $user = auth()->user(); + + return $user->can('edit', $this->product); } public function rules() @@ -34,6 +38,8 @@ class UpdateProductRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Project/StoreProjectRequest.php b/app/Http/Requests/Project/StoreProjectRequest.php index b57cb6ffa8..8f8e4760df 100644 --- a/app/Http/Requests/Project/StoreProjectRequest.php +++ b/app/Http/Requests/Project/StoreProjectRequest.php @@ -53,6 +53,8 @@ class StoreProjectRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Project/UpdateProjectRequest.php b/app/Http/Requests/Project/UpdateProjectRequest.php index fd5ea29a34..e68c903837 100644 --- a/app/Http/Requests/Project/UpdateProjectRequest.php +++ b/app/Http/Requests/Project/UpdateProjectRequest.php @@ -49,6 +49,8 @@ class UpdateProjectRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php b/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php index e08db93727..91564eab09 100644 --- a/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php +++ b/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php @@ -57,6 +57,8 @@ class StorePurchaseOrderRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + } else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/PurchaseOrder/UpdatePurchaseOrderRequest.php b/app/Http/Requests/PurchaseOrder/UpdatePurchaseOrderRequest.php index ce9ce0f938..66984cd29a 100644 --- a/app/Http/Requests/PurchaseOrder/UpdatePurchaseOrderRequest.php +++ b/app/Http/Requests/PurchaseOrder/UpdatePurchaseOrderRequest.php @@ -59,6 +59,8 @@ class UpdatePurchaseOrderRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Quote/StoreQuoteRequest.php b/app/Http/Requests/Quote/StoreQuoteRequest.php index 50094a2628..3e0a498610 100644 --- a/app/Http/Requests/Quote/StoreQuoteRequest.php +++ b/app/Http/Requests/Quote/StoreQuoteRequest.php @@ -49,6 +49,8 @@ class StoreQuoteRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { @@ -59,11 +61,8 @@ class StoreQuoteRequest extends Request $rules['number'] = ['nullable', Rule::unique('quotes')->where('company_id', $user->company()->id)]; $rules['discount'] = 'sometimes|numeric'; - $rules['is_amount_discount'] = ['boolean']; $rules['exchange_rate'] = 'bail|sometimes|numeric'; - - // $rules['number'] = new UniqueQuoteNumberRule($this->all()); $rules['line_items'] = 'array'; return $rules; diff --git a/app/Http/Requests/Quote/UpdateQuoteRequest.php b/app/Http/Requests/Quote/UpdateQuoteRequest.php index 94dc735a59..4644e5af69 100644 --- a/app/Http/Requests/Quote/UpdateQuoteRequest.php +++ b/app/Http/Requests/Quote/UpdateQuoteRequest.php @@ -46,6 +46,8 @@ class UpdateQuoteRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php b/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php index af9a456733..7d69a2587e 100644 --- a/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php +++ b/app/Http/Requests/RecurringInvoice/StoreRecurringInvoiceRequest.php @@ -49,6 +49,8 @@ class StoreRecurringInvoiceRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php b/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php index 8800ab04a0..f59edc91d6 100644 --- a/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php +++ b/app/Http/Requests/RecurringInvoice/UpdateRecurringInvoiceRequest.php @@ -48,6 +48,8 @@ class UpdateRecurringInvoiceRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Task/StoreTaskRequest.php b/app/Http/Requests/Task/StoreTaskRequest.php index df09bf3ae0..e5fee49132 100644 --- a/app/Http/Requests/Task/StoreTaskRequest.php +++ b/app/Http/Requests/Task/StoreTaskRequest.php @@ -82,6 +82,8 @@ class StoreTaskRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Task/UpdateTaskRequest.php b/app/Http/Requests/Task/UpdateTaskRequest.php index 0b367b6283..299905d8cd 100644 --- a/app/Http/Requests/Task/UpdateTaskRequest.php +++ b/app/Http/Requests/Task/UpdateTaskRequest.php @@ -88,6 +88,8 @@ class UpdateTaskRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Vendor/StoreVendorRequest.php b/app/Http/Requests/Vendor/StoreVendorRequest.php index 5ad488e2a6..7cb6fc14f1 100644 --- a/app/Http/Requests/Vendor/StoreVendorRequest.php +++ b/app/Http/Requests/Vendor/StoreVendorRequest.php @@ -64,6 +64,8 @@ class StoreVendorRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) { diff --git a/app/Http/Requests/Vendor/UpdateVendorRequest.php b/app/Http/Requests/Vendor/UpdateVendorRequest.php index cf2d5a884f..b06b861adf 100644 --- a/app/Http/Requests/Vendor/UpdateVendorRequest.php +++ b/app/Http/Requests/Vendor/UpdateVendorRequest.php @@ -65,6 +65,8 @@ class UpdateVendorRequest extends Request $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { $rules['documents'] = $this->file_validation; + }else { + $rules['documents'] = 'bail|sometimes|array'; } if ($this->file('file') && is_array($this->file('file'))) {