/// <summary>
        /// 添加满就送促销活动.
        /// </summary>
        /// <param name="promoteMeetMoney">
        /// Promote_MeetMoney的对象实例.
        /// </param>
        /// <returns>
        /// 满就送促销活动的编号.
        /// </returns>
        public int Add(Promote_MeetMoney promoteMeetMoney)
        {
            SqlTransaction transaction = null;

            try
            {
                var meetMoneyID = this.promoteMeetMoneyDA.Insert(promoteMeetMoney, out transaction); // 添加满额优惠主信息

                promoteMeetMoney.MeetMoneyScope.MeetMoneyID = meetMoneyID;
                this.promoteMeetMoneyScopeDA.Insert(promoteMeetMoney.MeetMoneyScope, transaction);  // 添加满额优惠活动范围

                // 添加满额优惠规则
                foreach (var promoteMeetMoneyRule in promoteMeetMoney.MeetMoneyRules)
                {
                    promoteMeetMoneyRule.PromoteMeetMoneyID = meetMoneyID;
                    this.promoteMeetMoneyRuleDA.Insert(promoteMeetMoneyRule, transaction);
                }

                transaction.Commit();
                return meetMoneyID;
            }
            catch (Exception exception)
            {
                if (transaction != null)
                {
                    transaction.Rollback();
                }

                throw new Exception(exception.Message, exception);
            }
        }
        /// <summary>
        /// 添加满就送促销活动.
        /// </summary>
        /// <param name="promoteMeetMoney">
        /// Promote_MeetMoney的对象实例.
        /// </param>
        /// <param name="transaction">
        /// 数据库事务.
        /// </param>
        /// <returns>
        /// 满就送促销活动的编号.
        /// </returns>
        public int Insert(Promote_MeetMoney promoteMeetMoney, out SqlTransaction transaction)
        {
            if (promoteMeetMoney == null)
            {
                throw new ArgumentNullException("promoteMeetMoney");
            }

            this.SqlServer.BeginTransaction();
            transaction = this.SqlServer.Transaction;

            var parameters = new List<SqlParameter>
                                 {
                                     this.SqlServer.CreateSqlParameter(
                                         "EmployeeID",
                                         SqlDbType.Int,
                                         promoteMeetMoney.EmployeeID,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "Name",
                                         SqlDbType.NVarChar,
                                         promoteMeetMoney.Name,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "StartTime",
                                         SqlDbType.DateTime,
                                         promoteMeetMoney.StartTime,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "EndTime",
                                         SqlDbType.DateTime,
                                         promoteMeetMoney.EndTime,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "IsNewUser",
                                         SqlDbType.Bit,
                                         promoteMeetMoney.IsNewUser,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "IsMobileValidate",
                                         SqlDbType.Bit,
                                         promoteMeetMoney.IsMobileValidate,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "IsUseCoupon",
                                         SqlDbType.Bit,
                                         promoteMeetMoney.IsUseCoupon,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "Status",
                                         SqlDbType.Int,
                                         promoteMeetMoney.Status,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "Description",
                                         SqlDbType.NVarChar,
                                         promoteMeetMoney.Description,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "ReferenceID",
                                         SqlDbType.Int,
                                         promoteMeetMoney.ID,
                                         ParameterDirection.Output)
                                 };

            this.SqlServer.ExecuteNonQuery(CommandType.StoredProcedure, "sp_Promote_MeetMoney_Insert", parameters, transaction);
            return (int)parameters.Find(parameter => parameter.ParameterName == "ReferenceID").Value;
        }
        /// <summary>
        /// 修改满就送促销活动.
        /// </summary>
        /// <param name="promoteMeetMoney">
        /// Promote_MeetMoney的对象实例.
        /// </param>
        /// <param name="removeRuleIdArry">
        /// The remove Rule Id Items.
        /// </param>
        public void Modify(Promote_MeetMoney promoteMeetMoney, string[] removeRuleIdArry)
        {
            SqlTransaction transaction = null;

            try
            {
                // 修改促销活动主信息
                this.promoteMeetMoneyDA.Update(promoteMeetMoney, out transaction);

                // 修改促销活动活动商品信息
                this.promoteMeetMoneyScopeDA.Update(promoteMeetMoney.MeetMoneyScope, transaction);

                foreach (var promoteMeetMoneyRule in promoteMeetMoney.MeetMoneyRules)
                {
                    if (promoteMeetMoneyRule.ID > 0)
                    {
                        this.promoteMeetMoneyRuleDA.Update(promoteMeetMoneyRule, transaction);
                    }
                    else
                    {
                        promoteMeetMoneyRule.PromoteMeetMoneyID = promoteMeetMoney.ID;
                        this.promoteMeetMoneyRuleDA.Insert(promoteMeetMoneyRule, transaction);
                    } // 有该规则就修改,没有就添加
                }

                if (removeRuleIdArry != null)
                {
                    foreach (var ruleId in removeRuleIdArry)
                    {
                        if (!string.IsNullOrEmpty(ruleId))
                        {
                            this.promoteMeetMoneyRuleDA.Delete(Convert.ToInt32(ruleId), transaction);
                        }
                    } // 删除无用的活动规则
                }

                transaction.Commit();
            }
            catch (Exception exception)
            {
                if (transaction != null)
                {
                    transaction.Rollback();
                }

                throw new Exception(exception.Message, exception);
            }
        }
        /// <summary>
        /// 修改满就送促销活动.
        /// </summary>
        /// <param name="promoteMeetMoney">
        /// Promote_MeetMoney的对象实例.
        /// </param>
        /// <param name="transaction">
        /// 数据库事务.
        /// </param>
        public void Update(Promote_MeetMoney promoteMeetMoney, out SqlTransaction transaction)
        {
            if (promoteMeetMoney == null)
            {
                throw new ArgumentNullException("promoteMeetMoney");
            }

            this.SqlServer.BeginTransaction(IsolationLevel.ReadCommitted);
            transaction = this.SqlServer.Transaction;
            var parameters = new List<SqlParameter>
                                 {
                                     this.SqlServer.CreateSqlParameter(
                                         "ID",
                                         SqlDbType.Int,
                                         promoteMeetMoney.ID,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "EmployeeID",
                                         SqlDbType.Int,
                                         promoteMeetMoney.EmployeeID,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "Name",
                                         SqlDbType.NVarChar,
                                         promoteMeetMoney.Name,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "IsNewUser",
                                         SqlDbType.Bit,
                                         promoteMeetMoney.IsNewUser,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "IsMobileValidate",
                                         SqlDbType.Bit,
                                         promoteMeetMoney.IsMobileValidate,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "IsUseCoupon",
                                         SqlDbType.Bit,
                                         promoteMeetMoney.IsUseCoupon,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "StartTime",
                                         SqlDbType.DateTime,
                                         promoteMeetMoney.StartTime,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "EndTime",
                                         SqlDbType.DateTime,
                                         promoteMeetMoney.EndTime,
                                         ParameterDirection.Input),
                                     this.SqlServer.CreateSqlParameter(
                                         "Description",
                                         SqlDbType.NVarChar,
                                         promoteMeetMoney.Description,
                                         ParameterDirection.Input)
                                 };

            this.SqlServer.ExecuteNonQuery(CommandType.StoredProcedure, "sp_Promote_MeetMoney_Update", parameters, transaction);
        }