using Deal.Modules.Cards.Application.Abstractions;
namespace Deal.Modules.Cards.Application.Models;
///
/// Агрегат карточки
///
public sealed class Card :
ICard,
IContentCard,
IBudgetedCard,
IContactCard,
IAttributedCard,
ICommentableCard,
ILinkCard,
IFileCard,
ITzCard,
ITraceableCard,
IRemindableCard,
ILocatedCard
{
///
public string Id { get; init; } = string.Empty;
///
public string Title { get; init; } = string.Empty;
///
public ISource Source { get; init; } = null!;
// ── Модуль «содержимое» ──
///
public string Summary { get; init; } = string.Empty;
// ── Модуль «бюджет» ──
///
public CardBudget? Budget { get; init; }
// ── Модуль «контакты» ──
///
public IReadOnlyList Contacts { get; init; } = Array.Empty();
///
public string ContactText { get; init; } = string.Empty;
// ── Модуль «атрибуты» ──
///
public IReadOnlyList Attributes { get; init; } = Array.Empty();
// ── Модуль «комментарии» ──
///
public IReadOnlyList Comments { get; init; } = Array.Empty();
// ── Модуль «ссылки» ──
///
public IReadOnlyList Links { get; init; } = Array.Empty();
// ── Модуль «файлы» ──
///
public IReadOnlyList Files { get; init; } = Array.Empty();
///
public string TzText { get; init; } = string.Empty;
// ── Модуль «история движения» ──
///
public IReadOnlyList History { get; init; } = Array.Empty();
// ── Модуль «напоминание» ──
///
public CardReminder? Reminder { get; init; }
// ── Модуль «размещение» ──
///
public string ContainerId { get; init; } = CardIds.Inbox;
///
public string? PrevContainerId { get; init; }
///
public bool IsNew { get; init; } = true;
}