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