private void CanCalculateMarketProfitAndPayout()
        {
            var nEvent = Common.CreateAndSaveMockEvent(EventController);

            var newMarket = Common.CreateAndSaveMockMarket(nEvent.Id, "Market 1",
                                                           0.5m, MarketController);

            Common.CreateAndSaveMockBet(newMarket.Id, 100, BetController);
            Common.CreateAndSaveMockBet(newMarket.Id, 50, BetController);
            Common.CreateAndSaveMockBet(newMarket.Id, 99.99m, BetController);

            MarketOutcome marketOutcome = MarketController.GetMarketCurrentOutcome(newMarket.Id);

            var success = (marketOutcome != null) &&
                          (marketOutcome.MarketLoseProfitAmount == 249.99m) &&
                          (marketOutcome.MarketWinPayoutAmount == 499.98m);

            Assert.True(success);
        }
Exemple #2
0
        public EventOutcome GetEventOutcomeForMarket(string eventId, string marketId)
        {
            var eventById = GetById(eventId, true, true);

            if (eventById == null)
            {
                return(null);
            }
            var eventOutcome = new EventOutcome {
                EventId = eventId
            };

            if (eventById.EventMarkets == null || eventById.EventMarkets.Count == 0 || eventById.EventMarkets.FirstOrDefault(m => m.Id == marketId) == null)
            {
                return(eventOutcome);
            }
            eventOutcome.WinningMarketId = marketId;
            eventOutcome.WinningMarket   = eventById.EventMarkets.FirstOrDefault(m => m.Id == marketId);

            eventById.EventMarkets.ForEach(market =>
            {
                var marketOutcome = new MarketOutcome
                {
                    Market = market,
                    MarketLoseProfitAmount = market.GetMarketLoseProfitAmount(),
                    MarketWinPayoutAmount  = market.GetMarketWinPayoutAmount()
                };
                eventOutcome.PossibleMarketOutcomes.Add(marketOutcome);
                if (market.Id == marketId) //Minus payout amount
                {
                    eventOutcome.PLAmount -= marketOutcome.MarketWinPayoutAmount;
                }

                eventOutcome.PLAmount += marketOutcome.MarketLoseProfitAmount;
            });

            return(eventOutcome);
        }