public async Task <IActionResult> AssignLabelToItem(AssignLabelToItemModel assignLabelToItemModel) { long userId = long.Parse(HttpContext.Items["UserId"].ToString()); assignLabelToItemModel.CreatedBy = userId; AssignLabelToItemDto assignLabelToItemDto = _mapper.Map <AssignLabelToItemDto>(assignLabelToItemModel); bool isAssigned = await _labelContract.AssignLabelToItem(assignLabelToItemDto); if (isAssigned) { return(Ok( new ApiResponse <object> { IsSuccess = true, Result = "Assignment to ToDoItem successful." })); } return(NotFound( new ApiResponse <string> { IsSuccess = false, Result = "Assignment to ToDoItem failed." })); }
/// <summary> /// Create mapping of LabelId/s to ToDoItemId /// </summary> /// <param name="assignLabelToItemDto"></param> /// <returns> success/failure result </returns> public async Task <bool> AssignLabelToItem(AssignLabelToItemDto assignLabelToItemDto) { //Remove existing mapping first MapLabelsToItemDbModel existingItemMapping = _toDoDbContext.MapLabelsToItems .Where(mapping => mapping.ToDoItemId == assignLabelToItemDto.ToDoItemId && mapping.CreatedBy == assignLabelToItemDto.CreatedBy).FirstOrDefault(); ToDoItemDbModel existingToDoItemDbModel = _toDoDbContext.ToDoItems .Where(item => item.ToDoItemId == assignLabelToItemDto.ToDoItemId).FirstOrDefault(); if (existingItemMapping != null && existingToDoItemDbModel != null) // remove existing mapping first based on UserId and ToDoItemId combination. { _toDoDbContext.MapLabelsToItems.Remove(existingItemMapping); await _toDoDbContext.SaveChangesAsync(); } int saveResult = 0; if (assignLabelToItemDto.LabelId.Count() == 1) // One to one mapping of LabelId to ToDoItemId { MapLabelsToItemDbModel mapLabelsToItemDbDto = new MapLabelsToItemDbModel { CreatedBy = assignLabelToItemDto.CreatedBy, LabelId = assignLabelToItemDto.LabelId.FirstOrDefault(), ToDoItemId = assignLabelToItemDto.ToDoItemId }; _toDoDbContext.MapLabelsToItems.Add(mapLabelsToItemDbDto); saveResult = await _toDoDbContext.SaveChangesAsync(); } else if (assignLabelToItemDto.LabelId.Count() > 1) // Many to one mapping of LabelIds to ToDoItemId { for (int labelId = 0; labelId < assignLabelToItemDto.LabelId.Length; labelId++) { MapLabelsToItemDbModel mapLabelsToItemDbDto = new MapLabelsToItemDbModel { CreatedBy = assignLabelToItemDto.CreatedBy, LabelId = assignLabelToItemDto.LabelId[labelId], ToDoItemId = assignLabelToItemDto.ToDoItemId }; _toDoDbContext.MapLabelsToItems.Add(mapLabelsToItemDbDto); } saveResult = await _toDoDbContext.SaveChangesAsync(); } if (saveResult > 0) { return(true); } else { return(false); } }
/// <summary> /// Assign labelIds to specified ToDoItemId record. /// </summary> /// <param name="assignLabelToItemDto"></param> /// <returns> Boolean result of Assignment, i.e. true/false. </returns> public async Task <bool> AssignLabelToItem(AssignLabelToItemDto assignLabelToItemDto) { return(await _labelDbOps.AssignLabelToItem(assignLabelToItemDto)); }