private bool validQuantityPeruser(PackageActivityConfig newData, PackageActivityConfig oldData)
        {
            var result = false;

            if (oldData == null || oldData.ActivityId == Guid.Empty)
            {
                result = true;
            }
            else
            {
                if (newData.StartTime < DateTime.Now)
                {
                    if (newData.ItemQuantityPerUser >= oldData.ItemQuantityPerUser)
                    {
                        result = true;
                    }
                }
                else
                {
                    result = true;
                }
            }

            return(result);
        }
Example #2
0
        public PackageActivityConfig SelectPackageActivityConfig(Guid activityId)
        {
            PackageActivityConfig result = new PackageActivityConfig();

            try
            {
                dbReadScopeManager.Execute(conn =>
                {
                    result = DALPackageActivity.SelectPackageActivity(conn, activityId, "", null, null, 1, 99).FirstOrDefault();
                    if (result != null && result.ActivityId != Guid.Empty)
                    {
                        result.ShopConfig    = DALPackageActivity.SelectPackageActivityShopConfig(conn, activityId);
                        result.RoundConfig   = DALPackageActivity.SelectPackageActivitySceneConfig(conn, activityId);
                        result.ProductConfig = DALPackageActivity.SelectPackageActivityProductConfig(conn, activityId);
                        result.VehicleConfig = DALPackageActivity.SelectPackageActivityVehicleConfig(conn, activityId);
                        result.PriceConfig   = DALPackageActivity.SelectPackageActivityPriceConfig(conn, activityId);
                    }
                });
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }

            return(result);
        }
 private PackageActivityConfig ConvertOther(PackageActivityConfig model)
 {
     model.MaxSaleQuantity = model.RoundConfig.Select(x => x.LimitedQuantity).Sum();
     model.StartTime       = model.RoundConfig.Select(x => x.StartTime).Min();
     model.EndTime         = model.RoundConfig.Select(x => x.EndTime).Max();
     if (model.ShopConfig != null && model.ShopConfig.Any())
     {
         model.ShopConfig = model.ShopConfig.Distinct(new ListDistinctForShopConfig()).ToList();
     }
     if (model.ProductConfig != null && model.ProductConfig.Any())
     {
         model.ProductConfig = model.ProductConfig.Distinct(new ListDistinctForProductConfig()).ToList();
     }
     return(model);
 }
        private PackageActivityViewModel ConvertPackageActivity(PackageActivityConfig data)
        {
            PackageActivityViewModel result = new PackageActivityViewModel();

            if (data != null)
            {
                result = new PackageActivityViewModel
                {
                    ActivityId            = data.ActivityId,
                    ActivityName          = data.ActivityName,
                    StartTime             = data.StartTime,
                    EndTime               = data.EndTime,
                    MaxSaleQuantity       = data.MaxSaleQuantity,
                    PackageTypes          = data.PackageTypes,
                    IsChargeInstallFee    = data.IsChargeInstallFee,
                    IsUsePromotion        = data.IsUsePromotion,
                    InstallOrPayType      = data.InstallOrPayType,
                    ItemQuantityPerUser   = data.ItemQuantityPerUser,
                    PromotionPrice        = data.PromotionPrice,
                    TipTextColor          = data.TipTextColor,
                    ButtonBackgroundColor = data.ButtonBackgroundColor,
                    ButtonTextColor       = data.ButtonTextColor,
                    BackgroundImg         = data.BackgroundImg,
                    OngoingButtonText     = data.OngoingButtonText
                };
                result.ShopConfig           = ConvertPackageActivityShopConfig(data.ShopConfig);
                result.RoundConfig          = ConvertPackageActivityRoundConfig(data.RoundConfig);
                result.ProductConfigDetails = ConvertPackageActivityProductConfig(data.ProductConfig);
                result.VehicleConfig        = data.VehicleConfig.Select(x => new VehicleConfig
                {
                    Vehicle   = x.Vehicle,
                    AvgPrice  = x.AvgPrice,
                    Brand     = x.Brand,
                    VehicleID = x.VehicleID,
                }).ToList();
                var array = Enum.GetNames(typeof(TierType));
                result.IsTieredPricing = data.PriceConfig != null && data.PriceConfig.Any();
                result.PriceConfig     = array.ToDictionary(tier => tier, tier =>
                {
                    var priceItem = data.PriceConfig?.FirstOrDefault(x => x.TierType == tier);
                    return((priceItem != null && priceItem.Price != null && priceItem.Price > 0) ?
                           priceItem.Price.Value.ToString("f2") : "/");
                });
            }
            return(result);
        }
Example #5
0
        public static bool UpdatePackageActivityConfig(SqlConnection conn, PackageActivityConfig data, string user)
        {
            const string sql = @"UPDATE  BaoYang..PackageActivityConfig
            SET     ActivityName = @ActivityName ,
                    StartTime = @StartTime ,
                    EndTime = @EndTime ,
                    MaxSaleQuantity = @MaxSaleQuantity ,
                    PackageTypes = @PackageTypes ,
                    IsChargeInstallFee = @IsChargeInstallFee ,
                    IsUsePromotion = @IsUsePromotion ,
                    InstallOrPayType = @InstallOrPayType ,
                    ItemQuantityPerUser = @ItemQuantityPerUser ,
                    PromotionPrice = @PromotionPrice ,
                    TipTextColor = @TipTextColor ,
                    ButtonBackgroundColor = @ButtonBackgroundColor ,
                    ButtonTextColor = @ButtonTextColor ,
                    BackgroundImg = @BackgroundImg ,
                    OngoingButtonText = @OngoingButtonText ,
                    LastUpdateDateTime = GETDATE() ,
                    UpdateUser = @UpdateUser
            WHERE   ActivityId = @ActivityId; ";

            return(conn.Execute(sql, new
            {
                ActivityId = data.ActivityId,
                ActivityName = data.ActivityName,
                StartTime = data.StartTime,
                EndTime = data.EndTime,
                MaxSaleQuantity = data.MaxSaleQuantity,
                PackageTypes = data.PackageTypes,
                IsChargeInstallFee = data.IsChargeInstallFee,
                IsUsePromotion = data.IsUsePromotion,
                InstallOrPayType = data.InstallOrPayType,
                ItemQuantityPerUser = data.ItemQuantityPerUser,
                PromotionPrice = data.PromotionPrice.ToString("f2"),
                TipTextColor = data.TipTextColor,
                ButtonBackgroundColor = data.ButtonBackgroundColor,
                ButtonTextColor = data.ButtonTextColor,
                BackgroundImg = data.BackgroundImg,
                OngoingButtonText = data.OngoingButtonText,
                UpdateUser = user,
            }, commandType: CommandType.Text) > 0);
        }
        public JsonResult UpsertPaceageActivityConfig(string jsonData)
        {
            PackageActivityManager manager = new PackageActivityManager();
            var    result  = false;
            string msg     = "数据格式有误";
            var    flagTwo = true;
            PackageActivityConfig oldData = null;

            if (!string.IsNullOrEmpty(jsonData))
            {
                var model = JsonConvert.DeserializeObject <PackageActivityConfig>(jsonData);
                if (model != null)
                {
                    if (model.IsTieredPricing)
                    {
                        var tierList = Enum.GetNames(typeof(TierType));
                        model.PromotionPrice = 0;
                        model.PriceConfig    = model.PriceConfig?.Join(
                            tierList, x => x.TierType, y => y, (x, y) => new PackageActivityPriceConfig
                        {
                            TierType = y,
                            Price    = x.Price,
                        }).GroupBy(x => x.TierType)
                                               .Select(g => g.FirstOrDefault()).ToList() ?? new List <PackageActivityPriceConfig>();
                        if (model.PriceConfig.Count != tierList.Length ||
                            model.PriceConfig.Select(x => x.TierType).Distinct().Count() != tierList.Length)
                        {
                            return(Json(new { status = false, msg = "分层定价填写有误" }));
                        }
                    }
                    else
                    {
                        model.PriceConfig = new List <PackageActivityPriceConfig>();
                    }


                    if (model.ActivityId != Guid.Empty)
                    {
                        oldData = manager.SelectPackageActivityConfig(model.ActivityId);
                    }
                    var flag = ValidRoundConfig(model.RoundConfig, oldData);
                    if (flag.Item1)
                    {
                        model = ConvertOther(model);
                        if (model.PackageTypes.Contains("xby") && model.PackageTypes.Contains("dby"))
                        {
                            msg = "小保养服务和大保养服务不能同时勾选";
                        }
                        else
                        {
                            flagTwo = validQuantityPeruser(model, oldData);
                            if (flagTwo)
                            {
                                result = manager.UpsertPaceageActivityConfig(model, HttpContext.User.Identity.Name);
                            }
                            else
                            {
                                msg = "活动进行中时,每人每个项目限购数量只能调整的更大,而不能调小";
                            }
                        }
                    }
                    else
                    {
                        msg = flag.Item2;
                    }
                }
            }

            return(Json(new { status = result, msg = msg }, JsonRequestBehavior.AllowGet));
        }
        private Tuple <bool, string> ValidRoundConfig(List <PackageActivityRoundConfig> data, PackageActivityConfig oldData)
        {
            var      result    = true;
            string   msg       = "";
            DateTime startTime = DateTime.MinValue;

            if (data != null && data.Any())
            {
                foreach (var item in data)
                {
                    if (item.EndTime < item.StartTime)
                    {
                        result = false;
                    }
                    else
                    {
                        if (startTime != DateTime.MinValue && startTime != item.StartTime)
                        {
                            result = false;
                        }
                    }
                    if (!result)
                    {
                        msg = "场次配置时间验证未通过";
                        break;
                    }
                    startTime = item.EndTime.AddSeconds(+1);
                }
                if (result && oldData != null && oldData.ActivityId != Guid.Empty)
                {
                    foreach (var item in oldData.RoundConfig)
                    {
                        var newData = data.Where(x => String.Equals(x.PKID, item.PKID) && x.PKID > 0).FirstOrDefault();
                        if (newData != null && newData.PKID > 0)
                        {
                            if (newData.StartTime < DateTime.Now)
                            {
                                if (newData.LimitedQuantity < item.LimitedQuantity)
                                {
                                    result = false;
                                }
                            }
                        }
                        if (!result)
                        {
                            msg = "正在进行中的场次限购数量不允许调低";
                            break;
                        }
                    }
                }
            }

            return(Tuple.Create(result, msg));
        }
Example #8
0
        public bool UpsertPaceageActivityConfig(PackageActivityConfig data, string user)
        {
            var    result = false;
            string msg    = "";

            try
            {
                dbScopeManager.CreateTransaction(conn =>
                {
                    var flag = false;
                    if (data.ActivityId != Guid.Empty)
                    {
                        msg  = "更新活动配置";
                        flag = DALPackageActivity.UpdatePackageActivityConfig(conn, data, user);
                    }
                    else
                    {
                        msg             = "添加活动配置";
                        data.ActivityId = Guid.NewGuid();
                        flag            = DALPackageActivity.InsertPackageActivityConfig(conn, data, user);
                    }

                    if (flag)
                    {
                        DALPackageActivity.DeletePackageActivitySceneConfig(conn, data.ActivityId);
                        DALPackageActivity.DeletePackageActivityShopConfig(conn, data.ActivityId);
                        DALPackageActivity.DeletePackageActivityProductConfig(conn, data.ActivityId);
                        DALPackageActivity.DeletePackageActivityVehicleConfig(conn, data.ActivityId);
                        DALPackageActivity.DeletePackageActivityPriceConfig(conn, data.ActivityId);
                        if (data.RoundConfig != null && data.RoundConfig.Any())
                        {
                            foreach (var item in data.RoundConfig)
                            {
                                item.ActivityId = data.ActivityId;
                                DALPackageActivity.InsertPackageActivitySceneConfig(conn, item);
                            }
                        }
                        if (data.ProductConfig != null && data.ProductConfig.Any())
                        {
                            foreach (var item in data.ProductConfig)
                            {
                                item.ActivityId = data.ActivityId;
                                DALPackageActivity.InsertPackageActivityProductConfig(conn, item);
                            }
                        }
                        if (data.ShopConfig != null && data.ShopConfig.Any())
                        {
                            foreach (var item in data.ShopConfig)
                            {
                                item.ActivityId = data.ActivityId;
                                DALPackageActivity.InsertPackageActivityShopConfig(conn, item);
                            }
                        }
                        if (data.VehicleConfig != null && data.VehicleConfig.Any())
                        {
                            var vehicleIds = data.VehicleConfig.Select(x => x.VehicleID).Distinct();
                            foreach (var vehicleId in vehicleIds)
                            {
                                DALPackageActivity.InsertPackageActivityVehicleConfig(conn, data.ActivityId, vehicleId);
                            }
                        }
                        if (data.PriceConfig != null && data.PriceConfig.Any())
                        {
                            var priceConfigs = data.PriceConfig;
                            foreach (var priceConfig in priceConfigs)
                            {
                                DALPackageActivity.InsertPackageActivityPriceConfig(conn, data.ActivityId, priceConfig);
                            }
                        }
                        result = true;
                    }
                });
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }

            if (result)
            {
                data.ProductConfig = new List <PackageActivityProductConfig>();
                data.RoundConfig   = new List <PackageActivityRoundConfig>();
                data.VehicleConfig = new List <PackageActivityVehicleConfig>();
                RecordActivityTypeLog(data.ActivityId, data.StartTime, data.EndTime);
                InsertLog("UpsertPaceageActivityConfig", data.ActivityId.ToString(), JsonConvert.SerializeObject(data), msg, user, LogType);
                Thread.Sleep(2000);
                RefreshPackageBaoYangCache(data.ActivityId);
            }

            return(result);
        }
Example #9
0
        public static bool InsertPackageActivityConfig(SqlConnection conn, PackageActivityConfig data, string user)
        {
            const string sql = @"INSERT  INTO BaoYang..PackageActivityConfig
                    ( ActivityId ,
                      ActivityName ,
                      StartTime ,
                      EndTime ,
                      MaxSaleQuantity ,
                      PackageTypes ,
                      IsChargeInstallFee ,
                      IsUsePromotion ,
                      InstallOrPayType ,
                      ItemQuantityPerUser ,
                      PromotionPrice ,
                      TipTextColor ,
                      ButtonBackgroundColor ,
                      ButtonTextColor ,
                      BackgroundImg ,
                      OngoingButtonText ,
                      CreateDateTime ,
                      CreateUser ,
                      LastUpdateDateTime 
                    )
            VALUES  ( @ActivityId ,
                      @ActivityName ,
                      @StartTime ,
                      @EndTime ,
                      @MaxSaleQuantity ,
                      @PackageTypes ,
                      @IsChargeInstallFee ,
                      @IsUsePromotion ,
                      @InstallOrPayType ,
                      @ItemQuantityPerUser ,
                      @PromotionPrice ,
                      @TipTextColor ,
                      @ButtonBackgroundColor ,
                      @ButtonTextColor ,
                      @BackgroundImg ,
                      @OngoingButtonText ,
                      GETDATE() ,
                      @CreateUser ,
                      GETDATE()
                    );";

            return(conn.Execute(sql, new
            {
                ActivityId = data.ActivityId,
                ActivityName = data.ActivityName,
                StartTime = data.StartTime,
                EndTime = data.EndTime,
                MaxSaleQuantity = data.MaxSaleQuantity,
                PackageTypes = data.PackageTypes,
                IsChargeInstallFee = data.IsChargeInstallFee,
                IsUsePromotion = data.IsUsePromotion,
                InstallOrPayType = data.InstallOrPayType,
                ItemQuantityPerUser = data.ItemQuantityPerUser,
                PromotionPrice = data.PromotionPrice.ToString("f2"),
                TipTextColor = data.TipTextColor,
                ButtonBackgroundColor = data.ButtonBackgroundColor,
                ButtonTextColor = data.ButtonTextColor,
                BackgroundImg = data.BackgroundImg,
                OngoingButtonText = data.OngoingButtonText,
                CreateUser = user,
            }, commandType: CommandType.Text) > 0);
        }