public static ProductButton Create(RaceDayKey raceDay, BetTypeCode product) { return(new ProductButton { Url = $"/Spill#/{RaceDayKey.ToString(raceDay)}/{product}/", Text = product.PresentAsText() }); }
public IHttpActionResult GetScratchedStarts(string raceDayKey, BetTypeCode product) { IDictionary <int, int[]> scratchedStartsByRaceNumber = _raceDayServiceGateway.GetScratchedStartsForPool(RaceDayKey.FromString(raceDayKey), product); IList <ScratchedStart> scratchedStarts = scratchedStartsByRaceNumber.SelectMany(scratchesForRace => scratchesForRace.Value.Select(start => new ScratchedStart { RaceNumber = scratchesForRace.Key, StartNumber = start })).ToList(); return(Ok(RestResult <IList <ScratchedStart> > .CreateSuccess(scratchedStarts))); }
public IHttpActionResult GetProgramAdditionForGame(string raceDayKey, BetTypeCode product) { RaceDayKey raceDay = RaceDayKey.FromString(raceDayKey); Service.RaceDay.Contracts.PoolService.ProgramChanges programAdditionForPool = _raceDayServiceGateway.GetProgramChangesForPool(raceDay, product); var programChanges = _mapper.Map <ProgramAddition>(programAdditionForPool); return(Ok(RestResult <ProgramAddition> .CreateSuccess(_betStatisticsPopulator.Populate(programChanges, raceDay, product)))); }
public string FindLinkForNextAvailableProduct(string value, string baseLink) { BetTypeCode product = value.TryCastTo <BetTypeCode>(); if (product == BetTypeCode.Undefined || !product.IsVGame()) { return(null); } IList <ActivePoolsForRaceDay> racedays = _raceDayServiceGateway.GetActivePoolsForRaceDay(); ActivePoolsForRaceDay raceday = racedays .OrderBy(x => x.StartTime) .FirstOrDefault(x => x.Products.Any(p => p.Product == product && p.IsOpenForBet)); return(raceday == null ? null : $"{baseLink}#/{RaceDayKey.ToString(raceday.RaceDay)}/{product}/"); }
public static ProductButton GetMainProductOfToday(IEnumerable <ActivePoolsForRaceDay> raceDays, DateTime date) { IList <ActivePoolsForRaceDay> todaysRaceDays = raceDays .Where(x => Equals(x.RaceDay.RaceDayDate, date.AsDate()) && x.RaceDay.IsDomestic() && x.ProgressStatus != ProgressStatus.Abandoned) .Where(x => x.Products.Any(p => p.Product.IsVGame() && p.IsOpenForBet)) .OrderBy(x => x.StartTime) .ToList(); if (!todaysRaceDays.Any()) { return(null); } ActivePoolsForRaceDay raceDay = todaysRaceDays.OrderByDescending(x => x.Products.Max(p => (int)p.Product)).First(); BetTypeCode product = raceDay.Products .Where(x => x.Product.IsVGame() && x.IsOpenForBet) .OrderByDescending(x => (int)x.Product) .Select(x => x.Product) .First(); return(product.IsV75OrV76() ? null : ProductButton.Create(raceDay.RaceDay, product)); }
public static ProductButton GetMainProductOfTheWeek(IList <ActivePoolsForRaceDay> raceDays, DateTime date) { IList <ActivePoolsForRaceDay> activeRaceDays = raceDays .Where(x => x.Products.Any(p => p.Product.IsV75OrV76() && p.IsOpenForBet) && x.RaceDay.IsDomestic() && x.ProgressStatus != ProgressStatus.Abandoned) .ToList(); TimeSpan v75StartTimeOfDay = new TimeSpan(19, 00, 00); TimeSpan v75EndTimeOfDay = new TimeSpan(15, 00, 00); BetTypeCode product = BetTypeCode.V75; if (date.DayOfWeek.CompareTo(DayOfWeek.Wednesday) < 0) { product = BetTypeCode.V76; } if (date.DayOfWeek == DayOfWeek.Wednesday) { product = date.TimeOfDay >= v75StartTimeOfDay ? BetTypeCode.V75 : BetTypeCode.V76; } if (date.DayOfWeek.CompareTo(DayOfWeek.Saturday) < 0 && date.DayOfWeek.CompareTo(DayOfWeek.Wednesday) > 0) { product = BetTypeCode.V75; } if (date.DayOfWeek == DayOfWeek.Saturday) { product = date.TimeOfDay > v75EndTimeOfDay ? BetTypeCode.V76 : BetTypeCode.V75; } if (date.DayOfWeek.CompareTo(DayOfWeek.Saturday) > 0) { product = BetTypeCode.V76; } var raceDay = activeRaceDays.FirstOrDefault(x => x.Products.Any(p => p.Product == product)); return(raceDay == null ? null : ProductButton.Create(raceDay.RaceDay, product)); }
public IHttpActionResult GetProgramForGame(string raceDayKey, BetTypeCode product) { Service.RaceDay.Contracts.PoolService.Program program = _raceDayServiceGateway.GetProgramForPool(RaceDayKey.FromString(raceDayKey), product); return(Ok(RestResult <Models.Program> .CreateSuccess(_mapper.Map <Models.Program>(program)))); }
private void PopulateVxyStatistics(ProgramAddition programChanges, RaceDayKey raceDay, BetTypeCode product) { IList <int> raceNumbers = _raceDayServiceGateway.GetRaceNumbersForPool(raceDay, product); IList <RaceInvestmentDistribution> raceInvestmentDistributions = _raceDayServiceGateway.GetInvestmentDistribution(raceDay, product); foreach (var raceNumber in raceNumbers) { IList <WinOdds> winOddses = _raceDayServiceGateway.GetWinOdds(raceDay, raceNumber); programChanges.RaceBetStatistics.Add(new RaceBetStatistics { RaceNumber = raceNumber, OddsAndInvestment = CreateStartBetStatistics(winOddses, raceInvestmentDistributions.SingleOrDefault(r => r.RaceNumber == raceNumber)) }); } }
private void PopulateDdStatistics(ProgramAddition programChanges, RaceDayKey raceDay, BetTypeCode product) { IList <int> raceNumbers = _raceDayServiceGateway.GetRaceNumbersForPool(raceDay, product); foreach (var raceNumber in raceNumbers) { IList <WinOdds> winOdds = _raceDayServiceGateway.GetWinOdds(raceDay, raceNumber); IList <PlaceOdds> placeOdds = _raceDayServiceGateway.GetPlaceOdds(raceDay, raceNumber); programChanges.RaceBetStatistics.Add(new RaceBetStatistics { RaceNumber = raceNumber, OddsAndInvestment = CreateStartBetStatistics(winOdds, placeOdds) }); } }
public ProgramAddition Populate(ProgramAddition programChanges, RaceDayKey raceDay, BetTypeCode product) { if (product.IsVGame()) { PopulateVxyStatistics(programChanges, raceDay, product); } else if (product == BetTypeCode.DD) { PopulateDdStatistics(programChanges, raceDay, product); } return(programChanges); }
public IHttpActionResult GetPrices(BetTypeCode product) { var prices = _mapper.Map <IEnumerable <PriceInfoForProduct> >(_bettingServiceGateway.GetPricesForAllProducts().Where(x => x.BetType == product)); return(Ok(RestResult <IEnumerable <PriceInfoForProduct> > .CreateSuccess(prices))); }
public static bool IsV75OrV76(this BetTypeCode code) { return(code == BetTypeCode.V75 || code == BetTypeCode.V76); }