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

namespace TeleWave.Application.Library.Collections.AddShowsToCollection;

/// <summary>
/// Отправляет несколько шоу во франшизу разом. Коллекция либо уже есть
/// (<paramref name="CollectionId"/>), либо заводится по имени
/// (<paramref name="NewCollectionName"/>) — иначе на сборку франшизы уходило бы два экрана.
///
/// Порядок добавления — по году выпуска: сиквелы почти всегда идут так, а исключения правятся
/// перетаскиванием в карточке коллекции.
/// </summary>
public sealed record AddShowsToCollectionCommand(
    IReadOnlyList<Guid> ShowIds,
    Guid? CollectionId = null,
    string? NewCollectionName = null
) : ICommand<Result<AddShowsToCollectionResultDto>>;

/// <param name="CollectionId">Куда в итоге сложили — новая коллекция или переданная.</param>
/// <param name="Added">Сколько шоу реально добавлено (уже входящие пропускаются).</param>
public sealed record AddShowsToCollectionResultDto(Guid CollectionId, string Name, int Added);
