atualizacao rankings

This commit is contained in:
gabriellina640
2026-04-17 20:49:49 -05:00
parent f551520161
commit 2245afdb43
6 changed files with 1330 additions and 407 deletions

View File

@@ -7,31 +7,41 @@ use Illuminate\Http\Request;
/**
* @group Rankings
* APIs para visualização de rankings de jogos
*/
class GameController extends Controller
{
/**
* Ranking Geral
* * Retorna o top 10 jogos baseado no período informado.
* @queryParam period string required O período do ranking (weekly, monthly, yearly). Example: weekly
* Top semanal
* * Retorna o ranking dos jogos com melhor desempenho na última semana.
*/
public function generalRanking(Request $request)
public function weeklyRanking()
{
$period = $request->query('period', 'weekly');
$column = "{$period}_points";
// Validação simples
if (!in_array($period, ['weekly', 'monthly', 'yearly'])) {
return response()->json(['error' => 'Período inválido'], 400);
}
$games = Game::orderBy($column, 'desc')->take(10)->get();
$games = Game::orderBy('weekly_points', 'desc')->take(10)->get();
return response()->json($games);
}
/**
* Jogos Mais Jogados
* Top mensal
* * Retorna o ranking dos jogos com melhor desempenho no último mês.
*/
public function monthlyRanking()
{
$games = Game::orderBy('monthly_points', 'desc')->take(10)->get();
return response()->json($games);
}
/**
* Top anual
* * Retorna o ranking dos jogos com melhor desempenho no último ano.
*/
public function yearlyRanking()
{
$games = Game::orderBy('yearly_points', 'desc')->take(10)->get();
return response()->json($games);
}
/**
* Jogos mais jogados
* * Retorna o top 10 jogos com base no número de jogadores ativos.
*/
public function mostPlayed()
@@ -40,6 +50,23 @@ class GameController extends Controller
return response()->json($games);
}
/**
* Histórico de ranking
* * Retorna a evolução de um jogo específico ao longo do tempo.
* @urlParam id int required O ID do jogo. Example: 1
*/
public function history($id)
{
$game = Game::findOrFail($id);
return response()->json([
'game' => $game->name,
'history' => [
['period' => 'Semana 1', 'points' => $game->weekly_points],
['period' => 'Mês Atual', 'points' => $game->monthly_points],
['period' => 'Ano Atual', 'points' => $game->yearly_points],
]
]);
}
/**
* Ranking por Plataforma
* * Retorna os jogos mais bem ranqueados de uma plataforma específica.