/// <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); } }
/// <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); }