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 7824ad267..7c6d5b13e 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 @@ -5,11 +5,8 @@ */ package org.mifosplatform.portfolio.client.api; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; import java.util.HashSet; -import java.util.List; import java.util.Set; import javax.ws.rs.Consumes; @@ -37,10 +34,6 @@ import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSeriali import org.mifosplatform.infrastructure.core.serialization.ToApiJsonSerializer; import org.mifosplatform.infrastructure.core.service.Page; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; -import org.mifosplatform.organisation.office.data.OfficeData; -import org.mifosplatform.organisation.office.service.OfficeReadPlatformService; -import org.mifosplatform.organisation.staff.data.StaffData; -import org.mifosplatform.organisation.staff.service.StaffReadPlatformService; import org.mifosplatform.portfolio.client.data.ClientAccountSummaryCollectionData; import org.mifosplatform.portfolio.client.data.ClientData; import org.mifosplatform.portfolio.client.service.ClientReadPlatformService; @@ -48,7 +41,6 @@ import org.mifosplatform.portfolio.group.service.SearchParameters; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; -import org.springframework.util.CollectionUtils; @Path("/clients") @Component @@ -57,28 +49,23 @@ public class ClientsApiResource { private final PlatformSecurityContext context; private final ClientReadPlatformService clientReadPlatformService; - private final OfficeReadPlatformService officeReadPlatformService; private final ToApiJsonSerializer toApiJsonSerializer; private final ToApiJsonSerializer clientAccountSummaryToApiJsonSerializer; private final ApiRequestParameterHelper apiRequestParameterHelper; private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; - private final StaffReadPlatformService staffReadPlatformService; @Autowired public ClientsApiResource(final PlatformSecurityContext context, final ClientReadPlatformService readPlatformService, - final OfficeReadPlatformService officeReadPlatformService, final ToApiJsonSerializer toApiJsonSerializer, + final ToApiJsonSerializer toApiJsonSerializer, final ToApiJsonSerializer clientAccountSummaryToApiJsonSerializer, final ApiRequestParameterHelper apiRequestParameterHelper, - final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService, - final StaffReadPlatformService staffReadPlatformService) { + final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService) { this.context = context; this.clientReadPlatformService = readPlatformService; - this.officeReadPlatformService = officeReadPlatformService; this.toApiJsonSerializer = toApiJsonSerializer; this.clientAccountSummaryToApiJsonSerializer = clientAccountSummaryToApiJsonSerializer; this.apiRequestParameterHelper = apiRequestParameterHelper; this.commandsSourceWritePlatformService = commandsSourceWritePlatformService; - this.staffReadPlatformService = staffReadPlatformService; } @GET @@ -128,7 +115,8 @@ public class ClientsApiResource { @Path("{clientId}") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) - public String retrieveOne(@PathParam("clientId") final Long clientId, @Context final UriInfo uriInfo) { + public String retrieveOne(@PathParam("clientId") final Long clientId, @Context final UriInfo uriInfo, + @DefaultValue("false") @QueryParam("staffInSelectedOfficeOnly") final boolean staffInSelectedOfficeOnly) { context.authenticatedUser().validateHasReadPermission(ClientApiConstants.CLIENT_RESOURCE_NAME); @@ -136,12 +124,8 @@ public class ClientsApiResource { ClientData clientData = this.clientReadPlatformService.retrieveOne(clientId); if (settings.isTemplate()) { - final List allowedOffices = new ArrayList(officeReadPlatformService.retrieveAllOfficesForDropdown()); - Collection staffOptions = this.staffReadPlatformService.retrieveAllStaffForDropdown(clientData.officeId()); - if (CollectionUtils.isEmpty(staffOptions)) { - staffOptions = null; - } - clientData = ClientData.templateOnTop(clientData, allowedOffices, staffOptions); + final ClientData templateData = this.clientReadPlatformService.retrieveTemplate(clientData.officeId(), staffInSelectedOfficeOnly); + clientData = ClientData.templateOnTop(clientData, templateData); } return this.toApiJsonSerializer.serialize(settings, clientData, ClientApiConstants.CLIENT_RESPONSE_DATA_PARAMETERS); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientData.java index 7e62fd3d0..90a970534 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientData.java @@ -6,7 +6,6 @@ package org.mifosplatform.portfolio.client.data; import java.util.Collection; -import java.util.List; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.builder.CompareToBuilder; @@ -61,12 +60,12 @@ final public class ClientData implements Comparable { return new ClientData(null, null, officeId, null, null, null, null, null, null, null, null, joinedDate, null, null, null, officeOptions, null, staffOptions, closureReasons); } - public static ClientData templateOnTop(final ClientData clientData, final List allowedOffices, final Collection staffOptions) { + public static ClientData templateOnTop(final ClientData clientData, final ClientData templateData) { return new ClientData(clientData.accountNo, clientData.status, clientData.officeId, clientData.officeName, clientData.id, clientData.firstname, clientData.middlename, clientData.lastname, clientData.fullname, clientData.displayName, clientData.externalId, clientData.activationDate, clientData.imageId, clientData.staffId, clientData.staffName, - allowedOffices, clientData.groups, staffOptions, null); + templateData.officeOptions, clientData.groups, templateData.staffOptions, null); } public static ClientData setParentGroups(final ClientData clientData, final Collection parentGroups) { 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 7c536db32..5b987ce8f 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 @@ -81,7 +81,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService final Collection offices = officeReadPlatformService.retrieveAllOfficesForDropdown(); - Collection staffOptions = this.staffReadPlatformService.retrieveAllStaffForDropdown(defaultOfficeId); + Collection staffOptions = null; final boolean loanOfficersOnly = false; if (staffInSelectedOfficeOnly) {