public async Task <BudgetItem> CopyBudgetItemWithChildrenItemsToShipownerAsync(int itemId, int shipownerId) { BudgetItem sourceItem = await _BudgetItemReadService.GetByIdAsync(itemId); _BudgetItemCUDService.Context.TurnOffAutoDetectChangesAndValidateOnSave(); var propertyManager = new BaseLib.Services.TPropertyManager <BudgetItem>(); propertyManager.DefineAllSimplePropertieForManage(); BudgetItem copyItem = CreateCopyBudgetItemWithChildrenItemsToShipownerAndAddInSet(propertyManager, sourceItem, shipownerId, null); int count = await _BudgetItemCUDService.Context.SaveChangesAsync(); _BudgetItemCUDService.Context.TurnOnAutoDetectChangesAndValidateOnSave(); return((count > 0) ? copyItem : null); }
private BudgetItem CreateCopyBudgetItemWithChildrenItemsToShipownerAndAddInSet(BaseLib.Services.TPropertyManager <BudgetItem> propertyManager, BudgetItem sourceItem, int shipownerId, BudgetItem parentItem) { BudgetItem itemCopy = new BudgetItem(); propertyManager.CopyProperties(sourceItem, itemCopy, true); itemCopy.SetShipOwner(shipownerId); itemCopy.SetParentItem(parentItem); System.Threading.Thread.Sleep(2000); _BudgetItemCUDService.TEntitySet.Add(itemCopy); IEnumerable <BudgetItem> childrenItems = _BudgetItemReadService.GetCollection(new BudgetItemsByParentSpecification(sourceItem.Id)); foreach (var item in childrenItems) { BudgetItem copyChild = CreateCopyBudgetItemWithChildrenItemsToShipownerAndAddInSet(propertyManager, item, shipownerId, itemCopy); itemCopy.InsertChildrenItem(copyChild); } return(itemCopy); }