Foo Developer created FINERACT-2702:
---------------------------------------

             Summary: /v2/clients/search performs case-sensitive matching 
instead of case-insensitive 
                 Key: FINERACT-2702
                 URL: https://issues.apache.org/jira/browse/FINERACT-2702
             Project: Apache Fineract
          Issue Type: Bug
          Components: Client
            Reporter: Foo Developer
            Assignee: Foo Developer


h3. Summary

The client search endpoint ({{{}GET /v2/clients/search{}}}) builds its query 
predicates using case-sensitive {{LIKE}} comparisons, so a search term that 
differs only in letter case from the stored value fails to match.
h3. Steps to Reproduce
 # Create a client with, e.g., display name {{{}John Smith{}}}.
 # Call {{{}GET /v2/clients/search?searchText=john{}}}.
 # Observe that the client is not returned, even though {{john}} is a 
case-insensitive substring of {{{}John Smith{}}}.

h3. Expected Behavior

Search should match regardless of case, consistent with how users typically 
expect free-text search to behave (and consistent with account number, mobile 
number, external ID, and identifier document key fields, which have the same 
issue).
h3. Actual Behavior

Only exact-case substring matches are returned, since the predicates in 
{{SearchingClientRepositoryImpl.searchByText}} compare the raw {{searchText}} 
against {{{}accountNumber{}}}, {{{}displayName{}}}, {{{}externalId{}}}, 
{{{}mobileNo{}}}, and {{identifiers.documentKey}} without any case 
normalization.
h3. Suggested Fix

Lower-case the search term and wrap each compared field with 
{{CriteriaBuilder.lower(...)}} (or the {{LOWER()}} SQL function, for fields 
whose JPA path type requires {{{}cb.function("LOWER", ...){}}}), so the 
{{LIKE}} comparison is case-insensitive on both sides.
h3. Affected File

{{fineract-core/src/main/java/org/apache/fineract/portfolio/client/domain/search/SearchingClientRepositoryImpl.java}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to