namespace Netina.Api.Controllers; public class UserAddressController : ICarterModule { public void AddRoutes(IEndpointRouteBuilder app) { var group = app.NewVersionedApi("UserAddress") .MapGroup("api/user/address"); group.MapGet("", GetAddressesAsync) .WithDisplayName("Get Addresses") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser()) .HasApiVersion(1.0); group.MapPost("", PostAddressesAsync) .WithDisplayName("Post Addresses") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser()) .HasApiVersion(1.0); group.MapDelete("{id}", DeleteAddressesAsync) .WithDisplayName("Delete Address") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser()) .HasApiVersion(1.0); } public async Task GetAddressesAsync([FromServices] IMediator mediator,CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new GetUserAddressesQuery(null), cancellationToken)); public async Task PostAddressesAsync([FromBody] CreateAddressCommand request, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(request, cancellationToken)); public async Task DeleteAddressesAsync(Guid id, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new DeleteAddressCommand(id), cancellationToken)); }