42 lines
1.2 KiB
PHP
42 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers\Moderation\Traffic;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Services\Traffic\OnlineVisitorRepository;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\View\View;
|
|
|
|
final class OnlineVisitorsController extends Controller
|
|
{
|
|
public function __construct(private readonly OnlineVisitorRepository $visitors)
|
|
{
|
|
}
|
|
|
|
public function index(): View
|
|
{
|
|
$summary = $this->visitors->summary();
|
|
$visitors = $this->visitors->all();
|
|
$activePages = $this->visitors->activePages();
|
|
|
|
return view('moderation.traffic.online', [
|
|
'summary' => $summary,
|
|
'visitors' => $visitors,
|
|
'activePages' => $activePages,
|
|
'generatedAt' => now()->toIso8601String(),
|
|
'dataUrl' => route('moderation.traffic.online.data'),
|
|
]);
|
|
}
|
|
|
|
public function data(): JsonResponse
|
|
{
|
|
return response()->json([
|
|
'summary' => $this->visitors->summary(),
|
|
'visitors' => $this->visitors->all(),
|
|
'active_pages' => $this->visitors->activePages(),
|
|
'generated_at' => now()->toIso8601String(),
|
|
]);
|
|
}
|
|
} |