示例#1
0
        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);
        }
示例#2
0
        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);
        }