Пример #1
0
 public BetServices(IComponentContext components)
 {
     this.components    = components;
     rouletteRepository = components.Resolve <IRoulette>();
     betRepository      = components.Resolve <IBet>();
     playerRepository   = components.Resolve <IPlayer>();
 }
Пример #2
0
        public void TakePot(IBet bettor)
        {
            var bettors = new List <IBet>();

            bettors.Add(bettor);
            TakePot(bettors);
        }
Пример #3
0
        public static void Compare(IBet bet, IBet newBet, bool isReoffer)
        {
            Assert.IsNotNull(bet);
            Assert.IsNotNull(newBet);

            if (bet.Bonus != null)
            {
                Assert.AreEqual(bet.Bonus.Value, newBet.Bonus.Value);
                Assert.AreEqual(bet.Bonus.Mode, newBet.Bonus.Mode);
                Assert.AreEqual(bet.Bonus.Type, newBet.Bonus.Type);
            }
            if (bet.SelectedSystems != null)
            {
                Assert.AreEqual(bet.SelectedSystems.Count(), newBet.SelectedSystems.Count());
                Assert.IsTrue(bet.SelectedSystems.All(a => newBet.SelectedSystems.Contains(a)));
            }
            Assert.AreEqual(bet.SumOfWins, newBet.SumOfWins);

            if (isReoffer)
            {
                Assert.AreNotEqual(bet.Id, newBet.Id);
                Assert.AreEqual(bet.Id, newBet.ReofferRefId);
            }
            else
            {
                Assert.AreEqual(bet.Id, newBet.Id);
                Assert.AreEqual(bet.ReofferRefId, newBet.ReofferRefId);
                Assert.AreEqual(bet.Stake, newBet.Stake);
            }
        }
Пример #4
0
        public Anonymous(IBet bet, IEnumerable <ISelectionRef> selectionRefs)
        {
            _id          = string.IsNullOrEmpty(bet.Id) ? null : bet.Id;
            _sumOfWins   = bet.SumOfWins > 0 ? bet.SumOfWins : (long?)null;
            _stake       = new Stake(bet.Stake);
            _entireStake = bet.EntireStake != null ? new EntireStake(bet.EntireStake) : null;
            _bonus       = null;
            if (bet.Bonus != null)
            {
                _bonus = new Bonus(bet.Bonus);
            }
            _selectedSystems = null;
            if (bet.SelectedSystems != null && bet.SelectedSystems.Any())
            {
                _selectedSystems = bet.SelectedSystems as IReadOnlyCollection <int>;
            }
            _selectionRefs = null;
            var selectionRefsList = selectionRefs.ToList();

            if (selectionRefsList.Any())
            {
                _selectionRefs = selectionRefsList.ConvertAll(b => new Anonymous3(b));
            }

            _customBet       = bet.CustomBet;
            _calculationOdds = bet.CalculationOdds;
        }
Пример #5
0
        public void wonAmount_test_colorbet(uint a)
        {
            var field = fieldGenerator.CreateFields();

            bet = new ColorBet("testbet", a, field.First().Color);
            Assert.That(bet.WonAmount(field.First()), Is.EqualTo(a * 2));
        }
Пример #6
0
        public void wonAmount_test_Evenoddbet(uint a)
        {
            var field = fieldGenerator.CreateFields();

            bet = new EvenOddBet("testbet", a, true);
            Assert.That(bet.WonAmount(field.First()), Is.EqualTo(a * 2));
        }
Пример #7
0
        public void wonAmount_test_fieldbet(uint a)
        {
            var field = fieldGenerator.CreateFields();

            bet = new FieldBet("testbet", a, field.First().Number);
            Assert.That(bet.WonAmount(field.First()), Is.EqualTo(a * 36));
        }
Пример #8
0
 public override Task <IBet> CreateAsync(IBet entity)
 {
     return(Task.Run(() =>
     {
         Redis.SaveObject(entity);
         return entity;
     }));
 }
 public void Process(IBet bet)
 {
     if (bet.Stake > 1)
     {
         Sum       += bet.Stake;
         bet.Status = true;
     }
 }
Пример #10
0
        /// <summary>
        /// Adds the <see cref="IBet" />
        /// </summary>
        /// <param name="bet">A <see cref="IBet" /> to be added to this ticket</param>
        /// <returns>Returns a <see cref="ITicketBuilder" /></returns>
        public ITicketBuilder AddBet(IBet bet)
        {
            var bets = _bets as List <IBet> ?? new List <IBet>();

            bets.Add(bet);
            _bets = bets;
            return(this);
        }
Пример #11
0
 public void Process(IBet bet)
 {
     if (bet.CreationDate.DayOfWeek == DayOfWeek.Friday)
     {
         Sum       += bet.Stake;
         bet.Status = true;
     }
 }
Пример #12
0
        private IBet MakeBetObject(IBetDTO dto)
        {
            var  info   = dto.GetBetSpecificInfo();
            IBet output = null;

            if (info.TryGetValue("Color", out object temp))
            {
                if (temp != null)
                {
                    int color = (int)temp;
                    output = new ColorBet((IPocketColor)color)
                    {
                        Id    = dto.Id,
                        Stake = dto.Stake,
                    };
                }
            }
            else if (info.TryGetValue("FirstNumber", out object temp3) && info.TryGetValue("SecondNumber", out object temp4))
            {
                if (temp3 != null && temp4 != null)
                {
                    int firstNumber  = (int)temp3;
                    int secondNumber = (int)temp4;
                    output = new NeighbourBet((IPocketNumber)firstNumber, (IPocketNumber)secondNumber)
                    {
                        Id    = dto.Id,
                        Stake = dto.Stake,
                    };
                }
            }
            else if (info.TryGetValue("Number", out object temp5))
            {
                if (temp5 != null)
                {
                    int number = (int)temp;
                    output = new SingleNumberBet((IPocketNumber)number)
                    {
                        Id    = dto.Id,
                        Stake = dto.Stake,
                    };
                }
            }
            else if (info.TryGetValue("IsEven", out object temp2))
            {
                if (temp2 != null)
                {
                    bool isEven = (bool)temp;
                    output = new EvenUnevenBet(isEven)
                    {
                        Id    = dto.Id,
                        Stake = dto.Stake,
                    };
                }
            }

            return(output);
        }
Пример #13
0
        public void Init()
        {
            bet = Substitute.For <IBet>();

            fieldGenerator = Substitute.For <IFieldGenerator>();
            fieldGenerator.CreateFields().Returns(new List <Field> {
                new Field(0, color: Field.Green)
            });
        }
Пример #14
0
 public void MakeBet(IBet bet, decimal stake)
 {
     if (bet != null)
     {
         bet.Stake  = stake;
         bet.ID     = this.Id;
         CurrentBet = bet;
     }
 }
Пример #15
0
 public User(string name, IUserDAL userdal, IBetDAL betdal)
 {
     this.Name        = name;
     this._userDAL    = userdal;
     this._betDal     = betdal;
     this.UserRole    = 2;
     this.Permissions = new List <string>();
     this.CurrentBet  = MakeBetObject(betdal.GetCurrentBet(this.Id));
 }
Пример #16
0
        /// <summary>
        /// Constructs a dto object of the specified bet
        /// Checks which bet type it is and maps this to dto object.
        /// </summary>
        /// <param name="bet"></param>
        /// <returns></returns>
        private IBetDTO MakeBetDTO(IBet bet)
        {
            var     info   = bet.GetBetSpecificInfo();
            IBetDTO output = null;

            if (bet.Type == BetType.Color)
            {
                if (info.TryGetValue("Color", out object temp))
                {
                    int color = (int)temp;
                    output = new ColorBet((IPocketColor)color)
                    {
                        Id    = bet.Id,
                        Stake = bet.Stake,
                    };
                }
            }
            else if (bet.Type == BetType.EvenUneven)
            {
                if (info.TryGetValue("IsEven", out object temp))
                {
                    bool isEven = (bool)temp;
                    output = new EvenUnevenBet(isEven)
                    {
                        Id    = bet.Id,
                        Stake = bet.Stake,
                    };
                }
            }
            else if (bet.Type == BetType.Neighbour)
            {
                if (info.TryGetValue("FirstNumber", out object temp) && info.TryGetValue("SecondNumber", out object temp2))
                {
                    int firstNumber  = (int)temp;
                    int secondNumber = (int)temp2;
                    output = new NeighbourBet((IPocketNumber)firstNumber, (IPocketNumber)secondNumber)
                    {
                        Id    = bet.Id,
                        Stake = bet.Stake,
                    };
                }
            }
            else if (bet.Type == BetType.Single)
            {
                if (info.TryGetValue("Number", out object temp))
                {
                    int number = (int)temp;
                    output = new SingleNumberBet((IPocketNumber)number)
                    {
                        Id    = bet.Id,
                        Stake = bet.Stake,
                    };
                }
            }
            return(output);
        }
Пример #17
0
 private static void IfColorBetUpdateBalance(IPocket pocket, IPlayer p, IBet bet)
 {
     if (bet is ColorBet cBet)
     {
         if (cBet.Color == pocket.Color)
         {
             p.UpdateBalance(cBet.GetReturnStake());
         }
     }
 }
Пример #18
0
 private static void IfEvenBetUpdateBalance(IPocket pocket, IPlayer p, IBet bet)
 {
     if (bet is EvenUnevenBet eBet)
     {
         if (eBet.IsEven == pocket.Even)
         {
             p.UpdateBalance(eBet.GetReturnStake());
         }
     }
 }
Пример #19
0
 private static void IfSingleUpdateBalance(IPocket pocket, IPlayer p, IBet bet)
 {
     if (bet is SingleNumberBet sBet)
     {
         if (sBet.Number == pocket.Number)
         {
             p.UpdateBalance(sBet.GetReturnStake());
         }
     }
 }
Пример #20
0
 private static void ifNeighbourUpdateBalance(IPocket pocket, IPlayer p, IBet bet)
 {
     if (bet is NeighbourBet nBet)
     {
         if (nBet.FirstNumber == pocket.Number | nBet.SecondNumber == pocket.Number)
         {
             p.UpdateBalance(nBet.GetReturnStake());
         }
     }
 }
Пример #21
0
        public Task InsertBetAsync(IBet bet)
        {
            _logger.Debug("Create Bet - BetId:{BetId}", bet?.BetId);

            if (bet == null || !(bet is Bet rec))
            {
                throw new ArgumentNullException(nameof(bet));
            }

            return(Bets.InsertOneAsync(rec));
        }
Пример #22
0
        public static int CalculateProfit(IResult result, IBet bet)
        {
            if (bet == null || result == null)
            {
                return(0);
            }

            var success = bet.SelectionId == result.WinnerId;

            return((bet.Amount > 0) ? bet.Amount * ((success ? bet.Price : 0) - 100) : 0);
        }
Пример #23
0
 public static IBet GenerateBet(int playerChoice, int choice, IBet playerBet)
 {
     if (playerChoice == 1)
     {
         playerBet = new BetNumbers(choice);
         return(playerBet);
     }
     else if (playerChoice == 2)
     {
         playerBet = new BetRedBlack(choice);
         return(playerBet);
     }
     else if (playerChoice == 3)
     {
         playerBet = new BetEvensOdds(choice);
         return(playerBet);
     }
     else if (playerChoice == 4)
     {
         playerBet = new BetHighLow(choice);
         return(playerBet);
     }
     else if (playerChoice == 5)
     {
         playerBet = new BetStreets(choice);
         return(playerBet);
     }
     else if (playerChoice == 6)
     {
         playerBet = new BetSplit(choice);
         return(playerBet);
     }
     else if (playerChoice == 7)
     {
         playerBet = new BetDozens(choice);
         return(playerBet);
     }
     else if (playerChoice == 8)
     {
         playerBet = new BetDoubleRows(choice);
         return(playerBet);
     }
     else if (playerChoice == 9)
     {
         playerBet = new BetCorner(choice);
         return(playerBet);
     }
     else if (playerChoice == 10)
     {
         playerBet = new BetColumns(choice);
         return(playerBet);
     }
     return(playerBet);
 }
Пример #24
0
 public void PlaceBet(IBet bet)
 {
     if (_roundIsOpen)
     {
         _bets.Add(bet);
     }
     else
     {
         throw new RouletteGameException("Bet placed while round closed");
     }
 }
Пример #25
0
        /// <summary>
        /// Logic for placing single bet.
        /// </summary>
        /// <param name="bet">Bet that is going to be placed.</param>
        /// <param name="handler">Delegate that points to a method where saving it to dabatase logic is.</param>
        public void PlaceBet(IBet bet, SaveBetHandler handler)
        {
            // Place the bet
            Console.WriteLine("Placing single bet logic method invoked...");
            System.Threading.Thread.Sleep(2000);

            // Eventual log
            Console.WriteLine($"{bet} is placed!");

            // Save to database
            handler.Invoke(bet);
        }
Пример #26
0
        public void RemoveBet(IBet bet)
        {
            if (bet == null)
            {
                throw new ArgumentNullException(string.Format(EngineConstants.ObjectCannotBeNullErrorMessage, "Bet"));
            }

            if (this.Bets.Contains(bet))
            {
                this.Bets.Remove(bet);
            }
        }
Пример #27
0
 /// <summary>
 /// Gets the bet selection refs
 /// </summary>
 /// <param name="bet">The bet</param>
 /// <param name="allSelections">All selections</param>
 /// <param name="hasBanker">There is a banker in any of the selection</param>
 /// <returns>IEnumerable&lt;ISelectionRef&gt;</returns>
 private static IEnumerable <ISelectionRef> GetBetSelectionRefs(IBet bet, IReadOnlyList <Anonymous2> allSelections, bool hasBanker)
 {
     if (bet.Selections.Count() != allSelections.Count || bet.Selections.Any(s => s.IsBanker) || hasBanker)
     {
         var refs = new List <ISelectionRef>();
         foreach (var betSelection in bet.Selections)
         {
             refs.Add(new SelectionRef(FindSelectionIndex(allSelections, betSelection), betSelection.IsBanker));
         }
         return(refs);
     }
     return(new List <ISelectionRef>());
 }
Пример #28
0
        // Might need testing
        private void UpdateUserBalance()
        {
            IPocket pocket = Rounds[Rounds.Count - 1].Pocket;

            foreach (IPlayer p in Players)
            {
                IBet bet = p.CurrentBet;
                IfColorBetUpdateBalance(pocket, p, bet);
                IfEvenBetUpdateBalance(pocket, p, bet);
                ifNeighbourUpdateBalance(pocket, p, bet);
                IfSingleUpdateBalance(pocket, p, bet);
            }
        }
Пример #29
0
        public void AddBet(IBet bet)
        {
            if (bet == null)
            {
                throw new ArgumentNullException(string.Format(EngineConstants.ObjectCannotBeNullErrorMessage, "Bet"));
            }

            if (this.Bets.Contains(bet))
            {
                throw new ArgumentException(EngineConstants.SameBetsForAMatchErrorMessage);
            }

            this.bets.Add(bet);
        }
Пример #30
0
        public void PlaceBet(IRaceLineup race, IBet bet)
        {
            if (bet.WagerAmount <= 0 || bet.WagerAmount > race.Player.Money)
            {
                throw new ArgumentOutOfRangeException("Wager must be a positive value less than the player's current money.");
            }
            if (!race.Snails.Contains(bet.PickToWin))
            {
                throw new ArgumentException("Must bet on a snail that is participating in the race.");
            }

            race.Player.Money -= bet.WagerAmount;
            this.Bet = bet;
        }
Пример #31
0
        public bool MakeBet(IBet bet)
        {
            if (bet != null && Id != 0)
            {
                bet.Id     = this.Id;
                CurrentBet = bet;

                if (_betDal.Save(MakeBetDTO(bet)))
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #32
0
 public void PlaceBet(IBet bet)
 {
     if (_roundIsOpen) _bets.Add(bet);
     else throw new RouletteGameException("Bet placed while round closed");
 }
        // public decimal Chips { get; set; }

        public Player(decimal chips = 0)
        {
            Hand = new Hand();
            Bettor = new BlackjackBettor(chips);
        }
Пример #34
0
 public void TakePot(IBet bettor)
 {
     var bettors = new List<IBet>();
     bettors.Add(bettor);
     TakePot(bettors);
 }