Api/Netina.Api/Controllers/NewsletterMemberController.cs

24 lines
1.2 KiB
C#

namespace Netina.Api.Controllers;
public class NewsletterMemberController : ICarterModule
{
public void AddRoutes(IEndpointRouteBuilder app)
{
var group = app.NewVersionedApi("Newsletter Members").MapGroup("api/newsletter/member");
group.MapGet("", GetAllMembersAsync)
.WithDisplayName("Get Members")
.HasApiVersion(1.0)
.RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewNewsletterMembers));
group.MapPost("", PostMemberAsync)
.WithDisplayName("Post Member")
.HasApiVersion(1.0);
}
public async Task<IResult> GetAllMembersAsync([FromQuery] int page, [FromServices] IMediator mediator, CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(new GetNewsletterMembersQuery(page), cancellationToken));
public async Task<IResult> PostMemberAsync([FromBody]CreateNewsletterMemberCommand request, [FromServices] IMediator mediator, CancellationToken cancellationToken)
=> TypedResults.Ok(await mediator.Send(request, cancellationToken));
}