/// <remarks/>
 public void UpdateExchangeRetentionPolicyTagAsync(int itemId, ExchangeRetentionPolicyTag tag, object userState) {
     if ((this.UpdateExchangeRetentionPolicyTagOperationCompleted == null)) {
         this.UpdateExchangeRetentionPolicyTagOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateExchangeRetentionPolicyTagOperationCompleted);
     }
     this.InvokeAsync("UpdateExchangeRetentionPolicyTag", new object[] {
                 itemId,
                 tag}, this.UpdateExchangeRetentionPolicyTagOperationCompleted, userState);
 }
        public static ResultObject UpdateExchangeRetentionPolicyTag(int itemID, ExchangeRetentionPolicyTag tag)
        {
            // place log record
            ResultObject res = TaskManager.StartResultTask<ResultObject>("EXCHANGE", "UPDATE_EXCHANGE_RETENTIONPOLICYTAG", itemID);

            Organization org;
            try
            {
                org = GetOrganization(itemID);
                if (org == null)
                    throw new ApplicationException("Organization is null");
            }
            catch (Exception ex)
            {
                TaskManager.CompleteResultTask(res, ErrorCodes.CANNOT_GET_ORGANIZATION_BY_ITEM_ID, ex);
                return res;
            }

            try
            {
                // Log Extension
                LogExtension.WriteObject(tag);
                
                // load package context
                PackageContext cntx = PackageController.GetPackageContext(org.PackageId);

                if (org.PackageId > 1)
                {
                    // quotas
                }

                int exchangeServiceId = GetExchangeServiceID(org.PackageId);

                if (exchangeServiceId > 0)
                {
                    ExchangeServer exchange = GetExchangeServer(exchangeServiceId, org.ServiceId);

                    ResultObject resTag = exchange.SetRetentionPolicyTag(tag.WSPUniqueName, (ExchangeRetentionPolicyTagType)tag.TagType, tag.AgeLimitForRetention, (ExchangeRetentionPolicyTagAction)tag.RetentionAction);
                    res.ErrorCodes.AddRange(resTag.ErrorCodes);
                    res.IsSuccess = res.IsSuccess && resTag.IsSuccess;
                }

                if (res.IsSuccess)
                    DataProvider.UpdateExchangeRetentionPolicyTag(tag.TagID, tag.ItemID, tag.TagName, tag.TagType, tag.AgeLimitForRetention, tag.RetentionAction);
            }
            catch (Exception ex)
            {
                TaskManager.WriteError(ex);
                TaskManager.CompleteResultTask(res);
                return res;
            }

            TaskManager.CompleteResultTask();
            return res;
        }
 /// <remarks/>
 public System.IAsyncResult BeginUpdateExchangeRetentionPolicyTag(int itemId, ExchangeRetentionPolicyTag tag, System.AsyncCallback callback, object asyncState) {
     return this.BeginInvoke("UpdateExchangeRetentionPolicyTag", new object[] {
                 itemId,
                 tag}, callback, asyncState);
 }
 /// <remarks/>
 public void UpdateExchangeRetentionPolicyTagAsync(int itemId, ExchangeRetentionPolicyTag tag) {
     this.UpdateExchangeRetentionPolicyTagAsync(itemId, tag, null);
 }
 public ResultObject UpdateExchangeRetentionPolicyTag(int itemId, ExchangeRetentionPolicyTag tag) {
     object[] results = this.Invoke("UpdateExchangeRetentionPolicyTag", new object[] {
                 itemId,
                 tag});
     return ((ResultObject)(results[0]));
 }
 public IntResult AddExchangeRetentionPolicyTag(int itemId, ExchangeRetentionPolicyTag tag) {
     object[] results = this.Invoke("AddExchangeRetentionPolicyTag", new object[] {
                 itemId,
                 tag});
     return ((IntResult)(results[0]));
 }
 public ResultObject UpdateExchangeRetentionPolicyTag(int itemId, ExchangeRetentionPolicyTag tag)
 {
     return ExchangeServerController.UpdateExchangeRetentionPolicyTag(itemId, tag);
 }
 public IntResult AddExchangeRetentionPolicyTag(int itemId, ExchangeRetentionPolicyTag tag)
 {
     return ExchangeServerController.AddExchangeRetentionPolicyTag(itemId, tag);
 }
        public void btnAddPolicy_Click(object sender, EventArgs e)
        {
            Page.Validate("CreatePolicy");

            if (!Page.IsValid)
                return;

            ExchangeRetentionPolicyTag tag = new ExchangeRetentionPolicyTag();
            tag.TagName = txtPolicy.Text;
            tag.TagType = Convert.ToInt32(ddTagType.SelectedValue);
            tag.AgeLimitForRetention = ageLimitForRetention.QuotaValue;
            tag.RetentionAction = Convert.ToInt32(ddRetentionAction.SelectedValue);

            Providers.HostedSolution.Organization[] orgs = null;
            if (PanelSecurity.SelectedUserId != 1)
            {
                PackageInfo[] Packages = ES.Services.Packages.GetPackages(PanelSecurity.SelectedUserId);

                if ((Packages != null) & (Packages.GetLength(0) > 0))
                {
                    orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(Packages[0].PackageId, false);
                }
            }
            else
            {
                orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, false);
            }


            if ((orgs != null) & (orgs.GetLength(0) > 0))
            {
                IntResult result = ES.Services.ExchangeServer.AddExchangeRetentionPolicyTag(orgs[0].Id, tag);

                if (!result.IsSuccess)
                {
                    messageBox.ShowMessage(result, "EXCHANGE_UPDATEPLANS", null);
                    return;
                }
                else
                {
                    messageBox.ShowSuccessMessage("EXCHANGE_UPDATEPLANS");
                }
            }

            BindRetentionPolicy();

        }