public async Task <List <GamePerformanceBase> > GamePerformance(GamePerformanceQuery query) { using (var db = databaseManager.GetReadOnlyDatabase(query.OperatorId)) { switch (query.FilterDateType) { case Enums.FilterDateType.None: { if (!string.IsNullOrWhiteSpace(query.CustomSearchType) && string.Compare(query.CustomSearchType, "member", true, CultureInfo.InvariantCulture) == 0) { var x = await db.GamePerformancesMember .Query("REPORTGAMEPERFORMANCEMEMBER @OperatorId, @GameId, @CurrencyId, @StartDateInUTC, @EndDateInUTC, @IsDemo", query) .ToListAsync(); return(x.WithFilters(query) .ToList <GamePerformanceBase>()); } else { var x = await db.GamePerformancesGeneral .Query("REPORTGAMEPERFORMANCE @OperatorId, @GameId, @StartDateInUTC, @EndDateInUTC, @IsDemo", query) .ToListAsync(); return(x.WithFilters(query) .ToList <GamePerformanceBase>()); } } case Enums.FilterDateType.Daily: { var x = await db.GamePerformancesDaily .Query("REPORTGAMEPERFORMANCEDAILY @OperatorId, @GameId, @StartDateInUTC, @EndDateInUTC, @IsDemo", query) .ToListAsync(); return(x.WithFilters(query) .ToList <GamePerformanceBase>()); } case Enums.FilterDateType.Weekly: { var x = await db.GamePerformancesWeekly .Query("REPORTGAMEPERFORMANCEWEEKLY @OperatorId, @GameId, @StartDateInUTC, @EndDateInUTC, @IsDemo", query) .ToListAsync(); return(x.WithFilters(query) .ToList <GamePerformanceBase>()); } case Enums.FilterDateType.Monthly: { var x = await db.GamePerformancesMonthly .Query("REPORTGAMEPERFORMANCEMONTHLY @OperatorId, @GameId, @StartDateInUTC, @EndDateInUTC, @IsDemo", query) .ToListAsync(); return(x.WithFilters(query) .ToList <GamePerformanceBase>()); } case Enums.FilterDateType.Currency: { var x = await db.GamePerformancesCurrency .Query("REPORTGAMEPERFORMANCECURRENCY @OperatorId, @GameId, @StartDateInUTC, @EndDateInUTC, @IsDemo", query) .ToListAsync(); return(x.WithFilters(query) .ToList <GamePerformanceBase>()); } default: { throw new ArgumentException("Invalid parameters"); } } } }
public async Task <IActionResult> GamePerformance([FromQuery] GamePerformanceQuery query) => GetResult(await reportsRepository.GamePerformance(query));