using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Nuuru.Server.DTOs.Members; using Nuuru.Server.Services; namespace Nuuru.Server.Controllers { [ApiController] [Route("api/[controller]")] public class MembersController : ControllerBase { private readonly IMemberService _memberService; private readonly ILogger _logger; public MembersController( IMemberService memberService, ILogger logger) { _memberService = memberService; _logger = logger; } /// /// Get paginated list of members with optional search and sorting /// [HttpGet] [AllowAnonymous] public async Task GetMembers( [FromQuery] string? search, [FromQuery] MemberSortType sort = MemberSortType.Newest, [FromQuery] SortDirection direction = SortDirection.Descending, [FromQuery] TimePeriod period = TimePeriod.AllTime, [FromQuery] int page = 1, [FromQuery] int pageSize = 20) { try { var result = await _memberService.GetMembersAsync(search, sort, direction, period, page, pageSize); return Ok(result); } catch (Exception ex) { _logger.LogError(ex, "Error fetching members"); return StatusCode(500, new { error = "Failed to fetch members" }); } } } }