示例#1
0
        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;
            }
        }
示例#2
0
        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
                });
            }
        }
示例#3
0
        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());
        }