コード例 #1
0
        public static Coupon Load(int?sysNo)
        {
            Coupon      info = null;
            DataCommand cmd  = DataCommandManager.GetDataCommand("LoadCoupon");

            cmd.SetParameterValue("@SysNo", sysNo);
            DataSet ds = cmd.ExecuteDataSet();

            if (ds != null && ds.Tables.Count > 0)
            {
                DataTable dtMaster = ds.Tables[0];
                if (dtMaster.Rows.Count > 0)
                {
                    info = DataMapper.GetEntity <Coupon>(dtMaster.Rows[0]);
                    info.DiscountRules = new List <CouponDiscountRule>();
                    info.BindRule      = new CouponBindRule();
                    info.SaleRule      = new CouponSaleRule();

                    info.SaleRule.ProductRange          = new ProductRelation();
                    info.SaleRule.ProductRange.Products = new List <RelProduct>();

                    info.SaleRule.CustomerRange           = new CustomerRelation();
                    info.SaleRule.CustomerRange.Customers = new List <RelCustomer>();

                    info.BindRule.ProductRange          = new ProductRelation();
                    info.BindRule.ProductRange.Products = new List <RelProduct>();

                    DataTable dtDiscountRules = ds.Tables[1];
                    if (dtDiscountRules.Rows.Count > 0)
                    {
                        #region Coupon_DiscountRules的数据绑定
                        foreach (DataRow dr in dtDiscountRules.Rows)
                        {
                            CouponDiscountRule rule = new CouponDiscountRule();
                            if (dr["RulesType"].ToString().Trim().ToUpper() == "P")
                            {
                                rule.RulesType = CouponDiscountRuleType.Percentage;
                            }
                            else if (dr["RulesType"].ToString().Trim().ToUpper() == "D")
                            {
                                rule.RulesType = CouponDiscountRuleType.Discount;
                            }
                            rule.Value  = decimal.Parse(dr["Value"].ToString().Trim());
                            rule.Amount = decimal.Parse(dr["Amount"].ToString().Trim());
                            info.DiscountRules.Add(rule);
                        }
                        #endregion
                    }


                    DataTable dtBindRule = ds.Tables[2];
                    if (dtBindRule.Rows.Count > 0)
                    {
                        #region Coupon_BindRules的数据绑定
                        DataRow dr = dtBindRule.Rows[0];
                        if (!string.IsNullOrEmpty(dr["BindCondition"].ToString()))
                        {
                            object bindConditionType;
                            EnumCodeMapper.TryGetEnum(dr["BindCondition"], typeof(CouponsBindConditionType), out bindConditionType);
                            info.BindRule.BindCondition = (CouponsBindConditionType)bindConditionType;
                        }

                        if (!string.IsNullOrEmpty(dr["ValidPeriod"].ToString()))
                        {
                            object validPeriod;
                            EnumCodeMapper.TryGetEnum(dr["ValidPeriod"], typeof(CouponValidPeriodType), out validPeriod);
                            info.BindRule.ValidPeriod = (CouponValidPeriodType)validPeriod;
                        }

                        if (!string.IsNullOrEmpty(dr["BindBeginDate"].ToString()))
                        {
                            info.BindRule.BindBeginDate = DateTime.Parse(dr["BindBeginDate"].ToString().Trim());
                        }
                        if (!string.IsNullOrEmpty(dr["BindEndDate"].ToString()))
                        {
                            info.BindRule.BindEndDate = DateTime.Parse(dr["BindEndDate"].ToString().Trim());
                        }

                        if (!string.IsNullOrEmpty(dr["AmountLimit"].ToString()))
                        {
                            info.BindRule.AmountLimit = decimal.Parse(dr["AmountLimit"].ToString().Trim());
                        }

                        if (!string.IsNullOrEmpty(dr["LimitType"].ToString()))
                        {
                            if (dr["LimitType"].ToString().Trim().ToLower() == "A".ToLower())
                            {
                                info.BindRule.ProductRange.ProductRangeType = ProductRangeType.All;
                            }
                            else
                            {
                                info.BindRule.ProductRange.ProductRangeType = ProductRangeType.Limit;
                            }
                        }
                        else
                        {
                            info.BindRule.ProductRange.ProductRangeType = ProductRangeType.All;
                        }
                        #endregion
                    }

                    DataTable dtBindRuleItems = ds.Tables[3];
                    if (dtBindRuleItems.Rows.Count > 0)
                    {
                        #region Coupon_BindRuleItems的数据绑定
                        foreach (DataRow dr in dtBindRuleItems.Rows)
                        {
                            if (dr["RuleItemType"].ToString().Trim().ToUpper() == "I")
                            {
                                RelProduct product = new RelProduct();
                                if (!string.IsNullOrEmpty(dr["ItemDataSysNo"].ToString()))
                                {
                                    product.ProductSysNo = int.Parse(dr["ItemDataSysNo"].ToString());
                                }

                                if (!string.IsNullOrEmpty(dr["ProductID"].ToString()))
                                {
                                    product.ProductID = dr["ProductID"].ToString();
                                }

                                if (!string.IsNullOrEmpty(dr["ProductName"].ToString()))
                                {
                                    product.ProductName = dr["ProductName"].ToString();
                                }

                                if (!string.IsNullOrEmpty(dr["RelationType"].ToString()))
                                {
                                    if (dr["RelationType"].ToString().Trim() == "Y")
                                    {
                                        info.BindRule.ProductRange.RelationType = RelationType.Y;
                                    }
                                    else
                                    {
                                        info.BindRule.ProductRange.RelationType = RelationType.N;
                                    }
                                }
                                if (!string.IsNullOrEmpty(dr["ProductStatus"].ToString()))
                                {
                                    ProductStatus productStatus;
                                    if (Enum.TryParse <ProductStatus>(dr["ProductStatus"].ToString(), out productStatus))
                                    {
                                        product.ProductStatus = EnumHelper.GetDescription(productStatus);
                                    }
                                }
                                info.BindRule.ProductRange.Products.Add(product);
                            }
                        }
                        #endregion
                    }

                    DataTable dtSaleRules_Ex = ds.Tables[4];
                    if (dtSaleRules_Ex.Rows.Count > 0)
                    {
                        #region Coupon_SaleRules_Ex的数据绑定
                        DataRow dr = dtSaleRules_Ex.Rows[0];

                        if (!string.IsNullOrEmpty(dr["OrderAmountLimit"].ToString()))
                        {
                            info.SaleRule.OrderAmountLimit = decimal.Parse(dr["OrderAmountLimit"].ToString().Trim());
                            if (info.SaleRule.OrderAmountLimit == 0m)
                            {
                                info.SaleRule.OrderAmountLimit = null;
                            }
                        }

                        if (!string.IsNullOrEmpty(dr["OrderMaxDiscount"].ToString()))
                        {
                            info.SaleRule.OrderMaxDiscount = decimal.Parse(dr["OrderMaxDiscount"].ToString().Trim());
                        }

                        if (!string.IsNullOrEmpty(dr["CustomerMaxFrequency"].ToString()))
                        {
                            info.SaleRule.CustomerMaxFrequency = int.Parse(dr["CustomerMaxFrequency"].ToString());
                        }
                        if (!string.IsNullOrEmpty(dr["MaxFrequency"].ToString()))
                        {
                            info.SaleRule.MaxFrequency = int.Parse(dr["MaxFrequency"].ToString());
                        }

                        #endregion
                    }
                    DataTable dtSaleRules = ds.Tables[5];
                    if (dtSaleRules.Rows.Count > 0)
                    {
                        if (!string.IsNullOrEmpty(dtMaster.Rows[0]["ProductRangeType"].ToString()))
                        {
                            object productRangeType;
                            EnumCodeMapper.TryGetEnum(dtMaster.Rows[0]["ProductRangeType"], typeof(ProductRangeType), out productRangeType);
                            info.SaleRule.ProductRange.ProductRangeType = (ProductRangeType)productRangeType;
                        }

                        #region Coupon_SaleRules的数据绑定
                        foreach (DataRow dr in dtSaleRules.Rows)
                        {
                            if (dr["Type"].ToString().Trim().ToUpper() == "I")
                            {
                                RelProduct product = new RelProduct();
                                if (!string.IsNullOrEmpty(dr["ProductSysNo"].ToString()))
                                {
                                    product.ProductSysNo = int.Parse(dr["ProductSysNo"].ToString());
                                }

                                if (!string.IsNullOrEmpty(dr["ProductID"].ToString()))
                                {
                                    product.ProductID = dr["ProductID"].ToString();
                                }

                                if (!string.IsNullOrEmpty(dr["ProductName"].ToString()))
                                {
                                    product.ProductName = dr["ProductName"].ToString();
                                }

                                if (!string.IsNullOrEmpty(dr["RelationType"].ToString()))
                                {
                                    if (dr["RelationType"].ToString().Trim() == "Y")
                                    {
                                        info.SaleRule.ProductRange.RelationType = RelationType.Y;
                                    }
                                    else
                                    {
                                        info.SaleRule.ProductRange.RelationType = RelationType.N;
                                    }
                                }
                                if (!string.IsNullOrEmpty(dr["ProductStatus"].ToString()))
                                {
                                    ProductStatus productStatus;
                                    if (Enum.TryParse <ProductStatus>(dr["ProductStatus"].ToString(), out productStatus))
                                    {
                                        product.ProductStatus = EnumHelper.GetDescription(productStatus);
                                    }
                                }
                                info.SaleRule.ProductRange.Products.Add(product);
                            }
                        }

                        #endregion
                    }



                    DataTable dtSaleRulesCustomer = ds.Tables[6];
                    if (dtSaleRulesCustomer.Rows.Count > 0)
                    {
                        #region Coupon_SaleRulesCustomer的数据绑定
                        foreach (DataRow dr in dtSaleRulesCustomer.Rows)
                        {
                            RelCustomer customer = new RelCustomer();
                            //cs.Customer = new SampleObject(int.Parse(dr["CustomerSysNo"].ToString()));
                            customer.CustomerSysNo = int.Parse(dr["CustomerSysNo"].ToString());

                            customer.CustomerID   = string.IsNullOrEmpty(dr["CustomerID"].ToString()) ? null : dr["CustomerID"].ToString().Trim();
                            customer.CustomerName = string.IsNullOrEmpty(dr["CustomerName"].ToString()) ? null : dr["CustomerName"].ToString().Trim();
                            info.SaleRule.CustomerRange.Customers.Add(customer);
                            info.SaleRule.CustomerRange.CustomerRangeType = CouponCustomerRangeType.Limit;
                        }
                        #endregion
                    }
                    else
                    {
                        info.SaleRule.CustomerRange.CustomerRangeType = CouponCustomerRangeType.All;
                    }

                    if (info != null &&
                        info.BindRule != null &&
                        info.BindRule.BindCondition == CouponsBindConditionType.None)
                    {
                        List <CouponCode> codes = LoadCouponCodes(info.SysNo);
                        if (codes != null && codes.Count > 0)
                        {
                            info.CouponCodes = codes;
                            if (codes[0].CodeType == CouponCodeType.Common)
                            {
                                info.GeneralCode = codes[0];
                            }
                            else
                            {
                                string BatchCode = "";
                                for (int i = 0; i < codes.Count; i++)
                                {
                                    if (i == codes.Count - 1)
                                    {
                                        BatchCode += codes[i].Code;
                                    }
                                    else
                                    {
                                        BatchCode += codes[i].Code + "\n";
                                    }
                                }
                                info.ThrowInCodes = BatchCode;
                            }
                        }
                    }

                    if (info != null && (info.Status == CouponStatus.Run ||
                                         info.Status == CouponStatus.Finish ||
                                         info.Status == CouponStatus.Stoped))
                    {
                        info.CouponCodes = LoadCouponCodes(info.SysNo);
                    }
                }
            }
            return(info);
        }
コード例 #2
0
        private static void AddCoupon_BindRulesProduct(int couponsSysNo, string username, string relation, RelProduct product)
        {
            DataCommand cmd = DataCommandManager.GetDataCommand("AddCoupon_BindRulesProductCondition");

            cmd.SetParameterValue("@CouponSysNo", couponsSysNo);
            cmd.SetParameterValue("@RuleItemType", "I");
            cmd.SetParameterValue("@ItemDataSysNo", product.ProductSysNo);
            cmd.SetParameterValue("@RelationType", relation);
            cmd.SetParameterValue("@InUser", username);
            cmd.ExecuteNonQuery();
        }