public async Task <ItemAttributeView> AddItemAttributeView(ItemAttributeView itemAttributeView) { // check if the attributeNameIa already exist var allAttributeValueIdsForItem = await _context.ItemAttributes.Where(a => a.ItemId == itemAttributeView.ItemId).Select(b => b.AttributeValueId).ToListAsync(); var allAttributeNameIdsForItem = await _context.AttributeValues.Where(a => allAttributeValueIdsForItem.Contains(a.AttributeValueId)).Select(b => b.AttributeNameId).ToListAsync(); if (allAttributeNameIdsForItem.Contains(itemAttributeView.AttributeNameId)) { throw new Exception("Cannot add itemAttribute with same AttributeNameId"); } ItemAttribute newItemAttribute = _mapper.Map <ItemAttributeView, ItemAttribute>(itemAttributeView); var attributeValue = await _context.AttributeValues.Include(a => a.AttributeName).FirstOrDefaultAsync(a => a.AttributeNameId == itemAttributeView.AttributeNameId && a.AttributeValueId == itemAttributeView.AttributeValueId); if (attributeValue == null) { throw new Exception("Invalid AttributeNameId or AttributeValueId"); } Log log = new Log { CreatedById = 2, CreatedAt = DateTime.UtcNow, UpdatedById = 2, UpdatedAt = DateTime.UtcNow }; newItemAttribute.Log = log; _context.Add(newItemAttribute); await _context.SaveChangesAsync(); ItemAttributeView savedItemAttributeView = _mapper.Map <AttributeValue, ItemAttributeView>(attributeValue); savedItemAttributeView.ItemId = newItemAttribute.ItemId; savedItemAttributeView.LogId = newItemAttribute.LogId; savedItemAttributeView.ItemAttributeId = newItemAttribute.ItemAttributeId; return(savedItemAttributeView); }
public async Task <ActionResult <ItemDataView> > PostItemAttribute(int itemId, [FromBody] ItemAttributeView itemAttributeView) { try { itemAttributeView.ItemId = itemId; if (ModelState.IsValid) { var createdeItemAttributeView = await _itemRepository.AddItemAttributeView(itemAttributeView); return(CreatedAtAction("Get", new { id = createdeItemAttributeView.ItemId }, createdeItemAttributeView)); } else { return(BadRequest(ModelState)); } } catch (Exception ex) { return(BadRequest("Failed to save the ItemAttribute: " + ex.Message)); } }