add Method hasMatches - Checks if there are any matches for a given entity type.
add Method hasAnyMatches - Checks if there are any matches across all entity types (if search for all types)
changed findByPhone\findByEmail - requies EntityType or null
add Method getMatchId - return match by sort
add Method getMatchIdByPriority - return first match by EntityType priority and sort
integration tests
Docs
При использовании методов findByPhone\findByEmail - нужно обязательно передавать EntityType или null если мы явно планируем искать по всем видам сущностей.
В прошлой версии не требовало явно указывать. имхо так правильнее - чтобы явно было понятно какой результат будет в итоге.
Оставил существующие методы "под контакты" для обратной совместимости
hasDuplicateContacts
hasOneContact
getContactsId
Но в принципе со всеми сущностями можно работать через
hasDuplicates
hasOne
getEntityIds
Для единообразия - можно конечно для каждой сущности по 3 метода дописать.. но не знаю нужно ли
Общий смысл доработок:
Поддержка всех видов сущностей
Поддержка расширенной работы с результатами. Несмотря что методы вроде как предназначены для поисков дубликатов, по факту это единственные методы которые позволяют легко найти любую сущность по контакту-емейлу, не оглядываясь на формат записи номера в Б24. Как следствие метод используются в скриптах обработки лидов, когда нужна проверка "А есть ли у нас уже сущность с такими контактами"
Как следствие - нужны способы проверить есть ли сущность, быстро получить ID сущности, а также задать приоритетность поиска. В разных сценариях бывает нужна первая\последняя сущность.
Например стандартная логика для телефонии - поиск по приоритету лид-контакт-компания с возвратом последнего найденного совпадения. В текущем классе это возможно через getMatchIdByPriority с сортировкой desc
Закомментированы тесты для компаний, до появления сервиса по компаниям. Не стал городить через core
Не вкурил как сделать чтобы phpunit в vscode отображал результат теста по каждому кейсу из дата-провайдера в виде отдельной строки теста. Может это только в vscode так, а может я чет не понял)
При использовании методов findByPhone\findByEmail - нужно обязательно передавать EntityType или null если мы явно планируем искать по всем видам сущностей. В прошлой версии не требовало явно указывать. имхо так правильнее - чтобы явно было понятно какой результат будет в итоге.
Оставил существующие методы "под контакты" для обратной совместимости hasDuplicateContacts hasOneContact getContactsId
Но в принципе со всеми сущностями можно работать через hasDuplicates hasOne getEntityIds
Для единообразия - можно конечно для каждой сущности по 3 метода дописать.. но не знаю нужно ли
Например стандартная логика для телефонии - поиск по приоритету лид-контакт-компания с возвратом последнего найденного совпадения. В текущем классе это возможно через getMatchIdByPriority с сортировкой desc