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 18b8cd54a..ed59255aa 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 @@ -39,8 +39,6 @@ import org.mifosplatform.infrastructure.core.serialization.FromJsonHelper; 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.staff.data.StaffData; -import org.mifosplatform.organisation.staff.service.StaffReadPlatformService; import org.mifosplatform.portfolio.accountdetails.data.AccountSummaryCollectionData; import org.mifosplatform.portfolio.accountdetails.service.AccountDetailsReadPlatformService; import org.mifosplatform.portfolio.calendar.data.CalendarData; @@ -84,7 +82,6 @@ public class GroupsApiResource { private final GroupRolesReadPlatformService groupRolesReadPlatformService; private final AccountDetailsReadPlatformService accountDetailsReadPlatformService; private final CalendarReadPlatformService calendarReadPlatformService; - private final StaffReadPlatformService staffReadPlatformService; @Autowired public GroupsApiResource(final PlatformSecurityContext context, final GroupReadPlatformService groupReadPlatformService, @@ -97,7 +94,7 @@ public class GroupsApiResource { final CollectionSheetReadPlatformService collectionSheetReadPlatformService, final FromJsonHelper fromJsonHelper, final GroupRolesReadPlatformService groupRolesReadPlatformService, final AccountDetailsReadPlatformService accountDetailsReadPlatformService, - final CalendarReadPlatformService calendarReadPlatformService, final StaffReadPlatformService staffReadPlatformService) { + final CalendarReadPlatformService calendarReadPlatformService) { this.context = context; this.groupReadPlatformService = groupReadPlatformService; @@ -113,7 +110,6 @@ public class GroupsApiResource { this.groupRolesReadPlatformService = groupRolesReadPlatformService; this.accountDetailsReadPlatformService = accountDetailsReadPlatformService; this.calendarReadPlatformService = calendarReadPlatformService; - this.staffReadPlatformService = staffReadPlatformService; } @GET @@ -165,12 +161,22 @@ 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("roleId") final Long roleId, @QueryParam("templateType") final String templateType) { this.context.authenticatedUser().validateHasReadPermission(GroupingTypesApiConstants.GROUP_RESOURCE_NAME); final Set associationParameters = ApiParameterHelper.extractAssociationsForResponseIfProvided(uriInfo.getQueryParameters()); 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; @@ -223,7 +229,6 @@ public class GroupsApiResource { group = GroupGeneralData.withTemplate(templateGroup, group); } - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.groupGeneralApiJsonSerializer.serialize(settings, group, GroupingTypesApiConstants.GROUP_RESPONSE_DATA_PARAMETERS); } @@ -366,46 +371,4 @@ public class GroupsApiResource { final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); return this.groupSummaryToApiJsonSerializer.serialize(settings, groupAccount, GROUP_ACCOUNTS_DATA_PARAMETERS); } - - @GET - @Path("{groupId}/clientstransfertemplate") - @Consumes({ MediaType.APPLICATION_JSON }) - @Produces({ MediaType.APPLICATION_JSON }) - public String retrieveClientTranferTemplate(@Context final UriInfo uriInfo, @PathParam("groupId") final Long groupId, - @DefaultValue("false") @QueryParam("staffInSelectedOfficeOnly") final boolean staffInSelectedOfficeOnly) { - - this.context.authenticatedUser().validateHasReadPermission("GROUP"); - GroupGeneralData group = this.groupReadPlatformService.retrieveOne(groupId); - - 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(group.officeId()); - } else { - staffOptions = this.staffReadPlatformService.retrieveAllStaffInOfficeAndItsParentOfficeHierarchy(group.officeId(), - loanOfficersOnly); - } - if (CollectionUtils.isEmpty(staffOptions)) { - staffOptions = null; - } - - Collection groupOptions = this.groupReadPlatformService.retrieveGroupsForLookup(group.officeId(), groupId); - GroupTransferData data = GroupTransferData.template(groupId, membersOfGroup, groupOptions, staffOptions, transferActiveLoans, - inheritDestinationGroupLoanOfficer); - - final Set GROUP_TRANSFERS_DATA_PARAMETERS = new HashSet(Arrays.asList("groupId", "clientOptions", "groupOptions", - "staffOptions", "transferActiveLoans", "inheritDestinationGroupLoanOfficer")); - - final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); - return this.toApiJsonSerializer.serialize(settings, data, GROUP_TRANSFERS_DATA_PARAMETERS); - - } } \ No newline at end of file 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 f83e9d84e..9ccf3963b 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,6 +9,7 @@ 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 { @@ -17,6 +18,8 @@ public interface GroupReadPlatformService { Page retrieveAll(SearchParameters searchParameters); 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 931e052e3..bd8ca4f44 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,6 +27,7 @@ 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; @@ -226,4 +227,31 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { return GroupGeneralData.lookup(id, displayName); } } + + @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