public async Task <IActionResult> UpdateIssueStageByUserProjectIssue([FromRoute] string username, [FromRoute] string projectName, [FromRoute] int issueNumber, [FromBody] CreateIssueStageRequest issueStageRequest)
        {
            if (issueStageRequest == null)
            {
                return(new BadRequestResult());
            }

            var project = await _projectService.GetProjectByUserAsync(username, projectName).ConfigureAwait(false);

            if (project == null)
            {
                return(new NotFoundResult());
            }

            var issue = await _issueService.GetIssueByUserAsync(username, projectName, issueNumber).ConfigureAwait(false);

            if (issue == null)
            {
                return(new NotFoundResult());
            }

            var issueStage = await _issueStageService.GetIssueStageByIssueAsync(issue.Id).ConfigureAwait(false);

            if (issueStage == null)
            {
                return(new NotFoundResult());
            }

            issueStage.Name = issueStageRequest.Name;

            var updated = await _issueStageService.UpdateIssueStageAsync(issueStage).ConfigureAwait(false);

            var locationUri = _uriService.GetUri(issueStage.Name);

            if (updated)
            {
                return(Created(locationUri, new Response <IssueStageResponse>(_mapper.Map <IssueStageResponse>(issueStage))));
            }
            return(NotFound());
        }
        public async Task <IActionResult> CreateIssueStageByUserProject([FromRoute] string username, [FromRoute] string projectName, [FromBody] CreateIssueStageRequest issueStageRequest)
        {
            if (issueStageRequest == null)
            {
                return(new BadRequestResult());
            }

            var project = await _projectService.GetProjectByUserAsync(username, projectName).ConfigureAwait(false);

            if (project == null)
            {
                return(new NotFoundResult());
            }

            var issueStage = await _issueStageService.GetIssueStageByProjectAsync(project.Id, issueStageRequest.Name).ConfigureAwait(false);

            if (issueStage != null)
            {
                return(new ConflictResult());
            }

            var newIssueStage = new IssueStage
            {
                Name      = issueStageRequest.Name,
                ProjectId = project.Id,
            };

            var created = await _issueStageService.CreateIssueStageAsync(newIssueStage).ConfigureAwait(false);

            var locationUri = _uriService.GetUri(newIssueStage.Name);

            if (created)
            {
                return(Created(locationUri, new Response <IssueStageResponse>(_mapper.Map <IssueStageResponse>(newIssueStage))));
            }
            return(NotFound());
        }