From: soufiane Date: Thu, 23 Mar 2023 17:00:52 +0000 (+0100) Subject: wip #5789 @6:00 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=c21108033e85e9e63ea073123afecaad547bd91d;p=pmi.git wip #5789 @6:00 --- diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php index 495786e..5fb9257 100644 --- a/app/Http/Controllers/AjaxController.php +++ b/app/Http/Controllers/AjaxController.php @@ -288,9 +288,16 @@ class AjaxController extends CubistFrontController public function validation_form(Request $request, $validation){ $messages = [ - '*.required' => __('Ce champs est requis'), + '*.required' => __('Veuillez remplir les champs obligatoires'), 'email.email' => __('Veuillez indiquer une adresse email valide'), - 'email.unique' => __('Cette adresse existe déjà') + 'email.unique' => __('Cette adresse existe déjà'), + 'password.min' => __('Mot de passe trop court, minimum 8 caractères'), + 'firstname.max' => __("Maximum 255 caractères"), + 'phone.numeric' => __("Numéro de téléphone invalide"), + 'vat.min' => __("Numéro de TVA intracommunautaire trop court"), + 'vat.regex' => __("Numéro de TVA intracommunautaire invalide"), + 'siren.min' => __("Numéro de SIREN invalide"), + "*zipcode.numeric" => __("Code postal invalide") ]; $validator = Validator::make($request->all(), $validation, $messages); @@ -298,6 +305,7 @@ class AjaxController extends CubistFrontController throw new ValidationException($validator); } + $validator->validate(); return $validator->validated(); } @@ -342,8 +350,8 @@ class AjaxController extends CubistFrontController 'firstname' => 'required|string|max:255', 'phone' => 'required|numeric', 'company' => 'required|string', - 'vat' => 'required|alpha_num|min:13', - 'siren' => 'required|numeric', + 'vat' => 'required|string|min:13|max:13|regex:/^[a-zA-Z]{2}\d{11}$/', + 'siren' => 'required|string|min:9|max:9', 'address.*.address' => 'required|string|max:255', 'address.*.zipcode' => 'required|numeric', 'address.*.city' => 'required|string|max:255', @@ -356,6 +364,10 @@ class AjaxController extends CubistFrontController $data['status'] = 0; $data['password'] = Hash::make($data['password']); + if (!strstr($data['vat'], $data['siren']) || substr($data['vat'], '-9') !== $data['siren']) { + throw ValidationException::withMessages(['siren' => __('Le numero de siren est incorrect')]); + } + $client = new Client($data); $client->save(); @@ -372,7 +384,7 @@ class AjaxController extends CubistFrontController }elseif(in_array($key,['phone'])){ $validation[$key] = 'required|numeric'; }elseif ($key === "actually_password"){ - $validation[$key] = 'required'; + $validation[$key] = 'required|missing'; }elseif ($key === "password"){ $validation[$key] = 'required|confirmed|min:8'; } diff --git a/app/SubForms/Address.php b/app/SubForms/Address.php index 495d3b1..38deba3 100644 --- a/app/SubForms/Address.php +++ b/app/SubForms/Address.php @@ -15,9 +15,6 @@ class Address extends SubForm { 'type' => 'Integer', 'attributes' => [ 'disabled' => 'disabled' - ], - 'options' => [ - 'auto_increment' => true ] ]); diff --git a/resources/js/app.js b/resources/js/app.js index ddde1fd..b067e2c 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -32,7 +32,9 @@ window.eventBus = new Vue(); import PortalVue from 'portal-vue'; import Ar from "../../public/vendor/adminlte/bower_components/moment/src/locale/ar"; +import VueTheMask from 'vue-the-mask' +Vue.use(VueTheMask) Vue.use(PortalVue); /** @@ -67,6 +69,7 @@ const app = new Vue({ validateRegister: false, tab: 'infos', addresses: [{}], + errorsForm: {}, user: '', default_billing_address: null, default_delivery_address: null @@ -74,6 +77,7 @@ const app = new Vue({ beforeMount() { this.items = JSON.parse(this.$el.dataset.cartItems); + this.tab = window.location.hash.replace('#','') || 'infos' this.getUser() }, @@ -97,7 +101,7 @@ const app = new Vue({ }, updated(){ - console.log(this.selected) + //console.log(this.selected) }, computed: { @@ -112,6 +116,12 @@ const app = new Vue({ }, methods: { + resetUrlAccount() { + let hash = window.location.hash + let fullUrl = window.location.origin+window.location.pathname + if(hash) + history.pushState("", "", fullUrl); + }, saveCart(data) { let root = this; axios.post('/ajax/cart', data) @@ -155,10 +165,15 @@ const app = new Vue({ this.type = this.type === "password" ? "text" : "password" }, removeErrors() { - let errorMessage = document.querySelectorAll('.form-error') + let errorMessage = document.querySelectorAll('.form-error'), + errorInput = document.querySelectorAll('.error') + for (var i = 0; i < errorMessage.length; i++) { errorMessage[i].remove(); } + for (var i = 0; i < errorInput.length; i++) { + errorInput[i].classList.remove('error'); + } }, checkEmailExist() { let root = this, @@ -221,24 +236,36 @@ const app = new Vue({ }) root.validateRegister = true root.email_signin = '' + root.errorsForm = {} }) .catch(function (error) { if (error.response) { let errors = error.response.data.errors + root.errorsForm = errors + console.log(errors) root.removeErrors() for (let k in errors) { + if(k.indexOf('.')){ + let keys = k.split('.') + for(let i = 0; i < keys.length; i++){ + if(i !== 0){ + k += '['+keys[i]+']' + }else{ + k = keys[i] + } + } + console.log(k) + } let el = document.querySelector('[name=' + k + ']') - let span = document.createElement("span") - span.classList.add('form-error') - span.innerText = errors[k] - el.after(span) + el.classList.add('error') } } }) }, activeTab(tab){ this.tab = tab + this.resetUrlAccount() }, getUser(){ let root = this diff --git a/resources/styles/components/signin.styl b/resources/styles/components/signin.styl index 36afbc0..d5e55cd 100644 --- a/resources/styles/components/signin.styl +++ b/resources/styles/components/signin.styl @@ -11,6 +11,8 @@ place-content: center padding: 0 position: relative + &.error:before + border-color: theme('colors.red') &:before content: "" width: 16px @@ -40,3 +42,11 @@ .line-up border-top: 1px solid #D5D7DF + +[class*="-form-errors"] + padding: 20px + background: rgba(248,30,96,.21) + li + color: theme('colors.red') + &:not(:last-child) + padding-bottom: 3px diff --git a/resources/views/pages/my_account.blade.php b/resources/views/pages/my_account.blade.php index 91b8abf..e8cb493 100644 --- a/resources/views/pages/my_account.blade.php +++ b/resources/views/pages/my_account.blade.php @@ -17,14 +17,14 @@
-
+

{{ $client->company }}

N° TVA : {{ $client->vat }}
SIREN : {{ $client->siren }}

- {{ __('Signaler une modification') }} + {{ __('Signaler une modification') }}

{{ __('Mes coordonnées') }}

@@ -71,7 +71,7 @@ @svg('icon-white-add')
-
+
diff --git a/resources/views/pages/sign_in.blade.php b/resources/views/pages/sign_in.blade.php index df48aaa..9996223 100644 --- a/resources/views/pages/sign_in.blade.php +++ b/resources/views/pages/sign_in.blade.php @@ -75,7 +75,14 @@