@@ -87,6 +87,53 @@ public class ChannelController(ChannelWriter<IBackgroundServiceRequest> workerCh
|
||||
return result.ToDeletedResult();
|
||||
}
|
||||
|
||||
[HttpPost("/api/channels/bulk/renumber")]
|
||||
[Tags("Channels")]
|
||||
[EndpointSummary("Renumber channels")]
|
||||
[EndpointGroupName("general")]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status422UnprocessableEntity)]
|
||||
public async Task<IActionResult> BulkRenumber(
|
||||
[Required] [FromBody] BulkRenumberChannelsRequest request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
Option<BaseError> result = await mediator.Send(request.ToCommand(), cancellationToken);
|
||||
return result.Match<IActionResult>(
|
||||
Some: error => error.ToErrorResult(),
|
||||
None: () => new NoContentResult());
|
||||
}
|
||||
|
||||
[HttpPost("/api/channels/bulk/group")]
|
||||
[Tags("Channels")]
|
||||
[EndpointSummary("Move channels to a group")]
|
||||
[EndpointGroupName("general")]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status422UnprocessableEntity)]
|
||||
public async Task<IActionResult> BulkMoveToGroup(
|
||||
[Required] [FromBody] BulkMoveChannelsToGroupRequest request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
Either<BaseError, Unit> result = await mediator.Send(request.ToCommand(), cancellationToken);
|
||||
return result.ToDeletedResult();
|
||||
}
|
||||
|
||||
[HttpPost("/api/channels/bulk/delete")]
|
||||
[Tags("Channels")]
|
||||
[EndpointSummary("Delete channels")]
|
||||
[EndpointGroupName("general")]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
|
||||
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status422UnprocessableEntity)]
|
||||
public async Task<IActionResult> BulkDelete(
|
||||
[Required] [FromBody] BulkDeleteChannelsRequest request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
Either<BaseError, Unit> result = await mediator.Send(request.ToCommand(), cancellationToken);
|
||||
return result.ToDeletedResult();
|
||||
}
|
||||
|
||||
[HttpPost("/api/channels/{channelNumber}/playout/reset")]
|
||||
[Tags("Channels")]
|
||||
[EndpointSummary("Reset channel playout")]
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using ErsatzTV.Application.Channels;
|
||||
|
||||
namespace ErsatzTV.Controllers.Api.Requests;
|
||||
|
||||
public record BulkRenumberChannelRequest(int Id, string Number);
|
||||
|
||||
public record BulkRenumberChannelsRequest(List<BulkRenumberChannelRequest> Channels)
|
||||
{
|
||||
public UpdateChannelNumbers ToCommand() =>
|
||||
new(Channels.Select(c => new ChannelSortViewModel { Id = c.Id, Number = c.Number }).ToList());
|
||||
}
|
||||
|
||||
public record BulkMoveChannelsToGroupRequest(List<int> ChannelIds, string Group)
|
||||
{
|
||||
public BulkMoveChannelsToGroup ToCommand() => new(ChannelIds, Group);
|
||||
}
|
||||
|
||||
public record BulkDeleteChannelsRequest(List<int> ChannelIds)
|
||||
{
|
||||
public BulkDeleteChannels ToCommand() => new(ChannelIds);
|
||||
}
|
||||
Reference in New Issue
Block a user