/** * 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); }