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()); }
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()); }