Exemplo n.º 1
0
        public async Task <IHttpActionResult> GetBetAmount()
        {
            var request  = new TotalBetAmountAsyncRequest();
            var response = await mediator.GetAsync(request);

            return(Ok(response));
        }
Exemplo n.º 2
0
        public async Task <TotalBetCountResponse> GetAsync(TotalBetCountAsyncRequest request)
        {
            var betRequest = new TotalBetAmountAsyncRequest();
            var bets       = await EntityFactory.GetBets(betsRepository, betRequest);

            if (bets == null)
            {
                return(new TotalBetCountResponse(new List <CustomerBetCount>()));
            }

            var betCounts = bets
                            .GroupBy(r => new { customerId = r.CustomerId })
                            .Select(g => new CustomerBetCount
            {
                Id        = g.Key.customerId,
                TotalBets = g.Count()
            })
                            .OrderBy(r => r.TotalBets)
                            .ThenBy(r => r.Id);

            if (request.CustomerId > 0)
            {
                var filteredCustomers = betCounts.ToList()
                                        .Where(r => r.Id == request.CustomerId);
                return(new TotalBetCountResponse(filteredCustomers));
            }

            return(new TotalBetCountResponse(betCounts));
        }
Exemplo n.º 3
0
        public async Task <RaceStatResponse> GetAsync(RaceStatAsyncRequest request)
        {
            var betRequest = new TotalBetAmountAsyncRequest();
            var races      = await EntityFactory.GetRaces(racesRepository);

            var bets = await EntityFactory.GetBets(betsRepository, betRequest);

            var response = races
                           .Select(r => new RaceStat
            {
                Id              = r.Id,
                Name            = r.Name,
                Status          = r.Status,
                Start           = r.Start,
                RaceTotalAmount = GetRaceAmount(r.Id, bets),
                HorseStats      = r.Horses.Select(h => new HorseStat
                {
                    Id        = h.Id,
                    Name      = h.Name,
                    RaceId    = r.Id,
                    Odds      = h.Odds,
                    BetCount  = GetBetCount(h.Id, r.Id, bets),
                    WinAmount = GetWinAmount(r.Id, h.Id, h.Odds, bets)
                })
                                  .OrderBy(h => h.WinAmount)
                                  .ThenBy(h => h.Odds)
                                  .ThenBy(h => h.BetCount)
                                  .ThenBy(h => h.Name)
                                  .ToList()
            })
                           .OrderBy(r => r.Start)
                           .ThenBy(r => r.Name);

            return(new RaceStatResponse(response));
        }
Exemplo n.º 4
0
        public async Task <RiskCustomerResponse> GetAsync(RiskCustomerAsyncRequest request)
        {
            var betRequest = new TotalBetAmountAsyncRequest();
            var customers  = await EntityFactory.GetCustomers(customersRepository);

            var bets = await EntityFactory.GetBets(betsRepository, betRequest);

            if (bets == null)
            {
                return(new RiskCustomerResponse(new List <RiskCustomer>()));
            }
            if (customers == null)
            {
                return(new RiskCustomerResponse(new List <RiskCustomer>()));
            }

            var riskCustomers = customers
                                .Select(r => new RiskCustomer
            {
                Id   = r.Id,
                Name = r.Name,
                Bets = GetCustomerBets(r.Id, bets)
            })
                                .Where(r => r.Bets.Any())
                                .OrderBy(r => r.Name);

            return(new RiskCustomerResponse(riskCustomers));
        }
        public async Task Engine_ShouldReturnAmountBetPerCustomer()
        {
            var request = new TotalBetAmountAsyncRequest();

            var response = await mediator.GetAsync(request);

            response.CustomerBets.Count().ShouldBeGreaterThan(0);
        }
Exemplo n.º 6
0
        public async Task <IHttpActionResult> GetBetAmount(int id)
        {
            var request   = new TotalBetAmountAsyncRequest(id);
            var betAmount = await mediator.GetAsync(request);

            var response = betAmount.CustomerBets.FirstOrDefault(r => r.Id == id);

            return(Ok(response));
        }
Exemplo n.º 7
0
        public static async Task <List <Bet> > GetBets(ITechChallengeDataRepositorySoftDeleteInt <Bet> repository, TotalBetAmountAsyncRequest request)
        {
            if (request.CustomerId > 0)
            {
                return(await repository.GetAsync(r => r.CustomerId == request.CustomerId));
            }

            return(await repository.GetAllAsync());
        }