public async Task <IActionResult> Get(string id) { var userId = User.GetUserId(); var project = await _repo.GetProject(id, userId); if (project != null) { var projectUser = await _repo.GetProjectUser(id, userId); projectUser.LastActive = DateTime.Now; if (await _repo.SaveAll()) { project.ProjectUsers = await _repo.GetProjectUsers(project.Id); var projectDetailDto = _mapper.Map <ProjectDetailDto>(project); foreach (var phase in projectDetailDto.Phases) { foreach (var issue in phase.Issues) { issue.Labels = issue.Labels.OrderBy(l => l.Name).ToList(); } } return(Ok(projectDetailDto)); } return(BadRequest(new { message = "Unable to update last active." })); } return(NotFound(new { message = "Project not found." })); }
public async Task <IActionResult> Create([FromRoute] string projectId, [FromBody] PhaseCreateDto phaseCreateDto) { var userId = User.GetUserId(); var project = await _repo.GetProject(projectId, userId); if (project == null) { return(NotFound("Project not found.")); } if (project.Phases.FirstOrDefault(p => p.Name == phaseCreateDto.Name) != null) { return(BadRequest(new { message = "Phase already exists." })); } var phase = new Phase { Name = phaseCreateDto.Name, ProjectId = project.Id, //Project = project, Index = project.Phases.Count }; _repo.Add(phase); if (await _repo.SaveAll()) { var phaseListItem = _mapper.Map <PhaseDetailDto>(phase); return(Ok(new { phase = phaseListItem })); } return(BadRequest(new { message = "Unable to create the phase." })); }
public async Task <IActionResult> GetProject(int id) { var project = await _repo.GetProject(id); var projectToReturn = _mapper.Map <ProjectsForDetailed>(project); foreach (var user in projectToReturn.Users) { var userTemp = await _userManager.FindByEmailAsync(user.Email); var roles = await _userManager.GetRolesAsync(userTemp); user.Roles = roles; } return(Ok(projectToReturn)); }
public async Task <IActionResult> AddTicket(TicketToCreateDto ticketToCreate) { if (ticketToCreate.userId != null) { var userFromRepo = await _repo.GetUser(ticketToCreate.userId, false); if (userFromRepo == null) { return(BadRequest()); } if (userFromRepo.project.Id != ticketToCreate.projectId) { return(BadRequest()); } } var newTicket = _mapper.Map <Ticket>(ticketToCreate); newTicket.project = await _repo.GetProject(ticketToCreate.projectId); if (ticketToCreate.userId != null) { newTicket.User = await _repo.GetUser(ticketToCreate.userId, false); } if (ticketToCreate.CategoryId != 0) { newTicket.Status = await _repo.GetStatus(ticketToCreate.CategoryId); } if (ticketToCreate.StatusId != 0) { newTicket.Category = await _repo.GetCategory(ticketToCreate.CategoryId); } if (ticketToCreate.PriorityId != 0) { newTicket.Priority = await _repo.GetPriority(ticketToCreate.PriorityId); } _repo.Add(newTicket); if (await _repo.SaveAll()) { var ticketToReturn = _mapper.Map <TicketsForDetailed>(newTicket); return(Ok(ticketToReturn)); } throw new Exception("Ticket can't created"); }
public async Task <IActionResult> Create([FromBody] IssueCreateDto dto) { var userId = User.GetUserId(); var user = await _repo.GetUser(userId); if (user == null) { return(NotFound(new { message = "User not found" })); } var project = await _repo.GetProject(dto.ProjectId, userId); if (project == null) { return(NotFound(new { message = "Project not found." })); } var phase = project.Phases.FirstOrDefault(p => p.Id == dto.PhaseId); if (phase == null) { return(NotFound(new { message = "Phase not found." })); } var issue = _mapper.Map <Issue>(dto); issue.CreatedById = userId; issue.CreatedAt = DateTime.Today.ToShortDateString(); issue.PhaseId = dto.PhaseId; issue.Status = Status.TO_DO; _repo.Add(issue); if (dto.Labels != null) { foreach (var id in dto.Labels) { var label = await _repo.GetLabel(id); var il = new IssueLabel { IssueId = issue.Id, LabelId = label.Id, Issue = issue, Label = label }; issue.IssueLabels.Add(il); } } foreach (var id in dto.IssuedTo) { var iu = new IssueUser { IssueId = issue.Id, UserId = id }; issue.IssuedTo.Add(iu); } if (await _repo.SaveAll()) { var issueToReturn = _mapper.Map <IssueListItemDto>(issue); return(Ok(new { message = "Successfully created the issue", issue = issueToReturn })); } return(BadRequest(new { message = "Error saving the issue." })); }