From f86a57c632aaba3f74a02bd39563060e823a3bc3 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 13 Aug 2020 14:26:36 +1000 Subject: [PATCH 1/4] validation for payment number for store/update routes --- app/Http/Requests/Payment/StorePaymentRequest.php | 3 ++- app/Http/Requests/Payment/UpdatePaymentRequest.php | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Http/Requests/Payment/StorePaymentRequest.php b/app/Http/Requests/Payment/StorePaymentRequest.php index ce529aa6f9f5..9194aff53356 100644 --- a/app/Http/Requests/Payment/StorePaymentRequest.php +++ b/app/Http/Requests/Payment/StorePaymentRequest.php @@ -104,7 +104,8 @@ class StorePaymentRequest extends Request 'credits.*.credit_id' => new ValidCreditsRules($this->all()), 'credits.*.amount' => 'required', 'invoices' => new ValidPayableInvoicesRule(), - 'number' => 'nullable', + 'number' => 'nullable|unique:payments,number,' . $this->id . ',id,company_id,' . $this->company_id, + //'number' => 'nullable', ]; diff --git a/app/Http/Requests/Payment/UpdatePaymentRequest.php b/app/Http/Requests/Payment/UpdatePaymentRequest.php index 6149d3d142a8..a9e458011524 100644 --- a/app/Http/Requests/Payment/UpdatePaymentRequest.php +++ b/app/Http/Requests/Payment/UpdatePaymentRequest.php @@ -40,6 +40,7 @@ class UpdatePaymentRequest extends Request 'invoices' => ['array',new PaymentAppliedValidAmount,new ValidCreditsPresentRule], 'invoices.*.invoice_id' => 'distinct', 'documents' => 'mimes:png,ai,svg,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx', + 'number' = 'nullable|unique:payments,number,' . $this->id . ',id,company_id,' . $this->company_id, ]; if ($this->input('documents') && is_array($this->input('documents'))) { From 1415434d345239145de64eaae372d8790acd18e0 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 13 Aug 2020 16:15:46 +1000 Subject: [PATCH 2/4] tests --- .../Requests/Credit/StoreCreditRequest.php | 3 + .../Credit/UniqueCreditNumberRule.php | 70 +++++++++++++++++++ .../Requests/Credit/UpdateCreditRequest.php | 3 + app/Http/Requests/Quote/StoreQuoteRequest.php | 3 + .../Requests/Quote/UniqueQuoteNumberRule.php | 70 +++++++++++++++++++ .../Requests/Quote/UpdateQuoteRequest.php | 4 ++ 6 files changed, 153 insertions(+) create mode 100644 app/Http/Requests/Credit/UniqueCreditNumberRule.php create mode 100644 app/Http/Requests/Quote/UniqueQuoteNumberRule.php diff --git a/app/Http/Requests/Credit/StoreCreditRequest.php b/app/Http/Requests/Credit/StoreCreditRequest.php index 41d17230e1f6..4b18e185affc 100644 --- a/app/Http/Requests/Credit/StoreCreditRequest.php +++ b/app/Http/Requests/Credit/StoreCreditRequest.php @@ -2,6 +2,7 @@ namespace App\Http\Requests\Credit; +use App\Http\ValidationRules\Credit\UniqueCreditNumberRule; use App\Models\Credit; use App\Utils\Traits\CleanLineItems; use App\Utils\Traits\MakesHash; @@ -42,6 +43,8 @@ class StoreCreditRequest extends FormRequest } $rules['client_id'] = 'required|exists:clients,id,company_id,'.auth()->user()->company()->id; + + $rules['number'] = new UniqueCreditNumberRule($this->all()); return $rules; } diff --git a/app/Http/Requests/Credit/UniqueCreditNumberRule.php b/app/Http/Requests/Credit/UniqueCreditNumberRule.php new file mode 100644 index 000000000000..2374ff71695c --- /dev/null +++ b/app/Http/Requests/Credit/UniqueCreditNumberRule.php @@ -0,0 +1,70 @@ +input = $input; + } + + /** + * @param string $attribute + * @param mixed $value + * @return bool + */ + public function passes($attribute, $value) + { + return $this->checkIfCreditNumberUnique(); //if it exists, return false! + } + + /** + * @return string + */ + public function message() + { + return "Credit number already taken"; + } + + /** + * @param $email + * + * //off,when_sent,when_paid + * + * @return bool + */ + private function checkIfCreditNumberUnique() : bool + { + + $credit = Credit::where('client_id', $this->input['client_id']) + ->where('number', $this->input['number']) + ->withTrashed() + ->exists(); + + if($credit) + return false; + + return true; + } +} diff --git a/app/Http/Requests/Credit/UpdateCreditRequest.php b/app/Http/Requests/Credit/UpdateCreditRequest.php index 6e268a1a4bd0..226ab271bb8f 100644 --- a/app/Http/Requests/Credit/UpdateCreditRequest.php +++ b/app/Http/Requests/Credit/UpdateCreditRequest.php @@ -42,6 +42,9 @@ class UpdateCreditRequest extends FormRequest $rules['documents'] = 'file|mimes:png,ai,svg,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx|max:20000'; } + if($this->input('number')) + $rules['number'] = 'unique:quotes,number,' . $this->id . ',id,company_id,' . $this->invoice->company_id; + return $rules; } diff --git a/app/Http/Requests/Quote/StoreQuoteRequest.php b/app/Http/Requests/Quote/StoreQuoteRequest.php index fce0c0df72b5..a51f44042e76 100644 --- a/app/Http/Requests/Quote/StoreQuoteRequest.php +++ b/app/Http/Requests/Quote/StoreQuoteRequest.php @@ -12,6 +12,7 @@ namespace App\Http\Requests\Quote; use App\Http\Requests\Request; +use App\Http\ValidationRules\Quote\UniqueQuoteNumberRule; use App\Models\Quote; use App\Utils\Traits\CleanLineItems; use App\Utils\Traits\MakesHash; @@ -93,6 +94,8 @@ class StoreQuoteRequest extends Request $rules['documents'] = 'file|mimes:png,ai,svg,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx|max:20000'; } + $rules['number'] = new UniqueQuoteNumberRule($this->all()); + return $rules; } diff --git a/app/Http/Requests/Quote/UniqueQuoteNumberRule.php b/app/Http/Requests/Quote/UniqueQuoteNumberRule.php new file mode 100644 index 000000000000..31821683daca --- /dev/null +++ b/app/Http/Requests/Quote/UniqueQuoteNumberRule.php @@ -0,0 +1,70 @@ +input = $input; + } + + /** + * @param string $attribute + * @param mixed $value + * @return bool + */ + public function passes($attribute, $value) + { + return $this->checkIfQuoteNumberUnique(); //if it exists, return false! + } + + /** + * @return string + */ + public function message() + { + return "Quote number already taken"; + } + + /** + * @param $email + * + * //off,when_sent,when_paid + * + * @return bool + */ + private function checkIfQuoteNumberUnique() : bool + { + + $quote = Quote::where('client_id', $this->input['client_id']) + ->where('number', $this->input['number']) + ->withTrashed() + ->exists(); + + if($quote) + return false; + + return true; + } +} diff --git a/app/Http/Requests/Quote/UpdateQuoteRequest.php b/app/Http/Requests/Quote/UpdateQuoteRequest.php index db30733f32ca..a32a930f1e59 100644 --- a/app/Http/Requests/Quote/UpdateQuoteRequest.php +++ b/app/Http/Requests/Quote/UpdateQuoteRequest.php @@ -49,6 +49,10 @@ class UpdateQuoteRequest extends Request } elseif ($this->input('documents')) { $rules['documents'] = 'file|mimes:png,ai,svg,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx|max:20000'; } + + if($this->input('number')) + $rules['number'] = 'unique:quotes,number,' . $this->id . ',id,company_id,' . $this->invoice->company_id; + return $rules; } From 7bde9d6967d770b4f0d9514250193f8ea9b3c7de Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 13 Aug 2020 19:59:29 +1000 Subject: [PATCH 3/4] Fixes for tests --- app/DataMapper/CompanySettings.php | 2 +- app/Http/Requests/Payment/UpdatePaymentRequest.php | 2 +- app/Transformers/ClientGatewayTokenTransformer.php | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/DataMapper/CompanySettings.php b/app/DataMapper/CompanySettings.php index 2ee72347d74b..4c3b01bf6f5d 100644 --- a/app/DataMapper/CompanySettings.php +++ b/app/DataMapper/CompanySettings.php @@ -72,7 +72,7 @@ class CompanySettings extends BaseSettings public $translations; - public $counter_number_applied = 'when_saved';// when_saved , when_sent , when_paid + public $counter_number_applied = 'when_saved';// when_saved , when_sent public $quote_number_applied = 'when_saved';// when_saved , when_sent /* Counters */ diff --git a/app/Http/Requests/Payment/UpdatePaymentRequest.php b/app/Http/Requests/Payment/UpdatePaymentRequest.php index a9e458011524..801c55654a32 100644 --- a/app/Http/Requests/Payment/UpdatePaymentRequest.php +++ b/app/Http/Requests/Payment/UpdatePaymentRequest.php @@ -40,7 +40,7 @@ class UpdatePaymentRequest extends Request 'invoices' => ['array',new PaymentAppliedValidAmount,new ValidCreditsPresentRule], 'invoices.*.invoice_id' => 'distinct', 'documents' => 'mimes:png,ai,svg,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx', - 'number' = 'nullable|unique:payments,number,' . $this->id . ',id,company_id,' . $this->company_id, + 'number' => 'nullable|unique:payments,number,' . $this->id . ',id,company_id,' . $this->company_id, ]; if ($this->input('documents') && is_array($this->input('documents'))) { diff --git a/app/Transformers/ClientGatewayTokenTransformer.php b/app/Transformers/ClientGatewayTokenTransformer.php index 116e31c4ffed..69a22bd69220 100644 --- a/app/Transformers/ClientGatewayTokenTransformer.php +++ b/app/Transformers/ClientGatewayTokenTransformer.php @@ -36,6 +36,7 @@ class ClientGatewayTokenTransformer extends EntityTransformer 'gateway_type_id' => (string)$cgt->gateway_type_id ?: '', 'company_gateway_id' => (string)$this->encodePrimaryKey($cgt->company_gateway_id) ?: '', 'is_default' => (bool) $cgt->is_default, + 'meta' => $cgt->meta, 'created_at' => (int)$cgt->created_at, 'updated_at' => (int)$cgt->updated_at, 'archived_at' => (int)$cgt->deleted_at, From 52cc02199bcbea154e421d5fcc7c6370189125e5 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Thu, 13 Aug 2020 20:06:48 +1000 Subject: [PATCH 4/4] Remove Photo Design --- .../2020_08_13_095946_remove_photo_design.php | 32 +++++++++++++++++++ database/seeds/DesignSeeder.php | 1 - 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 database/migrations/2020_08_13_095946_remove_photo_design.php diff --git a/database/migrations/2020_08_13_095946_remove_photo_design.php b/database/migrations/2020_08_13_095946_remove_photo_design.php new file mode 100644 index 000000000000..299a0f46460d --- /dev/null +++ b/database/migrations/2020_08_13_095946_remove_photo_design.php @@ -0,0 +1,32 @@ +forceDelete(); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/seeds/DesignSeeder.php b/database/seeds/DesignSeeder.php index 03a191eb71fe..129a308de848 100644 --- a/database/seeds/DesignSeeder.php +++ b/database/seeds/DesignSeeder.php @@ -25,7 +25,6 @@ class DesignSeeder extends Seeder ['id' => 7, 'name' => 'Elegant', 'user_id' => null, 'company_id' => null, 'is_custom' => false, 'design' => '', 'is_active' => true], ['id' => 8, 'name' => 'Hipster', 'user_id' => null, 'company_id' => null, 'is_custom' => false, 'design' => '', 'is_active' => true], ['id' => 9, 'name' => 'Playful', 'user_id' => null, 'company_id' => null, 'is_custom' => false, 'design' => '', 'is_active' => true], - ['id' => 10, 'name' => 'Photo', 'user_id' => null, 'company_id' => null, 'is_custom' => false, 'design' => '', 'is_active' => true], ]; foreach ($designs as $design) {