diff --git a/app/Http/Requests/Client/UpdateClientRequest.php b/app/Http/Requests/Client/UpdateClientRequest.php index e322ad0a29f3..c230597960ae 100644 --- a/app/Http/Requests/Client/UpdateClientRequest.php +++ b/app/Http/Requests/Client/UpdateClientRequest.php @@ -16,6 +16,7 @@ use App\Http\Requests\Request; use App\Http\ValidationRules\ValidClientGroupSettingsRule; use App\Utils\Traits\ChecksEntityStatus; use App\Utils\Traits\MakesHash; +use Illuminate\Validation\Rule; class UpdateClientRequest extends Request { @@ -52,7 +53,14 @@ class UpdateClientRequest extends Request $rules['country_id'] = 'integer|nullable'; $rules['shipping_country_id'] = 'integer|nullable'; //$rules['id_number'] = 'unique:clients,id_number,,id,company_id,' . auth()->user()->company()->id; - $rules['id_number'] = 'unique:clients,id_number,'.$this->id.',id,company_id,'.$this->company_id; + //$rules['id_number'] = 'unique:clients,id_number,'.$this->id.',id,company_id,'.$this->company_id; + + if($this->id_number) + $rules['id_number'] = Rule::unique('clients')->where('company_id', auth()->user()->company()->id)->ignore($this->client->id); + + if($this->number) + $rules['number'] = Rule::unique('clients')->where('company_id', auth()->user()->company()->id)->ignore($this->client->id); + $rules['settings'] = new ValidClientGroupSettingsRule(); $rules['contacts.*.email'] = 'bail|nullable|distinct|sometimes|email'; $rules['contacts.*.password'] = [ @@ -72,7 +80,6 @@ class UpdateClientRequest extends Request public function messages() { return [ - 'unique' => ctrans('validation.unique', ['attribute' => 'email']), 'email' => ctrans('validation.email', ['attribute' => 'email']), 'name.required' => ctrans('validation.required', ['attribute' => 'name']), 'required' => ctrans('validation.required', ['attribute' => 'email']), diff --git a/app/Http/Requests/Payment/UpdatePaymentRequest.php b/app/Http/Requests/Payment/UpdatePaymentRequest.php index e5436b55bb12..e576b182a71f 100644 --- a/app/Http/Requests/Payment/UpdatePaymentRequest.php +++ b/app/Http/Requests/Payment/UpdatePaymentRequest.php @@ -35,12 +35,15 @@ class UpdatePaymentRequest extends Request public function rules() { $rules = [ - 'number' => 'nullable|unique:payments,number,'.$this->id.',id,company_id,'.$this->payment->company_id, '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', ]; + if ($this->input('number')) { + $rules['number'] = 'nullable|unique:payments,number,'.$this->id.',id,company_id,'.$this->payment->company_id; + } + if ($this->input('documents') && is_array($this->input('documents'))) { $documents = count($this->input('documents')); diff --git a/database/migrations/2021_03_19_221024_add_unique_constraints_on_all_entities.php b/database/migrations/2021_03_19_221024_add_unique_constraints_on_all_entities.php new file mode 100644 index 000000000000..a1a1d2d01921 --- /dev/null +++ b/database/migrations/2021_03_19_221024_add_unique_constraints_on_all_entities.php @@ -0,0 +1,65 @@ +unique(['company_id', 'number']); + }); + + Schema::table('tasks', function (Blueprint $table) { + $table->unique(['company_id', 'number']); + }); + + Schema::table('vendors', function (Blueprint $table) { + $table->unique(['company_id', 'number']); + }); + + Schema::table('payments', function (Blueprint $table) { + $table->unique(['company_id', 'number']); + }); + + Schema::table('projects', function (Blueprint $table) { + $table->unique(['company_id', 'number']); + }); + + Schema::table('clients', function (Blueprint $table) { + $table->unique(['company_id', 'number']); + }); + + Schema::table('payment_hashes', function (Blueprint $table) { + $table->unique(['hash']); + }); + + Schema::table('recurring_invoices', function (Blueprint $table) { + $table->string('number')->change(); + $table->unique(['company_id', 'number']); + }); + + Schema::table('recurring_invoice_invitations', function (Blueprint $table) { + $table->unique(['client_contact_id', 'recurring_invoice_id'],'recur_invoice_client_unique'); + }); + + + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +}