Merge pull request #1113 from openclassify/muammertop

#4334 add configurated ads to cart from ajax
This commit is contained in:
spektra2147 2021-07-19 16:25:40 +03:00 committed by GitHub
commit e8feb6ad60
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,87 +1,72 @@
<?php namespace Visiosoft\AdvsModule\Http\Controller; <?php namespace Visiosoft\AdvsModule\Http\Controller;
use Anomaly\Streams\Platform\Http\Controller\PublicController; use Anomaly\Streams\Platform\Http\Controller\PublicController;
use Anomaly\Streams\Platform\Model\Configuration\ConfigurationConfigurationEntryModel;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Visiosoft\AdvsModule\Adv\AdvModel; use Visiosoft\AdvsModule\Adv\AdvModel;
use Visiosoft\AdvsModule\Adv\Contract\AdvRepositoryInterface;
use Visiosoft\AdvsModule\OptionConfiguration\Contract\OptionConfigurationRepositoryInterface; use Visiosoft\AdvsModule\OptionConfiguration\Contract\OptionConfigurationRepositoryInterface;
use Visiosoft\AdvsModule\OptionConfiguration\Form\OptionConfigurationFormBuilder; use Visiosoft\AdvsModule\OptionConfiguration\Form\OptionConfigurationFormBuilder;
use Visiosoft\AdvsModule\OptionConfiguration\OptionConfigurationModel;
use Visiosoft\CartsModule\Cart\CartModel;
use Visiosoft\CartsModule\Cart\CartRepository; use Visiosoft\CartsModule\Cart\CartRepository;
use Visiosoft\CartsModule\Cart\Command\GetCart; use Visiosoft\CartsModule\Cart\Command\GetCart;
class OptionConfigurationController extends PublicController class OptionConfigurationController extends PublicController
{ {
private $advRepository; private $adv_model;
private $adv_model; private $optionConfigurationRepository;
private $optionConfigurationModel; private $cartRepository;
private $optionConfigurationRepository;
public function __construct( public function __construct(
AdvRepositoryInterface $advRepository, AdvModel $advModel,
AdvModel $advModel, OptionConfigurationRepositoryInterface $optionConfigurationRepository,
OptionConfigurationModel $optionConfigurationModel, CartRepository $cartRepository
OptionConfigurationRepositoryInterface $optionConfigurationRepository )
) {
{ $this->adv_model = $advModel;
$this->advRepository = $advRepository; $this->optionConfigurationRepository = $optionConfigurationRepository;
$this->adv_model = $advModel; $this->cartRepository = $cartRepository;
$this->optionConfigurationModel = $optionConfigurationModel; parent::__construct();
$this->optionConfigurationRepository = $optionConfigurationRepository; }
parent::__construct();
}
public function create(OptionConfigurationFormBuilder $form) public function create(OptionConfigurationFormBuilder $form)
{ {
$form->setOption('redirect', route('advs_preview', [request('ad')])); $form->setOption('redirect', route('advs_preview', [request('ad')]));
return $form->render(); return $form->render();
} }
public function confAddCart() public function confAddCart()
{ {
if($conf = $this->optionConfigurationRepository->find($this->request->configuration)) if ($conf = $this->optionConfigurationRepository->find($this->request->configuration)) {
{ if ($conf->parent_adv->getStatus() == "approved") {
if($conf->parent_adv->getStatus() == "approved")
{
$conf->name = $conf->getName(); $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')]); return redirect()->back()->with('warning', [trans('visiosoft.module.carts::message.error1in2')]);
}else{ } else {
$cart = $this->dispatch(new GetCart()); $cart = $this->dispatch(new GetCart());
$cart->add($conf, $this->request->quantity); $cart->add($conf, $this->request->quantity);
return $this->redirect->to(route('visiosoft.module.carts::cart')); return $this->redirect->to(route('visiosoft.module.carts::cart'));
} }
} }
$this->messages->info(trans('visiosoft.module.advs::message.error_added_cart')); $this->messages->info(trans('visiosoft.module.advs::message.error_added_cart'));
return back(); return back();
} }
} }
public function ajaxConfAddCart() public function ajaxConfAddCart()
{ {
if (\auth()->check()) { if ($conf = $this->optionConfigurationRepository->find($this->request->configuration ?? $this->request->data['conf'])) {
if($conf = $this->optionConfigurationRepository->find($this->request->configuration)) $conf->name = $conf->getName();
{
$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){ $cart = $this->dispatch(new GetCart());
return $this->response->json(['status' => 'error', 'msg' => trans('visiosoft.module.carts::message.error1in2')]); $cart->add($conf, ($this->request->quantity ?? $this->request->data['quantity']) ?? 1);
}else{
$cart = $this->dispatch(new GetCart());
$cart->add($conf, $this->request->quantity);
$count = $cart->getItems()->count; $cart_item = $cart->getItems();
return $this->response->json(['status'=> 'success', 'count' => $count]); $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')]); }
} return $this->response->json(['status' => 'error', 'msg' => trans('visiosoft.module.carts::message.error2')]);
return $this->response->json(['status' => 'guest']); }
}
} }