// Copyright (c) 2012, Outercurve Foundation. // All rights reserved. // // Redistribution and use in source and binary forms, with or without modification, // are permitted provided that the following conditions are met: // // - Redistributions of source code must retain the above copyright notice, this // list of conditions and the following disclaimer. // // - Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // // - Neither the name of the Outercurve Foundation nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR // ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using System; using WebsitePanel.EnterpriseServer; using WebsitePanel.Providers.HostedSolution; namespace WebsitePanel.Portal.ExchangeServer { public partial class OrganizationHome : WebsitePanelModuleBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindOrgStats(); } } private void BindExchangeStats(bool hideItems) { OrganizationStatistics exchangeOrgStats = ES.Services.ExchangeServer.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID); OrganizationStatistics exchangeTenantStats = ES.Services.ExchangeServer.GetOrganizationStatistics(PanelRequest.ItemID); lnkMailboxes.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "mailboxes", "SpaceID=" + PanelSecurity.PackageId.ToString()); lnkContacts.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "contacts", "SpaceID=" + PanelSecurity.PackageId.ToString()); lnkLists.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "dlists", "SpaceID=" + PanelSecurity.PackageId.ToString()); lnkExchangeStorage.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "storage_usage", "SpaceID=" + PanelSecurity.PackageId.ToString()); lnkFolders.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "public_folders", "SpaceID=" + PanelSecurity.PackageId.ToString()); mailboxesStats.QuotaUsedValue = exchangeOrgStats.CreatedMailboxes; mailboxesStats.QuotaValue = exchangeOrgStats.AllocatedMailboxes; if (exchangeOrgStats.AllocatedMailboxes != -1) mailboxesStats.QuotaAvailable = exchangeTenantStats.AllocatedMailboxes - exchangeTenantStats.CreatedMailboxes; if (exchangeTenantStats.AllocatedContacts == 0) this.rowContacts.Style.Add("display", "none"); else { contactsStats.QuotaUsedValue = exchangeOrgStats.CreatedContacts; contactsStats.QuotaValue = exchangeOrgStats.AllocatedContacts; if (exchangeOrgStats.AllocatedContacts != -1) contactsStats.QuotaAvailable = exchangeTenantStats.AllocatedContacts - exchangeTenantStats.CreatedContacts; } if (exchangeTenantStats.AllocatedDistributionLists == 0) this.rowLists.Style.Add("display", "none"); else { listsStats.QuotaUsedValue = exchangeOrgStats.CreatedDistributionLists; listsStats.QuotaValue = exchangeOrgStats.AllocatedDistributionLists; if (exchangeOrgStats.AllocatedDistributionLists != -1) listsStats.QuotaAvailable = exchangeTenantStats.AllocatedDistributionLists - exchangeTenantStats.CreatedDistributionLists; } if (!hideItems) { exchangeStorageStats.QuotaUsedValue = exchangeOrgStats.UsedDiskSpace; exchangeStorageStats.QuotaValue = exchangeOrgStats.AllocatedDiskSpace; if (exchangeOrgStats.AllocatedDiskSpace != -1) { exchangeStorageStats.QuotaAvailable = exchangeTenantStats.AllocatedDiskSpace - exchangeTenantStats.UsedDiskSpace; } } else this.rowExchangeStorage.Style.Add("display", "none"); if (exchangeTenantStats.AllocatedPublicFolders == 0) this.rowFolders.Style.Add("display", "none"); else { foldersStats.QuotaUsedValue = exchangeOrgStats.CreatedPublicFolders; foldersStats.QuotaValue = exchangeOrgStats.AllocatedPublicFolders; if (exchangeOrgStats.AllocatedPublicFolders != -1) foldersStats.QuotaAvailable = exchangeTenantStats.AllocatedPublicFolders - exchangeTenantStats.CreatedPublicFolders; } } private void BindOrgStats() { Organization org = ES.Services.Organizations.GetOrganization(PanelRequest.ItemID); PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); bool hideItems = false; UserInfo user = UsersHelper.GetUser(PanelSecurity.EffectiveUserId); if (user != null) { if ((user.Role == UserRole.User) & (Utils.CheckQouta(Quotas.EXCHANGE2007_ISCONSUMER, cntx))) hideItems = true; } lblOrganizationNameValue.Text = org.Name; lblOrganizationIDValue.Text = org.OrganizationId; lblCreatedValue.Text = org.CreatedDate.Date.ToShortDateString(); OrganizationStatistics orgStats = ES.Services.Organizations.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID); OrganizationStatistics tenantStats = ES.Services.Organizations.GetOrganizationStatistics(PanelRequest.ItemID); if (orgStats == null) return; if (!hideItems) { domainStats.QuotaUsedValue = orgStats.CreatedDomains; domainStats.QuotaValue = orgStats.AllocatedDomains; if (orgStats.AllocatedDomains != -1) domainStats.QuotaAvailable = tenantStats.AllocatedDomains - tenantStats.CreatedDomains; userStats.QuotaUsedValue = orgStats.CreatedUsers; userStats.QuotaValue = orgStats.AllocatedUsers; if (orgStats.AllocatedUsers != -1) userStats.QuotaAvailable = tenantStats.AllocatedUsers - tenantStats.CreatedUsers; lnkDomains.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "domains", "SpaceID=" + PanelSecurity.PackageId); lnkUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "users", "SpaceID=" + PanelSecurity.PackageId); } else organizationStatsPanel.Visible = false; if (cntx.Groups.ContainsKey(ResourceGroups.Exchange)) { exchangeStatsPanel.Visible = true; BindExchangeStats(hideItems); } else exchangeStatsPanel.Visible = false; //Show SharePoint statistics if (cntx.Groups.ContainsKey(ResourceGroups.HostedSharePoint)) { sharePointStatsPanel.Visible = true; lnkSiteCollections.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "sharepoint_sitecollections", "SpaceID=" + PanelSecurity.PackageId); siteCollectionsStats.QuotaUsedValue = orgStats.CreatedSharePointSiteCollections; siteCollectionsStats.QuotaValue = orgStats.AllocatedSharePointSiteCollections; if (orgStats.AllocatedSharePointSiteCollections != -1) siteCollectionsStats.QuotaAvailable = tenantStats.AllocatedSharePointSiteCollections - tenantStats.CreatedSharePointSiteCollections; } else sharePointStatsPanel.Visible = false; if (cntx.Groups.ContainsKey(ResourceGroups.OCS)) { ocsStatsPanel.Visible = true; BindOCSStats(orgStats, tenantStats); } else ocsStatsPanel.Visible = false; if (cntx.Groups.ContainsKey(ResourceGroups.BlackBerry)) { besStatsPanel.Visible = true; BindBESStats(orgStats, tenantStats); } else besStatsPanel.Visible = false; if (cntx.Groups.ContainsKey(ResourceGroups.Lync)) { lyncStatsPanel.Visible = true; BindLyncStats(orgStats, tenantStats); } else lyncStatsPanel.Visible = false; if (org.CrmOrganizationId != Guid.Empty) { crmStatsPanel.Visible = true; BindCRMStats(orgStats, tenantStats); } else crmStatsPanel.Visible = false; } private void BindCRMStats(OrganizationStatistics stats, OrganizationStatistics tenantStats) { lnkCRMUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "crmusers", "SpaceID=" + PanelSecurity.PackageId); crmUsersStats.QuotaUsedValue = stats.CreatedCRMUsers; crmUsersStats.QuotaValue = stats.AllocatedCRMUsers; if (stats.AllocatedCRMUsers != -1) crmUsersStats.QuotaAvailable = tenantStats.AllocatedCRMUsers - tenantStats.CreatedCRMUsers; } private void BindOCSStats(OrganizationStatistics stats, OrganizationStatistics tenantStats) { ocsUsersStats.QuotaValue = stats.AllocatedOCSUsers; ocsUsersStats.QuotaUsedValue = stats.CreatedOCSUsers; if (stats.AllocatedOCSUsers != -1) ocsUsersStats.QuotaAvailable = tenantStats.AllocatedOCSUsers - tenantStats.CreatedOCSUsers; lnkOCSUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "ocs_users", "SpaceID=" + PanelSecurity.PackageId.ToString()); } private void BindLyncStats(OrganizationStatistics stats, OrganizationStatistics tenantStats) { lyncUsersStats.QuotaValue = stats.AllocatedLyncUsers; lyncUsersStats.QuotaUsedValue = stats.CreatedLyncUsers; if (stats.AllocatedLyncUsers != -1) lyncUsersStats.QuotaAvailable = tenantStats.AllocatedLyncUsers - tenantStats.CreatedLyncUsers; lnkLyncUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "lync_users", "SpaceID=" + PanelSecurity.PackageId.ToString()); } private void BindBESStats(OrganizationStatistics stats, OrganizationStatistics tenantStats) { besUsersStats.QuotaValue = stats.AllocatedBlackBerryUsers; besUsersStats.QuotaUsedValue = stats.CreatedBlackBerryUsers; if (stats.AllocatedBlackBerryUsers != -1) besUsersStats.QuotaAvailable = tenantStats.AllocatedBlackBerryUsers - tenantStats.CreatedBlackBerryUsers; lnkBESUsers.NavigateUrl = EditUrl("ItemID", PanelRequest.ItemID.ToString(), "blackberry_users", "SpaceID=" + PanelSecurity.PackageId.ToString()); } } }