using CashLineERP.Contracts.Customers;

namespace CashLineERP.Application.Customers;

public interface ICustomerProfileService
{
    IReadOnlyCollection<CustomerProfileResponse> GetCustomerProfiles(bool activeOnly = false, string? statusCode = null, long? businessPartyId = null, string? classificationCode = null);

    CustomerProfileResponse? GetCustomerProfile(long customerProfileId);

    CustomerProfileResponse CreateCustomerProfile(CreateCustomerProfileRequest request);

    CustomerProfileResponse SubmitCustomerProfile(long customerProfileId, long actorUserId);

    CustomerProfileResponse ApproveCustomerProfile(long customerProfileId, long actorUserId);

    CustomerProfileResponse ReturnCustomerProfile(long customerProfileId, long actorUserId, ReviewCustomerProfileRequest request);

    CustomerProfileResponse RejectCustomerProfile(long customerProfileId, long actorUserId, ReviewCustomerProfileRequest request);

    CustomerProfileResponse HoldCustomerProfile(long customerProfileId, long actorUserId, HoldCustomerProfileRequest request);

    CustomerProfileResponse ReopenCustomerProfile(long customerProfileId, long actorUserId, ReopenCustomerProfileRequest request);

    CustomerProfileResponse ActivateCustomerProfile(long customerProfileId, long actorUserId);
}
