using ERPCore.Domain.Enums;
using ERPCore.Dtos.Hrm;

namespace ERPCore.Services.Interfaces;

/// <summary>Uploaded staff document ("Doc") business logic (docs/13-BACKEND-HRM-API.md §3).</summary>
public interface IEmployeeDocumentService
{
    Task<List<EmployeeDocumentDto>> ListAsync(int employeeId, CancellationToken ct = default);
    Task<EmployeeDocumentDto> UploadAsync(
        int employeeId, UploadEmployeeDocumentRequest request, Stream fileContent, string fileName, string contentType,
        int actorUserId, CancellationToken ct = default);
    Task<(Stream Content, string FileName, string ContentType)> DownloadAsync(int employeeId, int documentId, CancellationToken ct = default);
    Task SetStatusAsync(int employeeId, int documentId, EmployeeDocumentStatus status, CancellationToken ct = default);
}
