List.cs 985 B

12345678910111213141516171819202122232425262728293031
  1. using Web.Api.Common;
  2. using Web.Api.Extensions;
  3. using Domain.Entities.Notifications.ValueObject;
  4. using MediatR;
  5. using System.Security.Claims;
  6. namespace Web.Api.Endpoints.Notification;
  7. /// <summary>알림 목록</summary>
  8. internal sealed class List : IEndpoint
  9. {
  10. public void MapEndpoint(IEndpointRouteBuilder app)
  11. {
  12. /// 알림 목록 (타입별 필터, 페이징. NotificationBell + 알림 페이지용)
  13. app.MapGet("api/notification/list", async (
  14. NotificationType? type,
  15. int page,
  16. ushort perPage,
  17. ClaimsPrincipal user,
  18. ISender sender,
  19. CancellationToken ct
  20. ) => {
  21. var memberID = user.GetRequiredMemberID();
  22. var data = await sender.Send(new Application.Features.Api.Notification.GetList.Query(memberID, type, page, perPage), ct);
  23. return ApiResponse.Ok(data);
  24. })
  25. .WithTags("Notification")
  26. .RequireAuthorization();
  27. }
  28. }