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));
        }
Exemple #4
0
        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." }));
        }