84 lines
4.6 KiB
C#
84 lines
4.6 KiB
C#
namespace Netina.Api.Controllers;
|
|
|
|
public class PageController : ICarterModule
|
|
{
|
|
public void AddRoutes(IEndpointRouteBuilder app)
|
|
{
|
|
var group = app.NewVersionedApi("Pages")
|
|
.MapGroup("api/page");
|
|
|
|
group.MapGet("", GetPagesAsync)
|
|
.WithDisplayName("Get Pages")
|
|
.HasApiVersion(1.0)
|
|
.RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewPages, ApplicationPermission.ManagePages));
|
|
|
|
group.MapGet("redirect/check", CheckRedirectedOldLinkAsync)
|
|
.WithDisplayName("Check Redirect OldLink")
|
|
.HasApiVersion(1.0);
|
|
|
|
group.MapGet("deleted/check", CheckDeletedLinkAsync)
|
|
.WithDisplayName("Check Deleted Link")
|
|
.HasApiVersion(1.0);
|
|
|
|
group.MapGet("{id}", GetPageByIdAsync)
|
|
.WithDisplayName("Get Page")
|
|
.HasApiVersion(1.0)
|
|
.RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewPages, ApplicationPermission.ManagePages));
|
|
|
|
group.MapGet("slug/{pageSlug}", GetPageAsync)
|
|
.WithDisplayName("Get Page")
|
|
.HasApiVersion(1.0);
|
|
|
|
group.MapGet("type/{type}", GetPageByTypeAsync)
|
|
.WithDisplayName("Get Page")
|
|
.HasApiVersion(1.0);
|
|
|
|
group.MapPost("", PostPageAsync)
|
|
.WithDisplayName("Post Page")
|
|
.HasApiVersion(1.0)
|
|
.RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManagePages));
|
|
|
|
group.MapPost("", UpdatePageAsync)
|
|
.WithDisplayName("Update Page")
|
|
.HasApiVersion(1.0)
|
|
.RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ManagePages));
|
|
|
|
group.MapDelete("{id}", DeletePageByIdAsync)
|
|
.WithDisplayName("Delete Page")
|
|
.HasApiVersion(1.0)
|
|
.RequireAuthorization(builder => builder.AddAuthenticationSchemes("Bearer").RequireAuthenticatedUser().RequireClaim(CustomClaimType.Permission, ApplicationPermission.ViewPages, ApplicationPermission.ManagePages));
|
|
|
|
}
|
|
|
|
private async Task<IResult> CheckDeletedLinkAsync([FromQuery] string link, [FromServices] IPageService pageService, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await pageService.CheckDeletedAsync(link, cancellationToken));
|
|
|
|
private async Task<IResult> CheckRedirectedOldLinkAsync([FromQuery] string oldUrl, [FromServices] IPageService pageService, CancellationToken cancellationToken)
|
|
=> TypedResults.Content(await pageService.CheckRedirectAsync(oldUrl, cancellationToken));
|
|
|
|
private async Task<IResult> DeletePageByIdAsync([FromRoute]Guid id,[FromServices]IPageService pageService,CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await pageService.DeletePageAsync(id, cancellationToken));
|
|
|
|
public async Task<IResult> GetPagesAsync([FromServices] IPageService pageService, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await pageService.GetPagesAsync(cancellationToken));
|
|
|
|
public async Task<IResult> GetPageByIdAsync(Guid id ,[FromServices] IPageService pageService, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await pageService.GetPageAsync(id: id, cancellationToken: cancellationToken));
|
|
public async Task<IResult> GetPageByTypeAsync(string type, [FromServices] IPageService pageService, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await pageService.GetPageAsync(type: type, cancellationToken: cancellationToken));
|
|
|
|
public async Task<IResult> GetPageAsync(string pageSlug, [FromServices] IPageService pageService, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await pageService.GetPageAsync(pageSlug: pageSlug, cancellationToken: cancellationToken));
|
|
|
|
public async Task<IResult> PostPageAsync([FromBody] PageActionRequestDto page, [FromServices] IPageService pageService, CancellationToken cancellationToken)
|
|
{
|
|
await pageService.CreatePageAsync(page, cancellationToken);
|
|
return TypedResults.Ok();
|
|
}
|
|
|
|
public async Task<IResult> UpdatePageAsync([FromBody] PageActionRequestDto page, [FromServices] IPageService pageService, CancellationToken cancellationToken)
|
|
{
|
|
await pageService.UpdatePageAsync(page, cancellationToken);
|
|
return TypedResults.Ok();
|
|
}
|
|
} |