josehernandezfintecheandomx commented on code in PR #2783:
URL: https://github.com/apache/fineract/pull/2783#discussion_r1044479372


##########
fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java:
##########
@@ -370,77 +305,141 @@ public Collection<ClientData> 
retrieveActiveClientMembersOfGroup(final Long grou
                 hierarchySearchString, groupId, 
ClientStatus.ACTIVE.getValue());
     }
 
-    private static final class ClientMembersOfGroupMapper implements 
RowMapper<ClientData> {
+    private String buildSqlStringFromClientCriteria(String schemaSql, final 
SearchParameters searchParameters, List<Object> paramList) {
+
+        String sqlSearch = searchParameters.getSqlSearch();
+        final Long officeId = searchParameters.getOfficeId();
+        final String externalId = searchParameters.getExternalId();
+        final String displayName = searchParameters.getName();
+        final String firstname = searchParameters.getFirstname();
+        final String lastname = searchParameters.getLastname();
+        final String status = searchParameters.getStatus();
+
+        String extraCriteria = "";
+        if (sqlSearch != null) {
+            sqlSearch = sqlSearch.replaceAll(" display_name ", " 
c.display_name ");
+            sqlSearch = sqlSearch.replaceAll("display_name ", "c.display_name 
");
+            extraCriteria = " and (" + sqlSearch + ")";
+            this.columnValidator.validateSqlInjection(schemaSql, sqlSearch);
+        }
+
+        if (officeId != null) {
+            extraCriteria += " and c.office_id = ? ";
+            paramList.add(officeId);
+        }
+
+        if (externalId != null) {
+            paramList.add(externalId);
+            extraCriteria += " and c.external_id like ? ";
+        }
+
+        if (displayName != null) {
+            // extraCriteria += " and concatcoalesce(c.firstname, ''),
+            // if(c.firstname > '',' ', '') , coalesce(c.lastname, '')) like "
+            paramList.add("%" + displayName + "%");
+            extraCriteria += " and c.display_name like ? ";
+        }
+
+        if (status != null) {
+            ClientStatus clientStatus = ClientStatus.fromString(status);
+            extraCriteria += " and c.status_enum = " + 
clientStatus.getValue().toString() + " ";
+        }
+
+        if (firstname != null) {
+            paramList.add(firstname);
+            extraCriteria += " and c.firstname like ? ";
+        }
+
+        if (lastname != null) {
+            paramList.add(lastname);
+            extraCriteria += " and c.lastname like ? ";
+        }
+
+        if (searchParameters.isScopedByOfficeHierarchy()) {
+            paramList.add(searchParameters.getHierarchy() + "%");
+            extraCriteria += " and o.hierarchy like ? ";
+        }
+
+        if (searchParameters.isOrphansOnly()) {
+            extraCriteria += " and c.id NOT IN (select client_id from 
m_group_client) ";
+        }
+
+        if (StringUtils.isNotBlank(extraCriteria)) {
+            extraCriteria = extraCriteria.substring(4);
+        }
+        return extraCriteria;
+    }
+
+    private static final class ClientToDataMapper implements 
RowMapper<ClientData> {
 
         private final String schema;
 
-        ClientMembersOfGroupMapper() {
-            final StringBuilder sqlBuilder = new StringBuilder(200);
+        ClientToDataMapper() {
+            final StringBuilder builder = new StringBuilder(400);

Review Comment:
   There are different (old) Client mapper for covering different flows, 
individual client, group client, etc. In this case It was not renamed



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@fineract.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to