public async Task Index()

in wvd-templates/diagnostics-sample/src/MSFT.WVD.Diagnostics/Controllers/DiagonizeIssuesController.cs [56:134]


        public async Task<IActionResult> Index(DiagonizePageViewModel data)
        {
            var viewData = new DiagonizePageViewModel();
            if (ModelState.IsValid)
            {

                tenantGroupName = HttpContext.Session.Get<string>("SelectedTenantGroupName");
                tenant = HttpContext.Session.Get<string>("SelectedTenantName");
                if (string.IsNullOrEmpty(tenantGroupName) || string.IsNullOrEmpty(tenant))
                {
                    return RedirectToAction("Error", "Home", new ErrorDetails() { StatusCode = (int)HttpStatusCode.Forbidden, Message = "Invalid tenant group name or tenant name." });
                }
                else
                {

                    var refreshtoken = await HttpContext.GetTokenAsync("refresh_token").ConfigureAwait(false);
                    accessToken = _commonService.GetAccessTokenWVD(refreshtoken); //await HttpContext.GetTokenAsync("access_token");
                    string startDate, endDate = "";
                    if (data.DiagonizeQuery.StartDate == null)
                    {
                        startDate = $"{DateTime.Now.ToUniversalTime().AddDays(-7).ToString("yyyy-MM-dd")}T00:00:00Z";
                        endDate = $"{DateTime.Now.ToUniversalTime().ToString("yyyy-MM-dd")}T00:00:00Z";
                    }
                    else
                    {
                        startDate = data.DiagonizeQuery.StartDate.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ");//+"T00:00:00Z";
                        endDate = data.DiagonizeQuery.EndDate.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ");//+"T00: 00:00Z";
                    }



                    string activityoutcome = data.DiagonizeQuery.ActivityOutcome.ToString();
                    if (data.DiagonizeQuery.ActivityType == ActivityType.Management)
                    {
                        _logger.LogInformation($"Service call to get management activity details for selected tenant group {tenantGroupName} and tenant {tenant}");
                        //call from service layer
                        viewData.ManagementActivity = await _diagnozeService.GetManagementActivities(accessToken, data.DiagonizeQuery.UPN, tenantGroupName, tenant, startDate, endDate, activityoutcome).ConfigureAwait(false);
                        if (viewData.ManagementActivity?.Count > 0 && viewData.ManagementActivity[0].ErrorDetails != null)
                        {
                            _logger.LogError($"Error Occured : {viewData.ManagementActivity[0].ErrorDetails.Message}");
                            return RedirectToAction("Error", "Home", new ErrorDetails() { StatusCode = (int)viewData.ManagementActivity[0].ErrorDetails.StatusCode, Message = "Access Denied! You are not authorized to get list of activities.Please contact system administrator" });
                        }
                        viewData.ActivityType = viewData.ManagementActivity?.Count() > 0 ? ActivityType.Management : ActivityType.None;
                    }
                    else if (data.DiagonizeQuery.ActivityType == ActivityType.Connection)
                    {
                        _logger.LogInformation($"Service Call  to get connection activity details for selected tenant group {tenantGroupName} and tenant {tenant}");

                        //call from service layer
                        viewData.ConnectionActivity = await _diagnozeService.GetConnectionActivities(accessToken, data.DiagonizeQuery.UPN, tenantGroupName, tenant, startDate, endDate, activityoutcome).ConfigureAwait(false);
                        if (viewData.ConnectionActivity?.Count > 0 && viewData.ConnectionActivity[0].ErrorDetails != null)
                        {
                            _logger.LogError($"Error Occured : {viewData.ConnectionActivity[0].ErrorDetails.Message}");
                            return RedirectToAction("Error", "Home", new ErrorDetails() { StatusCode = (int)viewData.ConnectionActivity[0].ErrorDetails.StatusCode, Message = "Access Denied! You are not authorized to get list of activities.Please contact system administrator" });
                        }

                        viewData.ActivityType = viewData.ConnectionActivity?.Count() > 0 ? ActivityType.Connection : ActivityType.None;
                    }
                    else if (data.DiagonizeQuery.ActivityType == ActivityType.Feed)
                    {
                        _logger.LogInformation($"Service call to get feed activity details for selected tenant group {tenantGroupName} and tenant {tenant}");

                        viewData.FeedActivity = await _diagnozeService.GetFeedActivities(accessToken, data.DiagonizeQuery.UPN, tenantGroupName, tenant, startDate, endDate, activityoutcome).ConfigureAwait(false);
                        if (viewData.FeedActivity?.Count > 0 && viewData.FeedActivity[0].ErrorDetails != null)
                        {
                            _logger.LogError($"Error Occured : {viewData.FeedActivity[0].ErrorDetails.Message}");
                            return RedirectToAction("Error", "Home", new ErrorDetails() { StatusCode = (int)viewData.FeedActivity[0].ErrorDetails.StatusCode, Message = "Access Denied!You are not authorized to get list of activities.Please contact system administrator" });
                        }
                        viewData.ActivityType = viewData.FeedActivity?.Count() > 0 ? ActivityType.Feed : ActivityType.None;
                    }
                }


            }
            HttpContext.Session.Set<DiagonizeQuery>("SearchQuery", data.DiagonizeQuery);
            HttpContext.Session.Set<List<ConnectionActivity>>("ConnectionActivity", viewData.ConnectionActivity);
            viewData.DiagonizeQuery = data.DiagonizeQuery;
            return View("SearchResults", viewData);
        }