示例#1
0
        public new void SetUp()
        {
            measureDimension1 = new MeasureDimension()
            {
                Id            = 1,
                Name          = "inch(es)",
                SystemKeyword = "inch",
                Ratio         = 1M,
                DisplayOrder  = 1,
            };
            measureDimension2 = new MeasureDimension()
            {
                Id            = 2,
                Name          = "feet",
                SystemKeyword = "ft",
                Ratio         = 0.08333333M,
                DisplayOrder  = 2,
            };
            measureDimension3 = new MeasureDimension()
            {
                Id            = 3,
                Name          = "meter(s)",
                SystemKeyword = "m",
                Ratio         = 0.0254M,
                DisplayOrder  = 3,
            };
            measureDimension4 = new MeasureDimension()
            {
                Id            = 4,
                Name          = "millimetre(s)",
                SystemKeyword = "mm",
                Ratio         = 25.4M,
                DisplayOrder  = 4,
            };



            measureWeight1 = new MeasureWeight()
            {
                Id            = 1,
                Name          = "ounce(s)",
                SystemKeyword = "oz",
                Ratio         = 16M,
                DisplayOrder  = 1,
            };
            measureWeight2 = new MeasureWeight()
            {
                Id            = 2,
                Name          = "lb(s)",
                SystemKeyword = "lb",
                Ratio         = 1M,
                DisplayOrder  = 2,
            };
            measureWeight3 = new MeasureWeight()
            {
                Id            = 3,
                Name          = "kg(s)",
                SystemKeyword = "kg",
                Ratio         = 0.45359237M,
                DisplayOrder  = 3,
            };
            measureWeight4 = new MeasureWeight()
            {
                Id            = 4,
                Name          = "gram(s)",
                SystemKeyword = "g",
                Ratio         = 453.59237M,
                DisplayOrder  = 4,
            };

            _measureDimensionRepository = MockRepository.GenerateMock <IRepository <MeasureDimension> >();
            _measureDimensionRepository.Expect(x => x.Table).Return(new List <MeasureDimension>()
            {
                measureDimension1, measureDimension2, measureDimension3, measureDimension4
            }.AsQueryable());
            _measureDimensionRepository.Expect(x => x.GetById(measureDimension1.Id)).Return(measureDimension1);
            _measureDimensionRepository.Expect(x => x.GetById(measureDimension2.Id)).Return(measureDimension2);
            _measureDimensionRepository.Expect(x => x.GetById(measureDimension3.Id)).Return(measureDimension3);
            _measureDimensionRepository.Expect(x => x.GetById(measureDimension4.Id)).Return(measureDimension4);

            _measureWeightRepository = MockRepository.GenerateMock <IRepository <MeasureWeight> >();
            _measureWeightRepository.Expect(x => x.Table).Return(new List <MeasureWeight>()
            {
                measureWeight1, measureWeight2, measureWeight3, measureWeight4
            }.AsQueryable());
            _measureWeightRepository.Expect(x => x.GetById(measureWeight1.Id)).Return(measureWeight1);
            _measureWeightRepository.Expect(x => x.GetById(measureWeight2.Id)).Return(measureWeight2);
            _measureWeightRepository.Expect(x => x.GetById(measureWeight3.Id)).Return(measureWeight3);
            _measureWeightRepository.Expect(x => x.GetById(measureWeight4.Id)).Return(measureWeight4);


            var cacheManager = new NullCache();

            _measureSettings = new MeasureSettings();
            _measureSettings.BaseDimensionId = measureDimension1.Id; //inch(es)
            _measureSettings.BaseWeightId    = measureWeight2.Id;    //lb(s)

            _eventPublisher = MockRepository.GenerateMock <IEventPublisher>();
            _eventPublisher.Expect(x => x.Publish(Arg <object> .Is.Anything));

            _measureService = new MeasureService(cacheManager,
                                                 _measureDimensionRepository,
                                                 _measureWeightRepository,
                                                 _measureSettings, _eventPublisher);
        }
示例#2
0
 private int ConvertFromPrimaryMeasureDimension(decimal quantity, MeasureDimension usedMeasureDimension)
 {
     return(Convert.ToInt32(Math.Ceiling(_measureService.ConvertFromPrimaryMeasureDimension(quantity, usedMeasureDimension))));
 }
示例#3
0
 public static MeasureDimensionModel ToModel(this MeasureDimension entity)
 {
     return(Mapper.Map <MeasureDimension, MeasureDimensionModel>(entity));
 }
        /// <summary>
        /// Converts dimension
        /// </summary>
        /// <param name="value">Value to convert</param>
        /// <param name="sourceMeasureDimension">Source dimension</param>
        /// <param name="targetMeasureDimension">Target dimension</param>
        /// <param name="round">A value indicating whether a result should be rounded</param>
        /// <returns>Converted value</returns>
        public virtual decimal ConvertDimension(decimal value,
                                                MeasureDimension sourceMeasureDimension, MeasureDimension targetMeasureDimension, bool round = true)
        {
            if (sourceMeasureDimension == null)
            {
                throw new ArgumentNullException(nameof(sourceMeasureDimension));
            }

            if (targetMeasureDimension == null)
            {
                throw new ArgumentNullException(nameof(targetMeasureDimension));
            }

            var result = value;

            if (result != decimal.Zero && sourceMeasureDimension.Id != targetMeasureDimension.Id)
            {
                result = ConvertToPrimaryMeasureDimension(result, sourceMeasureDimension);
                result = ConvertFromPrimaryMeasureDimension(result, targetMeasureDimension);
            }

            if (round)
            {
                result = Math.Round(result, 2);
            }

            return(result);
        }
示例#5
0
        /// <summary>
        /// Converts dimension
        /// </summary>
        /// <param name="value">Value to convert</param>
        /// <param name="sourceMeasureDimension">Source dimension</param>
        /// <param name="targetMeasureDimension">Target dimension</param>
        /// <param name="round">A value indicating whether a result should be rounded</param>
        /// <returns>Converted value</returns>
        public virtual async Task <double> ConvertDimension(double value,
                                                            MeasureDimension sourceMeasureDimension, MeasureDimension targetMeasureDimension, bool round = true)
        {
            if (sourceMeasureDimension == null)
            {
                throw new ArgumentNullException(nameof(sourceMeasureDimension));
            }

            if (targetMeasureDimension == null)
            {
                throw new ArgumentNullException(nameof(targetMeasureDimension));
            }

            double result = value;

            if (result != 0 && sourceMeasureDimension.Id != targetMeasureDimension.Id)
            {
                result = await ConvertToPrimaryMeasureDimension(result, sourceMeasureDimension);

                result = await ConvertFromPrimaryMeasureDimension(result, targetMeasureDimension);
            }
            if (round)
            {
                result = Math.Round(result, 2);
            }
            return(result);
        }
 public static MeasureDimensionModel ToModel(this MeasureDimension entity)
 {
     return(entity.MapTo <MeasureDimension, MeasureDimensionModel>());
 }
示例#7
0
        private void BindData()
        {
            txtStoreName.Text     = SettingManager.StoreName;
            txtStoreURL.Text      = SettingManager.StoreURL;
            cbStoreClosed.Checked = SettingManager.GetSettingValueBoolean("Common.StoreClosed");
            cbAnonymousCheckoutAllowed.Checked = CustomerManager.AnonymousCheckoutAllowed;

            cbStoreNameInTitle.Checked           = SettingManager.GetSettingValueBoolean("SEO.IncludeStoreNameInTitle");
            txtDefaulSEOTitle.Text               = SettingManager.GetSettingValue("SEO.DefaultTitle");
            txtDefaulSEODescription.Text         = SettingManager.GetSettingValue("SEO.DefaultMetaDescription");
            txtDefaulSEOKeywords.Text            = SettingManager.GetSettingValue("SEO.DefaultMetaKeywords");
            cbShowWelcomeMessage.Checked         = SettingManager.GetSettingValueBoolean("Display.ShowWelcomeMessageOnMainPage");
            cbShowNewsHeaderRssURL.Checked       = SettingManager.GetSettingValueBoolean("Display.ShowNewsHeaderRssURL");
            cbShowBlogHeaderRssURL.Checked       = SettingManager.GetSettingValueBoolean("Display.ShowBlogHeaderRssURL");
            txtProductUrlRewriteFormat.Text      = SettingManager.GetSettingValue("SEO.Product.UrlRewriteFormat");
            txtCategoryUrlRewriteFormat.Text     = SettingManager.GetSettingValue("SEO.Category.UrlRewriteFormat");
            txtManufacturerUrlRewriteFormat.Text = SettingManager.GetSettingValue("SEO.Manufacturer.UrlRewriteFormat");
            txtNewsUrlRewriteFormat.Text         = SettingManager.GetSettingValue("SEO.News.UrlRewriteFormat");
            txtBlogUrlRewriteFormat.Text         = SettingManager.GetSettingValue("SEO.Blog.UrlRewriteFormat");
            txtTopicUrlRewriteFormat.Text        = SettingManager.GetSettingValue("SEO.Topic.UrlRewriteFormat");


            txtMaxImageSize.Value          = SettingManager.GetSettingValueInteger("Media.MaximumImageSize");
            txtProductThumbSize.Value      = SettingManager.GetSettingValueInteger("Media.Product.ThumbnailImageSize");
            txtProductDetailSize.Value     = SettingManager.GetSettingValueInteger("Media.Product.DetailImageSize");
            txtProductVariantSize.Value    = SettingManager.GetSettingValueInteger("Media.Product.VariantImageSize");
            txtCategoryThumbSize.Value     = SettingManager.GetSettingValueInteger("Media.Category.ThumbnailImageSize");
            txtManufacturerThumbSize.Value = SettingManager.GetSettingValueInteger("Media.Manufacturer.ThumbnailImageSize");
            cbShowCartImages.Checked       = SettingManager.GetSettingValueBoolean("Display.ShowProductImagesOnShoppingCart");
            cbShowWishListImages.Checked   = SettingManager.GetSettingValueBoolean("Display.ShowProductImagesOnWishList");
            txtShoppingCartThumbSize.Value = SettingManager.GetSettingValueInteger("Media.ShoppingCart.ThumbnailImageSize");


            MeasureWeight baseWeight = MeasureManager.BaseWeightIn;

            if (baseWeight != null)
            {
                CommonHelper.SelectListItem(this.ddlBaseWeight, baseWeight.MeasureWeightID);
            }
            MeasureDimension baseDimension = MeasureManager.BaseDimensionIn;

            if (baseDimension != null)
            {
                CommonHelper.SelectListItem(this.ddlBaseDimension, baseDimension.MeasureDimensionID);
            }


            txtAdminEmailAddress.Text                 = MessageManager.AdminEmailAddress;
            txtAdminEmailDisplayName.Text             = MessageManager.AdminEmailDisplayName;
            txtAdminEmailHost.Text                    = MessageManager.AdminEmailHost;
            txtAdminEmailPort.Text                    = MessageManager.AdminEmailPort.ToString();
            txtAdminEmailUser.Text                    = MessageManager.AdminEmailUser;
            txtAdminEmailPassword.Text                = MessageManager.AdminEmailPassword;
            cbAdminEmailEnableSsl.Checked             = MessageManager.AdminEmailEnableSsl;
            cbAdminEmailUseDefaultCredentials.Checked = MessageManager.AdminEmailUseDefaultCredentials;


            txtEncryptionPrivateKey.Text         = SettingManager.GetSettingValue("Security.EncryptionPrivateKey");
            cbEnableLoginCaptchaImage.Checked    = SettingManager.GetSettingValueBoolean("Common.LoginCaptchaImageEnabled");
            cbEnableRegisterCaptchaImage.Checked = SettingManager.GetSettingValueBoolean("Common.RegisterCaptchaImageEnabled");


            CommonHelper.SelectListItem(this.ddlCustomerNameFormat, (int)CustomerManager.CustomerNameFormatting);
            cbShowCustomersLocation.Checked = CustomerManager.ShowCustomersLocation;
            cbShowCustomersJoinDate.Checked = CustomerManager.ShowCustomersJoinDate;
            cbAllowPM.Checked = ForumManager.AllowPrivateMessages;
            cbAllowViewingProfiles.Checked            = CustomerManager.AllowViewingProfiles;
            cbCustomersAllowedToUploadAvatars.Checked = CustomerManager.AllowCustomersToUploadAvatars;
            cbDefaultAvatarEnabled.Checked            = CustomerManager.DefaultAvatarEnabled;
            lblCurrentTimeZone.Text = DateTimeHelper.CurrentTimeZone.DisplayName;
            TimeZoneInfo defaultStoreTimeZone = DateTimeHelper.DefaultStoreTimeZone;

            if (defaultStoreTimeZone != null)
            {
                CommonHelper.SelectListItem(this.ddlDefaultStoreTimeZone, defaultStoreTimeZone.Id);
            }
            cbAllowCustomersToSetTimeZone.Checked = DateTimeHelper.AllowCustomersToSetTimeZone;


            cbUsernamesEnabled.Checked = CustomerManager.UsernamesEnabled;
            cbNewCustomerRegistrationDisabled.Checked        = CustomerManager.NewCustomerRegistrationDisabled;
            cbAllowNavigationOnlyRegisteredCustomers.Checked = CustomerManager.AllowNavigationOnlyRegisteredCustomers;
            cbRegistrationEmailValidation.Checked            = CustomerManager.RegistrationEmailValidation;
            cbEnableCompareProducts.Checked         = ProductManager.CompareProductsEnabled;
            cbEnableWishlist.Checked                = SettingManager.GetSettingValueBoolean("Common.EnableWishlist");
            cbEnableEmailAFriend.Checked            = SettingManager.GetSettingValueBoolean("Common.EnableEmailAFirend");
            cbRecentlyViewedProductsEnabled.Checked = ProductManager.RecentlyViewedProductsEnabled;
            cbRecentlyAddedProductsEnabled.Checked  = ProductManager.RecentlyAddedProductsEnabled;
            cbNotifyAboutNewProductReviews.Checked  = ProductManager.NotifyAboutNewProductReviews;
            cbShowBestsellersOnHomePage.Checked     = SettingManager.GetSettingValueBoolean("Display.ShowBestsellersOnMainPage");
            cbProductsAlsoPurchased.Checked         = ProductManager.ProductsAlsoPurchasedEnabled;
            txtProductsAlsoPurchasedNumber.Value    = ProductManager.ProductsAlsoPurchasedNumber;
        }
 /// <summary>
 /// Deletes measure dimension
 /// </summary>
 /// <param name="measureDimension">Measure dimension</param>
 public virtual void DeleteMeasureDimension(MeasureDimension measureDimension)
 {
     _measureDimensionRepository.Delete(measureDimension);
 }
示例#9
0
        public virtual async Task <decimal> ConvertFromPrimaryDimensionAsync(decimal quantity, MeasureDimension target)
        {
            decimal result          = quantity;
            var     baseDimensionIn = await _db.MeasureDimensions.FindByIdAsync(_measureSettings.BaseDimensionId);

            if (result != decimal.Zero && target.Id != baseDimensionIn.Id)
            {
                decimal exchangeRatio = target.Ratio;
                if (exchangeRatio == decimal.Zero)
                {
                    throw new SmartException(string.Format("Exchange ratio not set for dimension [{0}]", target.Name));
                }
                result *= exchangeRatio;
            }

            return(result);
        }
示例#10
0
 public static MeasureDimensionModel ToModel(this MeasureDimension entity)
 {
     return(AutoMapperConfiguration.Mapper.Map <MeasureDimension, MeasureDimensionModel>(entity));
 }
示例#11
0
        public virtual async Task <decimal> ConvertDimensionAsync(decimal quantity, MeasureDimension source, MeasureDimension target, bool round = true)
        {
            decimal result = quantity;

            if (result != decimal.Zero && source.Id != target.Id)
            {
                result = await ConvertToPrimaryDimensionAsync(result, source);

                result = await ConvertFromPrimaryDimensionAsync(result, target);
            }

            if (round)
            {
                result = Math.Round(result, 2);
            }

            return(result);
        }
示例#12
0
 public static MeasureDimension ToEntity(this MeasureDimensionModel model, MeasureDimension destination)
 {
     return model.MapTo(destination);
 }
示例#13
0
        private string CreateRequest(string AccessKey, string Username, string Password,
                                     ShipmentPackage ShipmentPackage, UPSCustomerClassification customerClassification,
                                     UPSPickupType pickupType, UPSPackagingType packagingType)
        {
            int    length            = Convert.ToInt32(Math.Ceiling(ShipmentPackage.GetTotalLength()));
            int    height            = Convert.ToInt32(Math.Ceiling(ShipmentPackage.GetTotalHeight()));
            int    width             = Convert.ToInt32(Math.Ceiling(ShipmentPackage.GetTotalWidth()));
            int    weight            = Convert.ToInt32(Math.Ceiling(ShippingManager.GetShoppingCartTotalWeigth(ShipmentPackage.Items)));
            string zipPostalCodeFrom = ShipmentPackage.ZipPostalCodeFrom;
            string zipPostalCodeTo   = ShipmentPackage.ShippingAddress.ZipPostalCode;
            string countryCodeFrom   = ShipmentPackage.CountryFrom.TwoLetterISOCode;
            string countryCodeTo     = ShipmentPackage.ShippingAddress.Country.TwoLetterISOCode;

            //TODO convert measure weight
            MeasureWeight baseWeightIn = MeasureManager.BaseWeightIn;

            if (baseWeightIn.SystemKeyword != "lb")
            {
                throw new NopException("UPS shipping service. Base weight should be set to lb(s)");
            }

            //TODO convert measure dimension
            MeasureDimension baseDimensionIn = MeasureManager.BaseDimensionIn;

            if (baseDimensionIn.SystemKeyword != "inches")
            {
                throw new NopException("UPS shipping service. Base dimension should be set to inch(es)");
            }

            StringBuilder sb = new StringBuilder();

            sb.Append("<?xml version='1.0'?>");
            sb.Append("<AccessRequest xml:lang='en-US'>");
            sb.AppendFormat("<AccessLicenseNumber>{0}</AccessLicenseNumber>", AccessKey);
            sb.AppendFormat("<UserId>{0}</UserId>", Username);
            sb.AppendFormat("<Password>{0}</Password>", Password);
            sb.Append("</AccessRequest>");
            sb.Append("<?xml version='1.0'?>");
            sb.Append("<RatingServiceSelectionRequest xml:lang='en-US'>");
            sb.Append("<Request>");
            sb.Append("<TransactionReference>");
            sb.Append("<CustomerContext>Bare Bones Rate Request</CustomerContext>");
            sb.Append("<XpciVersion>1.0001</XpciVersion>");
            sb.Append("</TransactionReference>");
            sb.Append("<RequestAction>Rate</RequestAction>");
            sb.Append("<RequestOption>Shop</RequestOption>");
            sb.Append("</Request>");
            sb.Append("<PickupType>");
            sb.AppendFormat("<Code>{0}</Code>", GetPickupTypeCode(pickupType));
            sb.Append("</PickupType>");
            sb.Append("<CustomerClassification>");
            sb.AppendFormat("<Code>{0}</Code>", GetCustomerClassificationCode(customerClassification));
            sb.Append("</CustomerClassification>");
            sb.Append("<Shipment>");
            sb.Append("<Shipper>");
            sb.Append("<Address>");
            sb.AppendFormat("<PostalCode>{0}</PostalCode>", zipPostalCodeFrom);
            sb.AppendFormat("<CountryCode>{0}</CountryCode>", countryCodeFrom);
            sb.Append("</Address>");
            sb.Append("</Shipper>");
            sb.Append("<ShipTo>");
            sb.Append("<Address>");
            sb.Append("<ResidentialAddressIndicator/>");
            sb.AppendFormat("<PostalCode>{0}</PostalCode>", zipPostalCodeTo);
            sb.AppendFormat("<CountryCode>{0}</CountryCode>", countryCodeTo);
            sb.Append("</Address>");
            sb.Append("</ShipTo>");
            sb.Append("<ShipFrom>");
            sb.Append("<Address>");
            sb.AppendFormat("<PostalCode>{0}</PostalCode>", zipPostalCodeFrom);
            sb.AppendFormat("<CountryCode>{0}</CountryCode>", countryCodeFrom);
            sb.Append("</Address>");
            sb.Append("</ShipFrom>");
            sb.Append("<Service>");
            //UNDONE set correct service code
            sb.Append("<Code>03</Code>");
            sb.Append("</Service>");


            if ((!IsPackageTooHeavy(weight)) && (!IsPackageTooLarge(length, height, width)))
            {
                sb.Append("<Package>");
                sb.Append("<PackagingType>");
                sb.AppendFormat("<Code>{0}</Code>", GetPackagingTypeCode(packagingType));
                sb.Append("</PackagingType>");
                sb.Append("<Dimensions>");
                sb.AppendFormat("<Length>{0}</Length>", length);
                sb.AppendFormat("<Width>{0}</Width>", width);
                sb.AppendFormat("<Height>{0}</Height>", height);
                sb.Append("</Dimensions>");
                sb.Append("<PackageWeight>");
                sb.AppendFormat("<Weight>{0}</Weight>", weight);
                sb.Append("</PackageWeight>");
                sb.Append("</Package>");
            }
            else
            {
                int totalPackages        = 1;
                int totalPackagesDims    = 1;
                int totalPackagesWeights = 1;
                if (IsPackageTooHeavy(weight))
                {
                    totalPackagesWeights = Convert.ToInt32(Math.Ceiling((decimal)weight / (decimal)MAXPACKAGEWEIGHT));
                }
                if (IsPackageTooLarge(length, height, width))
                {
                    totalPackagesDims = TotalPackageSize(length, height, width) / 108;
                }
                totalPackages = totalPackagesDims > totalPackagesWeights ? totalPackagesDims : totalPackagesWeights;
                if (totalPackages == 0)
                {
                    totalPackages = 1;
                }

                int weight2 = weight / totalPackages;
                int height2 = height / totalPackages;
                int width2  = width / totalPackages;

                for (int i = 0; i < totalPackages; i++)
                {
                    sb.Append("<Package>");
                    sb.Append("<PackagingType>");
                    sb.AppendFormat("<Code>{0}</Code>", GetPackagingTypeCode(packagingType));
                    sb.Append("</PackagingType>");
                    sb.Append("<Dimensions>");
                    sb.AppendFormat("<Length>{0}</Length>", length);
                    sb.AppendFormat("<Width>{0}</Width>", width2);
                    sb.AppendFormat("<Height>{0}</Height>", height2);
                    sb.Append("</Dimensions>");
                    sb.Append("<PackageWeight>");
                    sb.AppendFormat("<Weight>{0}</Weight>", weight2);
                    sb.Append("</PackageWeight>");
                    sb.Append("</Package>");
                }
            }


            sb.Append("</Shipment>");
            sb.Append("</RatingServiceSelectionRequest>");
            string requestString = sb.ToString();

            return(requestString);
        }
        /// <summary>
        ///  Gets available shipping options
        /// </summary>
        /// <param name="ShipmentPackage">Shipment package</param>
        /// <param name="Error">Error</param>
        /// <returns>Shipping options</returns>
        public ShippingOptionCollection GetShippingOptions(ShipmentPackage ShipmentPackage, ref string Error)
        {
            ShippingOptionCollection shippingOptions = new ShippingOptionCollection();

            if (ShipmentPackage == null)
            {
                throw new ArgumentNullException("ShipmentPackage");
            }
            if (ShipmentPackage.Items == null)
            {
                throw new NopException("No shipment items");
            }
            if (ShipmentPackage.ShippingAddress == null)
            {
                Error = "Shipping address is not set";
                return(shippingOptions);
            }
            if (ShipmentPackage.ShippingAddress.Country == null)
            {
                Error = "Shipping country is not set";
                return(shippingOptions);
            }

            MeasureWeight baseWeightIn = MeasureManager.BaseWeightIn;

            if (baseWeightIn.SystemKeyword != "lb")
            {
                throw new NopException("USPS shipping service. Base weight should be set to lb(s)");
            }

            MeasureDimension baseDimensionIn = MeasureManager.BaseDimensionIn;

            if (baseDimensionIn.SystemKeyword != "inches")
            {
                throw new NopException("USPS shipping service. Base dimension should be set to inch(es)");
            }



            RateRequest request = CreateRateRequest(ShipmentPackage);
            RateService service = new RateService(); // Initialize the service

            service.Url = SettingManager.GetSettingValue("ShippingRateComputationMethod.FedEx.URL");
            try
            {
                // This is the call to the web service passing in a RateRequest and returning a RateReply
                RateReply reply = service.getRates(request);                                                                                                                                          // Service call
                //
                if (reply.HighestSeverity == NotificationSeverityType.SUCCESS || reply.HighestSeverity == NotificationSeverityType.NOTE || reply.HighestSeverity == NotificationSeverityType.WARNING) // check if the call was successful
                {
                    if (reply != null && reply.RateReplyDetails != null)
                    {
                        shippingOptions = ParseResponse(reply);
                    }
                    else
                    {
                        Error = "Could not get reply from shipping server";
                    }
                }
                else
                {
                    Debug.WriteLine(reply.Notifications[0].Message);
                    Error = reply.Notifications[0].Message;
                }
            }
            catch (SoapException e)
            {
                Debug.WriteLine(e.Detail.InnerText);
                Error = e.Detail.InnerText;
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
                Error = e.Message;
            }



            if (String.IsNullOrEmpty(Error) && shippingOptions.Count == 0)
            {
                Error = "Shipping options could not be loaded";
            }
            return(shippingOptions);
        }
示例#15
0
 public static MeasureDimension ToEntity(this MeasureDimensionModel model, MeasureDimension entity)
 {
     MapperFactory.Map(model, entity);
     return(entity);
 }
 /// <summary>
 /// Updates the measure dimension
 /// </summary>
 /// <param name="measure">Measure dimension</param>
 public virtual void UpdateMeasureDimension(MeasureDimension measure)
 {
     _measureDimensionRepository.Update(measure);
 }
示例#17
0
        protected MeasureDimension Save()
        {
            MeasureDimension measureDimension = ctrlMeasureDimensionInfo.SaveInfo();

            return(measureDimension);
        }
示例#18
0
        public void TestInitialize()
        {
            _measureDimensionInches = new MeasureDimension {
                Id            = "1",
                Name          = "inch(es)",
                SystemKeyword = "inches",
                Ratio         = 1M,
                DisplayOrder  = 1,
            };
            _measureDimensionFeets = new MeasureDimension {
                Id            = "2",
                Name          = "feet",
                SystemKeyword = "feet",
                Ratio         = 0.08333333M,
                DisplayOrder  = 2,
            };
            _measureDimensionMeters = new MeasureDimension {
                Id            = "3",
                Name          = "meter(s)",
                SystemKeyword = "meters",
                Ratio         = 0.0254M,
                DisplayOrder  = 3,
            };
            _measureDimensionMilimeters = new MeasureDimension {
                Id            = "4",
                Name          = "millimetre(s)",
                SystemKeyword = "millimetres",
                Ratio         = 25.4M,
                DisplayOrder  = 4,
            };

            _measureWeightOunces = new MeasureWeight {
                Id            = "1",
                Name          = "ounce(s)",
                SystemKeyword = "ounce",
                Ratio         = 16M,
                DisplayOrder  = 1,
            };
            _measureWeightPounds = new MeasureWeight {
                Id            = "2",
                Name          = "lb(s)",
                SystemKeyword = "lb",
                Ratio         = 1M,
                DisplayOrder  = 2,
            };
            _measureWeightKilograms = new MeasureWeight {
                Id            = "3",
                Name          = "kg(s)",
                SystemKeyword = "kg",
                Ratio         = 0.45359237M,
                DisplayOrder  = 3,
            };
            _measureWeightGrams = new MeasureWeight {
                Id            = "4",
                Name          = "gram(s)",
                SystemKeyword = "grams",
                Ratio         = 453.59237M,
                DisplayOrder  = 4,
            };


            var tempMeasureDimensionRepository = new Mock <IRepository <MeasureDimension> >();
            {
                var IMongoCollection = new Mock <IMongoCollection <MeasureDimension> >().Object;
                IMongoCollection.InsertOne(_measureDimensionInches);
                IMongoCollection.InsertOne(_measureDimensionFeets);
                IMongoCollection.InsertOne(_measureDimensionMeters);
                IMongoCollection.InsertOne(_measureDimensionMilimeters);
                tempMeasureDimensionRepository.Setup(x => x.Table).Returns(IMongoCollection.AsQueryable());
                tempMeasureDimensionRepository.Setup(x => x.GetByIdAsync(_measureDimensionInches.Id)).ReturnsAsync(_measureDimensionInches);
                tempMeasureDimensionRepository.Setup(x => x.GetByIdAsync(_measureDimensionFeets.Id)).ReturnsAsync(_measureDimensionFeets);
                tempMeasureDimensionRepository.Setup(x => x.GetByIdAsync(_measureDimensionMeters.Id)).ReturnsAsync(_measureDimensionMeters);
                tempMeasureDimensionRepository.Setup(x => x.GetByIdAsync(_measureDimensionMilimeters.Id)).ReturnsAsync(_measureDimensionMilimeters);

                tempMeasureDimensionRepository.Setup(x => x.GetByIdAsync(_measureDimensionInches.Id)).ReturnsAsync(_measureDimensionInches);
                tempMeasureDimensionRepository.Setup(x => x.GetByIdAsync(_measureDimensionFeets.Id)).ReturnsAsync(_measureDimensionFeets);
                tempMeasureDimensionRepository.Setup(x => x.GetByIdAsync(_measureDimensionMeters.Id)).ReturnsAsync(_measureDimensionMeters);
                tempMeasureDimensionRepository.Setup(x => x.GetByIdAsync(_measureDimensionMilimeters.Id)).ReturnsAsync(_measureDimensionMilimeters);

                _measureDimensionRepository = tempMeasureDimensionRepository.Object;
            }

            var tempMeasureWeightRepository = new Mock <IRepository <MeasureWeight> >();

            {
                var IMongoCollection = new Mock <IMongoCollection <MeasureWeight> >().Object;
                IMongoCollection.InsertOne(_measureWeightOunces);
                IMongoCollection.InsertOne(_measureWeightPounds);
                IMongoCollection.InsertOne(_measureWeightKilograms);
                IMongoCollection.InsertOne(_measureWeightGrams);
                tempMeasureWeightRepository.Setup(x => x.Table).Returns(IMongoCollection.AsQueryable());
                tempMeasureWeightRepository.Setup(x => x.GetByIdAsync(_measureWeightOunces.Id)).ReturnsAsync(_measureWeightOunces);
                tempMeasureWeightRepository.Setup(x => x.GetByIdAsync(_measureWeightPounds.Id)).ReturnsAsync(_measureWeightPounds);
                tempMeasureWeightRepository.Setup(x => x.GetByIdAsync(_measureWeightKilograms.Id)).ReturnsAsync(_measureWeightKilograms);
                tempMeasureWeightRepository.Setup(x => x.GetByIdAsync(_measureWeightGrams.Id)).ReturnsAsync(_measureWeightGrams);

                tempMeasureWeightRepository.Setup(x => x.GetByIdAsync(_measureWeightOunces.Id)).ReturnsAsync(_measureWeightOunces);
                tempMeasureWeightRepository.Setup(x => x.GetByIdAsync(_measureWeightPounds.Id)).ReturnsAsync(_measureWeightPounds);
                tempMeasureWeightRepository.Setup(x => x.GetByIdAsync(_measureWeightKilograms.Id)).ReturnsAsync(_measureWeightKilograms);
                tempMeasureWeightRepository.Setup(x => x.GetByIdAsync(_measureWeightGrams.Id)).ReturnsAsync(_measureWeightGrams);
                _measureWeightRepository = tempMeasureWeightRepository.Object;
            }

            _measureUnits = new MeasureUnit
            {
                Id   = "1",
                Name = "pcs.",
            };
            var tempMeasureUnitRepository = new Mock <IRepository <MeasureUnit> >();

            {
                var IMongoCollection = new Mock <IMongoCollection <MeasureUnit> >().Object;
                IMongoCollection.InsertOne(_measureUnits);
                tempMeasureUnitRepository.Setup(x => x.Table).Returns(IMongoCollection.AsQueryable());
                tempMeasureUnitRepository.Setup(x => x.GetById(_measureUnits.Id)).Returns(_measureUnits);
                _measureUnitRepository = tempMeasureUnitRepository.Object;
            }

            _measureSettings = new MeasureSettings();
            _measureSettings.BaseDimensionId = _measureDimensionInches.Id; //inch(es) because all other dimensions are in relation to  inches
            _measureSettings.BaseWeightId    = _measureWeightPounds.Id;    //lb(s) because all other weights are in relation to pounds

            var tempEventPublisher = new Mock <IMediator>();

            {
                //tempEventPublisher.Setup(x => x.PublishAsync(It.IsAny<object>()));
                _eventPublisher = tempEventPublisher.Object;
            }
            _serviceProvider = new Mock <IServiceProvider>().Object;
            _measureService  = new MeasureService(new TestMemoryCacheManager(new Mock <IMemoryCache>().Object, _eventPublisher), _measureDimensionRepository,
                                                  _measureWeightRepository, _measureUnitRepository, _measureSettings, _eventPublisher);
        }
示例#19
0
        public new void SetUp()
        {
            measureDimension1 = new MeasureDimension
            {
                Id            = 1,
                Name          = "inch(es)",
                SystemKeyword = "inches",
                Ratio         = 1M,
                DisplayOrder  = 1
            };
            measureDimension2 = new MeasureDimension
            {
                Id            = 2,
                Name          = "feet",
                SystemKeyword = "feet",
                Ratio         = 0.08333333M,
                DisplayOrder  = 2
            };
            measureDimension3 = new MeasureDimension
            {
                Id            = 3,
                Name          = "meter(s)",
                SystemKeyword = "meters",
                Ratio         = 0.0254M,
                DisplayOrder  = 3
            };
            measureDimension4 = new MeasureDimension
            {
                Id            = 4,
                Name          = "millimetre(s)",
                SystemKeyword = "millimetres",
                Ratio         = 25.4M,
                DisplayOrder  = 4
            };

            measureWeight1 = new MeasureWeight
            {
                Id            = 1,
                Name          = "ounce(s)",
                SystemKeyword = "ounce",
                Ratio         = 16M,
                DisplayOrder  = 1
            };
            measureWeight2 = new MeasureWeight
            {
                Id            = 2,
                Name          = "lb(s)",
                SystemKeyword = "lb",
                Ratio         = 1M,
                DisplayOrder  = 2
            };
            measureWeight3 = new MeasureWeight
            {
                Id            = 3,
                Name          = "kg(s)",
                SystemKeyword = "kg",
                Ratio         = 0.45359237M,
                DisplayOrder  = 3
            };
            measureWeight4 = new MeasureWeight
            {
                Id            = 4,
                Name          = "gram(s)",
                SystemKeyword = "grams",
                Ratio         = 453.59237M,
                DisplayOrder  = 4
            };

            _measureDimensionRepository = new FakeRepository <MeasureDimension>(new List <MeasureDimension> {
                measureDimension1, measureDimension2, measureDimension3, measureDimension4
            });

            _measureWeightRepository = new FakeRepository <MeasureWeight>(new List <MeasureWeight> {
                measureWeight1, measureWeight2, measureWeight3, measureWeight4
            });

            _measureSettings = new MeasureSettings
            {
                BaseDimensionId = measureDimension1.Id, //inch(es)
                BaseWeightId    = measureWeight2.Id     //lb(s)
            };

            _eventPublisher = new Mock <IEventPublisher>();
            _eventPublisher.Setup(x => x.Publish(It.IsAny <object>()));

            _measureService = new MeasureService(_measureDimensionRepository,
                                                 _measureWeightRepository,
                                                 _measureSettings);
        }
 public Task Add(MeasureDimension measureDimension, CancellationToken cancellationToken)
 {
     return(_repository.UpSert(measureDimension, cancellationToken));
 }
        private string CreateRequest(string Username, string Password, ShipmentPackage ShipmentPackage)
        {
            int     length            = Convert.ToInt32(Math.Ceiling(ShipmentPackage.GetTotalLength()));
            int     height            = Convert.ToInt32(Math.Ceiling(ShipmentPackage.GetTotalHeight()));
            int     width             = Convert.ToInt32(Math.Ceiling(ShipmentPackage.GetTotalWidth()));
            decimal weight            = ShippingManager.GetShoppingCartTotalWeigth(ShipmentPackage.Items);
            string  zipPostalCodeFrom = ShipmentPackage.ZipPostalCodeFrom;
            string  zipPostalCodeTo   = ShipmentPackage.ShippingAddress.ZipPostalCode;

            //valid values for testing. http://testing.shippingapis.com/ShippingAPITest.dll
            //Zip to = "20008"; Zip from ="10022"; weight = 2;

            //TODO convert measure weight
            MeasureWeight baseWeightIn = MeasureManager.BaseWeightIn;

            if (baseWeightIn.SystemKeyword != "lb")
            {
                throw new NopException("USPS shipping service. Base weight should be set to lb(s)");
            }

            //TODO convert measure dimension
            MeasureDimension baseDimensionIn = MeasureManager.BaseDimensionIn;

            if (baseDimensionIn.SystemKeyword != "inches")
            {
                throw new NopException("USPS shipping service. Base dimension should be set to inch(es)");
            }

            int pounds = Convert.ToInt32(Math.Truncate(weight));
            //int ounces = Convert.ToInt32((weight - pounds) * 16.0M);
            int ounces = 0;

            StringBuilder sb = new StringBuilder();

            sb.AppendFormat("<RateV3Request USERID=\"{0}\" PASSWORD=\"{1}\">", Username, Password);

            USPSStrings xmlStrings = new USPSStrings(); // Create new instance with string array


            if ((!IsPackageTooHeavy(pounds)) && (!IsPackageTooLarge(length, height, width)))
            {
                USPSPackageSize packageSize = GetPackageSize(length, height, width);
                // RJH get all XML strings not commented out for USPSStrings.
                // RJH V3 USPS Service must be Express, Express SH, Express Commercial, Express SH Commercial, First Class, Priority, Priority Commercial, Parcel, Library, BPM, Media, ALL or ONLINE;
                foreach (string element in xmlStrings.Elements) // Loop over elements with property
                {
                    sb.Append("<Package ID=\"0\">");

                    // sb.AppendFormat("<Service>{0}</Service>", USPSService.All);
                    sb.AppendFormat("<Service>{0}</Service>", element);
                    sb.AppendFormat("<ZipOrigination>{0}</ZipOrigination>", zipPostalCodeFrom);
                    sb.AppendFormat("<ZipDestination>{0}</ZipDestination>", zipPostalCodeTo);
                    sb.AppendFormat("<Pounds>{0}</Pounds>", pounds);
                    sb.AppendFormat("<Ounces>{0}</Ounces>", ounces);
                    sb.AppendFormat("<Size>{0}</Size>", packageSize);
                    sb.Append("<Machinable>FALSE</Machinable>");

                    sb.Append("</Package>");
                }
            }
            else
            {
                int totalPackages        = 1;
                int totalPackagesDims    = 1;
                int totalPackagesWeights = 1;
                if (IsPackageTooHeavy(pounds))
                {
                    totalPackagesWeights = Convert.ToInt32(Math.Ceiling((decimal)pounds / (decimal)MAXPACKAGEWEIGHT));
                }
                if (IsPackageTooLarge(length, height, width))
                {
                    totalPackagesDims = TotalPackageSize(length, height, width) / 108;
                }
                totalPackages = totalPackagesDims > totalPackagesWeights ? totalPackagesDims : totalPackagesWeights;
                if (totalPackages == 0)
                {
                    totalPackages = 1;
                }

                int             pounds2     = pounds / totalPackages;
                int             ounces2     = ounces / totalPackages;
                int             height2     = height / totalPackages;
                int             width2      = width / totalPackages;
                USPSPackageSize packageSize = GetPackageSize(length, height2, width2);

                for (int i = 0; i < totalPackages; i++)
                {
                    foreach (string element in xmlStrings.Elements)
                    {
                        sb.AppendFormat("<Package ID=\"{0}\">", i.ToString());
                        // sb.AppendFormat("<Service>{0}</Service>", USPSService.All);
                        sb.AppendFormat("<Service>{0}</Service>", element);
                        sb.AppendFormat("<ZipOrigination>{0}</ZipOrigination>", zipPostalCodeFrom);
                        sb.AppendFormat("<ZipDestination>{0}</ZipDestination>", zipPostalCodeTo);
                        sb.AppendFormat("<Pounds>{0}</Pounds>", pounds2);
                        sb.AppendFormat("<Ounces>{0}</Ounces>", ounces2);
                        sb.AppendFormat("<Size>{0}</Size>", packageSize);
                        sb.Append("<Machinable>FALSE</Machinable>");
                        sb.Append("</Package>");
                    }
                }
            }

            sb.Append("</RateV3Request>");

            string requestString = "API=RateV3&XML=" + sb.ToString();

            return(requestString);
        }
示例#22
0
 /// <returns>A task that represents the asynchronous operation</returns>
 private async Task <int> ConvertFromPrimaryMeasureDimensionAsync(decimal quantity, MeasureDimension usedMeasureDimension)
 {
     return(Convert.ToInt32(Math.Ceiling(await _measureService.ConvertFromPrimaryMeasureDimensionAsync(quantity, usedMeasureDimension))));
 }
 /// <summary>
 /// Inserts a measure dimension
 /// </summary>
 /// <param name="measure">Measure dimension</param>
 /// <returns>A task that represents the asynchronous operation</returns>
 public virtual async Task InsertMeasureDimensionAsync(MeasureDimension measure)
 {
     await _measureDimensionRepository.InsertAsync(measure);
 }
示例#24
0
 public static MeasureDimension ToEntity(this MeasureDimensionModel model, MeasureDimension destination)
 {
     return(Mapper.Map(model, destination));
 }
 /// <summary>
 /// Updates the measure dimension
 /// </summary>
 /// <param name="measure">Measure dimension</param>
 /// <returns>A task that represents the asynchronous operation</returns>
 public virtual async Task UpdateMeasureDimensionAsync(MeasureDimension measure)
 {
     await _measureDimensionRepository.UpdateAsync(measure);
 }
示例#26
0
        public new void SetUp()
        {
            measureDimension1 = new MeasureDimension
            {
                Id            = 1,
                Name          = "inch(es)",
                SystemKeyword = "inches",
                Ratio         = 1M,
                DisplayOrder  = 1
            };
            measureDimension2 = new MeasureDimension
            {
                Id            = 2,
                Name          = "feet",
                SystemKeyword = "feet",
                Ratio         = 0.08333333M,
                DisplayOrder  = 2
            };
            measureDimension3 = new MeasureDimension
            {
                Id            = 3,
                Name          = "meter(s)",
                SystemKeyword = "meters",
                Ratio         = 0.0254M,
                DisplayOrder  = 3
            };
            measureDimension4 = new MeasureDimension
            {
                Id            = 4,
                Name          = "millimetre(s)",
                SystemKeyword = "millimetres",
                Ratio         = 25.4M,
                DisplayOrder  = 4
            };

            measureWeight1 = new MeasureWeight
            {
                Id            = 1,
                Name          = "ounce(s)",
                SystemKeyword = "ounce",
                Ratio         = 16M,
                DisplayOrder  = 1
            };
            measureWeight2 = new MeasureWeight
            {
                Id            = 2,
                Name          = "lb(s)",
                SystemKeyword = "lb",
                Ratio         = 1M,
                DisplayOrder  = 2
            };
            measureWeight3 = new MeasureWeight
            {
                Id            = 3,
                Name          = "kg(s)",
                SystemKeyword = "kg",
                Ratio         = 0.45359237M,
                DisplayOrder  = 3
            };
            measureWeight4 = new MeasureWeight
            {
                Id            = 4,
                Name          = "gram(s)",
                SystemKeyword = "grams",
                Ratio         = 453.59237M,
                DisplayOrder  = 4
            };

            _measureDimensionRepository = new Mock <IRepository <MeasureDimension> >();
            _measureDimensionRepository.Setup(x => x.Table).Returns(new List <MeasureDimension> {
                measureDimension1, measureDimension2, measureDimension3, measureDimension4
            }.AsQueryable());
            _measureDimensionRepository.Setup(x => x.GetById(measureDimension1.Id)).Returns(measureDimension1);
            _measureDimensionRepository.Setup(x => x.GetById(measureDimension2.Id)).Returns(measureDimension2);
            _measureDimensionRepository.Setup(x => x.GetById(measureDimension3.Id)).Returns(measureDimension3);
            _measureDimensionRepository.Setup(x => x.GetById(measureDimension4.Id)).Returns(measureDimension4);

            _measureWeightRepository = new Mock <IRepository <MeasureWeight> >();
            _measureWeightRepository.Setup(x => x.Table).Returns(new List <MeasureWeight> {
                measureWeight1, measureWeight2, measureWeight3, measureWeight4
            }.AsQueryable());
            _measureWeightRepository.Setup(x => x.GetById(measureWeight1.Id)).Returns(measureWeight1);
            _measureWeightRepository.Setup(x => x.GetById(measureWeight2.Id)).Returns(measureWeight2);
            _measureWeightRepository.Setup(x => x.GetById(measureWeight3.Id)).Returns(measureWeight3);
            _measureWeightRepository.Setup(x => x.GetById(measureWeight4.Id)).Returns(measureWeight4);

            var cacheManager = new TestMemoryCacheManager(new Mock <IMemoryCache>().Object);

            _measureSettings = new MeasureSettings
            {
                BaseDimensionId = measureDimension1.Id, //inch(es)
                BaseWeightId    = measureWeight2.Id     //lb(s)
            };

            _eventPublisher = new Mock <IEventPublisher>();
            _eventPublisher.Setup(x => x.Publish(It.IsAny <object>()));

            _measureService = new MeasureService(cacheManager,
                                                 _eventPublisher.Object,
                                                 _measureDimensionRepository.Object,
                                                 _measureWeightRepository.Object,
                                                 _measureSettings);
        }
 /// <summary>
 /// Deletes measure dimension
 /// </summary>
 /// <param name="measureDimension">Measure dimension</param>
 /// <returns>A task that represents the asynchronous operation</returns>
 public virtual async Task DeleteMeasureDimensionAsync(MeasureDimension measureDimension)
 {
     await _measureDimensionRepository.DeleteAsync(measureDimension);
 }
示例#28
0
        public virtual decimal ConvertDimension(decimal quantity,
                                                MeasureDimension sourceMeasureDimension, MeasureDimension targetMeasureDimension, bool round = true)
        {
            decimal result = quantity;

            if (result != decimal.Zero && sourceMeasureDimension.Id != targetMeasureDimension.Id)
            {
                result = ConvertToPrimaryMeasureDimension(result, sourceMeasureDimension);
                result = ConvertFromPrimaryMeasureDimension(result, targetMeasureDimension);
            }
            if (round)
            {
                result = Math.Round(result, 2);
            }
            return(result);
        }
 /// <summary>
 /// Inserts a measure dimension
 /// </summary>
 /// <param name="measure">Measure dimension</param>
 public virtual void InsertMeasureDimension(MeasureDimension measure)
 {
     _measureDimensionRepository.Insert(measure);
 }
示例#30
0
 public static MeasureDimension MakeClone(MeasureDimension another)
 {
     if (another == null) return null;
     return another.MakeClone();
 }
        public int GetLength(GetShippingOptionRequest shipmentPackage, MeasureDimension usedMeasureDimension, MeasureDimension baseUsedMeasureDimension)
        {
            decimal lengthTmp, widthTmp, heightTmp;

            _shippingService.GetDimensions(shipmentPackage.Items, out widthTmp, out lengthTmp, out heightTmp);

            int packageLength = Convert.ToInt32(Math.Ceiling(lengthTmp / baseUsedMeasureDimension.Ratio * usedMeasureDimension.Ratio));

            return(packageLength < 1 ? 1 : packageLength);
        }