public ActionResult <TaskListReadDto> GetTaskListById(long id) { _logger.LogInformation("Consultando a lista de tarefas de Id: {id}", id); TaskList taskList = _taskListsRepo.GetTaskListById(id); if (taskList == null) { _logger.LogWarning("A lista de tarefas de Id: {id} não existe", id); return(NotFound()); } _logger.LogInformation("Mapeando a lista de tarefas de Id: {id} para a classe de DTO", id); TaskListReadDto taskListReadDto = _mapper.Map <TaskListReadDto>(taskList); if (taskList.Tasks != null && taskList.Tasks.Count > 0) { List <Tag> tags; for (int i = 0; i < taskList.Tasks.Count; i++) { if (taskList.Tasks[i].TaskTags != null && taskList.Tasks[i].TaskTags.Count > 0) { _logger.LogInformation("Mapeando as tags da tarefa de Id: {id} para a classe de DTO", taskList.Tasks[i].Id); tags = taskList.Tasks[i].TaskTags.Select(tt => tt.Tag).ToList(); taskListReadDto.Tasks[i].Tags = _mapper.Map <List <TagReadDto> >(tags); } } } return(Ok(taskListReadDto)); }
public ActionResult <TaskListReadDto> PostTaskList(TaskListCreateDto taskListCreateDto) { _logger.LogInformation("Mapeando a lista de tarefas a ser cadastrada para a model"); TaskList taskList = _mapper.Map <TaskList>(taskListCreateDto); _logger.LogInformation("Cadastrando a lista de tarefas no banco de dados"); _taskListsRepo.PostTaskList(taskList); _taskListsRepo.SaveChanges(); if (taskListCreateDto.Tasks != null && taskListCreateDto.Tasks.Count > 0) { Tag tag; TaskTag taskTag; for (int i = 0; i < taskListCreateDto.Tasks.Count; i++) { if (taskListCreateDto.Tasks[i].Tags != null && taskListCreateDto.Tasks[i].Tags.Count > 0) { taskTag = new TaskTag() { TaskId = taskList.Tasks[i].Id }; _logger.LogInformation("Cadastrando as tags da tarefa de Id: {id} no banco de dados", taskList.Tasks[i].Id); foreach (TagCreateDto tagCreateDto in taskListCreateDto.Tasks[i].Tags) { tag = _mapper.Map <Tag>(tagCreateDto); _tagsRepo.PostTag(tag); _tagsRepo.SaveChanges(); taskTag.TagId = tag.Id; _taskTagsRepo.PostTaskTag(taskTag); _taskTagsRepo.SaveChanges(); } } } } _logger.LogInformation("Montando objeto de retorno"); TaskList taskListCreated = _taskListsRepo.GetTaskListById(taskList.Id); TaskListReadDto taskListReadDto = _mapper.Map <TaskListReadDto>(taskListCreated); if (taskListCreated.Tasks != null && taskListCreated.Tasks.Count > 0) { List <Tag> tags; for (int i = 0; i < taskListCreated.Tasks.Count; i++) { if (taskListCreated.Tasks[i].TaskTags != null && taskListCreated.Tasks[i].TaskTags.Count > 0) { tags = taskListCreated.Tasks[i].TaskTags.Select(tt => tt.Tag).ToList(); taskListReadDto.Tasks[i].Tags = _mapper.Map <List <TagReadDto> >(tags); } } } return(CreatedAtAction("GetTaskListById", new { id = taskListReadDto.Id }, taskListReadDto)); }