public override IOdds TrueOdds(IOdds averageOdds) { try { switch (averageOdds.Type) { case OddsType.ThreeWay: ThreeWayOdds trueOdds = new ThreeWayOdds(); var curOdds = (ThreeWayOdds)averageOdds; double payout = curOdds.Payout(); trueOdds.Win = curOdds.Win / payout; trueOdds.Lose = curOdds.Lose / payout; trueOdds.Draw = curOdds.Draw / payout; return(trueOdds); default: break; } } catch (NullReferenceException) { Console.WriteLine("Null reference to averageOdds in TrueOdds calculation"); } catch (DivideByZeroException) { Console.WriteLine("Divided by Zero in TrueOdds calculation"); } return(null); }
private bool KillPersonOnRandomChance(IPerson person, IOdds odds) { if (!odds.OccuranceHappens()) { return(false); } AddToLogs($"Let us please mourn the passing of {person.Name}."); return(true); }
private bool PregnancyOccursOnRandomChanceForMarriedWomen(IPerson person, IOdds odds) { var isMarried = person.IsMarried && person.Spouse.IsAlive; var pregnancyFailsToOccur = person.IsMale || person.IsPregnant || !isMarried || !person.IsAdult || !odds.OccuranceHappens(); if (pregnancyFailsToOccur) { return(false); } AddToLogs($"{person.Name} became pregnant."); return(true); }
public override Stake BestStake(string gameName, GameType gameType, OddsType oddsType) { try { IOdds avgOdds = AverageOdds(gameName, gameType, oddsType); IOdds trueOdds = TrueOdds(avgOdds); var maxOddsStakes = MaxOddsStakes(gameName, gameType, oddsType); Stake bestBet = null; switch (oddsType) { case OddsType.ThreeWay: foreach (Stake stake in maxOddsStakes) { double curRoi = 0; if (stake.Decision.Equals("Win", StringComparison.InvariantCultureIgnoreCase)) { curRoi = (((ThreeWayOdds)stake.BetItem.Odds).Win - ((ThreeWayOdds)trueOdds).Win) / ((ThreeWayOdds)trueOdds).Win; } else if (stake.Decision.Equals("Lose", StringComparison.InvariantCultureIgnoreCase)) { curRoi = (((ThreeWayOdds)stake.BetItem.Odds).Lose - ((ThreeWayOdds)trueOdds).Lose) / ((ThreeWayOdds)trueOdds).Lose; } if (stake.Decision.Equals("Draw", StringComparison.InvariantCultureIgnoreCase)) { curRoi = (((ThreeWayOdds)stake.BetItem.Odds).Draw - ((ThreeWayOdds)trueOdds).Draw) / ((ThreeWayOdds)trueOdds).Draw; } if (null == bestBet || curRoi > bestBet.ROI) { stake.ROI = curRoi; bestBet = stake; } } break; default: break; } return(bestBet); } catch (Exception e) { Console.WriteLine(e.Source); Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } return(null); }
public UnitOfWorkRepository(IBetType betType, ICountry country, IEvent @event, IMarket market, ISportTree sportTree, ITournament tournament, IBetSlip betSlip, IOdds odds ) { BetTypeRepository = betType; CountryRepository = country; EventRepository = @event; MarketRepository = market; SportTreeRepository = sportTree; TournamentRepository = tournament; BetSlip = betSlip; OddsRepository = odds; }
private Couple MarryPersonOnRandomChance(ICollection <Person> unmarried, Person person, IOdds odds) { var spouse = unmarried.FirstOrDefault(p => p != person && p.Gender != person.Gender); var marriageFailsToOccur = spouse == null || person.IsMarried || !person.IsAdult || !odds.OccuranceHappens(); if (marriageFailsToOccur) { return(null); } var newCouple = new Couple(person, spouse); unmarried.Remove(person); unmarried.Remove(spouse); AddToLogs($"Congratulations to newlyweds {person.Name} and {spouse.Name}."); return(newCouple); }
public abstract IOdds TrueOdds(IOdds averageOdds);
public EventController(ILogger <EventController> logger, IUnitOfWork unitOfWork) { _logger = logger; _eventRepository = unitOfWork.EventRepository; _oddsRepository = unitOfWork.OddsRepository; }
public OddsController(IOdds oddsRepository, ILogger <OddsController> logger) { _logger = logger; _oddsRepository = oddsRepository; }