예제 #1
0
        public RouletteCloseResponseDto CloseRoulette(RouletteCloseDto rouletteCloseDto)
        {
            RouletteCloseResponseDto winner = this.GetWinner();
            var roulette = this.GetById(rouletteCloseDto.Id);

            roulette.Status = StatusEnum.Close;
            this.UpdateWinnerIntoBets(roulette.Bets, winner);
            this.UpdateCache();

            return(winner);
        }
예제 #2
0
        private double CalculateCashAmount(Bet bet, RouletteCloseResponseDto winner)
        {
            double cash = 0;

            if (bet.Number == winner.WinningNumber)
            {
                cash = bet.CashAmount * 5;
            }
            if (bet.Color == winner.WinnigColor)
            {
                cash += bet.CashAmount * 1.8;
            }

            return(cash);
        }
예제 #3
0
 private void UpdateWinnerIntoBets(List <Bet> bets, RouletteCloseResponseDto winner)
 {
     foreach (var item in bets)
     {
         item.IsWin      = item.Number == winner.WinningNumber || item.Color == winner.WinnigColor;
         item.WinnigCash = this.CalculateCashAmount(item, winner);
         winner.Bets.Add(new BetCloseDto
         {
             CashAmount   = item.CashAmount,
             Color        = item.Color,
             IsWin        = item.IsWin,
             Number       = item.Number,
             UserId       = item.UserId,
             WinnerAmount = item.WinnigCash.Value
         });
     }
 }