예제 #1
0
        /// <inheritdoc />
        public IOutcome GetOutcome(IWager <IResultSet> wager, IResultSet actualResults)
        {
            if (wager == null)
            {
                throw new ArgumentNullException(nameof(wager));
            }

            if (!_multipleChoicePool.ContainsWager(wager))
            {
                throw new ArgumentException(
                          "Specified value is not part of this bet.",
                          nameof(wager));
            }

            if (actualResults == null)
            {
                throw new ArgumentNullException(nameof(actualResults));
            }

            if (!PossibleResults.Contains(actualResults))
            {
                throw new ArgumentException(
                          "Specified value must be one of the possible results.",
                          nameof(actualResults));
            }

            if (!_multipleChoicePool.ForActualResults(actualResults).WinnerWagers.Exist)
            {
                return(Outcome.CreateCanceled());
            }

            return(wager.ExpectedResults.SharesResultWith(actualResults)
                ? Outcome.CreateWin(GetOdds(wager.ExpectedResults, actualResults) * wager.Stake.Value)
                : Outcome.CreateLoss());
        }
예제 #2
0
 public void AddWager(IWager wager)
 {
     if (wager == null)
         throw new ArgumentNullException("Wager must not be null!");
     else
         _wagers.Add(wager);
 }
        public void AddWager(IWager <IResultSet> wager)
        {
            _wagers.Add(wager);

            foreach (var possibleResults in _possibleResults)
            {
                ForActualResults(possibleResults).AddWager(wager);
            }
        }
예제 #4
0
        /// <inheritdoc />
        public IOutcome GetOutcome(IWager <IResult> wager, IResult actualResults)
        {
            if (wager == null)
            {
                throw new ArgumentNullException(nameof(wager));
            }

            if (!_wagers.ContainsKey(wager))
            {
                throw new ArgumentException(
                          "Specified value is not part of this bet.",
                          nameof(wager));
            }

            return(_multipleChoiceBet.GetOutcome(
                       _wagers[wager],
                       new ResultSet(new[] { actualResults })));
        }
 public bool ContainsWager(IWager <IResultSet> wager)
 {
     return(_wagers.Contains(wager));
 }