public async Task <ActionResult <OutputIssue> > Get(Guid projectId, Guid issueId)
        {
            try
            {
                logger.LogInformation($"Beginning request: /api/projects/{projectId}/issues/{issueId} GET");
                Issue issue = await issueManager.GetIssueAsync(projectId, issueId);

                OutputIssue output = issueMapper.MapOutputIssue(issue);
                logger.LogInformation($"Request complete: /api/projects/{projectId}/issues/{issueId} GET");
                return(Ok(output));
            }
            catch (Exception ex)
            {
                return(exceptionManager.Handle(ex));
            }
        }
        public async Task <ActionResult <OutputIssue> > PatchStatus(Guid projectId, Guid issueId, [FromBody] string status)
        {
            try
            {
                logger.LogInformation($"Beginning request: /api/projects/{projectId}/issues/{issueId} PATCH");
                Issue updatedIssue = await issueManager.UpdateIssueStatusAsync(projectId,
                                                                               issueId,
                                                                               status);

                OutputIssue output = issueMapper.MapOutputIssue(updatedIssue);
                logger.LogInformation($"Request complete: /api/projects/{projectId}/issues/{issueId} PATCH");
                return(Ok(output));
            }
            catch (Exception ex)
            {
                return(exceptionManager.Handle(ex));
            }
        }
        public async Task <ActionResult <OutputIssue> > Put(Guid projectId, Guid issueId, [FromBody] UpdateIssue updateIssue)
        {
            try
            {
                logger.LogInformation($"Beginning request: /api/projects/{projectId}/issues/{issueId} PUT");
                Issue updatedIssue = await issueManager.UpdateIssueAsync(projectId,
                                                                         issueId,
                                                                         updateIssue.EpicId,
                                                                         updateIssue.IssueType,
                                                                         updateIssue.Name,
                                                                         updateIssue.Description,
                                                                         updateIssue.Status,
                                                                         updateIssue.Estimate);

                OutputIssue output = issueMapper.MapOutputIssue(updatedIssue);
                logger.LogInformation($"Request complete: /api/projects/{projectId}/issues/{issueId} PUT");
                return(Ok(output));
            }
            catch (Exception ex)
            {
                return(exceptionManager.Handle(ex));
            }
        }
        public async Task <ActionResult <OutputIssue> > Post(Guid projectId, [FromBody] CreateIssue createIssue)
        {
            try
            {
                logger.LogInformation($"Beginning request: /api/projects/{projectId}/issues POST");
                Issue createdIssue = await issueManager.CreateIssueAsync(projectId,
                                                                         createIssue.EpicId,
                                                                         createIssue.IssueType,
                                                                         createIssue.Name,
                                                                         createIssue.Description,
                                                                         createIssue.Status,
                                                                         createIssue.Estimate);

                string      createdProjectUrl = $"{Utilities.Web.GetBaseUrl(HttpContext)}/api/projects/{projectId}/issues{createdIssue.PublicIssueId}";
                OutputIssue output            = issueMapper.MapOutputIssue(createdIssue);
                logger.LogInformation("Request complete: /api/projects/{projectId}/issues POST");
                return(Created(createdProjectUrl, output));
            }
            catch (Exception ex)
            {
                return(exceptionManager.Handle(ex));
            }
        }