using OmsorgCore.Domain.Common;

namespace OmsorgCore.Domain.Entities;

/// <summary>
/// Dokumentenarchiv-Eintrag (FR-MA-3) — Bezug zu einer beliebigen Kern-Entität über
/// <see cref="EntityType"/>/<see cref="EntityId"/> statt eines festen FK, damit künftig auch
/// Facility-/Contract-/Order-Dokumente ohne neue Migration möglich sind. Die Datei-Bytes selbst
/// liegen auf dem Dateisystem (siehe IDocumentStorage) — hier nur Metadaten + Pfad.
/// </summary>
public class Document : AuditableEntity
{
    public string EntityType { get; set; } = string.Empty;
    public Guid EntityId { get; set; }

    public string Category { get; set; } = string.Empty;
    public string FileName { get; set; } = string.Empty;
    public string ContentType { get; set; } = string.Empty;
    public long SizeBytes { get; set; }
    public string StorageKey { get; set; } = string.Empty;
    public string? Description { get; set; }

    public Guid UploadedByUserId { get; set; }
    public User? UploadedByUser { get; set; }
}
