From 7da8cbc3d9675090b67fd39aa55155ca09a047c2 Mon Sep 17 00:00:00 2001 From: mifoscontributer Date: Tue, 27 Aug 2013 10:46:41 +0530 Subject: [PATCH] Transfer clients between groups --- .../staff/api/StaffApiResource.java | 12 +++++- .../group/api/GroupsApiResource.java | 28 +++++++------ .../group/data/GroupTransferData.java | 40 ------------------- .../service/GroupReadPlatformService.java | 3 -- .../service/GroupReadPlatformServiceImpl.java | 27 ------------- 5 files changed, 25 insertions(+), 85 deletions(-) delete mode 100644 mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupTransferData.java diff --git a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/api/StaffApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/api/StaffApiResource.java index fe20fe593..61e40044f 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/api/StaffApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/organisation/staff/api/StaffApiResource.java @@ -11,6 +11,7 @@ import java.util.HashSet; import java.util.Set; import javax.ws.rs.Consumes; +import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; @@ -76,11 +77,18 @@ public class StaffApiResource { @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) public String retrieveStaff(@Context final UriInfo uriInfo, @QueryParam("sqlSearch") final String sqlSearch, - @QueryParam("officeId") final Long officeId) { + @QueryParam("officeId") final Long officeId, + @DefaultValue("false") @QueryParam("staffInOfficeHierarchy") final boolean staffInOfficeHierarchy) { context.authenticatedUser().validateHasReadPermission(resourceNameForPermissions); - final Collection staff = this.readPlatformService.retrieveAllStaff(sqlSearch, officeId); + final Collection staff; + if (staffInOfficeHierarchy) { + final boolean loanOfficersOnly = false; + staff = this.readPlatformService.retrieveAllStaffInOfficeAndItsParentOfficeHierarchy(officeId, loanOfficersOnly); + } else { + staff = this.readPlatformService.retrieveAllStaff(sqlSearch, officeId); + } final ApiRequestJsonSerializationSettings settings = apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, staff, RESPONSE_DATA_PARAMETERS); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupsApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupsApiResource.java index ed59255aa..684c2d700 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/api/GroupsApiResource.java @@ -5,6 +5,7 @@ */ package org.mifosplatform.portfolio.group.api; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; @@ -51,7 +52,6 @@ import org.mifosplatform.portfolio.collectionsheet.data.JLGCollectionSheetData; import org.mifosplatform.portfolio.collectionsheet.service.CollectionSheetReadPlatformService; import org.mifosplatform.portfolio.group.data.GroupGeneralData; import org.mifosplatform.portfolio.group.data.GroupRoleData; -import org.mifosplatform.portfolio.group.data.GroupTransferData; import org.mifosplatform.portfolio.group.service.CenterReadPlatformService; import org.mifosplatform.portfolio.group.service.GroupReadPlatformService; import org.mifosplatform.portfolio.group.service.GroupRolesReadPlatformService; @@ -143,15 +143,26 @@ public class GroupsApiResource { @QueryParam("officeId") final Long officeId, @QueryParam("externalId") final String externalId, @QueryParam("name") final String name, @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("templateType") final String templateType, @QueryParam("groupId") final Long groupId) { this.context.authenticatedUser().validateHasReadPermission(GroupingTypesApiConstants.GROUP_RESOURCE_NAME); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + + if (templateType != null && templateType.equalsIgnoreCase("clientstransfertemplate")) { + final Collection groups; + if (officeId != null && groupId != null) { + groups = this.groupReadPlatformService.retrieveGroupsForLookup(officeId, groupId); + } else { + groups = new ArrayList(); + } + return this.groupGeneralApiJsonSerializer.serialize(settings, groups, GroupingTypesApiConstants.GROUP_RESPONSE_DATA_PARAMETERS); + } final SearchParameters searchParameters = SearchParameters.forGroups(sqlSearch, officeId, externalId, name, hierarchy, offset, limit, orderBy, sortOrder); final Page groups = this.groupReadPlatformService.retrieveAll(searchParameters); - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.toApiJsonSerializer.serialize(settings, groups, GroupingTypesApiConstants.GROUP_RESPONSE_DATA_PARAMETERS); } @@ -161,7 +172,7 @@ public class GroupsApiResource { @Produces({ MediaType.APPLICATION_JSON }) public String retrieveOne(@Context final UriInfo uriInfo, @PathParam("groupId") final Long groupId, @DefaultValue("false") @QueryParam("staffInSelectedOfficeOnly") final boolean staffInSelectedOfficeOnly, - @QueryParam("roleId") final Long roleId, @QueryParam("templateType") final String templateType) { + @QueryParam("roleId") final Long roleId) { this.context.authenticatedUser().validateHasReadPermission(GroupingTypesApiConstants.GROUP_RESOURCE_NAME); final Set associationParameters = ApiParameterHelper.extractAssociationsForResponseIfProvided(uriInfo.getQueryParameters()); @@ -169,15 +180,6 @@ public class GroupsApiResource { GroupGeneralData group = this.groupReadPlatformService.retrieveOne(groupId); final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - if (templateType != null && templateType.equalsIgnoreCase("clientstransfertemplate")) { - final GroupTransferData groupTransferData = this.groupReadPlatformService.retrieveClientTransferTemplate(group.officeId(), - groupId, staffInSelectedOfficeOnly); - final Set GROUP_TRANSFERS_DATA_PARAMETERS = new HashSet(Arrays.asList("groupId", "clientOptions", - "groupOptions", "staffOptions", "transferActiveLoans", "inheritDestinationGroupLoanOfficer")); - - return this.toApiJsonSerializer.serialize(settings, groupTransferData, GROUP_TRANSFERS_DATA_PARAMETERS); - } - // associations Collection membersOfGroup = null; Collection groupRoles = null; diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupTransferData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupTransferData.java deleted file mode 100644 index ee1f4e10b..000000000 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupTransferData.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.mifosplatform.portfolio.group.data; - -import java.util.Collection; - -import org.mifosplatform.organisation.staff.data.StaffData; -import org.mifosplatform.portfolio.client.data.ClientData; - -public class GroupTransferData { - - @SuppressWarnings("unused") - private final Long groupId; - @SuppressWarnings("unused") - private final Collection clientOptions; - @SuppressWarnings("unused") - private final Collection groupOptions; - @SuppressWarnings("unused") - private final Collection staffOptions; - @SuppressWarnings("unused") - private final boolean transferActiveLoans; - @SuppressWarnings("unused") - private final boolean inheritDestinationGroupLoanOfficer; - - private GroupTransferData(final Long groupId, final Collection clientOptions, - final Collection groupOptions, final Collection staffOptions, final boolean transferActiveLoans, - final boolean inheritDestinationGroupLoanOfficer) { - this.groupId = groupId; - this.clientOptions = clientOptions; - this.groupOptions = groupOptions; - this.staffOptions = staffOptions; - this.transferActiveLoans = transferActiveLoans; - this.inheritDestinationGroupLoanOfficer = inheritDestinationGroupLoanOfficer; - } - - public static GroupTransferData template(final Long groupId, final Collection clientOptions, - final Collection groupOptions, final Collection staffOptions, final boolean transferActiveLoans, - final boolean inheritDestinationGroupLoanOfficer) { - return new GroupTransferData(groupId, clientOptions, groupOptions, staffOptions, transferActiveLoans, - inheritDestinationGroupLoanOfficer); - } -} diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformService.java index 9ccf3963b..0109d693a 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformService.java @@ -9,7 +9,6 @@ import java.util.Collection; import org.mifosplatform.infrastructure.core.service.Page; import org.mifosplatform.portfolio.group.data.GroupGeneralData; -import org.mifosplatform.portfolio.group.data.GroupTransferData; public interface GroupReadPlatformService { @@ -20,6 +19,4 @@ public interface GroupReadPlatformService { GroupGeneralData retrieveOne(Long groupId); Collection retrieveGroupsForLookup(Long officeId, Long groupId); - - GroupTransferData retrieveClientTransferTemplate(Long officeId, Long groupId, boolean staffInSelectedOfficeOnly); } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java index bd8ca4f44..13922efda 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java @@ -27,7 +27,6 @@ import org.mifosplatform.portfolio.client.service.ClientReadPlatformService; import org.mifosplatform.portfolio.group.api.GroupingTypesApiConstants; import org.mifosplatform.portfolio.group.data.CenterData; import org.mifosplatform.portfolio.group.data.GroupGeneralData; -import org.mifosplatform.portfolio.group.data.GroupTransferData; import org.mifosplatform.portfolio.group.domain.GroupTypes; import org.mifosplatform.portfolio.group.exception.GroupNotFoundException; import org.mifosplatform.useradministration.domain.AppUser; @@ -228,30 +227,4 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { } } - @Override - public GroupTransferData retrieveClientTransferTemplate(final Long officeId, final Long groupId, final boolean staffInSelectedOfficeOnly) { - - final boolean transferActiveLoans = true; - final boolean inheritDestinationGroupLoanOfficer = true; - - Collection membersOfGroup = this.clientReadPlatformService.retrieveClientMembersOfGroup(groupId); - if (CollectionUtils.isEmpty(membersOfGroup)) { - membersOfGroup = null; - } - - final boolean loanOfficersOnly = false; - Collection staffOptions = null; - if (staffInSelectedOfficeOnly) { - staffOptions = this.staffReadPlatformService.retrieveAllStaffForDropdown(officeId); - } else { - staffOptions = this.staffReadPlatformService.retrieveAllStaffInOfficeAndItsParentOfficeHierarchy(officeId, loanOfficersOnly); - } - if (CollectionUtils.isEmpty(staffOptions)) { - staffOptions = null; - } - - Collection groupOptions = this.retrieveGroupsForLookup(officeId, groupId); - return GroupTransferData.template(groupId, membersOfGroup, groupOptions, staffOptions, transferActiveLoans, - inheritDestinationGroupLoanOfficer); - } } \ No newline at end of file