54 lines
1.5 KiB
PHP
54 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\Tenant;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\TenantNotificationLog;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class NotificationLogController extends Controller
|
|
{
|
|
public function index(Request $request): JsonResponse
|
|
{
|
|
$tenant = $request->attributes->get('tenant') ?? $request->user()?->tenant;
|
|
|
|
if (! $tenant) {
|
|
return response()->json([
|
|
'error' => [
|
|
'code' => 'tenant_context_missing',
|
|
'title' => 'Tenant context missing',
|
|
'message' => 'Unable to resolve tenant for notification logs.',
|
|
],
|
|
], 403);
|
|
}
|
|
|
|
$query = TenantNotificationLog::query()
|
|
->where('tenant_id', $tenant->id)
|
|
->latest();
|
|
|
|
if ($type = $request->query('type')) {
|
|
$query->where('type', $type);
|
|
}
|
|
|
|
if ($status = $request->query('status')) {
|
|
$query->where('status', $status);
|
|
}
|
|
|
|
$perPage = (int) $request->query('per_page', 20);
|
|
$perPage = max(1, min($perPage, 100));
|
|
|
|
$logs = $query->paginate($perPage);
|
|
|
|
return response()->json([
|
|
'data' => $logs->items(),
|
|
'meta' => [
|
|
'current_page' => $logs->currentPage(),
|
|
'last_page' => $logs->lastPage(),
|
|
'per_page' => $logs->perPage(),
|
|
'total' => $logs->total(),
|
|
],
|
|
]);
|
|
}
|
|
}
|