/// <summary> /// Get specific todolist record. /// </summary> /// <param name="Id"></param> /// <param name="userId"></param> /// <returns>ToDoList item by Id for logged in user</returns> public async Task <ToDoListDto> GetToDoListById(long Id, long userId) { ToDoListDbModel toDoListDbDto = await _toDoDbContext.ToDoLists .Include(p => p.ToDoItems).Include(p => p.Labels).FirstOrDefaultAsync(p => p.ToDoListId == Id && p.CreatedBy == userId); return(_mapper.Map <ToDoListDto>(toDoListDbDto)); }
/// <summary> /// Adds ToDoList record to ToDoList table. /// </summary> /// <param name="createToDoListDto"></param> /// <returns> added ToDoList record. </returns> public async Task <ToDoListDto> CreateToDoList(CreateToDoListDto createToDoListDto) { ToDoListDbModel toDoListDbDto = _mapper.Map <ToDoListDbModel>(createToDoListDto); toDoListDbDto.CreationDate = DateTime.UtcNow; _toDoDbContext.ToDoLists.Add(toDoListDbDto); await _toDoDbContext.SaveChangesAsync(); return(_mapper.Map <ToDoListDto>(toDoListDbDto)); }
/// <summary> /// Delete ToDoList record based on ToDoListId passed. /// </summary> /// <param name="id"></param> /// <param name="userId"></param> /// <returns> 1 if success else -1. </returns> public async Task <int> DeleteToDoList(long id, long userId) { ToDoListDbModel toDoListDbDto = await _toDoDbContext.ToDoLists .FirstOrDefaultAsync(p => p.ToDoListId == id && p.CreatedBy == userId); if (toDoListDbDto == null) { return(0); } _toDoDbContext.ToDoLists.Remove(toDoListDbDto); return(await _toDoDbContext.SaveChangesAsync()); }
/// <summary> /// Create mapping of LabelId/s to ToDoListId /// </summary> /// <param name="assignLabelToListDto"></param> /// <returns> success/failure result </returns> public async Task <bool> AssignLabelToList(AssignLabelToListDto assignLabelToListDto) { //Remove existing mapping first MapLabelsToListDbModel existingListMapping = _toDoDbContext.MapLabelsToLists .Where(mapping => mapping.ToDoListId == assignLabelToListDto.ToDoListId && mapping.CreatedBy == assignLabelToListDto.CreatedBy).FirstOrDefault(); ToDoListDbModel existingToDoListDbModel = _toDoDbContext.ToDoLists .Where(list => list.ToDoListId == assignLabelToListDto.ToDoListId).FirstOrDefault(); if (existingListMapping != null && existingToDoListDbModel != null) // remove existing mapping first based on UserId and ToDoListId combination. { _toDoDbContext.MapLabelsToLists.Remove(existingListMapping); await _toDoDbContext.SaveChangesAsync(); } int saveResult = 0; if (assignLabelToListDto.LabelId.Count() == 1) // One to one mapping of LabelId to ToDoListId { MapLabelsToListDbModel mapLabelsToListDbDto = new MapLabelsToListDbModel { CreatedBy = assignLabelToListDto.CreatedBy, LabelId = assignLabelToListDto.LabelId.FirstOrDefault(), ToDoListId = assignLabelToListDto.ToDoListId }; _toDoDbContext.MapLabelsToLists.Add(mapLabelsToListDbDto); saveResult = await _toDoDbContext.SaveChangesAsync(); } else if (assignLabelToListDto.LabelId.Count() > 1) // Many to one mapping of LabelIds to ToDoListId { for (int labelId = 0; labelId < assignLabelToListDto.LabelId.Length; labelId++) { MapLabelsToListDbModel mapLabelsToListDbDto = new MapLabelsToListDbModel { CreatedBy = assignLabelToListDto.CreatedBy, LabelId = assignLabelToListDto.LabelId[labelId], ToDoListId = assignLabelToListDto.ToDoListId }; _toDoDbContext.MapLabelsToLists.Add(mapLabelsToListDbDto); } saveResult = await _toDoDbContext.SaveChangesAsync(); } if (saveResult > 0) { return(true); } else { return(false); } }
/// <summary> /// Update ToDoListId. /// </summary> /// <param name="updateToDoListDto"></param> /// <returns> Updated ToDoListId. </returns> public async Task <ToDoListDto> UpdateToDoList(UpdateToDoListDto updateToDoListDto) { ToDoListDbModel toDoListDbModel = await _toDoDbContext.ToDoLists .FirstOrDefaultAsync(p => p.ToDoListId == updateToDoListDto.ToDoListId); if (toDoListDbModel == null) { return(null); } toDoListDbModel.Description = updateToDoListDto.Description; toDoListDbModel.UpdationDate = DateTime.UtcNow; await _toDoDbContext.SaveChangesAsync(); return(_mapper.Map <ToDoListDto>(toDoListDbModel)); }