public async System.Threading.Tasks.Task <ActionResult> CodeAnalysis()
        {
            SessionInfo sessionInfo = (SessionInfo)HttpContext.Session["SessionInfo"];

            if (!sessionInfo.Connected)
            {
                return(RedirectToAction("ConnectToProject", "Project"));
            }
            else
            {
                GitHubMetrics         ghMetrics = new GitHubMetrics(sessionInfo.ProjectDetails.GitHubProjectName, sessionInfo.ProjectDetails.GitHubProjectOwner, sessionInfo.ProjectDetails.GitHubToken);
                SonarQubeMetrics      sqMetrics = new SonarQubeMetrics(sessionInfo.ProjectDetails.SonarProjectName, sessionInfo.ProjectDetails.SonarServerUrl, sessionInfo.ProjectDetails.SonarQubeToken);
                CodeAnalysisViewModel baVmodel  = new CodeAnalysisViewModel();
                baVmodel.AverageIssueEffort              = sqMetrics.CalculateAverageTimeForResolvingIssue();
                baVmodel.EstTimeToFixAllIssues           = TimeSpan.FromSeconds(sqMetrics.CalculateTimeForClosingAllIssues().TotalSeconds / await ghMetrics.GetNumberOfActiveContributorsAsync());
                baVmodel.EstTimeToFixImportantIssues     = TimeSpan.FromSeconds(sqMetrics.CalculateTimeForClosingAllImportantIssues().TotalSeconds / await ghMetrics.GetNumberOfActiveContributorsAsync());
                baVmodel.IssuesCountWithSeverity         = sqMetrics.GetIssuesCountWithSeverity();
                baVmodel.ExpectedDateForClosingAllIssues = DateTime.Now + baVmodel.EstTimeToFixAllIssues;
                baVmodel.CodeQuality = sqMetrics.CalculateCodeQuality();
                return(View(baVmodel));
            }
        }