mirror of
https://github.com/Deathgarden-Rebirth/Deathgarden_Rebirth-Rewrite.git
synced 2026-04-04 16:55:24 -05:00
49 lines
1.6 KiB
PHP
49 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Enums\Game\Matchmaking\MatchmakingSide;
|
|
use App\Enums\Game\Matchmaking\MatchStatus;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Responses\Api\Statistics\OnlinePlayersResponse;
|
|
use App\Models\Admin\LauncherMessage;
|
|
use App\Models\Admin\Versioning\LauncherVersion;
|
|
use App\Models\Game\Matchmaking\Game;
|
|
use App\Models\Game\Matchmaking\QueuedPlayer;
|
|
use DB;
|
|
use Illuminate\Support\Facades\Cache;
|
|
use Illuminate\Support\Facades\Response;
|
|
|
|
class StatisticsController extends Controller
|
|
{
|
|
const CACHE_KEY = 'online-players-response';
|
|
|
|
public function getOnlinePlayers() {
|
|
return Cache::remember(static::CACHE_KEY, 10, function () {
|
|
$queuedHunters = QueuedPlayer::whereSide(MatchmakingSide::Hunter)->count();
|
|
$queuedRunners = QueuedPlayer::whereSide(MatchmakingSide::Runner)->count();
|
|
$inGamePlayers = DB::table('game_user')
|
|
->join('games', 'game_user.game_id', '=', 'games.id')
|
|
->whereIn('games.status', [
|
|
MatchStatus::Closed,
|
|
MatchStatus::Opened,
|
|
MatchStatus::Created,
|
|
])->count();
|
|
|
|
return Response::json(new OnlinePlayersResponse(
|
|
$queuedRunners,
|
|
$queuedHunters,
|
|
$inGamePlayers,
|
|
));
|
|
});
|
|
}
|
|
|
|
public function getLauncherVersion(): ?string {
|
|
return json_encode(LauncherVersion::get()?->launcherVersion);
|
|
}
|
|
|
|
public function getLauncherMessage(): ?string {
|
|
return json_encode(LauncherMessage::getMessage());
|
|
}
|
|
}
|