public async Task <IActionResult> InitiateSendMessage(DiagnoseDetailPageViewModel data) { bool ShowMessageForm = false; tenantGroupName = HttpContext.Session.Get <string>("SelectedTenantGroupName"); tenant = HttpContext.Session.Get <string>("SelectedTenantName"); var refreshtoken = await HttpContext.GetTokenAsync("refresh_token").ConfigureAwait(false); accessToken = _commonService.GetAccessTokenWVD(refreshtoken); //await HttpContext.GetTokenAsync("access_token"); if (data.UserSessions.Where(x => x.IsSelected == true).ToList().Count > 0) { ShowMessageForm = true; ViewBag.ErrorMsg = ""; } else { ViewBag.ErrorMsg = "Please select at least one user"; ShowMessageForm = false; } return(View("ActivityHostDetails", new DiagnoseDetailPageViewModel() { Title = string.Empty, Message = string.Empty, ConnectionActivity = data.ConnectionActivity, ShowConnectedUser = true, ShowMessageForm = ShowMessageForm, UserSessions = await GetUserSessions(accessToken, tenantGroupName, tenant, data.ConnectionActivity.SessionHostPoolName, data.ConnectionActivity.SessionHostName).ConfigureAwait(false), selectedUsername = data.UserSessions.Where(x => x.IsSelected == true).ToList(), VMPerformance = await GetVMPerformance(data.ConnectionActivity.SessionHostName).ConfigureAwait(false) })); }
public async Task <IActionResult> SendMessage(DiagnoseDetailPageViewModel data) { if (ModelState.IsValid) { var viewData = new SendMessageQuery(); var messageStatus = new List <MessageStatus>(); tenantGroupName = HttpContext.Session.Get <string>("SelectedTenantGroupName"); tenant = HttpContext.Session.Get <string>("SelectedTenantName"); var refreshtoken = await HttpContext.GetTokenAsync("refresh_token").ConfigureAwait(false); accessToken = _commonService.GetAccessTokenWVD(refreshtoken); //await HttpContext.GetTokenAsync("access_token"); if (string.IsNullOrEmpty(data.Message) && string.IsNullOrEmpty(data.Title)) { ViewBag.TitleErrorMsg = "Subject is required"; ViewBag.MessageErrorMsg = "Message is required"; } else if (string.IsNullOrEmpty(data.Title)) { ViewBag.TitleErrorMsg = "Title is required"; } else if (string.IsNullOrEmpty(data.Message)) { ViewBag.MessageErrorMsg = "Message is required"; } else { if (data.UserSessions.Where(x => x.IsSelected == true).ToList().Count > 0) { foreach (var item in data.UserSessions.Where(x => x.IsSelected == true).ToList()) { var sendMessageQuery = new SendMessageQuery() { tenantGroupName = item.tenantGroupName, tenantName = item.tenantName, hostPoolName = item.hostPoolName, sessionHostName = item.sessionHostName, sessionId = item.sessionId, messageTitle = data.Title, messageBody = data.Message, userPrincipalName = item.userPrincipalName, adUserName = item.adUserName }; var Content = new StringContent(JsonConvert.SerializeObject(sendMessageQuery), Encoding.UTF8, "application/json"); _logger.LogInformation($"Call service to send message to {item.userPrincipalName}"); var response = await _userSessionService.SendMessage(accessToken, sendMessageQuery).ConfigureAwait(false); if (response == HttpStatusCode.OK.ToString()) { messageStatus.Add(new MessageStatus() { Message = $"Message sent successfully to {item.adUserName}", Status = "Success" }); } else if (response == HttpStatusCode.Forbidden.ToString() || response == HttpStatusCode.Unauthorized.ToString()) { messageStatus.Add(new MessageStatus() { Message = $"Failed to send message to {item.adUserName} . You don't have permissions to send message.", Status = "Error" }); } else { messageStatus.Add(new MessageStatus() { Message = $"Failed to send message to {item.adUserName}", Status = "Error" }); } } ViewBag.ErrorMsg = ""; } else { ViewBag.ErrorMsg = "Please select at least one user"; } } return(View("ActivityHostDetails", new DiagnoseDetailPageViewModel() { UserSessions = data.UserSessions.Where(usr => usr.IsSelected = true) .Select(usr => { usr.IsSelected = false; return usr; }) .ToList(), Title = data.Title, Message = data.Message, SendMsgStatuses = messageStatus, ConnectionActivity = data.ConnectionActivity, ShowConnectedUser = true, ShowMessageForm = true, selectedUsername = data.UserSessions.Where(x => x.IsSelected == true).ToList(), VMPerformance = await GetVMPerformance(data.ConnectionActivity.SessionHostName).ConfigureAwait(false) })); } else { return(View("ActivityHostDetails", new DiagnoseDetailPageViewModel() { UserSessions = data.UserSessions.Where(usr => usr.IsSelected = true) .Select(usr => { usr.IsSelected = false; return usr; }) .ToList(), ConnectionActivity = data.ConnectionActivity, ShowConnectedUser = true, ShowMessageForm = true, Title = data.Title, Message = data.Message, selectedUsername = data.UserSessions.Where(x => x.IsSelected == true).ToList(), VMPerformance = await GetVMPerformance(data.ConnectionActivity.SessionHostName).ConfigureAwait(false) })); } }
public async Task <IActionResult> LogOffUserSession(DiagnoseDetailPageViewModel data) { var viewData = new LogOffUserQuery(); tenantGroupName = HttpContext.Session.Get <string>("SelectedTenantGroupName"); tenant = HttpContext.Session.Get <string>("SelectedTenantName"); var refreshtoken = await HttpContext.GetTokenAsync("refresh_token").ConfigureAwait(false); accessToken = _commonService.GetAccessTokenWVD(refreshtoken); //await HttpContext.GetTokenAsync("access_token"); var messageStatus = new List <MessageStatus>(); if (data.UserSessions.Where(x => x.IsSelected == true).ToList().Count > 0) { foreach (var item in data.UserSessions.Where(x => x.IsSelected == true).ToList()) { var logOffUserQuery = new LogOffUserQuery() { tenantGroupName = item.tenantGroupName, tenantName = item.tenantName, hostPoolName = item.hostPoolName, sessionHostName = item.sessionHostName, sessionId = item.sessionId, adUserName = item.adUserName }; var Content = new StringContent(JsonConvert.SerializeObject(logOffUserQuery), Encoding.UTF8, "application/json"); _logger.LogInformation($"Service Call to log off user session "); // var response = await client.PostAsync($"SessionHost/LogOffUser", Content); var response = await _userSessionService.LogOffUserSession(accessToken, logOffUserQuery).ConfigureAwait(false); if (response == HttpStatusCode.OK.ToString() || response == "Success") { messageStatus.Add(new MessageStatus() { Message = $"Log off successfully for {item.adUserName} user session.", Status = "Success" }); } else if (response == HttpStatusCode.Forbidden.ToString() || response == HttpStatusCode.Unauthorized.ToString()) { messageStatus.Add(new MessageStatus() { Message = $"Failed to log off {item.adUserName} . You don't have permissions to log off user.", Status = "Error" }); } else { messageStatus.Add(new MessageStatus() { Message = $"Failed to logoff {item.adUserName} user session.", Status = "Error" }); } } ViewBag.ErrorMsg = ""; } else { ViewBag.ErrorMsg = "Please select at least one user"; } await Task.Delay(1500); // delay the process for 1.5 second to get current list of user sessions return(View("ActivityHostDetails", new DiagnoseDetailPageViewModel() { Title = string.Empty, Message = string.Empty, SendMsgStatuses = messageStatus, ConnectionActivity = data.ConnectionActivity, ShowConnectedUser = true, ShowMessageForm = false, UserSessions = await GetUserSessions(accessToken, tenantGroupName, tenant, data.ConnectionActivity.SessionHostPoolName, data.ConnectionActivity.SessionHostName).ConfigureAwait(false), VMPerformance = await GetVMPerformance(data.ConnectionActivity.SessionHostName).ConfigureAwait(false) })); }
public IActionResult GetUserSessions(DiagnoseDetailPageViewModel data) { return(View("UserSessions", data)); }