Example #1
0
 public static ProductButton Create(RaceDayKey raceDay, BetTypeCode product)
 {
     return(new ProductButton
     {
         Url = $"/Spill#/{RaceDayKey.ToString(raceDay)}/{product}/",
         Text = product.PresentAsText()
     });
 }
Example #2
0
        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)));
        }
Example #3
0
        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}/");
        }
Example #5
0
        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));
        }
Example #6
0
        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));
        }
Example #7
0
        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);
 }