コード例 #1
0
        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));
        }
コード例 #2
0
 public async Task <ActionResult <List <Business> > > getBusinessClient(BusinessForClientViewmodel businessForClientViewmodel)
 {
     return(await repository.GetBusinessforCustomer(businessForClientViewmodel));
 }