using CashLineERP.Contracts.Documents;

namespace CashLineERP.Application.Documents;

public interface IDocumentStorageService
{
    IReadOnlyCollection<DocumentAttachmentResponse> GetDocuments(
        string? moduleCode = null,
        string? entityName = null,
        long? entityId = null,
        string? lifecycleStatusCode = null,
        string? attachmentCategoryCode = null);

    DocumentAttachmentResponse? GetDocument(long documentLinkId);

    DocumentAttachmentResponse CreateDocument(long actorUserId, CreateDocumentAttachmentRequest request);

    DocumentAttachmentResponse ArchiveDocument(long documentLinkId, long actorUserId, ArchiveDocumentAttachmentRequest request);

    DocumentAttachmentResponse SupersedeDocument(long documentLinkId, long actorUserId, SupersedeDocumentAttachmentRequest request);
}
