namespace HiVakil.Api.Controller; public class BlogCategoryController : ICarterModule { public void AddRoutes(IEndpointRouteBuilder app) { var group = app.NewVersionedApi("BlogCategory").MapGroup("api/blog/category"); group.MapGet("", GetBlogCategoriesAsync) .WithDisplayName("GetBlogCategories") .HasApiVersion(1.0); group.MapGet("{id}", GetBlogCategoryAsync) .WithDisplayName("GetBlogCategory") .HasApiVersion(1.0); group.MapPost("", CreateBlogCategoryAsync) .WithDisplayName("CreateBlogCategory") .RequireAuthorization(builder=>builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission,ApplicationPermission.ManageBlogCategories)) .HasApiVersion(1.0); group.MapPut("", UpdateBlogCategoryAsync) .WithDisplayName("UpdateBlogCategory") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogCategories)) .HasApiVersion(1.0); group.MapDelete("{id}", DeleteBlogCategoryAsync) .WithDisplayName("DeleteBlogCategory") .RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManageBlogCategories)) .HasApiVersion(1.0); } private async Task GetBlogCategoriesAsync([FromQuery] int page, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new GetBlogCategoriesQuery(Page: page), cancellationToken)); private async Task GetBlogCategoryAsync(Guid id, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new GetBlogCategoryQuery(Id: id), cancellationToken)); private async Task CreateBlogCategoryAsync(CreateBlogCategoryCommand request, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(request, cancellationToken)); private async Task UpdateBlogCategoryAsync(UpdateBlogCategoryCommand request, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(request, cancellationToken)); private async Task DeleteBlogCategoryAsync(Guid id, [FromServices] IMediator mediator, CancellationToken cancellationToken) => TypedResults.Ok(await mediator.Send(new DeleteBlogCategoryCommand(Id: id), cancellationToken)); }