public async Task <IHttpActionResult> GetBetAmount() { var request = new TotalBetAmountAsyncRequest(); var response = await mediator.GetAsync(request); return(Ok(response)); }
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)); }
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)); }
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); }
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)); }
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()); }