namespace Netina.Api.Controllers; public class SubProductController : ICarterModule { public virtual void AddRoutes(IEndpointRouteBuilder app) { var group = app.NewVersionedApi("SubProduct") .MapGroup($"api/sub/product"); group.MapPost("", PostAsync) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) .WithDisplayName("Create SubProduct") .HasApiVersion(1.0); group.MapPut("", PutAsync) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) .WithDisplayName("Update SubProduct") .HasApiVersion(1.0); group.MapDelete("{id}", DeleteAsync) .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogs)) .WithDisplayName("Delete SubProduct") .HasApiVersion(1.0); } // POST:Create Entity private async Task PostAsync([FromBody] CreateSubProductCommand request, IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(request, cancellationToken)); // PUT:Update Entity private async Task PutAsync([FromBody] UpdateSubProductCommand request, IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(request, cancellationToken)); // DELETE:Delete Entity private async Task DeleteAsync(Guid id, IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new DeleteSubProductCommand(id), cancellationToken)); }