using TeleWave.Domain.Library;

namespace TeleWave.Application.Library.Collections;

/// <summary>Коллекция в списке: без состава, но со сводкой — сколько частей и сколько в них единиц
/// воспроизведения (у сериала внутри коллекции их больше одной).</summary>
public sealed record CollectionSummaryDto(
    Guid Id,
    string Name,
    string? Description,
    Guid? PosterImageId,
    int ItemCount,
    int UnitCount,
    DateTimeOffset CreatedAt
);

/// <summary>Позиция коллекции с данными шоу — чтобы список правился без второго запроса.</summary>
public sealed record CollectionItemDto(
    Guid ShowId,
    int Position,
    string ShowName,
    ShowKind ShowKind,
    ShowAudience? ShowAudience,
    int EpisodeCount,
    int? Year,
    Guid? PosterImageId
);

public sealed record CollectionDto(
    Guid Id,
    string Name,
    string? Description,
    Guid? PosterImageId,
    DateTimeOffset CreatedAt,
    IReadOnlyList<CollectionItemDto> Items
);

/// <summary>Коллекция, в которую входит шоу — для блока «входит в коллекции» на экране шоу.</summary>
public sealed record ShowCollectionRefDto(Guid Id, string Name, int Position);
