src/Front/Modules/Cart/Controller/CartController.php line 192
<?phpnamespace App\Front\Modules\Cart\Controller;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\JsonResponse;use App\UserPanel\Modules\User\Service\UserService;use App\Front\Controller\BaseController;use App\Front\Modules\Cart\Service\CartService;use App\Front\Modules\Cart\Service\ContractPreviewService;use App\Front\Modules\Cart\Form\CartType;use App\Front\Modules\Cart\Form\LoginType;use App\Front\Modules\Cart\Form\RegistrationType;use App\Front\Modules\Cart\Form\ClientDataType;class CartController extends BaseController{private $_userService;private $_cartService;private $_contractPreviewService;public function __construct(UserService $userService,CartService $cartService,ContractPreviewService $contractPreviewService){$this->_userService = $userService;$this->_cartService = $cartService;$this->_contractPreviewService = $contractPreviewService;}public function details(Request $request){$this->_cartService->setUserPanelCartView(false);return $this->cartDetails($request);}/* forward z panelu uzytkownika */public function cartDetails(Request $request){$cartData = $this->_cartService->getDetails();if ($cartData['items']){$form = $this->createForm(CartType::class);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()){$this->_cartService->updateCartFromForm($form);return $this->redirectToRoute('front_cart_account');}}return $this->render('Front/Modules/Cart/Templates/Cart/details.html.twig', ['cartData' => $this->_cartService->getDetails(),'formType' => isset($form) ? $form->getConfig()->getType()->getInnerType() : null,'form' => isset($form) ? $form->createView() : null]);}public function detailsUpdateAjax(Request $request){$form = $this->createForm(CartType::class, null, ['validation_groups' => false]);$form->handleRequest($request);$this->_cartService->updateCartFromForm($form);$form = $this->createForm(CartType::class);$formType = $form->getConfig()->getType()->getInnerType();if (!$formType->cartData['items'])$form = null;return new JsonResponse(array('html' => $this->renderView('Front/Modules/Cart/Templates/Cart/partials/details.html.twig', array('formType' => $formType,'form' => $form ?? null))));}public function account(Request $request){if ($this->getUser())return $this->redirectToRoute('front_cart_client_data');$cartData = $this->_cartService->getDetails();// logowanie$loginForm = $this->createForm(LoginType::class);$loginForm->handleRequest($request);if ($loginForm->isSubmitted()){if ($loginForm->isValid()){$loginError = !$this->_userService->authUserByUsernameAndPassword($loginForm['username']->getData(), $loginForm['password']->getData());if (!$loginError)return $this->redirectToRoute('front_cart_client_data');}$activeTab = 'login';}// rejestracja$registerForm = $this->createForm(RegistrationType::class);$registerForm->handleRequest($request);if ($registerForm->isSubmitted()){if ($registerForm->isValid()){$this->_cartService->setAccountData($registerForm);return $this->redirectToRoute('front_cart_client_data');}$activeTab = 'register';}return $this->render('Front/Modules/Cart/Templates/Cart/account.html.twig', array('cartData' => $cartData,'loginForm' => $loginForm->createView(),'loginError' => $loginError ?? false,'registerForm' => $registerForm->createView(),'activeTab' => $activeTab ?? (!empty($cartData['account_data']) ? 'register' : 'login')));}public function clientData(Request $request){$form = $this->createForm(ClientDataType::class);$formType = $form->getConfig()->getType()->getInnerType();if (!$formType->isInitialized)return $this->redirectToRoute('user_panel_cart_details');$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()){$this->_cartService->setClientData($form);return $this->redirectToRoute('front_cart_contract_preview');}return $this->render('Front/Modules/Cart/Templates/Cart/clientData.html.twig', array('cartData' => $this->_cartService->getDetails(),'formType' => $form->getConfig()->getType()->getInnerType(),'form' => $form->createView()));}public function clientDataUpdateFormAjax(Request $request){$form = $this->createForm(ClientDataType::class, null, ['validation_groups' => false]);$form->handleRequest($request);return new JsonResponse(array('html' => $this->renderView('Front/Modules/Cart/Templates/Cart/partials/clientData.html.twig', array('formType' => $form->getConfig()->getType()->getInnerType(),'form' => $form->createView()))));}public function contractPreview(){$data = $this->_contractPreviewService->getData();if ($data['error_message'] != ''){$this->addFlash('error', $data['error_message']);return $this->redirectToRoute('user_panel_cart_details');}return $this->render('Front/Modules/Cart/Templates/Cart/contractPreview.html.twig', array('cartData' => $this->_cartService->getDetails(),'data' => $data));}public function cartWidget(Request $request, $isUserPanelCart = false){if ($request->isMethod('POST')){$cmd = $request->get('cmd');$cmdParam = $request->get('cmdParam');switch($cmd){case 'delete_product':if ($cmdParam != '')$this->_cartService->deleteProduct($cmdParam);break;case 'clear':$this->_cartService->clear();break;}}$viewParams = array('data' => $this->_cartService->getDetails(),'isUserPanelCart' => (bool)(int)$isUserPanelCart);$view = 'Front/Modules/Cart/Templates/Cart/partials/cartWidget.html.twig';if ($request->isXmlHttpRequest()){return new JsonResponse(array('html' => $this->renderView($view, $viewParams)));}elsereturn $this->render($view, $viewParams);}}