using LiteCqrs;
using TeleWave.Application.Common.Models;

namespace TeleWave.Application.Library.GetShowUsage;

/// <summary>
/// Где шоу задействовано: группы, коллекции и каналы. Нужно до удаления — сейчас оно просто
/// отбивается ошибкой «используется», не говоря где, и приходится обходить экраны вручную.
/// </summary>
public sealed record GetShowUsageQuery(Guid ShowId) : IQuery<Result<ShowUsageDto>>;

/// <param name="Groups">Группы, в состав которых шоу входит (в том числе по правилу).</param>
/// <param name="Collections">Франшизы, частью которых оно является.</param>
/// <param name="Channels">Каналы, в чьём расписании оно уже стоит.</param>
public sealed record ShowUsageDto(
    IReadOnlyList<ShowUsageRefDto> Groups,
    IReadOnlyList<ShowUsageRefDto> Collections,
    IReadOnlyList<ShowUsageRefDto> Channels
);

/// <param name="ViaRule">Шоу попало в группу правилом, а не явной позицией.</param>
public sealed record ShowUsageRefDto(Guid Id, string Name, bool ViaRule = false);
