Пример #1
0
        public virtual ActionResult GetShippingOptions(RateCalculatorViewModel model)
        {
            LogI("GetShippingOptions, countryTo=" + model.ToAddress.Country
                 + ", countryFrom=" + model.FromAddress.Country
                 + ", weightLb" + model.WeightLb
                 + ", weightOz=" + model.WeightOz);

            var shipmentProviderTypes = AccessManager.Company.ShipmentProviderInfoList.Where(p => p.Type == (int)ShipmentProviderType.FedexGeneral ||
                                                                                             p.Type == (int)ShipmentProviderType.FedexOneRate ||
                                                                                             p.Type == (int)ShipmentProviderType.Stamps)
                                        .Select(p => p.Type)
                                        .ToList();

            var orderItems = new List <OrderItemRateInfo>()
            {
                new OrderItemRateInfo()
                {
                    PackageWidth  = model.PackageWidth,
                    PackageHeight = model.PackageHeight,
                    PackageLength = model.PackageLenght,
                    Quantity      = 1,
                }
            };
            var shippingMethods = new List <ShippingMethodViewModel>();

            foreach (var shipmentProviderId in shipmentProviderTypes)
            {
                var rateProvider = ServiceFactory.GetShipmentProviderByType((ShipmentProviderType)shipmentProviderId,
                                                                            LogService,
                                                                            Time,
                                                                            DbFactory,
                                                                            WeightService,
                                                                            AccessManager.Company.ShipmentProviderInfoList,
                                                                            null,
                                                                            null,
                                                                            null,
                                                                            null);

                var callResult = model.GetShippingOptionsModel(Db,
                                                               Time,
                                                               LogService,
                                                               rateProvider,
                                                               WeightService,
                                                               ShippingService,
                                                               orderItems);

                if (callResult.Status == CallStatus.Success)
                {
                    shippingMethods.AddRange(callResult.Data);
                }
                else
                {
                    var errorResult = new ValueResult <List <ShippingMethodViewModel> >(callResult.Status == CallStatus.Success,
                                                                                        callResult.Message,
                                                                                        callResult.Data);
                    return(Json(errorResult, JsonRequestBehavior.AllowGet));
                }
            }

            var result = new ValueResult <List <ShippingMethodViewModel> >(true,
                                                                           "",
                                                                           shippingMethods);

            return(Json(result, JsonRequestBehavior.AllowGet));
        }
        public IActionResult Index()
        {
            var model = new RateCalculatorViewModel();

            return(View(model));
        }