/**
  * Handles requests for reserving the table.
  * 
  * @access	public
  * @return	response
  * @since	1.0.0
  */
 public function reserveTable()
 {
     //array to store response
     $arrResponse = array();
     //reading data input by the user
     $data = $this->request->all();
     $data['access_token'] = $_SERVER['HTTP_X_WOW_TOKEN'];
     //validating user data
     $validator = Validator::make($data, Reservation::$arrRules);
     if ($validator->fails()) {
         $message = $validator->messages();
         $errorMessage = "";
         foreach ($data as $key => $value) {
             if ($message->has($key)) {
                 $errorMessage .= $message->first($key) . '\\n ';
             }
         }
         $arrResponse['status'] = Config::get('constants.API_ERROR');
         $arrResponse['error'] = $errorMessage;
     } else {
         $userID = UserDevices::getUserDetailsByAccessToken($data['access_token']);
         if ($userID > 0) {
             //validating the information submitted by users
             $arrResponse = Reservation::validateReservationData($data);
             if ($arrResponse['status'] == Config::get('constants.API_SUCCESS')) {
                 $arrResponse = ReservationDetails::addReservationDetails($data, $userID, $this->mailchimp, 'mobile_user');
             }
         } else {
             $arrResponse['status'] = Config::get('constants.API_ERROR');
             $arrResponse['msg'] = 'Not a valid request.';
         }
     }
     if (isset($arrResponse['data'])) {
         $tokens = ReservationModel::pushToRestaurant($arrResponse['data']['reservation_id']);
         $this->restaurantapp->push($arrResponse['data']['reservation_id'], $tokens, true);
     }
     return response()->json($arrResponse, 200);
 }