/**
  * Register function
  *
  * @return view
  */
 public function register(Request $request)
 {
     if ($this->user_session->is_logged_in) {
         return redirect()->route('home');
     }
     //check if any callback has been provided
     if (isset($_GET['callback_url']) && trim($_GET['callback_url']) != '') {
         $callback = $_GET['callback_url'];
         if (!isset($_SESSION['elegance_cut']['callback'])) {
             $_SESSION['elegance_cut']['callback'] = $callback;
         }
     }
     $callback = isset($_SESSION['elegance_cut']['callback']) ? $_SESSION['elegance_cut']['callback'] : '';
     $arrStates = DB::connection('mongodb')->collection('states')->get();
     $arrCountries = DB::connection('mongodb')->collection('countries')->get();
     $arrStates_code_state = getKeyValueArray('code', 'state', $arrStates);
     $arrCountries_code_country = getKeyValueArray('code', 'country', $arrCountries);
     $form['fname'] = filter_form_input($request->input('fname', ''));
     $form['lname'] = filter_form_input($request->input('lname', ''));
     $form['password'] = $request->input('password', '');
     $form['cnf_password'] = $request->input('cnf_password', '');
     $form['email'] = filter_form_input($request->input('email', ''));
     $form['mobile'] = filter_form_input($request->input('mobile', ''));
     $form['zip'] = filter_form_input($request->input('zip', ''));
     $form['address'] = filter_form_input($request->input('address', ''));
     $form['city'] = filter_form_input($request->input('city', ''));
     $form['state'] = filter_form_input($request->input('state', ''));
     $form['country'] = filter_form_input($request->input('country', ''));
     $form['tnc'] = filter_form_input($request->input('tnc', ''));
     $message = '';
     if ($request->isMethod('post')) {
         if ($form['fname'] != '' && $form['lname'] != '' && $form['email'] != '' && $form['password'] != '' && $form['cnf_password'] != '' && $form['email'] != '' && $form['mobile'] != '' && $form['zip'] != '' && $form['address'] != '' && $form['city'] != '') {
             if (!filter_var($form['email'], FILTER_VALIDATE_EMAIL)) {
                 $message[] = '-Please enter a valid email address.';
             }
             if ($form['password'] != $form['cnf_password']) {
                 $message[] = '-Password didn\'t match. Plese type exact password in \'Confirm Password\' field.';
             }
             if (strlen($form['mobile']) > 10 || strlen($form['mobile']) < 10) {
                 $message[] = '-Please enter valid 10 digit mobile number.';
             }
             if (!is_numeric($form['mobile'])) {
                 $message[] = '-Please enter valid 10 digit mobile number.';
             }
             if ($form['state'] == 'select' || $form['country'] == 'select' || !array_key_exists($form['state'], $arrStates_code_state) || !array_key_exists($form['country'], $arrCountries_code_country)) {
                 $message[] = '-Please select your state and country.';
             }
             if ($form['tnc'] == '') {
                 $message[] = '-Please provide your concent towards terms and conditions.';
             }
             if (empty($message)) {
                 try {
                     //save user in database
                     $objUserMaster = new App\UserMaster();
                     $objUserMaster->fname = $form['fname'];
                     $objUserMaster->lname = $form['lname'];
                     $objUserMaster->email = $form['email'];
                     $objUserMaster->mobile = $form['mobile'];
                     $objUserMaster->zip_code = $form['zip'];
                     $objUserMaster->state = $form['state'];
                     $objUserMaster->country = $form['country'];
                     $objUserMaster->city = $form['city'];
                     $objUserMaster->address = $form['address'];
                     $objUserMaster->password = md5($form['password']);
                     $res = $objUserMaster->save();
                     $LastInsertId = $objUserMaster->user_id;
                 } catch (\Exception $e) {
                     $message[] = 'Looks like something went wrong or mostly the email you entered, already exists. Kindly register with different email id or contact our support at <a class="yellow-link" href="mailto:' . config('global.support_email') . '">' . config('global.support_email') . '</a>';
                 }
                 if (isset($res) && $res == true && empty($message)) {
                     //call login method to set the session, cookie etc.
                     login($objUserMaster);
                     //send user an email verification link
                     generate_and_send_email_verification_email($objUserMaster);
                     if (isset($callback) && $callback != '') {
                         $_SESSION['elegance_cut']['callback'] = null;
                         return redirect()->route($callback);
                     } else {
                         return redirect()->route('home');
                     }
                 } else {
                     if (empty($message)) {
                         $message[] = 'Something went wrong. Please try again.';
                     }
                 }
             }
         } else {
             $message[] = '-Please fill in all the fields.';
         }
     }
     if (is_array($message)) {
         $temp = '';
         foreach ($message as $value) {
             $temp = $temp . $value . '<br>';
         }
         $message = $temp;
     }
     return view('user.register', ['message' => $message, 'form' => $form, 'arrStates' => $arrStates, 'arrCountries' => $arrCountries]);
 }
 public function checkout(Request $request)
 {
     if ($this->user_session->is_logged_in) {
         $user_id = $this->user_session->user_id;
     } else {
         $user_id = null;
     }
     $objUser = $this->user_session;
     //get cart details
     if ($this->user_session->is_logged_in) {
         $arrCartItems = DB::connection('mongodb')->collection('cart')->where('user_id', $user_id)->orWhere('session_id', session_id())->get();
     } else {
         $arrCartItems = DB::connection('mongodb')->collection('cart')->where('session_id', session_id())->get();
     }
     //get states and countries from database
     $arrStates = DB::connection('mongodb')->collection('states')->get();
     $arrCountries = DB::connection('mongodb')->collection('countries')->get();
     $arrStates_code_state = getKeyValueArray('code', 'state', $arrStates);
     $arrCountries_code_country = getKeyValueArray('code', 'country', $arrCountries);
     $form['fname'] = filter_form_input($request->input('fname', ''));
     $form['lname'] = filter_form_input($request->input('lname', ''));
     $form['email'] = filter_form_input($request->input('email', ''));
     $form['mobile'] = filter_form_input($request->input('mobile', ''));
     $form['zip'] = filter_form_input($request->input('zip', ''));
     $form['address'] = filter_form_input($request->input('address1', '') . ' ' . $request->input('address2', ''));
     $form['city'] = filter_form_input($request->input('city', ''));
     $form['state'] = filter_form_input($request->input('state', ''));
     $form['country'] = filter_form_input($request->input('country', ''));
     $message = '';
     $open_tab = '';
     if ($request->isMethod('post')) {
         if ($form['fname'] != '' && $form['lname'] != '' && $form['email'] != '' && $form['email'] != '' && $form['mobile'] != '' && $form['zip'] != '' && $form['address'] != '' && $form['city'] != '') {
             if (!filter_var($form['email'], FILTER_VALIDATE_EMAIL)) {
                 $message[] = '-Please enter a valid email address.';
             }
             if (strlen($form['mobile']) > 10 || strlen($form['mobile']) < 10) {
                 $message[] = '-Please enter valid 10 digit mobile number.';
             }
             if (!is_numeric($form['mobile'])) {
                 $message[] = '-Please enter valid 10 digit mobile number.';
             }
             if ($form['state'] == 'select' || $form['country'] == 'select' || !array_key_exists($form['state'], $arrStates_code_state) || !array_key_exists($form['country'], $arrCountries_code_country)) {
                 $message[] = '-Please select your state and country.';
             }
             if (empty($message)) {
                 try {
                     //save user in database
                     $objUserMaster = new App\UserMaster();
                     $objUserMaster->fname = $form['fname'];
                     $objUserMaster->lname = $form['lname'];
                     $objUserMaster->email = $form['email'];
                     $objUserMaster->mobile = $form['mobile'];
                     $objUserMaster->zip_code = $form['zip'];
                     $objUserMaster->state = $form['state'];
                     $objUserMaster->country = $form['country'];
                     $objUserMaster->city = $form['city'];
                     $objUserMaster->address = $form['address'];
                     $objUserMaster->password = md5(time());
                     $res = $objUserMaster->save();
                     $LastInsertId = $objUserMaster->user_id;
                 } catch (\Exception $e) {
                     $message[] = 'Looks like something went wrong or mostly the email you entered, already exists. Kindly register with different email id or contact our support at <a class="yellow-link" href="mailto:' . config('global.support_email') . '">' . config('global.support_email') . '</a>';
                     $open_tab = 'shippingAddressLink';
                 }
                 if (isset($res) && $res == true && empty($message)) {
                     $objUser = $objUserMaster;
                     $user_id = $objUser->user_id;
                 } else {
                     if (empty($message)) {
                         $message[] = 'Something went wrong. Please try again.';
                         $open_tab = 'shippingAddressLink';
                     }
                 }
             }
         } else {
             $message[] = '-Please fill in all the fields.';
             $open_tab = 'shippingAddressLink';
         }
     }
     if ($user_id != null) {
         //set userid as current user in all the cart items for current session
         foreach ($arrCartItems as $key => $item) {
             $objCartItem = App\CartMaster::where('item_id', $item['item_id'])->first();
             $objCartItem->user_id = $user_id;
             $objCartItem->save();
         }
     }
     if (is_array($message)) {
         $temp = '';
         foreach ($message as $value) {
             $temp = $temp . $value . '<br>';
         }
         $message = $temp;
     }
     $cart_total_price = 0;
     $cart_total_items = 0;
     foreach ($arrCartItems as $key => $value) {
         $cart_total_price = $cart_total_price + $value['price'] * $value['qty'];
         $cart_total_items++;
     }
     //shipping charges and vat
     $shipping_charges = 0;
     $vat = 0;
     $total_price = $cart_total_price + $shipping_charges + $vat;
     return view('user.checkout', compact('total_price', 'vat', 'shipping_charges', 'cart_total_items', 'cart_total_price', 'open_tab', 'form', 'arrCountries', 'arrStates', 'message', 'user_id', 'objUser', 'arrStates_code_state', 'arrCountries_code_country'));
 }