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