namespace CashLineERP.Application.Customers;

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

    CustomerProfileDetailView? GetCustomerProfile(long customerProfileId);

    CustomerProfileDetailView Create(CreateCustomerProfileCommand command);

    CustomerProfileDetailView Submit(long customerProfileId, long actorUserId);

    CustomerProfileDetailView Approve(long customerProfileId, long actorUserId);

    CustomerProfileDetailView Return(long customerProfileId, long actorUserId, string reviewNotes);

    CustomerProfileDetailView Reject(long customerProfileId, long actorUserId, string reviewNotes);

    CustomerProfileDetailView Hold(long customerProfileId, long actorUserId, string holdReason);

    CustomerProfileDetailView Reopen(long customerProfileId, long actorUserId, string reopenReason);

    CustomerProfileDetailView Activate(long customerProfileId, long actorUserId);
}
