diff --git a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java index 279f52610..cea46e1c3 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/infrastructure/core/service/SearchParameters.java @@ -42,14 +42,13 @@ public final class SearchParameters { public static SearchParameters forClients(final String sqlSearch, final Long officeId, final String externalId, final String displayName, final String firstname, final String lastname, final String hierarchy, final Integer offset, - final Integer limit, final String orderBy, final String sortOrder) { + final Integer limit, final String orderBy, final String sortOrder, final Boolean orphansOnly) { final Integer maxLimitAllowed = getCheckedLimit(limit); final Long staffId = null; final String accountNo = null; final Long loanId = null; final Long savingsId = null; - final Boolean orphansOnly = false; return new SearchParameters(sqlSearch, officeId, externalId, displayName, hierarchy, firstname, lastname, offset, maxLimitAllowed, orderBy, sortOrder, staffId, accountNo, loanId, savingsId, orphansOnly); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientsApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientsApiResource.java index cbe6cafc5..7bbc185d9 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/api/ClientsApiResource.java @@ -114,12 +114,13 @@ public class ClientsApiResource { @QueryParam("displayName") final String displayName, @QueryParam("firstName") final String firstname, @QueryParam("lastName") final String lastname, @QueryParam("underHierarchy") final String hierarchy, @QueryParam("offset") final Integer offset, @QueryParam("limit") final Integer limit, - @QueryParam("orderBy") final String orderBy, @QueryParam("sortOrder") final String sortOrder) { + @QueryParam("orderBy") final String orderBy, @QueryParam("sortOrder") final String sortOrder, + @QueryParam("orphansOnly") final Boolean orphansOnly) { this.context.authenticatedUser().validateHasReadPermission(ClientApiConstants.CLIENT_RESOURCE_NAME); final SearchParameters searchParameters = SearchParameters.forClients(sqlSearch, officeId, externalId, displayName, firstname, - lastname, hierarchy, offset, limit, orderBy, sortOrder); + lastname, hierarchy, offset, limit, orderBy, sortOrder, orphansOnly); final Page clientData = this.clientReadPlatformService.retrieveAll(searchParameters); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java index 6793d0891..37c501b86 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java @@ -190,6 +190,10 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService if (searchParameters.isScopedByOfficeHierarchy()) { extraCriteria += " and o.hierarchy like " + ApiParameterHelper.sqlEncodeString(searchParameters.getHierarchy() + "%"); } + + if(searchParameters.isOrphansOnly()){ + extraCriteria += " and c.id NOT IN (select client_id from m_group_client) "; + } if (StringUtils.isNotBlank(extraCriteria)) { extraCriteria = extraCriteria.substring(4);