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));