public static void UpdateCondition(PromotionCondition condition,
                                    int promotionId,
                                    int conditionId,
                                    int conditionTypeId,
                                    string conditionType,
                                    int conditionOnId,
                                    string conditionOn,
                                    int conditionCodeId,
                                    string conditionCode,
                                    decimal minBuyQty,
                                    decimal maxBuyQty,
                                    decimal qty,
                                    int discountTypeId,
                                    string discountType,
                                    decimal discountValue,
                                    int statusId,
                                    string status)
 {
     condition.PromotionId      = promotionId;
     condition.ConditionId      = conditionId;
     condition.ConditionTypeId  = conditionTypeId;
     condition.ConditionTypeVal = conditionType;
     condition.ConditionOnId    = conditionOnId;
     condition.ConditionOnVal   = conditionOn;
     condition.ConditionCodeId  = conditionCodeId;
     condition.ConditionCodeVal = conditionCode;
     condition.MinBuyQty        = minBuyQty;
     condition.MaxBuyQty        = maxBuyQty;
     condition.Qty             = qty;
     condition.DiscountTypeId  = discountTypeId;
     condition.DiscountTypeVal = discountType;
     condition.DiscountValue   = discountValue;
     condition.StatusId        = statusId;
     condition.StatusVal       = status;
 }
        public Promotion Search(string xmlDoc, string spName, ref string errorMessage)
        {
            Promotion       promotion = new Promotion();
            DBParameterList dbParam;

            using (DataTaskManager dtManager = new DataTaskManager())
            {
                dbParam = new DBParameterList();
                dbParam.Add(new DBParameter(Common.PARAM_DATA, xmlDoc, DbType.String));
                dbParam.Add(new DBParameter(Common.PARAM_OUTPUT, errorMessage, DbType.String, ParameterDirection.Output, Common.PARAM_OUTPUT_LENGTH));

                DataSet ds = dtManager.ExecuteDataSet(spName, dbParam);
                errorMessage = dbParam[Common.PARAM_OUTPUT].Value.ToString();

                if (ds != null)
                {
                    //Add promotion Master
                    List <PromotionCondition> conditions = new List <PromotionCondition>();

                    //Add list of condition to the promotion object
                    for (int i = 0; i < ds.Tables[1].Rows.Count; i++)
                    {
                        PromotionCondition condition = new PromotionCondition(
                            Convert.ToInt32(ds.Tables[1].Rows[i]["PromotionId"]),
                            Convert.ToInt32(ds.Tables[1].Rows[i]["ConditionId"]),
                            Convert.ToInt32(ds.Tables[1].Rows[i]["ConditionTypeId"]),
                            Convert.ToString(ds.Tables[1].Rows[i]["ConditionType"]),
                            Convert.ToInt32(ds.Tables[1].Rows[i]["ConditionOnId"]),
                            Convert.ToString(ds.Tables[1].Rows[i]["ConditionOn"]),
                            Convert.ToInt32(ds.Tables[1].Rows[i]["ConditionCodeId"]),
                            Validators.CheckForDBNull(ds.Tables[1].Rows[i]["ConditionCode"], string.Empty),
                            Convert.ToInt32(ds.Tables[1].Rows[i]["MinBuyQty"]),
                            Convert.ToInt32(ds.Tables[1].Rows[i]["MaxBuyQty"]),
                            Validators.CheckForDBNull(ds.Tables[1].Rows[i]["Qty"], (decimal)0),
                            Convert.ToInt32(ds.Tables[1].Rows[i]["DiscountTypeId"]),
                            Validators.CheckForDBNull(Convert.ToString(ds.Tables[1].Rows[i]["DiscountType"]), String.Empty),
                            Convert.ToDecimal(ds.Tables[1].Rows[i]["DiscountValue"]),
                            Convert.ToInt32(ds.Tables[1].Rows[i]["StatusId"]),
                            Convert.ToString(ds.Tables[1].Rows[i]["Status"])
                            );


                        DataRow[] drTiers = ds.Tables[2].Select("ConditionId = " + Convert.ToString(ds.Tables[1].Rows[i]["ConditionId"]));
                        //Add list of tiers to the condition
                        List <PromotionTier> tiers = new List <PromotionTier>();
                        PromotionTier        tier;
                        for (int j = 0; j < drTiers.Length; j++)
                        {
                            tier = new PromotionTier(
                                Convert.ToInt32(drTiers[j]["PromotionId"]),
                                Convert.ToInt32(drTiers[j]["TierId"]),
                                Convert.ToInt32(drTiers[j]["ConditionId"]),
                                Common.INT_DBNULL,
                                Validators.CheckForDBNull(drTiers[j]["ConditionOnId"], Common.INT_DBNULL),
                                Validators.CheckForDBNull(drTiers[j]["ConditionOn"], String.Empty),
                                Validators.CheckForDBNull(drTiers[j]["ConditionCodeId"], Common.INT_DBNULL),
                                Validators.CheckForDBNull(drTiers[j]["ConditionCode"], string.Empty),
                                Convert.ToInt32(drTiers[j]["BuyQtyFrom"]),
                                Convert.ToInt32(drTiers[j]["BuyQtyTo"]),
                                Convert.ToInt32(drTiers[j]["Qty"]),
                                Convert.ToInt32(drTiers[j]["DiscountTypeId"]),
                                Convert.ToString(drTiers[j]["DiscountTypeVal"]),
                                //Convert.ToInt32(drTiers[j]["DiscountValue"]),
                                Convert.ToDecimal(drTiers[j]["DiscountValue"]),
                                Convert.ToInt32(drTiers[j]["StatusId"]),
                                Convert.ToString(drTiers[j]["Status"]));
                            condition.Tiers.Add(tier);
                        }
                        conditions.Add(condition);
                    }

                    List <PromotionLocation> locations = new List <PromotionLocation>();
                    for (int i = 0; i < ds.Tables[3].Rows.Count; i++)
                    {
                        PromotionLocation location = new PromotionLocation(
                            Convert.ToInt32(ds.Tables[3].Rows[i]["LocationId"]),
                            Convert.ToInt32(ds.Tables[3].Rows[i]["PromotionId"]),
                            Convert.ToString(ds.Tables[3].Rows[i]["LocationVal"]),
                            Convert.ToString(ds.Tables[3].Rows[i]["LocationCode"]),
                            Convert.ToString(ds.Tables[3].Rows[i]["LocationType"]),
                            Convert.ToInt32(ds.Tables[3].Rows[i]["LineNumber"]),
                            Convert.ToInt32(ds.Tables[3].Rows[i]["StatusId"]),
                            Convert.ToString(ds.Tables[3].Rows[i]["Status"]));
                        locations.Add(location);
                    }
                    promotion = new Promotion(
                        Convert.ToInt32(ds.Tables[0].Rows[0]["PromotionId"]),
                        Convert.ToString(ds.Tables[0].Rows[0]["PromotionName"]),
                        Convert.ToInt32(ds.Tables[0].Rows[0]["PromotionCategoryId"]),
                        Convert.ToString(ds.Tables[0].Rows[0]["PromotionCategory"]),
                        Convert.ToString(ds.Tables[0].Rows[0]["PromotionCode"]),
                        Convert.ToDateTime(ds.Tables[0].Rows[0]["StartDate"]),
                        Convert.ToDateTime(ds.Tables[0].Rows[0]["EndDate"]),                                //check for null
                        Convert.ToDateTime(ds.Tables[0].Rows[0]["DurationStart"]),                          //check for null
                        Convert.ToDateTime(ds.Tables[0].Rows[0]["DurationEnd"]),                            //check for null
                        Convert.ToInt32(ds.Tables[0].Rows[0]["DiscountTypeId"]),                            //check for null
                        Validators.CheckForDBNull(ds.Tables[0].Rows[0]["DiscountType"], String.Empty),      //check for null
                        Convert.ToDecimal(ds.Tables[0].Rows[0]["DiscountValue"]),                           //check for null
                        Convert.ToDecimal(ds.Tables[0].Rows[0]["MaxOrderQty"]),
                        Convert.ToInt32(ds.Tables[0].Rows[0]["StatusId"]),
                        Convert.ToString(ds.Tables[0].Rows[0]["Status"]),
                        Convert.ToInt32(ds.Tables[0].Rows[0]["CreatedBy"]),
                        Convert.ToInt32(ds.Tables[0].Rows[0]["ModifiedBy"]),
                        Convert.ToDateTime(ds.Tables[0].Rows[0]["CreatedDate"]),
                        Convert.ToDateTime(ds.Tables[0].Rows[0]["ModifiedDate"]),                                 //check for null
                        Validators.CheckForDBNull(ds.Tables[0].Rows[0]["ApplicabilityId"], Common.INT_DBNULL),    //check for null
                        Validators.CheckForDBNull(ds.Tables[0].Rows[0]["Applicability"], string.Empty),           //check for null
                        Validators.CheckForDBNull(ds.Tables[0].Rows[0]["BuyConditionTypeId"], Common.INT_DBNULL), //check for null
                        Validators.CheckForDBNull(ds.Tables[0].Rows[0]["BuyConditionType"], string.Empty),
                        Validators.CheckForDBNull(ds.Tables[0].Rows[0]["GetConditionTypeId"], Common.INT_DBNULL),
                        Validators.CheckForDBNull(ds.Tables[0].Rows[0]["GetConditionType"], string.Empty),
                        Convert.ToInt32(ds.Tables[0].Rows[0]["RepeatFactor"]),
                        conditions, locations, null,
                        #region Shopping Cart
                        Convert.ToBoolean(ds.Tables[0].Rows[0]["POS"]),
                        Convert.ToBoolean(ds.Tables[0].Rows[0]["Web"]),
                        Convert.ToString(ds.Tables[0].Rows[0]["WebImage"])
                        #endregion

                        );
                }
            }
            return(promotion);
        }