public async Task <OperationDataResult <int> > CreateInventoryType([FromBody] ItemTypeCreateModel itemTypeCreateModel) { return(await _inventoryItemTypeService.CreateItemType(itemTypeCreateModel)); }
public async Task <OperationDataResult <int> > CreateItemType(ItemTypeCreateModel itemTypeCreateModel) { try { var tags = new List <InventoryTag>(); if (itemTypeCreateModel.TagIds.Count > 0) { tags = _dbContext.InventoryTags .Where(x => x.WorkflowState != Constants.WorkflowStates.Removed) .Where(x => itemTypeCreateModel.TagIds.Contains(x.Id)) .ToList(); //if (tags.Count != itemTypeCreateModel.TagIds.Count) //{ // return new OperationResult(false, // _inventoryLocalizationService.GetString("TagsNotFound")); //} } var itemType = new ItemType { Name = itemTypeCreateModel.Name, Description = itemTypeCreateModel.Description, CreatedByUserId = _userService.UserId, UpdatedByUserId = _userService.UserId, Usage = itemTypeCreateModel.Usage, RiskDescription = itemTypeCreateModel.RiskDescription, ItemGroupId = itemTypeCreateModel.ItemGroupId, }; await itemType.Create(_dbContext); // create dependencies foreach (var dependency in itemTypeCreateModel.Dependencies) { if (await _dbContext.ItemGroups.Where(y => y.WorkflowState != Constants.WorkflowStates.Removed).Where(x => x.Id == dependency.ItemGroupId).AnyAsync()) { // create item group dependency var dependencyItemGroup = new ItemGroupDependency { CreatedByUserId = _userService.UserId, UpdatedByUserId = _userService.UserId, ItemGroupId = (int)dependency.ItemGroupId, ItemTypeId = itemType.Id, }; await dependencyItemGroup.Create(_dbContext); // create item type dependency foreach (var dependencyItemTypesId in dependency.ItemTypesIds) { if (await _dbContext.ItemTypes.Where(y => y.WorkflowState != Constants.WorkflowStates.Removed).Where(x => x.Id == dependencyItemTypesId).AnyAsync()) { var dependencyItemType = new ItemTypeDependency { CreatedByUserId = _userService.UserId, UpdatedByUserId = _userService.UserId, ParentItemTypeId = itemType.Id, DependItemTypeId = dependencyItemTypesId, }; await dependencyItemType.Create(_dbContext); } } } } // creating a dependency between tag and item type foreach (var itemTypeTag in tags.Select(inventoryTag => new ItemTypeTag { CreatedByUserId = _userService.UserId, UpdatedByUserId = _userService.UserId, InventoryTagId = inventoryTag.Id, ItemTypeId = itemType.Id, })) { await itemTypeTag.Create(_dbContext); } return(new OperationDataResult <int>(true, itemType.Id)); } catch (Exception e) { Trace.TraceError(e.Message); return(new OperationDataResult <int>(false, _inventoryLocalizationService.GetString("ErrorWhileCreatingItemType"))); } }