public function index(Request $request) { $cartService = new cartService(); $addressService = new addressService(); $userService = new userService(); $step = $request->get('step', 'login'); $data = array(); try { $key = '__kacana_user_order__'; if (\Kacana\Util::isLoggedIn()) { $user = $userService->getUserByEmail($this->_user->email); if ($step != 'address' && count($user->userAddress)) { $step = 'choose-address'; } else { $step = 'address'; } \Session::set($key, ['email' => $this->_user->email]); $data['user'] = $user; } $data['step'] = $step; $cart = $cartService->cartInformation(); if (!$cart) { return redirect('/thanh-toan'); } $data['cart'] = $cart; $key = '__kacana_user_order__'; $userOrder = \Session::get($key); if ($userOrder) { $data['userOrder'] = $userOrder; } if ($step == 'address' && ($request->isMethod('post') || isset($userOrder['email']))) { $data['listCity'] = $addressService->getListCity(); $data['listDistrict'] = $addressService->getListDistrict(); $data['listWard'] = $addressService->getListWard(); $email = $request->input('email', false); if (isset($userOrder['email']) && !$email) { // if refresh page - will check session userOrder $email = $userOrder['email']; } $password = $request->input('password', false); if ($password && isEmailAdress($email)) { return view('client.checkout.checkout', $data); } elseif ($email && isEmailAdress($email)) { if (!isset($userOrder)) { $userOrder = array(); } $userOrder['email'] = $email; \Session::set($key, $userOrder); } else { $data['errorMessage'] = 'Email không đúng định dạng'; } } } catch (\Exception $e) { if ($request->ajax()) { $result['error'] = $e->getMessage(); return $result; } else { return view('errors.404', ['error_message' => $e]); } } return view('client.checkout.checkout', $data); }