32 lines
1.1 KiB
C#
32 lines
1.1 KiB
C#
using Management.Data;
|
|
using Management.Security;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System.Text.Json;
|
|
|
|
namespace Management.Controllers.Admin;
|
|
|
|
/// <summary>
|
|
/// Client activity log — queries tbAccessLog (populated by Gateway's AccessLogMiddleware).
|
|
///
|
|
/// ENDPOINTS:
|
|
/// POST /api/admin/client-activity/list - Paginated activity for a specific client
|
|
/// POST /api/admin/client-activity/summary - Request counts + last-seen per client
|
|
/// </summary>
|
|
[ApiController]
|
|
[Route("api/admin/client-activity")]
|
|
public sealed class AdminClientActivityController : AdminControllerBase
|
|
{
|
|
private const string Proc = "spClientActivity";
|
|
|
|
public AdminClientActivityController(SqlService sql, ClientContext client, ILogger<AdminClientActivityController> log)
|
|
: base(sql, client, log) { }
|
|
|
|
[HttpPost("list")]
|
|
public Task<IActionResult> List([FromBody] JsonElement body, CancellationToken ct)
|
|
=> CallProc(Proc, "list", body.ToString(), ct);
|
|
|
|
[HttpPost("summary")]
|
|
public Task<IActionResult> Summary([FromBody] JsonElement body, CancellationToken ct)
|
|
=> CallProc(Proc, "summary", body.ToString(), ct);
|
|
}
|