using Microsoft.AspNetCore.Mvc; using Nexus.Api.Repositories; namespace Nexus.Api.Controllers; [ApiController] [Route("api/v1/activity")] public class ActivityController(IActivityRepository activityRepo) : ControllerBase { [HttpGet] public async Task Get( [FromQuery] string? type, [FromQuery] string? sort, [FromQuery] int? page, [FromQuery] int? pageSize, CancellationToken ct) { var take = Math.Clamp(pageSize ?? 20, 1, 200); var pageNum = Math.Max(page ?? 1, 1); var (items, totalCount) = await activityRepo.GetPagedAsync(type, sort, pageNum, take, ct); return Results.Ok(new { items = items.Select(x => new { x.Id, x.Type, x.Message, at = x.CreatedAt }), totalCount, page = pageNum, pageSize = take, totalPages = (int)Math.Ceiling((double)totalCount / take) }); } }