public async Task <GetShippingPriceResponse> GetShippingPrices(GetShippingPriceRequest request, ShippingProvider provider) { var response = new GetShippingPriceResponse { IsSuccess = true }; var priceAndDestinations = await _priceAndDestinationRepository.Query().ToListAsync(); var query = priceAndDestinations.Where(x => (x.CountryId == null || x.CountryId == request.ShippingAddress.CountryId) && (x.StateOrProvinceId == null || x.StateOrProvinceId == request.ShippingAddress.StateOrProvinceId) && (x.DistrictId == null || x.DistrictId == request.ShippingAddress.DistrictId) && (x.ZipCode == null || x.ZipCode == request.ShippingAddress.ZipCode) && request.OrderAmount >= x.MinOrderSubtotal); var cheapestApplicable = query.OrderBy(x => x.ShippingPrice).FirstOrDefault(); if (cheapestApplicable != null) { response.ApplicablePrices.Add(new ShippingPrice { Name = "Standard", Price = cheapestApplicable.ShippingPrice }); } return(response); }
public Task <GetShippingPriceResponse> GetShippingPrices(GetShippingPriceRequest request, ShippingProvider provider) { var response = new GetShippingPriceResponse { IsSuccess = true }; var freeShippingSetting = JsonConvert.DeserializeObject <FreeShippingSetting>(provider.AdditionalSettings); if (request.OrderAmount < freeShippingSetting.MinimumOrderAmount) { return(Task.FromResult(response)); } response.ApplicablePrices.Add(new ShippingPrice(_currencyService) { Name = "Free", Price = 0 }); return(Task.FromResult(response)); }