255 lines
No EOL
11 KiB
C#
255 lines
No EOL
11 KiB
C#
// 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;
|
|
using WebsitePanel.Providers.ResultObjects;
|
|
|
|
namespace WebsitePanel.Portal.ExchangeServer
|
|
{
|
|
public partial class ExchangeCreateMailbox : WebsitePanelModuleBase
|
|
{
|
|
private bool IsNewUser
|
|
{
|
|
get
|
|
{
|
|
return NewUserTable.Visible;
|
|
}
|
|
}
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
PackageContext cntx = PackagesHelper.GetCachedPackageContext(PanelSecurity.PackageId);
|
|
|
|
if (!IsPostBack)
|
|
{
|
|
password.SetPackagePolicy(PanelSecurity.PackageId, UserSettings.EXCHANGE_POLICY, "MailboxPasswordPolicy");
|
|
PasswordPolicyResult passwordPolicy = ES.Services.Organizations.GetPasswordPolicy(PanelRequest.ItemID);
|
|
if (passwordPolicy.IsSuccess)
|
|
{
|
|
password.MinimumLength = passwordPolicy.Value.MinLength;
|
|
if (passwordPolicy.Value.IsComplexityEnable)
|
|
{
|
|
password.MinimumNumbers = 1;
|
|
password.MinimumSymbols = 1;
|
|
password.MinimumUppercase = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
messageBox.ShowMessage(passwordPolicy, "EXCHANGE_CREATE_MAILBOX", "HostedOrganization");
|
|
return;
|
|
}
|
|
|
|
string instructions = ES.Services.ExchangeServer.GetMailboxSetupInstructions(PanelRequest.ItemID, PanelRequest.AccountID, false, false, false);
|
|
if (!string.IsNullOrEmpty(instructions))
|
|
{
|
|
chkSendInstructions.Checked = chkSendInstructions.Visible = sendInstructionEmail.Visible = true;
|
|
PackageInfo package = ES.Services.Packages.GetPackage(PanelSecurity.PackageId);
|
|
if (package != null)
|
|
{
|
|
UserInfo user = ES.Services.Users.GetUserById(package.UserId);
|
|
if (user != null)
|
|
sendInstructionEmail.Text = user.Email;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
chkSendInstructions.Checked = chkSendInstructions.Visible = sendInstructionEmail.Visible = false;
|
|
}
|
|
|
|
|
|
|
|
WebsitePanel.Providers.HostedSolution.ExchangeMailboxPlan[] plans = ES.Services.ExchangeServer.GetExchangeMailboxPlans(PanelRequest.ItemID, false);
|
|
|
|
if (plans.Length == 0)
|
|
btnCreate.Enabled = false;
|
|
|
|
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2007_ISCONSUMER))
|
|
{
|
|
if (cntx.Quotas[Quotas.EXCHANGE2007_ISCONSUMER].QuotaAllocatedValue != 1)
|
|
{
|
|
locSubscriberNumber.Visible = txtSubscriberNumber.Visible = valRequireSubscriberNumber.Enabled = false;
|
|
rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("RoomMailbox.Text"), "5"));
|
|
rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("EquipmentMailbox.Text"), "6"));
|
|
}
|
|
}
|
|
|
|
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2013_SHAREDMAILBOXES))
|
|
{
|
|
if (cntx.Quotas[Quotas.EXCHANGE2013_SHAREDMAILBOXES].QuotaAllocatedValue != 0)
|
|
rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("SharedMailbox.Text"), "10"));
|
|
|
|
}
|
|
|
|
if (cntx.Quotas.ContainsKey(Quotas.EXCHANGE2013_RESOURCEMAILBOXES))
|
|
{
|
|
if (cntx.Quotas[Quotas.EXCHANGE2013_RESOURCEMAILBOXES].QuotaAllocatedValue != 0)
|
|
rbMailboxType.Items.Add(new System.Web.UI.WebControls.ListItem(GetLocalizedString("ResourceMailbox.Text"), "11"));
|
|
|
|
}
|
|
|
|
rowRetentionPolicy.Visible = Utils.CheckQouta(Quotas.EXCHANGE2013_ALLOWRETENTIONPOLICY, cntx);
|
|
}
|
|
|
|
rowArchiving.Visible = false;
|
|
|
|
int planId = -1;
|
|
int.TryParse(mailboxPlanSelector.MailboxPlanId, out planId);
|
|
ExchangeMailboxPlan plan = ES.Services.ExchangeServer.GetExchangeMailboxPlan(PanelRequest.ItemID, planId);
|
|
if (plan!=null)
|
|
rowArchiving.Visible = plan.EnableArchiving;
|
|
|
|
}
|
|
|
|
protected void btnCreate_Click(object sender, EventArgs e)
|
|
{
|
|
CreateMailbox();
|
|
}
|
|
|
|
private void CreateMailbox()
|
|
{
|
|
if (!Page.IsValid)
|
|
return;
|
|
|
|
try
|
|
{
|
|
string name = IsNewUser ? email.AccountName : userSelector.GetPrimaryEmailAddress().Split('@')[0];
|
|
string displayName = IsNewUser ? txtDisplayName.Text.Trim() : userSelector.GetDisplayName();
|
|
string accountName = IsNewUser ? string.Empty : userSelector.GetAccount();
|
|
|
|
bool enableArchive = chkEnableArchiving.Checked;
|
|
|
|
ExchangeAccountType type = IsNewUser
|
|
? (ExchangeAccountType)Utils.ParseInt(rbMailboxType.SelectedValue, 1)
|
|
: ExchangeAccountType.Mailbox;
|
|
|
|
string domain = IsNewUser ? email.DomainName : userSelector.GetPrimaryEmailAddress().Split('@')[1];
|
|
|
|
int accountId = IsNewUser ? 0 : userSelector.GetAccountId();
|
|
|
|
string subscriberNumber = IsNewUser ? txtSubscriberNumber.Text.Trim() : userSelector.GetSubscriberNumber();
|
|
|
|
accountId = ES.Services.ExchangeServer.CreateMailbox(PanelRequest.ItemID, accountId, type,
|
|
accountName,
|
|
displayName,
|
|
name,
|
|
domain,
|
|
password.Password,
|
|
chkSendInstructions.Checked,
|
|
sendInstructionEmail.Text,
|
|
Convert.ToInt32(mailboxPlanSelector.MailboxPlanId),
|
|
Convert.ToInt32(archivingMailboxPlanSelector.MailboxPlanId),
|
|
subscriberNumber, enableArchive);
|
|
|
|
|
|
if (accountId < 0)
|
|
{
|
|
messageBox.ShowResultMessage(accountId);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if ((!string.IsNullOrEmpty(txtFirstName.Text)) | (!string.IsNullOrEmpty(txtLastName.Text)) | (!string.IsNullOrEmpty(txtInitials.Text)))
|
|
{
|
|
SetUserAttributes(accountId);
|
|
}
|
|
}
|
|
|
|
Response.Redirect(EditUrl("AccountID", accountId.ToString(), "mailbox_settings",
|
|
"SpaceID=" + PanelSecurity.PackageId.ToString(),
|
|
"ItemID=" + PanelRequest.ItemID.ToString()));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
messageBox.ShowErrorMessage("EXCHANGE_CREATE_MAILBOX", ex);
|
|
}
|
|
}
|
|
|
|
private void SetUserAttributes(int accountId)
|
|
{
|
|
OrganizationUser user = ES.Services.Organizations.GetUserGeneralSettings(PanelRequest.ItemID, accountId);
|
|
|
|
ES.Services.Organizations.SetUserGeneralSettings(
|
|
PanelRequest.ItemID, accountId,
|
|
txtDisplayName.Text,
|
|
null,
|
|
false,
|
|
user.Disabled,
|
|
user.Locked,
|
|
|
|
txtFirstName.Text,
|
|
txtInitials.Text,
|
|
txtLastName.Text,
|
|
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
null,
|
|
user.ExternalEmail,
|
|
txtSubscriberNumber.Text,
|
|
0,
|
|
false);
|
|
}
|
|
|
|
|
|
|
|
protected void rbtnUserExistingUser_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
ExistingUserTable.Visible = true;
|
|
NewUserTable.Visible = false;
|
|
}
|
|
|
|
protected void rbtnCreateNewMailbox_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
NewUserTable.Visible = true;
|
|
ExistingUserTable.Visible = false;
|
|
|
|
}
|
|
|
|
protected void mailboxPlanSelector_Change(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
}
|
|
} |