public static GymSearchListResponse searchByLocationImplementation(SearchGymRequest request) { var location = System.Data.Entity.Spatial.DbGeography.FromText(String.Format("POINT({0} {1})", request.longitude, request.latitude)); GymSearchListResponse rv; using (var db = new UniversalGymEntities()) { var searchRequest = new Data.SearchRequest { SearchDate = DateTime.Now, Position = location, UniqueDeviceIdentifier = request.uniqueDeviceId, }; var user = db.Users.SingleOrDefault(a => a.CurrentToken == request.authToken && a.UserId == request.accountId); if (user != null) { searchRequest.UserId = user.UserId; } db.SearchRequests.Add(searchRequest); db.SaveChanges(); var searchText = "DeviceId: " + request.uniqueDeviceId + Environment.NewLine; if (searchRequest.User != null) { searchText = searchText + "User: " + searchRequest.User.Email; } SlackHelper.sendSearchChannel(searchText, request.latitude.ToString(), request.longitude.ToString()); var gyms = db.Gyms.Where(w => w.Position != null).OrderBy(o => o.Position.Distance(location)); rv = GymSearchListHelper.createGymSearchListResponse(gyms, location.Latitude, location.Longitude); if (user != null) { rv.credits = user.Credits; } else { rv.credits = 0; } } return(rv); }
public SearchGymResponse SearchGym(SearchGymRequest request) { var result = base.CreateResponse <SearchGymResponse>("查找场馆信息"); try { using (var con = new DbConnectionProvider(dbName).GetOpenConnection()) { var parms = new DynamicParameters(); parms.Add("CityID", request.CityID, DbType.Int32); parms.Add("DistrictID", request.DistrictID, DbType.Int32); parms.Add("CourseTypeIDs", string.Join(",", request.Courses.Select <CourseTypeDTO, int>(o => { return(o.CourseTypeID); })), DbType.String); result.Gyms = con.Query <BriefGymDTO>("sp_SearchGym", parms, CommandType.StoredProcedure).ToList(); } } catch (Exception ex) { base.HandleResponseException(ref result, ex); } return(result); }
// search by city public GymSearchListResponse SearchGymsByCity(SearchGymRequest request) { try { Logs.LogsInsertAction("User search by city attempted"); var validResponse = Users.searchGymsByCity.searchGymsByCityImplementation(request); if (validResponse.success == true) { Logs.LogsInsertAction("User search by city success: " + validResponse.message); } else { Logs.LogsInsertAction("User search by city failure: " + validResponse.message); } return(validResponse); } catch (Exception exception) { Logs.LogsInsertError(exception); return(new GymSearchListResponse { message = "An error occured. The Pedal team has been notified.", success = false }); } }
public static GymSearchListResponse searchGymsByCityImplementation(SearchGymRequest request) { GymSearchListResponse rv; using (var db = new UniversalGymEntities()) { var searchRequest = new Data.SearchRequest { SearchDate = DateTime.Now, UniqueDeviceIdentifier = request.uniqueDeviceId, }; if (request.longitude != 0 && request.latitude != 0) { searchRequest.Position = System.Data.Entity.Spatial.DbGeography.FromText(String.Format("POINT({0} {1})", request.longitude, request.latitude)); } if (!request.city.Equals("NULL")) { searchRequest.Request = request.city; } if (!request.state.Equals("NULL")) { searchRequest.Request = searchRequest.Request + " " + request.state ?? "NO STATE"; } var user = db.Users.SingleOrDefault(a => a.CurrentToken == request.authToken && a.UserId == request.accountId); if (user != null) { searchRequest.UserId = user.UserId; } db.SearchRequests.Add(searchRequest); db.SaveChanges(); // convert city, state to lat, long var target = searchRequest.Request; var geocoded = Geocoder.GeoCodeAddress(target); if (geocoded != null) { var cityLocation = System.Data.Entity.Spatial.DbGeography.FromText( String.Format("POINT({0} {1})", geocoded.Longitude, geocoded.Latitude)); var gyms = db.Gyms.Where(w => w.Position != null).OrderBy(o => o.Position.Distance(cityLocation)); rv = GymSearchListHelper.createGymSearchListResponse(gyms, cityLocation.Latitude, cityLocation.Longitude); if (user != null) { rv.credits = user.Credits; } else { rv.credits = 0; } var searchText = "DeviceId: " + request.uniqueDeviceId + Environment.NewLine; if (searchRequest.User != null) { searchText = searchText + "User: "******"Request: " + searchRequest.Request; SlackHelper.sendSearchChannel(searchText, request.latitude.ToString(), request.longitude.ToString()); } else { var searchText = ""; if (searchRequest.User != null) { searchText = searchText + "User: "******"Request: " + searchRequest.Request; SlackHelper.sendSearchChannelNotFound(searchText); rv = new GymSearchListResponse { success = false, status = 400, message = "Could not find location" }; if (user != null) { rv.credits = user.Credits; } else { rv.credits = 0; } } } return(rv); }
public SearchGymResponse SearchGym(SearchGymRequest request) { return(BasicDataManager.GetInstance().SearchGym(request)); }