public async Task <Response> ChangeStateTask(ChangeStateRequest request, int taskId) { try { TaskEntity task = await _context.Tasks.FindAsync(taskId); if (task == null) { return(new Response { IsSuccess = false, Message = "Task does not exist." }); } ProjectEntity project = await _context.Projects .FirstOrDefaultAsync(p => p.Tasks.FirstOrDefault(d => d.Id == task.Id) != null); task.IdProject = project.Id; task.State = request.Completed ? State.Finalizado : State.Proceso; _context.Update(task); await _context.SaveChangesAsync(); return(new Response { IsSuccess = true, Message = request.Completed ? "Project Completed successfully" : "Project Open successfully" }); } catch (Exception) { throw; } }
public async Task <Response> ChangeStateProject(ChangeStateRequest request, int id) { try { if (!request.Completed) { return(new Response { IsSuccess = false, Message = "Illegal value, must be true" }); } ProjectEntity project = await _context.Projects .Include(p => p.Tasks) .FirstOrDefaultAsync(p => p.Id == id); int numTask = project.Tasks.Count; if (numTask == 0) { return(new Response { IsSuccess = false, Message = "Project cannot be completed because it has no associated tasks." }); } int taskCompleted = await _context.Tasks .CountAsync(t => t.State == State.Finalizado && t.Project.Id == id); if (taskCompleted != numTask) { return(new Response { IsSuccess = false, Message = "Project can't be completed because it has pending tasks." }); } project.State = State.Finalizado; _context.Update(project); await _context.SaveChangesAsync(); return(new Response { IsSuccess = true, Message = "Project Completed successfully" }); } catch (Exception ex) { return(new Response { IsSuccess = false, Message = ex.Message }); } }
public async Task <IActionResult> CompleteTask(ChangeStateRequest request, int id) { Response result = await _task.ChangeStateTask(request, id); if (!result.IsSuccess) { return(BadRequest(result.Message)); } return(Ok(result)); }
public async Task <IActionResult> CompleteProject(ChangeStateRequest request, int id) { Response result = await _project.GetProjectById(id); if (!result.IsSuccess) { return(BadRequest(result.Message)); } result = await _project.ChangeStateProject(request, id); if (!result.IsSuccess) { return(BadRequest(result.Message)); } return(Ok(result)); }
public async Task <IActionResult> ChangeState(int listId, ChangeStateRequest request) { var authorisationResponse = await _listAuthoriser.IsOwner(listId, _userProfileId); if (!authorisationResponse.AuthorisationResult) { return(NotFound()); } if (request.State == ListState.Deleted) { return(BadRequest("Unable to delete a list through this endpoint")); } await _listWriter.ChangeState(listId, request.State); return(Ok()); }