From f4c09329a1c31c8aa31df10a4c332fe250a4c871 Mon Sep 17 00:00:00 2001 From: Noah Lancien Date: Tue, 25 Jun 2024 16:50:56 +0200 Subject: [PATCH 1/2] fix: Added a condition to validate the postal code according to the country --- .../Fo/Customers/CreateAccountRequest.php | 51 ++++++++++++++++++- 1 file changed, 49 insertions(+), 2 deletions(-) diff --git a/app/Http/Requests/Fo/Customers/CreateAccountRequest.php b/app/Http/Requests/Fo/Customers/CreateAccountRequest.php index dce27e1..80ba813 100644 --- a/app/Http/Requests/Fo/Customers/CreateAccountRequest.php +++ b/app/Http/Requests/Fo/Customers/CreateAccountRequest.php @@ -44,13 +44,28 @@ class CreateAccountRequest extends FormRequest */ public function rules() { + $countryEnum = Country::make($this->integer('country')); + return [ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', 'phone' => 'nullable|max:255|phone:FR', 'address' => 'required|string|min:1|max:255', 'address2' => 'nullable|string|min:1|max:255', - 'postal_code' => 'required|string|min:1|postal_code:FR,BE,LU', + 'postal_code' => [ + 'required', + 'string', + 'min:1', + $countryEnum->equals(Country::belgium()) ? + 'postal_code:BE' : + '', + $countryEnum->equals(Country::luxembourg()) ? + 'postal_code:LU' : + '', + (!$countryEnum->equals(Country::belgium()) && !$countryEnum->equals(Country::luxembourg())) ? + 'postal_code:FR' : + '', + ], 'city' => 'required|string|min:2|max:255', 'birth_date' => ['required', new IsAdult(trans('Vous devez être majeur pour vous inscrire.'))], 'country' => [ @@ -109,7 +124,7 @@ class CreateAccountRequest extends FormRequest */ public function messages() { - return [ + $messages = [ 'postal_code' => trans('validation.postal_code', [ 'countries' => \implode(', ', Country::getValidCountriesLabel()), 'examples' => 72000 ]), @@ -119,5 +134,37 @@ class CreateAccountRequest extends FormRequest 'email.unique' => trans('Un compte existe déjà avec cette adresse.'), 'ok_cgv.accepted' => trans('Vous devez accepter les conditions d\'utilisation du site pour continuer.') ]; + + $countryEnum = Country::make($this->integer('country')); + if ($countryEnum->equals(Country::belgium())) { + $messages = array_merge( + $messages, + [ + 'postal_code' => trans('validation.postal_code', [ + 'countries' => Country::belgium()->label, 'examples' => 1000 + ]), + ] + ); + } elseif ($countryEnum->equals(Country::luxembourg())) { + $messages = array_merge( + $messages, + [ + 'postal_code' => trans('validation.postal_code', [ + 'countries' => Country::luxembourg()->label, 'examples' => 1111 + ]), + ] + ); + } else { + $messages = array_merge( + $messages, + [ + 'postal_code' => trans('validation.postal_code', [ + 'countries' => \implode(', ', Country::getValidCountriesLabel()), 'examples' => 72000 + ]), + ] + ); + } //end if + + return $messages; } } From 854a2c7c4706f94616d6db85746356ea3489d407 Mon Sep 17 00:00:00 2001 From: Noah Lancien Date: Tue, 25 Jun 2024 17:39:20 +0200 Subject: [PATCH 2/2] fix: cleaned postal code condition --- .../Fo/Customers/CreateAccountRequest.php | 44 +++++++++---------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/app/Http/Requests/Fo/Customers/CreateAccountRequest.php b/app/Http/Requests/Fo/Customers/CreateAccountRequest.php index 80ba813..c1a9d67 100644 --- a/app/Http/Requests/Fo/Customers/CreateAccountRequest.php +++ b/app/Http/Requests/Fo/Customers/CreateAccountRequest.php @@ -4,6 +4,7 @@ namespace App\Http\Requests\Fo\Customers; use App\Rules\IsAdult; use Illuminate\Foundation\Http\FormRequest; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\Auth; use Illuminate\Validation\Rule; use Illuminate\Validation\Rules\Password; @@ -44,8 +45,6 @@ class CreateAccountRequest extends FormRequest */ public function rules() { - $countryEnum = Country::make($this->integer('country')); - return [ 'lastname' => 'required|string|max:255', 'firstname' => 'required|string|max:255', @@ -56,15 +55,11 @@ class CreateAccountRequest extends FormRequest 'required', 'string', 'min:1', - $countryEnum->equals(Country::belgium()) ? - 'postal_code:BE' : - '', - $countryEnum->equals(Country::luxembourg()) ? - 'postal_code:LU' : - '', - (!$countryEnum->equals(Country::belgium()) && !$countryEnum->equals(Country::luxembourg())) ? - 'postal_code:FR' : - '', + match ($this->integer('country')) { + Country::belgium()->value => 'postal_code:BE', + Country::luxembourg()->value => 'postal_code:LU', + default => 'postal_code:FR', + } ], 'city' => 'required|string|min:2|max:255', 'birth_date' => ['required', new IsAdult(trans('Vous devez être majeur pour vous inscrire.'))], @@ -135,35 +130,38 @@ class CreateAccountRequest extends FormRequest 'ok_cgv.accepted' => trans('Vous devez accepter les conditions d\'utilisation du site pour continuer.') ]; - $countryEnum = Country::make($this->integer('country')); - if ($countryEnum->equals(Country::belgium())) { - $messages = array_merge( + $messages = match ($this->integer('country')) { + Country::belgium()->value => array_merge( $messages, [ 'postal_code' => trans('validation.postal_code', [ 'countries' => Country::belgium()->label, 'examples' => 1000 ]), ] - ); - } elseif ($countryEnum->equals(Country::luxembourg())) { - $messages = array_merge( + ), + Country::luxembourg()->value => array_merge( $messages, [ 'postal_code' => trans('validation.postal_code', [ 'countries' => Country::luxembourg()->label, 'examples' => 1111 ]), ] - ); - } else { - $messages = array_merge( + ), + default => array_merge( $messages, [ 'postal_code' => trans('validation.postal_code', [ - 'countries' => \implode(', ', Country::getValidCountriesLabel()), 'examples' => 72000 + 'countries' => \implode(', ', Arr::except( + Country::getValidCountriesLabel(), + [ + array_search(Country::belgium()->label, Country::getValidCountriesLabel()), + array_search(Country::luxembourg()->label, Country::getValidCountriesLabel()), + ] + )), 'examples' => 72000 ]), ] - ); - } //end if + ), + }; //end match return $messages; }