Ejemplo n.º 1
0
 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);
 }