83 lines
2.3 KiB
PHP
83 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Game;
|
|
use Illuminate\Http\Request;
|
|
|
|
/**
|
|
* @group Rankings
|
|
*/
|
|
class GameController extends Controller
|
|
{
|
|
/**
|
|
* Top semanal
|
|
* * Retorna o ranking dos jogos com melhor desempenho na última semana.
|
|
*/
|
|
public function weeklyRanking()
|
|
{
|
|
$games = Game::orderBy('weekly_points', 'desc')->take(10)->get();
|
|
return response()->json($games);
|
|
}
|
|
|
|
/**
|
|
* 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()
|
|
{
|
|
$games = Game::orderBy('active_players', 'desc')->take(10)->get();
|
|
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.
|
|
* @urlParam platform string required O nome da plataforma. Example: Steam
|
|
*/
|
|
public function platformRanking($platform)
|
|
{
|
|
$games = Game::where('platform', $platform)
|
|
->orderBy('active_players', 'desc')
|
|
->get();
|
|
|
|
return response()->json($games);
|
|
}
|
|
} |