Beispiel #1
0
 private static IEnumerable <ShippingDateAndTime> GetShippingDateAndTime(BringRatesSampleBlockView view)
 {
     if (view.ShippingDateAndTime.HasValue)
     {
         yield return(new ShippingDateAndTime(view.ShippingDateAndTime.Value));
     }
 }
Beispiel #2
0
 public static ShipmentLeg GetShipmentLeg(BringRatesSampleBlockView view)
 {
     return(new ShipmentLeg(
                view.PostalCodeFrom,
                view.PostalCodeTo,
                view.CountryFrom,
                view.CountryTo));
 }
Beispiel #3
0
        private static IEnumerable <Products> GetProducts(BringRatesSampleBlockView view)
        {
            var products = view.Products.Select(Product.GetByCode).ToList();

            return(products.Count != 0
                ? new[] { new Products(products.ToArray()) }
                : Enumerable.Empty <Products>());
        }
Beispiel #4
0
        private static IEnumerable <AdditionalServices> GetAdditionalServices(BringRatesSampleBlockView view)
        {
            var additionalServices = view.AdditionalServices.Select(AdditionalService.GetByCode).ToList();

            return(additionalServices.Count != 0
                ? new[] { new AdditionalServices(additionalServices.ToArray()) }
                : Enumerable.Empty <AdditionalServices>());
        }
        private void ValidatePackageSize(BringRatesSampleBlockView formData)
        {
            var hasWeight      = formData.Weight.HasValue;
            var hasDimensions  = formData.Width.HasValue && formData.Height.HasValue && formData.Length.HasValue;
            var hasVolume      = formData.Volume.HasValue;
            var hasPackageSize = hasWeight || hasDimensions || hasVolume;

            if (!hasPackageSize)
            {
                ModelState.AddModelError("", "Ingen pakkestørrelse gitt. Vennligst oppgi vekt, volum eller dimensjoner.");
            }
        }
        public ActionResult Post(BringRatesSampleBlockView formData)
        {
            Validate(formData);
            if (!ModelState.IsValid)
            {
                return(PartialView(ViewPath, formData));
            }

            var model = Search(formData);

            return(PartialView(ViewPath, model));
        }
Beispiel #7
0
        public static IShippingQueryParameter[] GetAdditionalParameters(BringRatesSampleBlockView view)
        {
            var parameters = new List <IShippingQueryParameter>();

            var additionalPackageSizes = GetPackageSizes(view).Skip(1);

            parameters.AddRange(additionalPackageSizes);
            parameters.AddRange(GetShippingDateAndTime(view));
            parameters.AddRange(GetEdi(view));
            parameters.AddRange(GetShippedFromPostOffice(view));
            parameters.AddRange(GetProducts(view));
            parameters.AddRange(GetAdditionalServices(view));

            return(parameters.ToArray());
        }
Beispiel #8
0
        private static IEnumerable <PackageSize> GetPackageSizes(BringRatesSampleBlockView view)
        {
            if (view.Weight.HasValue)
            {
                yield return(PackageSize.InGrams(view.Weight.Value));
            }

            if (view.Volume.HasValue)
            {
                yield return(PackageSize.InVolume(view.Volume.Value));
            }

            if (view.Length.HasValue && view.Width.HasValue && view.Height.HasValue)
            {
                yield return(PackageSize.InDimensions(view.Length.Value, view.Width.Value, view.Height.Value));
            }
        }
Beispiel #9
0
        private BringRatesSampleBlockView Search(BringRatesSampleBlockView formData)
        {
            var settings = new ShippingSettings(GetBaseUri());
            var client   = new ShippingClient(settings);

            var shipmentLeg          = ParameterMapper.GetShipmentLeg(formData);
            var packageSize          = ParameterMapper.GetPackageSize(formData);
            var additionalParameters = ParameterMapper.GetAdditionalParameters(formData);

            var query  = new EstimateQuery(shipmentLeg, packageSize, additionalParameters);
            var result = client.FindAsync <ShipmentEstimate>(query).Result;

            var estimateGroups = result.Estimates
                                 .GroupBy(x => x.GuiInformation.MainDisplayCategory)
                                 .Select(x => new BringRatesSampleBlockView.EstimateGroup(x.Key, x));

            var model = new BringRatesSampleBlockView(estimateGroups);

            return(model);
        }
Beispiel #10
0
 private static IEnumerable <Edi> GetEdi(BringRatesSampleBlockView view)
 {
     yield return(new Edi(view.Edi));
 }
Beispiel #11
0
 private static IEnumerable <ShippedFromPostOffice> GetShippedFromPostOffice(BringRatesSampleBlockView view)
 {
     yield return(new ShippedFromPostOffice(view.ShippedFromPostOffice));
 }
Beispiel #12
0
 public static PackageSize GetPackageSize(BringRatesSampleBlockView view)
 {
     return(GetPackageSizes(view).First());
 }
 private void Validate(BringRatesSampleBlockView formData)
 {
     ValidatePackageSize(formData);
 }