38 lines
1.7 KiB
C#
38 lines
1.7 KiB
C#
namespace Brizco.Api.Controllers;
|
|
|
|
public class NewsFeedController : ICarterModule
|
|
{
|
|
public void AddRoutes(IEndpointRouteBuilder app)
|
|
{
|
|
var group = app.NewVersionedApi("News")
|
|
.MapGroup("api/news");
|
|
|
|
group.MapGet("", GetEntitiesAsync)
|
|
.WithDisplayName("Get News Feed")
|
|
.HasApiVersion(1.0);
|
|
|
|
group.MapPost("", PostEntitiesAsync)
|
|
.WithDisplayName("Create News Feed")
|
|
.HasApiVersion(1.0);
|
|
|
|
group.MapPut("{id}/pin", ChangePinAsync)
|
|
.WithDisplayName("Change NewsFeed Pin")
|
|
.HasApiVersion(1.0);
|
|
|
|
group.MapDelete("{id}", DeleteEntitiesAsync)
|
|
.WithDisplayName("Delete News Feed")
|
|
.HasApiVersion(1.0);
|
|
}
|
|
|
|
private async Task GetEntitiesAsync([FromQuery] int page, [FromQuery] int? count, [FromServices] IMediator mediator, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await mediator.Send(new GetNewsFeedsQuery(page, count), cancellationToken));
|
|
|
|
private async Task PostEntitiesAsync([FromBody]CreateNewsFeedCommand request, [FromServices] IMediator mediator, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await mediator.Send(request, cancellationToken));
|
|
|
|
private async Task ChangePinAsync([FromRoute] Guid id, [FromQuery]bool isPin, [FromServices] IMediator mediator, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await mediator.Send(new ChangeNewsFeedPinCommand(id,isPin), cancellationToken));
|
|
|
|
private async Task DeleteEntitiesAsync([FromRoute] Guid id, [FromServices] IMediator mediator, CancellationToken cancellationToken)
|
|
=> TypedResults.Ok(await mediator.Send(new DeleteNewsFeedCommand(id), cancellationToken));
|
|
} |