private void RemoveShippingPackage(ShippingPackage selectedItem)
        {
            var itemToRemove = selectedItem;

            var confirmation = new ConditionalConfirmation
            {
                Content = string.Format("Remove shipping package '{0}?".Localize(), itemToRemove.ShippingOptionPackaging),
                Title   = "Action confirmation".Localize(null, LocalizationScope.DefaultCategory)
            };

            if (RemoveShippingPackageRequest != null)
            {
                RemoveShippingPackageRequest.Raise(confirmation,
                                                   (x) =>
                {
                    if (x.Confirmed)
                    {
                        var item =
                            InnerItem.ShippingPackages.SingleOrDefault(
                                sp => sp.ShippingPackageId == itemToRemove.ShippingPackageId);

                        if (item != null)
                        {
                            InnerItem.ShippingPackages.Remove(item);
                        }
                    }
                });
            }
        }
        public List <ShippingPackage> CreateShippingPackages(List <CartItem> cartItems)
        {
            var shippingPackages = new List <ShippingPackage>();

            ShippingPackage package = new ShippingPackage();

            foreach (var cartItem in cartItems)
            {
                for (int i = 0; i < cartItem.Amount; i++)
                {
                    if (!ValidateCartItemAdditionToThePackage(package, cartItem))
                    {
                        shippingPackages.Add(package);
                        package = new ShippingPackage();
                    }

                    package.Weight  += cartItem.Product.Weight;
                    package.Height   = (int)Math.Ceiling(package.Height + cartItem.Product.Height);
                    package.Width    = GetCorrectPackageWidth(package, cartItem);
                    package.Length   = GetCorrectPackageLength(package, cartItem);
                    package.Diameter = Math.Max(Math.Max(package.Width, package.Height), package.Length);
                }
            }
            shippingPackages.Add(package);

            return(shippingPackages);
        }
Esempio n. 3
0
        public ShippingOptionAddShippingPackageViewModel(
            ShippingPackage item,
            List <string> selectedPackaging,
            ICatalogRepository catalogRepository)
        {
            InnerItem                  = item;
            _selectedPackaging         = selectedPackaging;
            InnerItem.PropertyChanged += InnerItem_PropertyChanged;

            _catalogRepository = catalogRepository;
            if (_catalogRepository != null)
            {
                AllPackages = _catalogRepository.Packagings.ToList();
            }

            var view = CollectionViewSource.GetDefaultView(AllPackages);

            view.Filter = FilterItems;
            view.Refresh();
        }
        private bool ValidateCartItemAdditionToThePackage(ShippingPackage package, CartItem cartItem)
        {
            double weight = package.Weight + cartItem.Product.Weight;
            int    height = (int)Math.Ceiling(package.Height + cartItem.Product.Height);
            int    width  = GetCorrectPackageWidth(package, cartItem);
            int    length = GetCorrectPackageLength(package, cartItem);

            if (weight > 30)
            {
                return(false);
            }
            if (width + height + length > 200)
            {
                return(false);
            }
            if (width > 105 || height > 105 || length > 105)
            {
                return(false);
            }

            return(true);
        }
        private void EditShippingPackage(ShippingPackage selectedItem)
        {
            var itemToUpdate = selectedItem;

            var selectedItems = InnerItem.ShippingPackages.Select(sp => sp.MappedPackagingId).ToList();

            selectedItems.Remove(itemToUpdate.MappedPackagingId);

            var parameters = new[]
            {
                new KeyValuePair <string, object> ("item", itemToUpdate),
                new KeyValuePair <string, object> ("selectedPackaging", selectedItems)
            };

            var itemVm = _addPackageVmFactory.GetViewModelInstance(parameters);

            var confirmation = new ConditionalConfirmation
            {
                Title   = "Add Payment package".Localize(),
                Content = itemVm
            };

            if (AddEditShippingPackageRequest != null)
            {
                AddEditShippingPackageRequest.Raise(confirmation,
                                                    (x) =>
                {
                    if (x.Confirmed)
                    {
                        var itemFromDialog = (x.Content as IShippingOptionAddShippingPackageViewModel).InnerItem;

                        OnUIThread(() => itemToUpdate.InjectFrom <CloneInjection>(itemFromDialog));

                        IsModified = true;
                    }
                });
            }
        }
        private int GetCorrectPackageLength(ShippingPackage package, CartItem cartItem)
        {
            double correctLength = package.Length > cartItem.Product.Length ? package.Length : cartItem.Product.Length;

            return((int)Math.Ceiling(correctLength));
        }
        public CreateShippingPackageViewModel(IViewModelsFactory <IShippingPackageOverviewStepViewModel> overviewVmFactory, ShippingPackage item)
        {
            var itemParameter = new KeyValuePair <string, object>("item", item);

            RegisterStep(overviewVmFactory.GetViewModelInstance(itemParameter));
        }