]> _ Git - pmi.git/commitdiff
wip #5791 @6:00
authorsoufiane <soufiane@cubedesigners.com>
Tue, 21 Mar 2023 18:02:04 +0000 (19:02 +0100)
committersoufiane <soufiane@cubedesigners.com>
Tue, 21 Mar 2023 18:02:04 +0000 (19:02 +0100)
app/Http/Controllers/AjaxController.php
app/Http/Controllers/ClientController.php
resources/js/app.js
resources/views/components/address-form.blade.php

index 3006a8b04b721aeacf70ba10c77e205f1a28b6e9..fc7061ec9cac77136bb232334728dfecc9086951 100644 (file)
@@ -39,12 +39,17 @@ class AjaxController extends CubistFrontController
      * @param PageData $page
      * @return array
      */
-    protected function _validate_form(Request $request, $page)
+    protected function _validate_form(Request $request, $page, $form = null)
     {
         $validation = [];
         $messages = [];
 
-        foreach ($page->get('form') as $field) {
+        $fields = $page->get('form');
+        if($form){
+            $fields = $request->all();
+        }
+
+        foreach ($fields as $field) {
             $v = [];
             if ($field['mandatory']) {
                 $v[] = 'required';
@@ -273,13 +278,19 @@ class AjaxController extends CubistFrontController
         return $news;
     }
 
-    public function check_email_exist(Request $request) {
-        $validation = [
-           'email' => 'required|email'
-        ];
+    /*
+     *
+     *
+     * CONNEXION, REGISTER, MY ACCOUNT
+     *
+     *
+     */
+
+    public function validation_form(Request $request, $validation){
         $messages = [
-            'email.required' => __('Le champs est requis'),
-            'email.email' => __('Veuillez indiquer une adresse email valide')
+            '*.required' => __('Ce champs est requis'),
+            'email.email' => __('Veuillez indiquer une adresse email valide'),
+            'email.unique' => __('Cette adresse existe déjà')
         ];
 
         $validator = Validator::make($request->all(), $validation, $messages);
@@ -287,6 +298,15 @@ class AjaxController extends CubistFrontController
             throw new ValidationException($validator);
         }
 
+        $validator->validate();
+        return $validator->validated();
+    }
+    public function check_email_exist(Request $request) {
+        $validation = [
+            'email' => 'required|email'
+        ];
+        $this->validation_form($request, $validation);
+
         $email = Client::where('email', $request->email)->get();
         return $email;
     }
@@ -297,20 +317,13 @@ class AjaxController extends CubistFrontController
             'password' => 'required'
         ];
 
-        $validator = Validator::make($request->all(), $validation);
-
-        if ($validator->fails()) {
-            throw new ValidationException($validator);
-        }
+        $data = $this->validation_form($request, $validation);
 
-        $status = Client::where('email', $request->email)->get('status');
-        if (!$status) {
+        $status = Client::where('email', $request->email)->where('status', '!=', 0)->get();
+        if (sizeof($status) < 1) {
             throw ValidationException::withMessages(['email' => __('Le compte lié à cette adresse est en cours de validation')]);
         }
 
-        $validator->validate();
-        $data = $validator->validated();
-
         $remember = $request->remember_me ? true : false;
 
 
@@ -326,9 +339,8 @@ class AjaxController extends CubistFrontController
         $validation = [
             'email' => 'required|email|unique:clients',
             'password' => 'required|confirmed|min:8',
-            'password_confirmation' => 'required',
-            'lastname' => 'required|alpha|max:255',
-            'firstname' => 'required|alpha|max:255',
+            'lastname' => 'required|string|max:255',
+            'firstname' => 'required|string|max:255',
             'phone' => 'required|numeric',
             'company' => 'required|string',
             'vat' => 'required|alpha_num|min:13',
@@ -340,14 +352,8 @@ class AjaxController extends CubistFrontController
             'address.*.delivery_address' => 'nullable',
             'confirm_condition' => 'required'
         ];
-        $validator = Validator::make($request->all(), $validation);
-
-        if ($validator->fails()) {
-            throw new ValidationException($validator);
-        }
 
-        $validator->validate();
-        $data = $validator->validated();
+        $data = $this->validation_form($request, $validation);
         $data['status'] = 0;
         $data['password'] = Hash::make($data['password']);
 
@@ -358,15 +364,28 @@ class AjaxController extends CubistFrontController
     }
 
     public function update(Request $request) {
-        $clientId = Auth::guard('web-clients')->user()->id;
-        $client = Client::find($clientId);
-        $client->lastname = $request->lastname;
-        $client->firstname = $request->firstname;
+        $validation = [
+            'email' => 'required|email',
+            'lastname' => 'required|string|max:255',
+            'firstname' => 'required|string|max:255',
+            'phone' => 'required|numeric'
+        ];
+        $data = $this->validation_form($request, $validation);
+
+        $email = Auth::guard('web-clients')->user()->email;
+        $client = Client::where('email', $email)->update($data);
+
         $client->save();
+
+        return $data;
     }
 
     public function getaddress() {
         $clientAddress = Auth::guard('web-clients')->user()->address;
         return $clientAddress;
     }
+
+    public function getuser() {
+        return Auth::guard('web-clients')->user();
+    }
 }
index 7b2fdd992c7995eabfdc84e377141595661cc6f6..f89ab8f985659486f85f026bc2c7d863e8f311ba 100644 (file)
@@ -16,7 +16,6 @@ class ClientController extends CubistPageController
 {
     public function logout(Request $request): RedirectResponse
     {
-        Auth::guard('web-clients')->user()->setRememberToken('');
         Auth::guard('web-clients')->logout();
 
         $request->session()->invalidate();
index d7c0ea3b1d97a8d3f8ac30013971def67c651c04..09e307ab25fcd1a7192d0f834f8076dd5d8e6fe5 100644 (file)
@@ -66,12 +66,13 @@ const app = new Vue({
         address_choice: true,
         validateRegister: false,
         tab: 'infos',
-        address: [{}]
+        addresses: [{}],
+        user: ''
     },
 
     beforeMount() {
         this.items = JSON.parse(this.$el.dataset.cartItems);
-        this.getAddress()
+        this.getUser()
     },
 
     mounted() {
@@ -213,6 +214,7 @@ const app = new Vue({
                         behavior: "smooth"
                     })
                     root.validateRegister = true
+                    root.email_signin = ''
                 })
                 .catch(function (error) {
                     if (error.response) {
@@ -232,20 +234,24 @@ const app = new Vue({
         activeTab(tab){
             this.tab = tab
         },
-        getAddress(){
+        getUser(){
             let root = this
-
-            axios.post('/ajax/getaddress')
+            axios.post('/ajax/getuser')
                 .then(function (response) {
                     //
-                    root.address = response.data
+                    root.user = response.data
+                    root.addresses = JSON.parse(response.data.address)
                 })
                 .catch(function (error) {
 
                 })
         },
         addAddressToForm(){
-            this.address.push({})
+            let newAddress = {
+                'billing_address': '0',
+                'delivery_address': '0'
+            }
+            this.addresses.push(newAddress)
         },
         update(id){
             let root = this,
@@ -256,13 +262,8 @@ const app = new Vue({
                 .then(function (response) {
                     //
                     root.removeErrors()
-                    form.reset()
-
-                    window.scrollTo({
-                        top: 0,
-                        behavior: "smooth"
-                    })
                     root.validateRegister = true
+                    root.form[id] = response.data
                 })
                 .catch(function (error) {
 
index 4cf51fcc63ef4fb93783d6685e8e664740f56be7..900acc7dc23c085da820bad326288902d5946186 100644 (file)
@@ -1,44 +1,44 @@
-<form class="form-portal mb-12" @submit.prevent="update('address')">
+<form class="form-portal mb-12 max-w-half-form" @submit.prevent="update('address')">
     <div class="form-group mb-12">
         <div class="fields grid">
             <label class="form-input text-navy">
                 {{ __('Donner un nom à cette adresse') }}<span>*</span>
-                <input class="py-3 mt-3" type="text" required="required" name="name" />
+                <input class="py-3 mt-3" type="text" v-model="address.name" required="required" name="name" />
             </label>
             <label class="form-input text-navy">
                 {{ __('Société') }}<span>*</span>
-                <input class="py-3 mt-3" type="text" required="required" name="company" />
+                <input class="py-3 mt-3" type="text" v-model="address.company" required="required" name="company" />
             </label>
             <label class="form-input half text-navy">
                 {{ __('Nom') }}<span>*</span>
-                <input class="py-3 mt-3" type="text" required="required" name="lastname" />
+                <input class="py-3 mt-3" type="text" v-model="address.lastname" required="required" name="lastname" />
             </label>
             <label class="form-input half text-navy">
                 {{ __('Prénom') }}<span>*</span>
-                <input class="py-3 mt-3" type="text" required="required" name="firstname" />
+                <input class="py-3 mt-3" type="text" v-model="address.firstname" required="required" name="firstname" />
             </label>
             <label class="form-input text-navy">
-                {{ __('Adresse de facturation') }}<span>*</span>
-                <textarea class="py-3 mt-3" required="required" name="address[billing][address]">
+                {{ __('Adresse') }}<span>*</span>
+                <textarea class="py-3 mt-3" required="required" v-model="address.address" name="address[address]">
                 </textarea>
             </label>
             <label class="form-input half text-navy">
                 {{ __('Code postal') }}<span>*</span>
-                <input class="py-3 mt-3" type="text" required="required" name="address[billing][zipcode]" />
+                <input class="py-3 mt-3" type="text" v-model="address.zipcode" required="required" name="address[zipcode]" />
             </label>
             <label class="form-input half text-navy">
                 {{ __('Ville') }}<span>*</span>
-                <input class="py-3 mt-3" type="text" required="required" name="address[billing][city]" />
+                <input class="py-3 mt-3" type="text" v-model="address.city" required="required" name="address[city]" />
             </label>
         </div>
     </div>
     <div class="form-group">
         <label class="label-checkbox flex">
-            <input type="checkbox" v-model="address_choice" checked name="same-address" class="w-4 h-4" />
+            <input type="checkbox" :checked="address.billing_address === '0' ? false : true" class="w-4 h-4" />
             <span class="ml-4">{{ __('Adresse de facturation par défaut') }}</span>
         </label>
         <label class="label-checkbox flex mb-6">
-            <input type="checkbox" v-model="address_choice" checked name="same-address" class="w-4 h-4" />
+            <input type="checkbox" :checked="address.delivery_address === '0' ? false : true" class="w-4 h-4" />
             <span class="ml-4">{{ __('Adresse de livraison par défaut') }}</span>
         </label>
     </div>