mirror of https://github.com/ErsatzTV/ErsatzTV.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.0 KiB
55 lines
2.0 KiB
using System.Threading.Channels; |
|
using ErsatzTV.Application; |
|
using ErsatzTV.Application.Channels; |
|
using ErsatzTV.Application.Playouts; |
|
using ErsatzTV.Core.Api.Channels; |
|
using ErsatzTV.Core.Scheduling; |
|
using ErsatzTV.Filters; |
|
using MediatR; |
|
using Microsoft.AspNetCore.Mvc; |
|
|
|
namespace ErsatzTV.Controllers.Api; |
|
|
|
[ApiController] |
|
public class ChannelController(ChannelWriter<IBackgroundServiceRequest> workerChannel, IMediator mediator) |
|
{ |
|
[HttpGet("/api/channels")] |
|
[V2ApiActionFilter] |
|
public async Task<List<ChannelResponseModel>> GetAll() => await mediator.Send(new GetAllChannelsForApi()); |
|
|
|
[HttpPost("/api/channels/{channelNumber}/playout/reset")] |
|
[Tags("Channels")] |
|
[EndpointSummary("Reset channel playout")] |
|
[EndpointGroupName("general")] |
|
public async Task<IActionResult> ResetPlayout(string channelNumber) |
|
{ |
|
Option<int> maybePlayoutId = await mediator.Send(new GetPlayoutIdByChannelNumber(channelNumber)); |
|
foreach (int playoutId in maybePlayoutId) |
|
{ |
|
await workerChannel.WriteAsync(new BuildPlayout(playoutId, PlayoutBuildMode.Reset)); |
|
return new OkResult(); |
|
} |
|
|
|
return new NotFoundResult(); |
|
} |
|
|
|
// for debugging by fast-forwarding a playout |
|
// [HttpPost("/api/channels/{channelNumber}/playout/continue")] |
|
// public async Task<IActionResult> ContinuePlayout(string channelNumber, [FromQuery] int days = 1) |
|
// { |
|
// Option<int> maybePlayoutId = await mediator.Send(new GetPlayoutIdByChannelNumber(channelNumber)); |
|
// foreach (int playoutId in maybePlayoutId) |
|
// { |
|
// DateTimeOffset start = DateTimeOffset.Now; |
|
// for (int i = 0; i < 24 * days; i++) |
|
// { |
|
// await workerChannel.WriteAsync(new BuildPlayout(playoutId, PlayoutBuildMode.Continue, start)); |
|
// start += TimeSpan.FromHours(1); |
|
// } |
|
// |
|
// return new OkResult(); |
|
// } |
|
// |
|
// return new NotFoundResult(); |
|
// } |
|
}
|
|
|