protected override IConfigurable ConvertDataObjectToPresentationObject(IConfigurable dataObject)
        {
            if (dataObject == null)
            {
                return(null);
            }
            ADUser aduser = (ADUser)dataObject;

            if (null != aduser.MasterAccountSid)
            {
                aduser.LinkedMasterAccount = SecurityPrincipalIdParameter.GetFriendlyUserName(aduser.MasterAccountSid, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose));
                aduser.ResetChangeTracking();
            }
            MailboxPlan mailboxPlan = new MailboxPlan(aduser);

            mailboxPlan.Database = ADObjectIdResolutionHelper.ResolveDN(mailboxPlan.Database);
            return(mailboxPlan);
        }
        /// <summary>
        /// Gets a list of mailbox plans
        /// </summary>
        /// <returns></returns>
        public static List<MailboxPlan> GetMailboxPlans()
        {
            // Initialize new collection
            List<MailboxPlan> plans = new List<MailboxPlan>();

            // Initialize SQL
            SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);
            SqlCommand cmd = new SqlCommand("SELECT * FROM Plans_ExchangeMailbox ORDER BY CompanyCode DESC", sql);

            try
            {
                // Open Connection
                sql.Open();

                // Read data
                SqlDataReader r = cmd.ExecuteReader();
                while (r.Read())
                {
                    MailboxPlan tmp = new MailboxPlan();
                    tmp.PlanID = int.Parse(r["MailboxPlanID"].ToString());
                    tmp.DisplayName = r["MailboxPlanName"].ToString();
                    tmp.SizeInMB = int.Parse(r["MailboxSizeMB"].ToString());
                    tmp.MaxSendSizeInKB = int.Parse(r["MaxSendKB"].ToString());
                    tmp.MaxReceiveSizeInKB = int.Parse(r["MaxReceiveKB"].ToString());
                    tmp.MaxRecipients = int.Parse(r["MaxRecipients"].ToString());
                    tmp.POP3Enabled = bool.Parse(r["EnablePOP3"].ToString());
                    tmp.IMAPEnabled = bool.Parse(r["EnableIMAP"].ToString());
                    tmp.OWAEnabled= bool.Parse(r["EnableOWA"].ToString());
                    tmp.MAPIEnabled = bool.Parse(r["EnableMAPI"].ToString());
                    tmp.ActiveSyncEnabled = bool.Parse(r["EnableAS"].ToString());
                    tmp.ECPEnabled = bool.Parse(r["EnableECP"].ToString());
                    tmp.KeepDeletedItemsInDays = int.Parse(r["MaxKeepDeletedItems"].ToString());

                    if (r["MaxMailboxSizeMB"] != DBNull.Value)
                        tmp.MaximumSizeInMB = int.Parse(r["MaxMailboxSizeMB"].ToString());
                    else
                        tmp.MaximumSizeInMB = tmp.SizeInMB;

                    if (r["Price"] != DBNull.Value)
                        tmp.Price = r["Price"].ToString();
                    else
                        tmp.Price = "0.00";

                    if (r["AdditionalGBPrice"] != DBNull.Value)
                        tmp.AdditionalGBPrice = r["AdditionalGBPrice"].ToString();
                    else
                        tmp.AdditionalGBPrice = "0.00";

                    if (r["MailboxPlanDesc"] != DBNull.Value)
                        tmp.Description = r["MailboxPlanDesc"].ToString();

                    if (r["CompanyCode"] != DBNull.Value)
                        tmp.CompanyCode = r["CompanyCode"].ToString();

                    // Add to our list
                    plans.Add(tmp);
                }

                // Close and dispose
                r.Close();
                r.Dispose();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                cmd.Dispose();
                sql.Dispose();
            }

            // Return our collection
            return plans;
        }
        /// <summary>
        /// Gets a specific mailbox plan from the database
        /// </summary>
        /// <param name="planId"></param>
        /// <returns></returns>
        public static MailboxPlan GetMailboxPlan(int planId)
        {
            // Initialize new collection
            MailboxPlan plan = new MailboxPlan();

            // Initialize SQL
            SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);
            SqlCommand cmd = new SqlCommand("SELECT * FROM Plans_ExchangeMailbox WHERE MailboxPlanID=@MailboxPlanID", sql);

            try
            {
                // Add parameter
                cmd.Parameters.AddWithValue("@MailboxPlanID", planId);

                // Open Connection
                sql.Open();

                // Read data
                SqlDataReader r = cmd.ExecuteReader();
                while (r.Read())
                {
                    plan.PlanID = int.Parse(r["MailboxPlanID"].ToString());
                    plan.DisplayName = r["MailboxPlanName"].ToString();
                    plan.SizeInMB = int.Parse(r["MailboxSizeMB"].ToString());
                    plan.MaxSendSizeInKB = int.Parse(r["MaxSendKB"].ToString());
                    plan.MaxReceiveSizeInKB = int.Parse(r["MaxReceiveKB"].ToString());
                    plan.MaxRecipients = int.Parse(r["MaxRecipients"].ToString());
                    plan.POP3Enabled = bool.Parse(r["EnablePOP3"].ToString());
                    plan.IMAPEnabled = bool.Parse(r["EnableIMAP"].ToString());
                    plan.OWAEnabled = bool.Parse(r["EnableOWA"].ToString());
                    plan.MAPIEnabled = bool.Parse(r["EnableMAPI"].ToString());
                    plan.ActiveSyncEnabled = bool.Parse(r["EnableAS"].ToString());
                    plan.ECPEnabled = bool.Parse(r["EnableECP"].ToString());
                    plan.KeepDeletedItemsInDays = int.Parse(r["MaxKeepDeletedItems"].ToString());
                    
                    if (r["Cost"] != DBNull.Value)
                        plan.Cost = r["Cost"].ToString();
                    else
                        plan.Cost = "0.00";

                    if (r["Price"] != DBNull.Value)
                        plan.Price = r["Price"].ToString();
                    else
                        plan.Price = "0.00";

                    if (r["AdditionalGBPrice"] != DBNull.Value)
                        plan.AdditionalGBPrice = r["AdditionalGBPrice"].ToString();
                    else
                        plan.AdditionalGBPrice = "0.00";

                    if (r["MaxMailboxSizeMB"] != DBNull.Value)
                        plan.MaximumSizeInMB = int.Parse(r["MaxMailboxSizeMB"].ToString());
                    else
                        plan.MaximumSizeInMB = plan.SizeInMB;

                    if (r["MailboxPlanDesc"] != DBNull.Value)
                        plan.Description = r["MailboxPlanDesc"].ToString();

                    if (r["CompanyCode"] != DBNull.Value)
                        plan.CompanyCode = r["CompanyCode"].ToString();
                }

                // Close and dispose
                r.Close();
                r.Dispose();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                cmd.Dispose();
                sql.Dispose();
            }

            // Return our object
            return plan;
        }
 // Token: 0x06000A91 RID: 2705 RVA: 0x00022C69 File Offset: 0x00020E69
 public MailboxPlanIdParameter(MailboxPlan mailboxPlan) : base(mailboxPlan.Id)
 {
 }
        /// <summary>
        /// Used for the import feature
        /// </summary>
        /// <param name="user"></param>
        /// <param name="plan"></param>
        public static void UpdateUserMailbox(ADUser user, MailboxPlan plan)
        {
            SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);
            SqlCommand cmd = new SqlCommand(@"UPDATE Users SET 
                                                MailboxPlan=@MailboxPlan,
                                                AdditionalMB=@AdditionalMB
                                              WHERE 
                                                UserPrincipalName=@UserPrincipalName", sql);

            try
            {
                // Add our parameters
                cmd.Parameters.AddWithValue("@MailboxPlan", plan.PlanID);
                cmd.Parameters.AddWithValue("@AdditionalMB", plan.AdditionalMBAdded);
                cmd.Parameters.AddWithValue("@UserPrincipalName", user.UserPrincipalName);

                // Open connection 
                sql.Open();

                // Insert data
                cmd.ExecuteNonQuery();

                // Close
                sql.Close();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                cmd.Dispose();
                sql.Dispose();
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="user"></param>
        /// <param name="plan"></param>
        public static void UpdateUserMailbox(MailboxUser user, MailboxPlan plan)
        {
            SqlConnection sql = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);
            SqlCommand cmd = new SqlCommand(@"UPDATE Users SET 
                                                MailboxPlan=@MailboxPlan, 
                                                Email=@Email, 
                                                AdditionalMB=@AdditionalMB
                                              WHERE 
                                                UserPrincipalName=@UserPrincipalName", sql);

            try
            {
                // Check if the ActiveSync plan is not null
                if (!string.IsNullOrEmpty(user.ActiveSyncMailboxPolicy))
                {
                    cmd.CommandText = @"UPDATE Users SET 
                                                MailboxPlan=@MailboxPlan, 
                                                Email=@Email, 
                                                AdditionalMB=@AdditionalMB, 
                                                ActiveSyncPlan=(SELECT TOP 1 ASID FROM Plans_ExchangeActiveSync WHERE DisplayName=@ActiveSyncPlan)
                                              WHERE 
                                                UserPrincipalName=@UserPrincipalName";
                    cmd.Parameters.AddWithValue("@ActiveSyncPlan", user.ActiveSyncMailboxPolicy);
                }
                else
                    cmd.Parameters.AddWithValue("@ActiveSyncPlan", DBNull.Value);

                // Add our parameters
                cmd.Parameters.AddWithValue("@MailboxPlan", plan.PlanID);
                cmd.Parameters.AddWithValue("@Email", user.PrimarySmtpAddress);
                cmd.Parameters.AddWithValue("@AdditionalMB", plan.AdditionalMBAdded);
                cmd.Parameters.AddWithValue("@UserPrincipalName", user.UserPrincipalName);

                // Open connection 
                sql.Open();

                // Insert data
                cmd.ExecuteNonQuery();

                // Close
                sql.Close();
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                cmd.Dispose();
                sql.Dispose();
            }
        }