namespace GestionaDenuncias.Shared.Models;

public sealed record ReportDto
{
    public string Id { get; init; } = string.Empty;
    public int? Progressive { get; init; }
    public string? ContextId { get; init; }
    public string? ContextName { get; init; }
    public string? CreationDate { get; init; }
    public string? UpdateDate { get; init; }
    public string? ExpirationDate { get; init; }
    public string? ReminderDate { get; init; }
    public string? AccessDate { get; init; }
    public string? LastAccess { get; init; }
    public string? WhistleblowerLastAccess { get; init; }
    public string? Status { get; init; }
    public bool Updated { get; init; }
    public bool? Accessible { get; init; }
    public string? Label { get; init; }
    public bool ActivityAnalyzed { get; init; }
    public string? CitizenLastActivity { get; init; }
    public bool CitizenHasNewActivity { get; init; }
    public bool CitizenHasNewComment { get; init; }
    public bool CitizenHasNewFile { get; init; }
    public string? ReceiverLastActivity { get; init; }
    public bool ReceiverHasNewActivity { get; init; }
    public string? ReceiverLastActivityAuthorId { get; init; }
    public string? ReceiverLastActivityAuthorName { get; init; }
    public bool DownloadedByCurrentUser { get; init; }
    public bool DownloadedByAnotherUser { get; init; }
    public string? LastDownloadedByUsername { get; init; }
    public string? LastDownloadedAt { get; init; }
    public string? LastGestionaUploadAt { get; init; }
    public bool AlreadyImported { get; init; }
    public bool AlreadyInGestiona { get; init; }
    public string? OwnerUsername { get; init; }
    public bool OwnedByCurrentUser { get; init; }
    public bool AccessibleByWorkGroup { get; init; }
    public bool RequiresOwnerConfirmation { get; init; }
    public IReadOnlyList<string> OwnerWorkGroups { get; init; } = [];
    public string? TrackingNote { get; init; }
}
