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

namespace ERPCore.Services.Interfaces;

/// <summary>Staff document-type catalog ("DocType") business logic (docs/13-BACKEND-HRM-API.md §2).</summary>
public interface IHrDocumentTypeService
{
    Task<PagedResponse<HrDocumentTypeDto>> ListAsync(PageQuery query, EntityStatus? status, CancellationToken ct = default);
    Task<ETagged<HrDocumentTypeDto>?> GetAsync(int hrDocumentTypeId, CancellationToken ct = default);
    Task<ETagged<HrDocumentTypeDto>> CreateAsync(CreateHrDocumentTypeRequest request, CancellationToken ct = default);
    Task<ETagged<HrDocumentTypeDto>> UpdateAsync(int hrDocumentTypeId, UpdateHrDocumentTypeRequest request, uint expectedRowVersion, CancellationToken ct = default);
    Task SetStatusAsync(int hrDocumentTypeId, EntityStatus status, CancellationToken ct = default);
}
