From baa55d81cd59735787fa00d4e93be035e9391e38 Mon Sep 17 00:00:00 2001 From: Muammer Top Date: Mon, 12 Jul 2021 12:59:12 +0300 Subject: [PATCH] #4334 add configurated ads to cart from ajax --- .../OptionConfigurationController.php | 105 ++++++++---------- 1 file changed, 45 insertions(+), 60 deletions(-) diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php index ca9c43aca..133422108 100644 --- a/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php +++ b/addons/default/visiosoft/advs-module/src/Http/Controller/OptionConfigurationController.php @@ -1,87 +1,72 @@ advRepository = $advRepository; - $this->adv_model = $advModel; - $this->optionConfigurationModel = $optionConfigurationModel; - $this->optionConfigurationRepository = $optionConfigurationRepository; - parent::__construct(); - } + public function __construct( + AdvModel $advModel, + OptionConfigurationRepositoryInterface $optionConfigurationRepository, + CartRepository $cartRepository + ) + { + $this->adv_model = $advModel; + $this->optionConfigurationRepository = $optionConfigurationRepository; + $this->cartRepository = $cartRepository; + parent::__construct(); + } - public function create(OptionConfigurationFormBuilder $form) - { - $form->setOption('redirect', route('advs_preview', [request('ad')])); - return $form->render(); - } + public function create(OptionConfigurationFormBuilder $form) + { + $form->setOption('redirect', route('advs_preview', [request('ad')])); + return $form->render(); + } - public function confAddCart() - { - if($conf = $this->optionConfigurationRepository->find($this->request->configuration)) - { - if($conf->parent_adv->getStatus() == "approved") - { + public function confAddCart() + { + if ($conf = $this->optionConfigurationRepository->find($this->request->configuration)) { + if ($conf->parent_adv->getStatus() == "approved") { $conf->name = $conf->getName(); - if ($conf->stock < $this->request->quantity){ + if ($conf->stock < $this->request->quantity) { return redirect()->back()->with('warning', [trans('visiosoft.module.carts::message.error1in2')]); - }else{ + } else { $cart = $this->dispatch(new GetCart()); $cart->add($conf, $this->request->quantity); return $this->redirect->to(route('visiosoft.module.carts::cart')); } } - $this->messages->info(trans('visiosoft.module.advs::message.error_added_cart')); - return back(); - } - } + $this->messages->info(trans('visiosoft.module.advs::message.error_added_cart')); + return back(); + } + } - public function ajaxConfAddCart() - { - if (\auth()->check()) { - if($conf = $this->optionConfigurationRepository->find($this->request->configuration)) - { - $conf->name = $conf->getName(); + public function ajaxConfAddCart() + { + if ($conf = $this->optionConfigurationRepository->find($this->request->configuration ?? $this->request->data['conf'])) { + $conf->name = $conf->getName(); - $this->adv_model->authControl(); + if ($conf->stock < $this->request->quantity) { + return $this->response->json(['status' => 'error', 'msg' => trans('visiosoft.module.carts::message.error1in2')]); + } - if ($conf->stock < $this->request->quantity){ - return $this->response->json(['status' => 'error', 'msg' => trans('visiosoft.module.carts::message.error1in2')]); - }else{ - $cart = $this->dispatch(new GetCart()); - $cart->add($conf, $this->request->quantity); + $cart = $this->dispatch(new GetCart()); + $cart->add($conf, ($this->request->quantity ?? $this->request->data['quantity']) ?? 1); - $count = $cart->getItems()->count; - return $this->response->json(['status'=> 'success', 'count' => $count]); - } - } - return $this->response->json(['status' => 'error', 'msg' => trans('visiosoft.module.carts::message.error2')]); - } - return $this->response->json(['status' => 'guest']); - } + $cart_item = $cart->getItems(); + $count = $cart_item->count; + $cart = $this->cartRepository->find($cart_item[0]->cart_id); + return $this->response->json(['status' => 'success', 'count' => $count, 'cart' => $cart, 'cart_item' => $cart_item]); + } + return $this->response->json(['status' => 'error', 'msg' => trans('visiosoft.module.carts::message.error2')]); + } }