public async Task <ActionResult> GetBusinessforCustomer(BusinessForClientViewmodel businessForClientViewmodel) { var totalFeedBack = 0.0; var response = await context.Businesses.Include(bt => bt.businessType).Include(f => f.FeedBacks).Where(iv => iv.isVisible).AsNoTracking().ToListAsync(); for (int i = 0; i < response.Count; i++) { if (response[i].FeedBacks.Count > 0) { for (int j = 0; j < response[i].FeedBacks.Count; j++) { if (response[i].FeedBacks[j].OverallRating.HasValue) { totalFeedBack += response[i].FeedBacks[j].OverallRating.Value; } } response[i].OverallRating = totalFeedBack / double.Parse(response[i].FeedBacks.Count.ToString()); } } Coordinate origin = new Coordinate(businessForClientViewmodel.UserLatitude, businessForClientViewmodel.UserLongitude); CoordinateBoundaries boundaries = new CoordinateBoundaries(origin, 10); double minLatitude = boundaries.MinLatitude; double maxLatitude = boundaries.MaxLatitude; double minLongitude = boundaries.MinLongitude; double maxLongitude = boundaries.MaxLongitude; var results = response .Where(x => x.Latitude >= minLatitude && x.Latitude <= maxLatitude) .Where(x => x.Longitude >= minLongitude && x.Longitude <= maxLongitude) .Select(result => new { Store = result, Distance = GeoCalculator.GetDistance(origin.Latitude, origin.Longitude, result.Latitude, result.Longitude, 1), Direction = GeoCalculator.GetDirection(origin.Latitude, origin.Longitude, result.Latitude, result.Longitude) }) .Where(x => x.Distance <= 10) .OrderBy(x => x.Distance) .ToList(); response = results.Select(x => x.Store).ToList(); return(new OkObjectResult(response)); }
public async Task <ActionResult <List <Business> > > getBusinessClient(BusinessForClientViewmodel businessForClientViewmodel) { return(await repository.GetBusinessforCustomer(businessForClientViewmodel)); }