josehernandezfintecheandomx commented on code in PR #2783: URL: https://github.com/apache/fineract/pull/2783#discussion_r1046085648
########## 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: The variable never was renamed, Please take a look of the next screenshot to you can see the git diff is getting that difference... <img width="1034" alt="Screenshot 2022-12-12 at 10 46 22" src="https://user-images.githubusercontent.com/44206706/207104028-b577942c-e156-4483-886a-8aa219246d57.png"> -- 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