Exemplo n.º 1
0
        /// <summary>
        /// 즉석당첨 응모
        /// </summary>
        /// <param name="entry"></param>
        /// <param name="isChecked"></param>
        /// <returns></returns>
        public DisneyStarWars2018InstantLottery CreateInstantLottery(DisneyStarWars2018InstantLottery entry, bool isChecked)
        {
            using (var tx = new TransactionScope()) {
                var now = time.Now;

                var isWin = repo.Any(x => x.PrizeType != DisneyStarWars2018InstantLotteryPrizeType.Loser && x.IpAddress == entry.IpAddress);
                //네이버 세션 과정 생략 변수
                //isChecked = true;
                //한번이라도 당첨된사람 제거 변수
                //isWin = false;

                entry.PrizeType = DisneyStarWars2018InstantLotteryPrizeType.Loser;
                if (isChecked && !isWin)
                {
                    var prizes = settingRepo.Filter(x => x.Date == now.Date && x.StartTime <= now.Hour && x.TotalCount > x.WinnerCount && x.Rate > 0.0f).ToList();
                    entry.PrizeType = prizeSelector.SelectPrize(prizes, DisneyStarWars2018InstantLotteryPrizeType.Loser, now);

                    if (entry.PrizeType != DisneyStarWars2018InstantLotteryPrizeType.Loser)
                    {
                        var prize = settingRepo.SingleOrDefault(x => x.Date == now.Date && x.PrizeType == entry.PrizeType);
                        if (prize == null)
                        {
                            entry.PrizeType = DisneyStarWars2018InstantLotteryPrizeType.Loser;
                        }
                        else
                        {
                            prize.WinnerCount = repo.Filter(x => x.CreateDate >= now.Date && x.PrizeType == entry.PrizeType).Count() + 1;
                            settingRepo.Update(prize);
                        }
                    }
                }

                entry.CreateDate = now;
                var user = repo.Add(entry);
                repo.Save();

                tx.Complete();

                return(user);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// [즉석당첨 이벤트] 생성
        /// </summary>
        /// <param name="entry"></param>
        /// <param name="isOK"></param>
        /// <returns></returns>
        public Christmas2015Win CreateChristmas2015Win(Entities.Christmas2015.Christmas2015Win entry, bool isOK)
        {
            if (isOK)
            {
                // 기당첨 여부 확인 (IP)
                var winCount = context.Christmas2015Wins.Where(e => e.IpAddress.Equals(entry.IpAddress) && e.PrizeType != Christmas2015EnumConst.Christmas2015WinPrize.Loser).Count();

                // 중복당첨이 아닐시에만 즉석당첨 경품추첨
                if (winCount <= 0)
                {
                    var prizes = context.Christmas2015WinPrizeSettings.Where(e => e.Date == Now.Date && e.StartTime <= Now.Hour && e.TotalCount > e.WinnerCount && e.Rate > 0.0f).Select(e => new Christmas2015EnumConst.Christmas2015WinPrizeSetting {
                        Date        = e.Date,
                        StartTime   = e.StartTime,
                        PrizeType   = e.PrizeType,
                        Rate        = e.Rate,
                        TotalCount  = e.TotalCount,
                        WinnerCount = e.WinnerCount
                    }).ToList();

                    entry.PrizeType = prizeSelector.SelectPrize(prizes, Christmas2015EnumConst.Christmas2015WinPrize.Loser, Now);
                    if (entry.PrizeType != Christmas2015EnumConst.Christmas2015WinPrize.Loser)
                    {
                        //즉석당첨 setting 해당 경품 갯수 +1
                        var updateModel = context.Christmas2015WinPrizeSettings.Where(e => e.Date == Now.Date && e.PrizeType == entry.PrizeType).SingleOrDefault();
                        if (updateModel != null)
                        {
                            updateModel.WinnerCount = updateModel.WinnerCount + 1;
                            var updateEntry = context.Entry(updateModel);
                            updateEntry.Property(e => e.WinnerCount).IsModified = true;
                        }
                    }
                }
            }
            var result = context.Christmas2015Wins.Add(entry);

            context.SaveChanges();

            return(result);
        }