Fixed: enable the creation of mulitple organizations
Fixed: Usage reporting hosted organizations
This commit is contained in:
parent
69e778b2b0
commit
08def1c888
5 changed files with 110 additions and 76 deletions
|
@ -160,12 +160,40 @@ namespace WebsitePanel.EnterpriseServer
|
|||
if (org == null)
|
||||
return null;
|
||||
|
||||
OrganizationStatistics stats = ObjectUtils.FillObjectFromDataReader<OrganizationStatistics>(
|
||||
DataProvider.GetExchangeOrganizationStatistics(itemId));
|
||||
OrganizationStatistics stats = new OrganizationStatistics();
|
||||
UserInfo user = ObjectUtils.FillObjectFromDataReader<UserInfo>(DataProvider.GetUserByExchangeOrganizationIdInternally(itemId));
|
||||
|
||||
List<PackageInfo> Packages = PackageController.GetPackages(user.UserId);
|
||||
|
||||
if ((Packages != null) & (Packages.Count > 0))
|
||||
{
|
||||
foreach (PackageInfo Package in Packages)
|
||||
{
|
||||
List<Organization> orgs = null;
|
||||
|
||||
orgs = GetExchangeOrganizations(Package.PackageId, false);
|
||||
|
||||
if ((orgs != null) & (orgs.Count > 0))
|
||||
{
|
||||
foreach (Organization o in orgs)
|
||||
{
|
||||
OrganizationStatistics tempStats = ObjectUtils.FillObjectFromDataReader<OrganizationStatistics>(DataProvider.GetExchangeOrganizationStatistics(o.Id));
|
||||
|
||||
stats.CreatedMailboxes += tempStats.CreatedMailboxes;
|
||||
stats.CreatedContacts += tempStats.CreatedContacts;
|
||||
stats.CreatedDistributionLists += tempStats.CreatedDistributionLists;
|
||||
stats.CreatedDomains += tempStats.CreatedDomains;
|
||||
stats.CreatedPublicFolders += tempStats.CreatedPublicFolders;
|
||||
stats.UsedDiskSpace += tempStats.UsedDiskSpace;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// disk space
|
||||
//stats.UsedDiskSpace = org.DiskSpace;
|
||||
|
||||
|
||||
// allocated quotas
|
||||
PackageContext cntx = PackageController.GetPackageContext(org.PackageId);
|
||||
stats.AllocatedMailboxes = cntx.Quotas[Quotas.EXCHANGE2007_MAILBOXES].QuotaAllocatedValue;
|
||||
|
|
|
@ -891,9 +891,60 @@ namespace WebsitePanel.EnterpriseServer
|
|||
if (org == null)
|
||||
return null;
|
||||
|
||||
OrganizationStatistics stats = ObjectUtils.FillObjectFromDataReader<OrganizationStatistics>(
|
||||
DataProvider.GetOrganizationStatistics(itemId));
|
||||
OrganizationStatistics stats = new OrganizationStatistics();
|
||||
|
||||
UserInfo user = ObjectUtils.FillObjectFromDataReader<UserInfo>(DataProvider.GetUserByExchangeOrganizationIdInternally(itemId));
|
||||
|
||||
List<PackageInfo> Packages = PackageController.GetPackages(user.UserId);
|
||||
|
||||
if ((Packages != null) & (Packages.Count > 0))
|
||||
{
|
||||
foreach (PackageInfo Package in Packages)
|
||||
{
|
||||
List<Organization> orgs = null;
|
||||
|
||||
orgs = ExchangeServerController.GetExchangeOrganizations(Package.PackageId, false);
|
||||
|
||||
if ((orgs != null) & (orgs.Count > 0))
|
||||
{
|
||||
foreach (Organization o in orgs)
|
||||
{
|
||||
OrganizationStatistics tempStats = ObjectUtils.FillObjectFromDataReader<OrganizationStatistics>(DataProvider.GetOrganizationStatistics(o.Id));
|
||||
|
||||
stats.CreatedUsers += tempStats.CreatedUsers;
|
||||
stats.CreatedDomains += tempStats.CreatedDomains;
|
||||
|
||||
PackageContext cntxTmp = PackageController.GetPackageContext(org.PackageId);
|
||||
|
||||
if (cntxTmp.Groups.ContainsKey(ResourceGroups.HostedSharePoint))
|
||||
{
|
||||
SharePointSiteCollectionListPaged sharePointStats = HostedSharePointServerController.GetSiteCollectionsPaged(org.PackageId, org.Id, string.Empty, string.Empty, string.Empty, 0, 0);
|
||||
stats.CreatedSharePointSiteCollections += sharePointStats.TotalRowCount;
|
||||
}
|
||||
|
||||
if (cntxTmp.Groups.ContainsKey(ResourceGroups.HostedCRM))
|
||||
{
|
||||
stats.CreatedCRMUsers += CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty).Value;
|
||||
}
|
||||
|
||||
if (cntxTmp.Groups.ContainsKey(ResourceGroups.BlackBerry))
|
||||
{
|
||||
stats.CreatedBlackBerryUsers += BlackBerryController.GetBlackBerryUsersCount(org.Id, string.Empty, string.Empty).Value;
|
||||
}
|
||||
|
||||
if (cntxTmp.Groups.ContainsKey(ResourceGroups.OCS))
|
||||
{
|
||||
stats.CreatedOCSUsers += OCSController.GetOCSUsersCount(org.Id, string.Empty, string.Empty).Value;
|
||||
}
|
||||
|
||||
if (cntxTmp.Groups.ContainsKey(ResourceGroups.Lync))
|
||||
{
|
||||
stats.CreatedLyncUsers += LyncController.GetLyncUsersCount(org.Id).Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// disk space
|
||||
// allocated quotas
|
||||
|
@ -904,32 +955,27 @@ namespace WebsitePanel.EnterpriseServer
|
|||
if (cntx.Groups.ContainsKey(ResourceGroups.HostedSharePoint))
|
||||
{
|
||||
SharePointSiteCollectionListPaged sharePointStats = HostedSharePointServerController.GetSiteCollectionsPaged(org.PackageId, org.Id, string.Empty, string.Empty, string.Empty, 0, 0);
|
||||
stats.CreatedSharePointSiteCollections = sharePointStats.TotalRowCount;
|
||||
stats.AllocatedSharePointSiteCollections = cntx.Quotas[Quotas.HOSTED_SHAREPOINT_SITES].QuotaAllocatedValue;
|
||||
}
|
||||
|
||||
|
||||
if (cntx.Groups.ContainsKey(ResourceGroups.HostedCRM))
|
||||
{
|
||||
stats.CreatedCRMUsers = CRMController.GetCRMUsersCount(org.Id, string.Empty, string.Empty).Value;
|
||||
stats.AllocatedCRMUsers = cntx.Quotas[Quotas.CRM_USERS].QuotaAllocatedValue;
|
||||
}
|
||||
|
||||
if (cntx.Groups.ContainsKey(ResourceGroups.BlackBerry))
|
||||
{
|
||||
stats.CreatedBlackBerryUsers = BlackBerryController.GetBlackBerryUsersCount(org.Id, string.Empty, string.Empty).Value;
|
||||
stats.AllocatedBlackBerryUsers = cntx.Quotas[Quotas.BLACKBERRY_USERS].QuotaAllocatedValue;
|
||||
}
|
||||
|
||||
if (cntx.Groups.ContainsKey(ResourceGroups.OCS))
|
||||
{
|
||||
stats.CreatedOCSUsers = OCSController.GetOCSUsersCount(org.Id, string.Empty, string.Empty).Value;
|
||||
stats.AllocatedOCSUsers = cntx.Quotas[Quotas.OCS_USERS].QuotaAllocatedValue;
|
||||
}
|
||||
|
||||
if (cntx.Groups.ContainsKey(ResourceGroups.Lync))
|
||||
{
|
||||
stats.CreatedLyncUsers = LyncController.GetLyncUsersCount(org.Id).Value;
|
||||
stats.AllocatedLyncUsers = cntx.Quotas[Quotas.LYNC_USERS].QuotaAllocatedValue;
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
<tr>
|
||||
<td class="FormLabel150"><asp:Localize ID="locOrganizationID" runat="server" meta:resourcekey="locOrganizationID" Text="Organization ID: *"></asp:Localize></td>
|
||||
<td>
|
||||
<asp:TextBox ID="txtOrganizationID" runat="server" CssClass="TextBox100"
|
||||
<asp:TextBox ID="txtOrganizationID" runat="server" CssClass="HugeTextBox200"
|
||||
MaxLength="128"></asp:TextBox>
|
||||
<asp:RequiredFieldValidator ID="valRequiretxtOrganizationID" runat="server" meta:resourcekey="valRequiretxtOrganizationID" ControlToValidate="txtOrganizationID"
|
||||
ErrorMessage="Enter Organization ID" ValidationGroup="CreateOrganization" Display="Dynamic" Text="*" SetFocusOnError="true"></asp:RequiredFieldValidator>
|
||||
|
|
|
@ -48,8 +48,16 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
gvOrgs.Columns[2].Visible = gvOrgs.Columns[3].Visible = gvOrgs.Columns[4].Visible = false;
|
||||
btnCreate.Enabled = false;
|
||||
}
|
||||
else
|
||||
if (gvOrgs.Rows.Count > 0) btnCreate.Enabled = false;
|
||||
|
||||
|
||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||
if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATIONS))
|
||||
{
|
||||
btnCreate.Enabled = !(cntx.Quotas[Quotas.ORGANIZATIONS].QuotaAllocatedValue <= gvOrgs.Rows.Count);
|
||||
}
|
||||
|
||||
//else
|
||||
//if (gvOrgs.Rows.Count > 0) btnCreate.Enabled = false;
|
||||
|
||||
}
|
||||
|
||||
|
@ -103,6 +111,13 @@ namespace WebsitePanel.Portal.ExchangeServer
|
|||
gvOrgs.DataBind();
|
||||
|
||||
orgsQuota.BindQuota();
|
||||
|
||||
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
||||
if (cntx.Quotas.ContainsKey(Quotas.ORGANIZATIONS))
|
||||
{
|
||||
btnCreate.Enabled = !(cntx.Quotas[Quotas.ORGANIZATIONS].QuotaAllocatedValue <= gvOrgs.Rows.Count);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
|
@ -276,10 +276,10 @@ namespace WebsitePanel.Portal
|
|||
|
||||
break;
|
||||
case "RestampItem":
|
||||
RestampMailboxes(mailboxPlanId);
|
||||
RestampMailboxes(mailboxPlanId, mailboxPlanId);
|
||||
break;
|
||||
case "StampUnassigned":
|
||||
StampUnAssigned(mailboxPlanId);
|
||||
RestampMailboxes(-1, mailboxPlanId);
|
||||
break;
|
||||
|
||||
}
|
||||
|
@ -420,7 +420,7 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
|
||||
|
||||
private void RestampMailboxes(int mailboxPlanId)
|
||||
private void RestampMailboxes(int sourceMailboxPlanId, int destinationMailboxPlanId)
|
||||
{
|
||||
UserInfo[] UsersInfo = ES.Services.Users.GetUsers(PanelSecurity.SelectedUserId, true);
|
||||
|
||||
|
@ -444,12 +444,12 @@ namespace WebsitePanel.Portal
|
|||
{
|
||||
if (!string.IsNullOrEmpty(org.GlobalAddressList))
|
||||
{
|
||||
ExchangeAccount[] Accounts = ES.Services.ExchangeServer.GetExchangeAccountByMailboxPlanId(org.Id, mailboxPlanId);
|
||||
ExchangeAccount[] Accounts = ES.Services.ExchangeServer.GetExchangeAccountByMailboxPlanId(org.Id, sourceMailboxPlanId);
|
||||
|
||||
foreach (ExchangeAccount a in Accounts)
|
||||
{
|
||||
txtStatus.Text = "Completed";
|
||||
int result = ES.Services.ExchangeServer.SetExchangeMailboxPlan(org.Id, a.AccountId, mailboxPlanId);
|
||||
int result = ES.Services.ExchangeServer.SetExchangeMailboxPlan(org.Id, a.AccountId, destinationMailboxPlanId);
|
||||
if (result < 0)
|
||||
{
|
||||
BindMailboxPlans();
|
||||
|
@ -475,61 +475,6 @@ namespace WebsitePanel.Portal
|
|||
}
|
||||
|
||||
|
||||
|
||||
private void StampUnAssigned(int mailboxPlanId)
|
||||
{
|
||||
UserInfo[] UsersInfo = ES.Services.Users.GetUsers(PanelSecurity.SelectedUserId, true);
|
||||
|
||||
try
|
||||
{
|
||||
foreach (UserInfo ui in UsersInfo)
|
||||
{
|
||||
PackageInfo[] Packages = ES.Services.Packages.GetPackages(ui.UserId);
|
||||
|
||||
if ((Packages != null) & (Packages.GetLength(0) > 0))
|
||||
{
|
||||
foreach (PackageInfo Package in Packages)
|
||||
{
|
||||
Providers.HostedSolution.Organization[] orgs = null;
|
||||
|
||||
orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Package.PackageId, false);
|
||||
|
||||
if ((orgs != null) & (orgs.GetLength(0) > 0))
|
||||
{
|
||||
foreach (Organization org in orgs)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(org.GlobalAddressList))
|
||||
{
|
||||
ExchangeAccount[] Accounts = ES.Services.ExchangeServer.GetExchangeAccountByMailboxPlanId(org.Id, -1);
|
||||
|
||||
foreach (ExchangeAccount a in Accounts)
|
||||
{
|
||||
txtStatus.Text = "Completed";
|
||||
int result = ES.Services.ExchangeServer.SetExchangeMailboxPlan(org.Id, a.AccountId, mailboxPlanId);
|
||||
if (result < 0)
|
||||
{
|
||||
BindMailboxPlans();
|
||||
txtStatus.Text = "Error: " + a.AccountName;
|
||||
messageBox.ShowErrorMessage("EXCHANGE_FAILED_TO_STAMP");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
messageBox.ShowSuccessMessage("EXCHANGE_STAMPMAILBOXES");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
messageBox.ShowErrorMessage("EXCHANGE_FAILED_TO_STAMP", ex);
|
||||
}
|
||||
|
||||
BindMailboxPlans();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue