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

namespace ERPCore.Services.Interfaces;

public interface ICustomerService
{
    Task<PagedResponse<CustomerDto>> ListAsync(PageQuery query, EntityStatus? status, CustomerType? customerType, CancellationToken ct = default);
    Task<ETagged<CustomerDto>?> GetAsync(int customerId, CancellationToken ct = default);
    Task<ETagged<CustomerDto>> CreateAsync(CreateCustomerRequest request, CancellationToken ct = default);
    Task<ETagged<CustomerDto>> UpdateAsync(int customerId, UpdateCustomerRequest request, uint expectedRowVersion, CancellationToken ct = default);
    Task SetStatusAsync(int customerId, EntityStatus status, CancellationToken ct = default);
}
