From 900e923b6d7038cd91889ede9f4c126331e28c40 Mon Sep 17 00:00:00 2001 From: soufiane Date: Fri, 21 Jul 2023 16:29:24 +0200 Subject: [PATCH] wait #6159 @4:00 --- app/Http/Controllers/AjaxController.php | 72 +++++-------------- app/Models/Client.php | 24 ------- resources/js/app.js | 31 ++++++-- .../views/components/address-form.blade.php | 22 +++--- 4 files changed, 57 insertions(+), 92 deletions(-) diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php index 01446e1..c6f9906 100644 --- a/app/Http/Controllers/AjaxController.php +++ b/app/Http/Controllers/AjaxController.php @@ -132,13 +132,16 @@ class AjaxController extends CubistFrontController $message->to($item); } } + $subject = ''; if ($page->form_prefix) { $subject = '['; $subject .= $subject_ ?? $page->form_prefix; $subject .= '] '; }else { - $subject = '['.$subject_.'] '; + if($subject_) { + $subject = '[' . $subject_ . '] '; + } } if (isset($validatedData['subject'])) { @@ -377,7 +380,7 @@ class AjaxController extends CubistFrontController * */ - public function validation_form(Request $request, $validation){ + public function validation_form(Request $request, $validation, $multiArray = false){ $messages = [ '*.required' => __('Veuillez remplir les champs obligatoires'), 'email.email' => __('Veuillez indiquer une adresse email valide'), @@ -393,12 +396,14 @@ class AjaxController extends CubistFrontController ]; $validator = Validator::make($request->all(), $validation, $messages); + if ($validator->fails()) { throw new ValidationException($validator); } $validator->validate(); return $validator->validated(); + } public function check_email_exist(Request $request) { @@ -533,65 +538,23 @@ class AjaxController extends CubistFrontController if (is_array($field)) { foreach ($field as $keySubfield => $subfield) { if (in_array($keySubfield, ['firstname', 'lastname', 'name', 'company', 'address', 'city'])) { - $validation['address.' . $keySubfield] = 'required|string|max:255'; + $validation['*'.'.'.$keySubfield] = 'required|string|max:255'; } elseif (in_array($keySubfield, ['zipcode'])) { - $validation['address.' . $keySubfield] = 'required|numeric'; + $validation['*'.'.'.$keySubfield] = 'required|numeric'; } } } } - $data = $this->validation_form($request, $validation); + $dataValidated = $this->validation_form($request, $validation, true); $email = Client::getClientConnected()->email; - $address = Client::getClientConnected()->address; - - if($address) { - $addressToArray = json_decode($address, true); - - $checkBillingAddress = array_filter($addressToArray, function ($n) { - return $n['billing_address']; - }); - $checkDeliveryAddress = array_filter($addressToArray, function ($n) { - return $n['delivery_address']; - }); - if (isset($request->address['billing_address'])) { - foreach ($addressToArray as $key => &$value) { - $value['billing_address'] = "0"; - } - $data['address']['billing_address'] = "1"; - } else { - $data['address']['billing_address'] = "0"; - } - - if (isset($request->address['delivery_address'])) { - foreach ($addressToArray as $key => &$value) { - $value['delivery_address'] = "0"; - } - $data['address']['delivery_address'] = "1"; - - } else { - $data['address']['delivery_address'] = "0"; - } - - foreach ($addressToArray as $key => &$value) { - $value['id'] = $key; - } - - $data['address']['id'] = $index; - $addressToArray[$index] = (object) $data['address']; - if (!$checkBillingAddress && !isset($request->address['billing_address'])) { - $addressToArray[0]['billing_address'] = "1"; - } - if (!$checkDeliveryAddress && !isset($request->address['delivery_address'])) { - $addressToArray[0]['delivery_address'] = "1"; - } - } else { - $data['address']['billing_address'] = "1"; - $data['address']['delivery_address'] = "1"; - $addressToArray = [$data['address']]; - } + $addressToArray = array_map(function($n) { + $n['billing_address'] = strval(intval((bool)$n['billing_address'])); + $n['delivery_address'] = strval(intval((bool)$n['delivery_address'])); + return $n; + }, $request->all()); // $addressToString = json_encode($addressToArray); @@ -602,7 +565,10 @@ class AjaxController extends CubistFrontController $index = $request->index; $address = Client::getClientConnected()->address; - $addressToArray = json_decode($address); + $addressToArray = json_decode($address,true); + + $addressToArray[0]['delivery_address'] = intval($addressToArray[$index]['delivery_address']) ? "1" : strval(intval($addressToArray[0]['delivery_address'])); + $addressToArray[0]['billing_address'] = intval($addressToArray[$index]['billing_address']) ? "1" : strval(intval($addressToArray[0]['billing_address'])); unset($addressToArray[$index]); $addressToArray = array_values($addressToArray); diff --git a/app/Models/Client.php b/app/Models/Client.php index 610f324..7d9a321 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -144,28 +144,4 @@ class Client extends CubistMagicAbstractModel return null; } - - public static function setTypeOfAddress($request, array $address) { - - if (isset($request->address['billing_address'])) { - foreach ($address as $key => &$value) { - $value['billing_address'] = "0"; - } - $data['address']['billing_address'] = "1"; - } else { - $data['address']['billing_address'] = "0"; - } - - if (isset($request->address['delivery_address'])) { - foreach ($address as $key => &$value) { - $value['delivery_address'] = "0"; - } - $data['address']['delivery_address'] = "1"; - - } else { - $data['address']['delivery_address'] = "0"; - } - - return $data; - } } diff --git a/resources/js/app.js b/resources/js/app.js index 368c866..110253d 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -435,11 +435,34 @@ const app = new Vue({ } ) }, - updateAddress(id) { + getAddressesData() { + const form_test = document.getElementById('addresses-form') + const forms = document.querySelectorAll('form[id^="update-address"]') + const formDataCollection = {}, + keys = {}; + + forms.forEach(function(form,k){ + formDataCollection[k] = {}; + const form_ = document.getElementById(form.id) + for(let i = 0; i < form_.length; i++) { + if(form_[i].dataset.name !== undefined) { + if (form_[i].dataset.name.includes("_address")) { + if (!form_[i].checked) { + form_[i].value = "" + }else { + form_[i].value = "on" + } + } + formDataCollection[k][form_[i].dataset.name] = form_[i].value; + } + } + }) + + return formDataCollection + }, + updateAddress() { let root = this, - form = document.getElementById(id), - formId = '#'+form.getAttribute('id'), - data = new FormData(form) + data = this.getAddressesData() axios.post('/ajax/updateAddress', data) .then(function (response) { diff --git a/resources/views/components/address-form.blade.php b/resources/views/components/address-form.blade.php index b339064..4662449 100644 --- a/resources/views/components/address-form.blade.php +++ b/resources/views/components/address-form.blade.php @@ -1,4 +1,4 @@ -
+
  • @@ -10,42 +10,42 @@
@@ -56,7 +56,7 @@ +