public IActionResult Configure()
        {
            //whether user has the authority to manage configuration
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageShippingSettings))
            {
                return(AccessDeniedView());
            }

            //prepare common model
            var model = new UPSShippingModel
            {
                AccountNumber            = _upsSettings.AccountNumber,
                AccessKey                = _upsSettings.AccessKey,
                Username                 = _upsSettings.Username,
                Password                 = _upsSettings.Password,
                UseSandbox               = _upsSettings.UseSandbox,
                AdditionalHandlingCharge = _upsSettings.AdditionalHandlingCharge,
                InsurePackage            = _upsSettings.InsurePackage,
                CustomerClassification   = (int)_upsSettings.CustomerClassification,
                PickupType               = (int)_upsSettings.PickupType,
                PackagingType            = (int)_upsSettings.PackagingType,
                SaturdayDeliveryEnabled  = _upsSettings.SaturdayDeliveryEnabled,
                PassDimensions           = _upsSettings.PassDimensions,
                PackingPackageVolume     = _upsSettings.PackingPackageVolume,
                PackingType              = (int)_upsSettings.PackingType,
                Tracing = _upsSettings.Tracing
            };

            //prepare offered delivery services
            var servicesCodes = _upsSettings.CarrierServicesOffered.Split(':', StringSplitOptions.RemoveEmptyEntries)
                                .Select(idValue => idValue.Trim('[', ']')).ToList();

            //prepare available options
            model.AvailableCustomerClassifications = CustomerClassification.DailyRates.ToSelectList(false)
                                                     .Select(item => new SelectListItem(item.Text, item.Value)).ToList();
            model.AvailablePickupTypes = PickupType.DailyPickup.ToSelectList(false)
                                         .Select(item => new SelectListItem(item.Text, item.Value)).ToList();
            model.AvailablePackagingTypes = PackagingType.CustomerSuppliedPackage.ToSelectList(false)
                                            .Select(item => new SelectListItem(item.Text?.TrimStart('_'), item.Value)).ToList();
            model.AvaliablePackingTypes = PackingType.PackByDimensions.ToSelectList(false)
                                          .Select(item => new SelectListItem(item.Text, item.Value)).ToList();
            model.AvailableCarrierServices = DeliveryService.Standard.ToSelectList(false).Select(item =>
            {
                var serviceCode = _upsService.GetUpsCode((DeliveryService)int.Parse(item.Value));
                return(new SelectListItem($"UPS {item.Text?.TrimStart('_')}", serviceCode, servicesCodes.Contains(serviceCode)));
            }).ToList();

            return(View("~/Plugins/Shipping.UPS/Views/Configure.cshtml", model));
        }
Example #2
0
        public IActionResult Configure()
        {
            //whether user has the authority to manage configuration
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageShippingSettings))
            {
                return(AccessDeniedView());
            }

            //prepare common model
            var model = new UPSShippingModel
            {
                AccountNumber            = _upsSettings.AccountNumber,
                AccessKey                = _upsSettings.AccessKey,
                Username                 = _upsSettings.Username,
                Password                 = _upsSettings.Password,
                UseSandbox               = _upsSettings.UseSandbox,
                AdditionalHandlingCharge = _upsSettings.AdditionalHandlingCharge,
                InsurePackage            = _upsSettings.InsurePackage,
                CustomerClassification   = (int)_upsSettings.CustomerClassification,
                PickupType               = (int)_upsSettings.PickupType,
                PackagingType            = (int)_upsSettings.PackagingType,
                SaturdayDeliveryEnabled  = _upsSettings.SaturdayDeliveryEnabled,
                PassDimensions           = _upsSettings.PassDimensions,
                PackingPackageVolume     = _upsSettings.PackingPackageVolume,
                PackingType              = (int)_upsSettings.PackingType,
                Tracing        = _upsSettings.Tracing,
                WeightType     = _upsSettings.WeightType,
                DimensionsType = _upsSettings.DimensionsType
            };

            //prepare offered delivery services
            var servicesCodes = _upsSettings.CarrierServicesOffered.Split(':', StringSplitOptions.RemoveEmptyEntries)
                                .Select(idValue => idValue.Trim('[', ']')).ToList();

            //prepare available options
            model.AvailableCustomerClassifications = CustomerClassification.DailyRates.ToSelectList(false)
                                                     .Select(item => new SelectListItem(item.Text, item.Value)).ToList();
            model.AvailablePickupTypes = PickupType.DailyPickup.ToSelectList(false)
                                         .Select(item => new SelectListItem(item.Text, item.Value)).ToList();
            model.AvailablePackagingTypes = PackagingType.CustomerSuppliedPackage.ToSelectList(false)
                                            .Select(item => new SelectListItem(item.Text?.TrimStart('_'), item.Value)).ToList();
            model.AvaliablePackingTypes = PackingType.PackByDimensions.ToSelectList(false)
                                          .Select(item => new SelectListItem(item.Text, item.Value)).ToList();
            model.AvailableCarrierServices = DeliveryService.Standard.ToSelectList(false).Select(item =>
            {
                var serviceCode = _upsService.GetUpsCode((DeliveryService)int.Parse(item.Value));
                return(new SelectListItem($"UPS {item.Text?.TrimStart('_')}", serviceCode, servicesCodes.Contains(serviceCode)));
            }).ToList();
            model.AvaliableWeightTypes = new List <SelectListItem> {
                new SelectListItem("LBS", "LBS"), new SelectListItem("KGS", "KGS")
            };
            model.AvaliableDimensionsTypes = new List <SelectListItem> {
                new SelectListItem("IN", "IN"), new SelectListItem("CM", "CM")
            };

            //check measures
            var weightSystemName = _upsSettings.WeightType switch { "LBS" => "lb", "KGS" => "kg", _ => null };

            if (_measureService.GetMeasureWeightBySystemKeyword(weightSystemName) == null)
            {
                _notificationService.ErrorNotification($"Could not load '{weightSystemName}' <a href=\"{Url.Action("List", "Measure")}\" target=\"_blank\">measure weight</a>", false);
            }

            var dimensionSystemName = _upsSettings.DimensionsType switch { "IN" => "inches", "CM" => "centimeters", _ => null };

            if (_measureService.GetMeasureDimensionBySystemKeyword(dimensionSystemName) == null)
            {
                _notificationService.ErrorNotification($"Could not load '{dimensionSystemName}' <a href=\"{Url.Action("List", "Measure")}\" target=\"_blank\">measure dimension</a>", false);
            }

            return(View("~/Plugins/Shipping.UPS/Views/Configure.cshtml", model));
        }