using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using ROLAC.API.Authorization; using ROLAC.API.DTOs.Logging; using ROLAC.API.Entities.Logging; using ROLAC.API.Services.Logging; namespace ROLAC.API.Controllers; [ApiController] [Route("api/system-logs")] [Authorize] public class SystemLogsController : ControllerBase { private readonly ISystemLogQueryService _svc; public SystemLogsController(ISystemLogQueryService svc) => _svc = svc; [HttpGet] [HasPermission(Modules.SystemLogs, PermissionActions.Read)] public async Task GetPaged([FromQuery] SystemLogQuery query) => Ok(await _svc.GetPagedAsync(query)); [HttpGet("{id:long}")] [HasPermission(Modules.SystemLogs, PermissionActions.Read)] public async Task GetById(long id) { var dto = await _svc.GetByIdAsync(id); return dto is null ? NotFound() : Ok(dto); } /// All six severities, so the UI can offer every filter option regardless of data. [HttpGet("levels")] [HasPermission(Modules.SystemLogs, PermissionActions.Read)] public IActionResult GetLevels() => Ok(Enum.GetNames()); }