Exemplo n.º 1
0
        /// <summary>
        /// Get nearest deals.
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public async Task <PagedResult <DealDto> > GetNearestDeals(SearchDealsRequestDto request)
        {
            var currentLocation =
                geometryFactory.CreatePoint(new Coordinate(request.GeoEntry.Longitude, request.GeoEntry.Latitude));

            return(await unitOfWork.GetRepository <Deal>()
                   .SearchFor(e =>
                              e.Brand.Stores.Any(s => s.Location.Distance(currentLocation) <= request.GeoEntry.Radius) &&
                              (e.DealValidFrom <= DateTime.Now) && (DateTime.Now <= e.DealValidTo) &&
                              !(e.Brand.Disabled ?? false))
                   .Include(e => e.Brand)
                   .Include(e => e.Images)
                   .OrderBy(e => e.Name)
                   .Select(e => new DealDto()
            {
                Name = e.Name,
                DealType = (DealType)e.DealType,
                Gender = (GenderType)e.Gender,
                Currency = e.Currency,
                DealValidFrom = e.DealValidFrom,
                DealValidTo = e.DealValidTo,
                IsActive = e.IsActive,
                OriginalPrice = e.OriginalPrice,
                Price = e.Price,
                BuyNowUrl = e.BuyNowUrl,
                MarketUrl = e.MarketUrl,
                CouponCode = e.CouponCode,
                Images = e.Images.Select(i => i.Path)
            })
                   .GetPagedResultAsync(request.Skip, request.Take));
        }
Exemplo n.º 2
0
        public async Task <ActionResult <PagedResult <DealDto> > > GetNearestDeals([FromQuery] SearchDealsRequestDto request)
        {
            PagedResult <DealDto> deals = await dealService.GetNearestDeals(request);

            if (deals == null)
            {
                return(InvalidRequest());
            }

            return(Ok(deals));
        }