public static GymSearchListResponse createGymSearchListResponse(IEnumerable <Data.Gym> gyms, double?userLat, double?userLong) { // only gyms that are active and approved and have their descriptions filled out // at some point gyms were defaulted with Coming Soon! as their description var gymResults = gyms.Where(w => w.IsActive && w.IsApproved && !w.GymInfo.Equals("COMING SOON!")).Select(gym => new GymResponse() { name = gym.GymName, description = gym.GymInfo, pictureUrl = getPictureUrl(gym.GymPhotoGalleries), gymId = gym.GymId, price = gym.PriceToCharge, city = gym.ContactInfo1.Address.City, state = gym.ContactInfo1.Address.TypeState.StateAbbreviation, gymUrl = gym.Url, isActive = gym.IsActive, address = gym.ContactInfo1.Address.StreetLine1 + " " + gym.ContactInfo1.Address.StreetLine2 + "," + gym.ContactInfo1.Address.City + "," + gym.ContactInfo1.Address.TypeState.StateAbbreviation + "," + gym.ContactInfo1.Address.Zip, phone = gym.ContactInfo1.Phone, latitude = gym.Position.Latitude ?? 0, longitude = gym.Position.Longitude ?? 0, miles = getMilesFromUser( gym.Position.Latitude ?? 0, gym.Position.Longitude ?? 0, userLat ?? 0, userLong ?? 0), }).Take(15).ToList(); var rv = new GymSearchListResponse { status = 200, success = true, message = "Success!", results = gymResults, }; return(rv); }
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); }