namespace CashLineERP.Application.Parties;

public interface IBusinessPartyRepository
{
    IReadOnlyCollection<BusinessPartyView> GetParties(string? partyType = null);

    BusinessPartyView Create(CreateBusinessPartyCommand command);

    bool ExistsActiveDuplicate(string partyType, string? taxRegistrationNumber, string? email, string? mobileNumber, long? excludingPartyId = null);

    bool ExistsActiveFirmNationalIdDuplicate(string firmNationalId, long? excludingPartyId = null);

    BusinessPartyView SetFirmNationalId(long partyId, string? firmNationalId, long actorUserId);

    IReadOnlyCollection<BusinessPartyView> GetActiveClientsMissingFirmNationalId();

    IReadOnlyCollection<BusinessPartyComplianceDocumentView> GetComplianceDocuments(long partyId);

    BusinessPartyComplianceDocumentView RecordComplianceDocument(long actorUserId, RecordBusinessPartyComplianceDocumentCommand command);
}
