Ejemplo n.º 1
0
        public IHttpActionResult Move(webModel.MoveInfo moveInfo)
        {
            var categories = new List <coreModel.Category>();

            //Move  categories
            foreach (var listEntryCategory in moveInfo.ListEntries.Where(x => String.Equals(x.Type, webModel.ListEntryCategory.TypeName, StringComparison.InvariantCultureIgnoreCase)))
            {
                var category = _categoryService.GetById(listEntryCategory.Id);
                if (category.CatalogId != moveInfo.Catalog)
                {
                    category.CatalogId = moveInfo.Catalog ?? String.Empty;
                }
                if (category.ParentId != moveInfo.Category)
                {
                    category.ParentId = moveInfo.Category ?? String.Empty;
                }
                categories.Add(category);
            }
            ;

            var products = new List <coreModel.CatalogProduct>();

            //Move products
            foreach (var listEntryProduct in moveInfo.ListEntries.Where(x => String.Equals(x.Type, webModel.ListEntryProduct.TypeName, StringComparison.InvariantCultureIgnoreCase)))
            {
                var product = _itemService.GetById(listEntryProduct.Id, Domain.Catalog.Model.ItemResponseGroup.ItemLarge);
                if (product.CatalogId != moveInfo.Catalog)
                {
                    product.CatalogId = moveInfo.Catalog ?? String.Empty;
                    foreach (var variation in product.Variations)
                    {
                        variation.CatalogId = moveInfo.Catalog ?? String.Empty;
                    }
                }
                if (product.CategoryId != moveInfo.Category)
                {
                    product.CategoryId = moveInfo.Category ?? String.Empty;
                    foreach (var variation in product.Variations)
                    {
                        variation.CategoryId = moveInfo.Category ?? String.Empty;
                    }
                }
                products.Add(product);
            }
            ;

            //Scope bound security check
            base.CheckCurrentUserHasPermissionForObjects(CatalogPredefinedPermissions.Create, categories);
            base.CheckCurrentUserHasPermissionForObjects(CatalogPredefinedPermissions.Create, products);

            if (categories.Any())
            {
                _categoryService.Update(categories.ToArray());
            }
            if (products.Any())
            {
                _itemService.Update(products.ToArray());
            }
            return(Ok());
        }
        public IHttpActionResult Move(webModel.MoveInfo moveInfo)
        {
            var dstCatalog = _catalogService.GetById(moveInfo.Catalog);

            if (dstCatalog.IsVirtual)
            {
                throw new InvalidOperationException("Unable to move in virtual catalog");
            }

            var categories = _categoryMover.PrepareMove(moveInfo);
            var products   = _productMover.PrepareMove(moveInfo);

            //Scope bound security check
            CheckCurrentUserHasPermissionForObjects(CatalogPredefinedPermissions.Create, categories);
            CheckCurrentUserHasPermissionForObjects(CatalogPredefinedPermissions.Create, products);

            _categoryMover.ConfirmMove(categories);
            _productMover.ConfirmMove(products);

            return(Ok());
        }
Ejemplo n.º 3
0
        public IHttpActionResult Move(webModel.MoveInfo moveInfo)
        {
            var categories = new List <coreModel.Category>();
            var dstCatalog = _catalogService.GetById(moveInfo.Catalog);

            if (dstCatalog.IsVirtual)
            {
                throw new InvalidOperationException("Unable to move in virtual catalog");
            }

            //Move  categories
            foreach (var listEntryCategory in moveInfo.ListEntries.Where(x => x.Type.EqualsInvariant(webModel.ListEntryCategory.TypeName)))
            {
                var category = _categoryService.GetById(listEntryCategory.Id, coreModel.CategoryResponseGroup.Info);
                if (category.CatalogId != moveInfo.Catalog)
                {
                    category.CatalogId = moveInfo.Catalog;
                }
                if (category.ParentId != moveInfo.Category)
                {
                    category.ParentId = moveInfo.Category;
                }
                categories.Add(category);
            }

            var products = new List <coreModel.CatalogProduct>();

            //Move products
            foreach (var listEntryProduct in moveInfo.ListEntries.Where(x => x.Type.EqualsInvariant(webModel.ListEntryProduct.TypeName)))
            {
                var product = _itemService.GetById(listEntryProduct.Id, Domain.Catalog.Model.ItemResponseGroup.ItemLarge);
                if (product.CatalogId != moveInfo.Catalog)
                {
                    product.CatalogId  = moveInfo.Catalog;
                    product.CategoryId = null;
                    foreach (var variation in product.Variations)
                    {
                        variation.CatalogId  = moveInfo.Catalog;
                        variation.CategoryId = null;
                    }
                }
                if (product.CategoryId != moveInfo.Category)
                {
                    product.CategoryId = moveInfo.Category;
                    foreach (var variation in product.Variations)
                    {
                        variation.CategoryId = moveInfo.Category;
                    }
                }
                products.Add(product);
                products.AddRange(product.Variations);
            }

            //Scope bound security check
            CheckCurrentUserHasPermissionForObjects(CatalogPredefinedPermissions.Create, categories);
            CheckCurrentUserHasPermissionForObjects(CatalogPredefinedPermissions.Create, products);

            if (categories.Any())
            {
                _categoryService.Update(categories.ToArray());
            }
            if (products.Any())
            {
                _itemService.Update(products.ToArray());
            }
            return(Ok());
        }