public async Task <ActionResult <TaskDto> > PostTask(CreateTaskDto createTaskDto) { var taskEntity = TaskMapper.mapFromCreateTask(createTaskDto); _context.Tasks.Add(taskEntity); await _context.SaveChangesAsync(); return(Ok(TaskMapper.mapToDto(taskEntity))); }
public async Task <ActionResult <TaskDto> > GetTask(long taskId) { var task = await _context.Tasks.FirstOrDefaultAsync(t => t.Id == taskId); if (task == null) { return(NotFound()); } return(Ok(TaskMapper.mapToDto(task))); }
public async Task <ActionResult <IEnumerable <TaskDto> > > PutTask(long taskId, TaskDto task) { if (taskId != task.Id) { return(BadRequest()); } var taskEntity = TaskMapper.mapFromDto(task); if (taskEntity.State == State.Closed) { taskEntity.ClosedAt = DateTime.Now; } var oldTask = _context.Tasks .AsNoTracking() .FirstOrDefault(t => t.Id == taskId); if (oldTask.State == State.Closed && taskEntity.State != State.Closed) { taskEntity.ClosedAt = null; } _context.Entry(taskEntity).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TaskExists(taskId)) { return(NotFound()); } else { throw; } } List <TaskDto> states = new List <TaskDto>(); states.Add(TaskMapper.mapToDto(oldTask)); states.Add(task); return(states); }
public async Task <ActionResult <TaskDto> > DeleteTask(long taskId) { var task = await _context.Tasks .Include(t => t.Comments) .FirstOrDefaultAsync(t => t.Id == taskId); if (task == null) { return(NotFound()); } if (task.Comments.Count != 0) { return(BadRequest("Task Coments needs to be deleted first!")); } _context.Tasks.Remove(task); await _context.SaveChangesAsync(); return(Ok(TaskMapper.mapToDto(task))); }