RDS Users fixes

This commit is contained in:
vfedosevich 2015-05-29 06:19:51 -07:00
parent 2b51465900
commit 7a4301fbea
5 changed files with 69 additions and 17 deletions

View file

@ -5853,6 +5853,9 @@
<data name="ERROR.RDS_USERS_NOT_DELETED" xml:space="preserve">
<value>Unable to remove the following user(s) since they are local admins or they were granted access to remote applications:</value>
</data>
<data name="ERROR.RDS_USERS_NOT_UPDATED" xml:space="preserve">
<value>RDS Users updating error</value>
</data>
<data name="ERROR.REMOTE_DESKTOP_SERVICES_LOG_OFF_USER" xml:space="preserve">
<value>RDS User logging off error</value>
</data>

View file

@ -57,6 +57,17 @@ namespace WebsitePanel.Portal.RDS
}
private void BindQuota()
{
var quota = GetQuota();
if (quota != null)
{
int rdsUsersCount = ES.Services.RDS.GetOrganizationRdsUsersCount(PanelRequest.ItemID);
users.ButtonAddEnabled = (!(quota.QuotaAllocatedValue <= rdsUsersCount) || (quota.QuotaAllocatedValue == -1));
}
}
private QuotaValueInfo GetQuota()
{
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
OrganizationStatistics stats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID);
@ -71,9 +82,10 @@ namespace WebsitePanel.Portal.RDS
if (cntx.Quotas.ContainsKey(Quotas.RDS_USERS))
{
int rdsUsersCount = ES.Services.RDS.GetOrganizationRdsUsersCount(PanelRequest.ItemID);
users.ButtonAddEnabled = (!(cntx.Quotas[Quotas.RDS_USERS].QuotaAllocatedValue <= rdsUsersCount) || (cntx.Quotas[Quotas.RDS_USERS].QuotaAllocatedValue == -1));
return cntx.Quotas[Quotas.RDS_USERS];
}
return null;
}
private void OnRefreshClicked(object sender, EventArgs e)
@ -83,19 +95,36 @@ namespace WebsitePanel.Portal.RDS
if (users.Any())
{
messageBox.Visible = true;
messageBox.ShowErrorMessage("RDS_USERS_NOT_DELETED", new Exception(string.Join(", ", users)));
}
else
{
messageBox.Visible = false;
}
}
private bool SaveRdsUsers()
{
try
{
ES.Services.RDS.SetUsersToRdsCollection(PanelRequest.ItemID, PanelRequest.CollectionID, users.GetUsers());
var quota = GetQuota();
var rdsUsers = users.GetUsers();
if (quota.QuotaAllocatedValue == -1 || quota.QuotaAllocatedValue >= rdsUsers.Count())
{
messageBox.Visible = false;
ES.Services.RDS.SetUsersToRdsCollection(PanelRequest.ItemID, PanelRequest.CollectionID, users.GetUsers());
}
else
{
throw new Exception("Too many RDS users added");
}
}
catch (Exception ex)
{
messageBox.ShowErrorMessage(ex.Message);
messageBox.Visible = true;
messageBox.ShowErrorMessage("RDS_USERS_NOT_UPDATED", ex);
return false;
}

View file

@ -155,6 +155,13 @@ namespace WebsitePanel.Portal.RDS.UserControls
public List<string> CheckDeletedUsers()
{
var rdsUsers = GetGridViewUsers(SelectedState.Selected);
var collectionUsers = ES.Services.RDS.GetRdsCollectionUsers(PanelRequest.CollectionID);
if (rdsUsers.All(r => !collectionUsers.Select(c => c.AccountName.ToLower()).Contains(r.AccountName.ToLower())))
{
return new List<string>();
}
var localAdmins = ES.Services.RDS.GetRdsCollectionLocalAdmins(PanelRequest.CollectionID);
var organizationUsers = ES.Services.Organizations.GetOrganizationUsersPaged(PanelRequest.ItemID, null, null, null, 0, Int32.MaxValue).PageUsers;
var applicationUsers = ES.Services.RDS.GetApplicationUsers(PanelRequest.ItemID, PanelRequest.CollectionID, null);
@ -219,14 +226,7 @@ namespace WebsitePanel.Portal.RDS.UserControls
}
accounts = accounts.Where(x => !GetUsers().Select(p => p.AccountName).Contains(x.AccountName)).ToArray();
Array.Sort(accounts, CompareAccount);
if (Direction == SortDirection.Ascending)
{
Array.Reverse(accounts);
Direction = SortDirection.Descending;
}
else
Direction = SortDirection.Ascending;
Array.Sort(accounts, CompareAccount);
gvPopupAccounts.DataSource = accounts;
gvPopupAccounts.DataBind();
@ -262,7 +262,7 @@ namespace WebsitePanel.Portal.RDS.UserControls
}
}
gvUsers.DataSource = users;
gvUsers.DataSource = users.OrderBy(u => u.DisplayName);
gvUsers.DataBind();
}