From 9bfc993b527974094ab2c9863f7117bf67dd4a1c Mon Sep 17 00:00:00 2001 From: soufiane Date: Wed, 19 Apr 2023 17:06:36 +0200 Subject: [PATCH] wip #5858 @5:00 --- app/Http/Controllers/AjaxController.php | 39 ++++++++++++++++--- resources/js/app.js | 29 +++++++++----- .../views/components/modal-confirm.blade.php | 4 +- resources/views/pages/cart.blade.php | 4 +- .../views/pages/paniers_enregistres.blade.php | 6 ++- 5 files changed, 61 insertions(+), 21 deletions(-) diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php index 9c71249..5f264f5 100644 --- a/app/Http/Controllers/AjaxController.php +++ b/app/Http/Controllers/AjaxController.php @@ -611,15 +611,20 @@ class AjaxController extends CubistFrontController }) : 0; $basicPriceByProductId = $data['products'][$keyRefs]["basic_selling_price"]; - $price = floatval(($basicPriceByProductId + $totalOptionsPrice) * $quantity); - $data['products'][$keyRefs]["price"] = $total[] = $price; + $price = floatval($basicPriceByProductId + $totalOptionsPrice); + $total[] = floatval($price * $quantity); + $data['products'][$keyRefs]["price"] = $price; } + $checkUnavailableEcommerceProduct = array_filter($data['products'], function($n) { + return !$n['price']; + }); + $ht = array_reduce($total, function($carry, $item) { return $carry + $item; }); - $ht += ($total > 1000) ? 20 : 0; + $ht += ($ht > 1000) ? 20 : 0; $tva = $ht * 0.2; $ttc = $ht + $tva; - $data['total'] = $ttc; + $data['total'] = !$checkUnavailableEcommerceProduct ? $ttc : null; // $data['addresses'] = json_encode($data['addresses']); @@ -633,7 +638,8 @@ class AjaxController extends CubistFrontController $id = $panier->getOriginal('id'); $request->session()->put('last_selection', $id); } else { - Panier::where('id', $lastCartRefs)->update($data); + + Panier::where('id', $lastCartId)->update($data); } return __('Le panier a été enregistré avec succès !'); @@ -666,7 +672,28 @@ class AjaxController extends CubistFrontController } public function savedCartToCurrent(Request $request) { + $request->validate([ + 'id' => 'required|numeric' + ]); + + $cartId = $request->input('id'); - //$this->cart() + $cart = Panier::find($cartId)->toArray(); + + $clientIdInRequest = intval($cart['user_id']); + $clientId = Client::getClientConnected()->id; + + if($clientIdInRequest === $clientId) { + $cartData = json_decode($cart['products'],true); + + // Clear cart session + $request->session()->forget('cart_items'); + + // Save back to the session + $request->session()->put('cart_items', $cartData); + $request->session()->put('last_selection', intval($cartId)); + return "success"; + } + return false; } } diff --git a/resources/js/app.js b/resources/js/app.js index 1c18c89..2dd6c85 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -69,7 +69,7 @@ const app = new Vue({ emailExist: false, validateEmail: false, address_choice: true, - validateForm: false, + validateAction: false, tab: 'infos', addresses: [{}], user: '', @@ -82,7 +82,8 @@ const app = new Vue({ statusConfig: false, statusText: '', // - nameSaved: {} + nameSaved: {}, + confirmMessageCart: '' }, beforeMount() { @@ -327,7 +328,7 @@ const app = new Vue({ axios.post('/ajax/signup', data) .then(function (response) { - root.validateForm = true + root.validateAction = true // Reset form root.email_signin = '' @@ -403,7 +404,7 @@ const app = new Vue({ axios.post('/ajax/update', data) .then(function (response) { root.removeErrorsForm() - root.validateForm = true + root.validateAction = true root.form[id] = response.data }) .catch(function (error) { @@ -420,7 +421,7 @@ const app = new Vue({ axios.post('/ajax/updateAddress', data) .then(function (response) { root.removeErrorsForm() - root.validateForm = true + root.validateAction = true }) .catch(function (error) { root.errorHandling(error, root, formId) @@ -488,7 +489,8 @@ const app = new Vue({ axios.post('/ajax/storecart', data) .then(function (response) { - console.log(response) + root.validateAction = true + root.confirmMessageCart = response.data; }) .catch(function (error) { console.log(error) @@ -529,10 +531,17 @@ const app = new Vue({ .catch(function (error) { }) }, - savedCartToCurrent() { - const data = { + savedCartToCurrent(event) { + const id = event.target.dataset.id, + homeUrl = window.location.origin; - } + axios.post('/ajax/savedCartToCurrent', {id: id}) + .then(function (response) { + //root.animateDelete(el) + window.location.replace(homeUrl+'/ma-selection') + }) + .catch(function (error) { + }) } }, /** @@ -550,7 +559,7 @@ const app = new Vue({ const vm = vnode.context; Window.event = (e) => { if (!el.contains(e.target) || e.key === "Escape") { - vm.validateForm = false + vm.validateAction = false } } document.body.addEventListener('click', Window.event) diff --git a/resources/views/components/modal-confirm.blade.php b/resources/views/components/modal-confirm.blade.php index 8517ca5..d7c8257 100644 --- a/resources/views/components/modal-confirm.blade.php +++ b/resources/views/components/modal-confirm.blade.php @@ -1,6 +1,6 @@ -