using PnvPanel.Api.Common; using PnvPanel.Application.Admin.Audit; using PnvPanel.Application.Admin.Stats; using LiteCqrs; using PnvPanel.Application.Common.Models; using PnvPanel.Domain.Audit; using PnvPanel.Infrastructure.Identity; namespace PnvPanel.Api.Endpoints; public static class AdminStatsEndpoints { public static IEndpointRouteBuilder MapAdminStatsEndpoints(this IEndpointRouteBuilder app) { var admin = app.MapGroup("/api/admin") .WithTags("Admin.Stats") .RequireAuthorization(policy => policy.RequireRole(RoleNames.Admin)); admin.MapGet("/stats", GetStats).Produces(); admin.MapGet("/audit", GetAudit).Produces>(); return app; } private static async Task GetStats(ISender sender, CancellationToken cancellationToken) { var result = await sender.Send(new GetStatsQuery(), cancellationToken); return result.ToHttpResult(); } private static async Task GetAudit( int page, int pageSize, AuditSource? source, string? targetType, string? action, ISender sender, CancellationToken cancellationToken ) { var query = new ListAuditLogsQuery( page <= 0 ? 1 : page, pageSize <= 0 ? 50 : pageSize, source, targetType, action ); var result = await sender.Send(query, cancellationToken); return result.ToHttpResult(); } }