Example #1
0
        /// <summary>
        ///  发起抽奖
        /// </summary>
        public ActionResult LaunchPrize(Guid id)
        {
            PrizeOrderView model = new PrizeOrderView()
            {
                PrizeId       = id,
                MinLuckyCount = 1
            };

            ViewBag.RevealTypeList = model.RevealType.ToDescriptionSelectList();
            return(View(model));
        }
Example #2
0
        public ActionResult LaunchPrize(PrizeOrderView model)
        {
            ViewBag.IsPostBack = true;
            int rtype = int.Parse(Request.Form["RevealType"]);

            ViewBag.RevealType = rtype;

            if (this.PubishingEnableTimes == 0)
            {
                ViewBag.Message = "您还可发起抽奖0次,请续费后再执行此功能。";
                return(View(model));
            }

            if (ModelState.IsValid)
            {
                //验证码验证通过
            }
            else
            {
                //验证码验证失败
                //ModelState.AddModelError("", e.Message);
                ViewBag.Message = "验证码输入不正确";
                return(View(model));
            }

            bool            shouldMinus = this.PubishingEnableTimes < 1000000 ? true : false;
            OperationResult result      = PrizeOrderSiteContract.Add(model, shouldMinus);
            string          msg         = result.Message ?? result.ResultType.ToDescription();

            if (result.ResultType == OperationResultType.Success)
            {
                if (shouldMinus)
                {
                    if (!this.UpdatePubishingEnableTimes())
                    {
                        //记日志(更新可发布奖品次数失败)
                    }
                }
                TempData["Message"] = string.Format("发起抽奖成功。<br /><a href='/Vip/PrizeOrderDetail/{0}'>查看<a>奖单", model.PrizeId);
                return(RedirectToAction("InfoPage"));
            }
            //ModelState.AddModelError("", msg);
            ViewBag.Message = msg;
            return(View(model));
        }
Example #3
0
        /// <summary>
        ///     更新奖品
        /// </summary>
        /// <param name="member">奖品信息</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Update(PrizeOrderView pvmodel)
        {
            PublicHelper.CheckArgument(pvmodel, "pvmodel");
            try
            {
                PrizeOrder dbmodel = PrizeOrderContract.PrizeOrders.SingleOrDefault(m => m.Id.Equals(pvmodel.Id));
                if (dbmodel == null)
                {
                    return(new OperationResult(OperationResultType.Error, string.Format("不存在要更新的Id为{0}的奖单", pvmodel.Id)));
                }

                //dbmodel.Name = pvmodel.Name;
                //dbmodel.Description = pvmodel.Description;
                //if (savePhoto) {
                //    dbmodel.Photo = pvmodel.Photo;
                //}
                //dbmodel.UpdateDate = DateTime.Now;
                return(PrizeOrderContract.Update(dbmodel));
            }
            catch (Exception ex)
            {
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
Example #4
0
        /// <summary>
        ///     添加奖品
        /// </summary>
        /// <param name="prizebetting">奖品信息</param>
        /// <param name="shouldMinus">是否该对用户的可发起抽奖次数减</param>
        /// <returns>业务操作结果</returns>
        public OperationResult Add(PrizeOrderView povmodel, bool shouldMinus = false)
        {
            PublicHelper.CheckArgument(povmodel, "povmodel");
            int?sortorder = PrizeOrderContract.PrizeOrders.Max(po => po.SortOrder);

            PrizeOrder pmodel = new PrizeOrder
            {
                RevealTypeNum = povmodel.RevealTypeNum,
                RevealState   = Component.Tools.RevealState.UnDrawn,
                Prize         = PrizeContract.Prizes.SingleOrDefault(m => m.Id.Equals(povmodel.PrizeId)),
                Extend        = new PrizeOrderExtend()
                {
                    Id = povmodel.Id
                },
                SortOrder = (sortorder ?? 0) + 1
            };

            switch (povmodel.RevealType)
            {
            case RevealType.Timing:
                pmodel.Extend.LaunchTime    = povmodel.LaunchTime;
                pmodel.Extend.MinLuckyCount = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount    = povmodel.LuckyCount;
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Quota:
                pmodel.Extend.PoolCount     = povmodel.PoolCount;
                pmodel.Extend.MinLuckyCount = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount    = povmodel.LuckyCount;
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Answer:
                pmodel.Extend.PrizeAsking.Question      = povmodel.Question;
                pmodel.Extend.PrizeAsking.AnswerOptions = povmodel.AnswerOptions;
                pmodel.Extend.PrizeAsking.Answer        = povmodel.Answer;
                pmodel.Extend.MinLuckyCount             = povmodel.MinLuckyCount;
                pmodel.Extend.LuckyCount         = povmodel.LuckyCount;
                pmodel.Extend.RevealTypeOfAnswer = povmodel.RevealTypeOfAnswer;

                if (pmodel.Extend.RevealTypeOfAnswer == RevealTypeOfAnswer.Auto)
                {
                    pmodel.Extend.AnswerRevealConditionTypeNum = (int)povmodel.AnswerRevealConditionType;
                    if (povmodel.AnswerRevealConditionType == AnswerRevealConditionType.Timing)
                    {
                        pmodel.Extend.LaunchTime = povmodel.LaunchTime;
                    }
                    else if (povmodel.AnswerRevealConditionType == AnswerRevealConditionType.Quota)
                    {
                        pmodel.Extend.PoolCount = povmodel.PoolCount;
                    }
                }
                //pmodel.Extend.LuckyPercent = povmodel.LuckyPercent;
                break;

            case RevealType.Scene:
                break;
            }
            try
            {
                return(PrizeOrderContract.Add(pmodel, shouldMinus));
            }
            catch (Exception ex)
            {
                return(new OperationResult(OperationResultType.Error, ex.Message));
            }
        }
Example #5
0
        public static PrizeOrderView ToSiteViewModel(this PrizeOrder po)
        {
            if (po == null)
            {
                return(null);
            }
            var rentity = new PrizeOrderView()
            {
                Id             = po.Id,
                RevealType     = po.RevealType,
                RevealTypeNum  = po.RevealTypeNum,
                RevealState    = po.RevealState,
                RevealStateNum = po.RevealStateNum,
                ScopeType      = po.Extend.ScopeType,
                ScopeTypeNum   = po.Extend.ScopeTypeNum,
                //ScopeProvince = po.Extend.ScopeCity,
                ScopeAreaCity                = po.Extend.ScopeCity,
                AnswerRevealConditionType    = po.Extend.AnswerRevealConditionType,
                AnswerRevealConditionTypeNum = po.Extend.AnswerRevealConditionTypeNum,
                //Remarks = po.Extend,
                PrizeId       = po.Prize.Id,
                PrizeView     = po.Prize.ToSiteViewModel(),
                SortOrder     = po.SortOrder ?? 0,
                LaunchTime    = po.Extend.LaunchTime,
                RevealDate    = po.RevealDate,
                MinLuckyCount = po.Extend.MinLuckyCount,
                LuckyPercent  = po.Extend.LuckyPercent,
                PoolCount     = po.Extend.PoolCount,
                LuckyCount    = po.Extend.LuckyCount,
                Question      = po.Extend.PrizeAsking.Question,
                AnswerOptions = po.Extend.PrizeAsking.AnswerOptions,
                Answer        = po.Extend.PrizeAsking.Answer
                                //LuckyStaffsOfScenceString = po.Extend.
                                //StaffsOfScenceString = po.SceneStaffs.AsEnumerable().ToArray().,
                                //Is2Top = po.Extend,
                                //UpdateDate = po.,
            };

            if (po.RevealType == RevealType.Scene)
            {
                // 参与者数目
                if (po.SceneStaffs != null)
                {
                    rentity.BettingCount = po.SceneStaffs.Count;
                }
                // 已开奖的,取出中奖者
                if (po.RevealState == RevealState.Drawn)
                {
                    if (po.SceneStaffs != null && po.SceneStaffs.Count > 0)
                    {
                        rentity.LuckyStaffsOfScenceString = string.Join("|", po.SceneStaffs.Where(ss => ss.IsLucky).Select(ss => ss.Value).ToArray());
                    }
                }
            }
            else
            {
                // 投注者数目
                if (po.PrizeBettings != null)
                {
                    rentity.BettingCount = po.PrizeBettings.Where(pb => !pb.IsDeleted).Count();
                }
                // 白名单数目
                if (po.WhiteLists != null)
                {
                    rentity.BettingCount = rentity.BettingCount + po.WhiteLists.Where(wl => !wl.IsDeleted).Count();
                }
            }

            return(rentity);
        }