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

namespace ERPCore.Services.Interfaces;

/// <summary>Branch master business logic (docs/13-BACKEND-HRM-API.md §2).</summary>
public interface IBranchService
{
    Task<PagedResponse<BranchDto>> ListAsync(PageQuery query, EntityStatus? status, CancellationToken ct = default);
    Task<ETagged<BranchDto>?> GetAsync(int branchId, CancellationToken ct = default);
    Task<ETagged<BranchDto>> CreateAsync(CreateBranchRequest request, CancellationToken ct = default);
    Task<ETagged<BranchDto>> UpdateAsync(int branchId, UpdateBranchRequest request, uint expectedRowVersion, CancellationToken ct = default);
    Task SetStatusAsync(int branchId, EntityStatus status, CancellationToken ct = default);
}
