// 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 System.Web.UI.WebControls; using WebsitePanel.Providers.HostedSolution; using WebsitePanel.EnterpriseServer; namespace WebsitePanel.Portal.ExchangeServer { public partial class ExchangeMailboxes : WebsitePanelModuleBase { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindStats(); } PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId); if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER)) { if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1) { gvMailboxes.Columns[3].Visible = false; } } } private void BindStats() { // quota values OrganizationStatistics stats = ES.Services.ExchangeServer.GetOrganizationStatisticsByOrganization(PanelRequest.ItemID); OrganizationStatistics tenantStats = ES.Services.ExchangeServer.GetOrganizationStatistics(PanelRequest.ItemID); mailboxesQuota.QuotaUsedValue = stats.CreatedMailboxes; mailboxesQuota.QuotaValue = stats.AllocatedMailboxes; if (stats.AllocatedMailboxes != -1) mailboxesQuota.QuotaAvailable = tenantStats.AllocatedMailboxes - tenantStats.CreatedMailboxes; } protected void btnCreateMailbox_Click(object sender, EventArgs e) { Response.Redirect(EditUrl("ItemID", PanelRequest.ItemID.ToString(), "create_mailbox", "SpaceID=" + PanelSecurity.PackageId)); } public string GetMailboxEditUrl(string accountId) { return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "mailbox_settings", "AccountID=" + accountId, "ItemID=" + PanelRequest.ItemID); } protected void odsAccountsPaged_Selected(object sender, ObjectDataSourceStatusEventArgs e) { if (e.Exception != null) { messageBox.ShowErrorMessage("EXCHANGE_GET_MAILBOXES", e.Exception); e.ExceptionHandled = true; } } public string GetAccountImage(int accountTypeId) { ExchangeAccountType accountType = (ExchangeAccountType)accountTypeId; string imgName = "mailbox_16.gif"; if (accountType == ExchangeAccountType.Contact) imgName = "contact_16.gif"; else if (accountType == ExchangeAccountType.DistributionList) imgName = "dlist_16.gif"; else if (accountType == ExchangeAccountType.Room) imgName = "room_16.gif"; else if (accountType == ExchangeAccountType.Equipment) imgName = "equipment_16.gif"; return GetThemedImage("Exchange/" + imgName); } protected void gvMailboxes_RowCommand(object sender, GridViewCommandEventArgs e) { if (e.CommandName == "DeleteItem") { // delete mailbox int accountId = Utils.ParseInt(e.CommandArgument.ToString(), 0); try { int result = ES.Services.ExchangeServer.DisableMailbox(PanelRequest.ItemID, accountId); if (result < 0) { messageBox.ShowResultMessage(result); return; } // rebind grid gvMailboxes.DataBind(); // bind stats BindStats(); } catch (Exception ex) { messageBox.ShowErrorMessage("EXCHANGE_DELETE_MAILBOX", ex); } } } protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) { gvMailboxes.PageSize = Convert.ToInt16(ddlPageSize.SelectedValue); // rebind grid gvMailboxes.DataBind(); // bind stats BindStats(); } public string GetOrganizationUserEditUrl(string accountId) { return EditUrl("SpaceID", PanelSecurity.PackageId.ToString(), "edit_user", "AccountID=" + accountId, "ItemID=" + PanelRequest.ItemID, "Context=User"); } } }