Merge pull request #544 from mifoscontributer/mifosx-547_c
Transfer clients between groups
This commit is contained in:
+10
-2
@@ -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<StaffData> staff = this.readPlatformService.retrieveAllStaff(sqlSearch, officeId);
|
||||
final Collection<StaffData> 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);
|
||||
|
||||
+15
-13
@@ -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<GroupGeneralData> groups;
|
||||
if (officeId != null && groupId != null) {
|
||||
groups = this.groupReadPlatformService.retrieveGroupsForLookup(officeId, groupId);
|
||||
} else {
|
||||
groups = new ArrayList<GroupGeneralData>();
|
||||
}
|
||||
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<GroupGeneralData> 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<String> 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<String> GROUP_TRANSFERS_DATA_PARAMETERS = new HashSet<String>(Arrays.asList("groupId", "clientOptions",
|
||||
"groupOptions", "staffOptions", "transferActiveLoans", "inheritDestinationGroupLoanOfficer"));
|
||||
|
||||
return this.toApiJsonSerializer.serialize(settings, groupTransferData, GROUP_TRANSFERS_DATA_PARAMETERS);
|
||||
}
|
||||
|
||||
// associations
|
||||
Collection<ClientData> membersOfGroup = null;
|
||||
Collection<GroupRoleData> groupRoles = null;
|
||||
|
||||
-40
@@ -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<ClientData> clientOptions;
|
||||
@SuppressWarnings("unused")
|
||||
private final Collection<GroupGeneralData> groupOptions;
|
||||
@SuppressWarnings("unused")
|
||||
private final Collection<StaffData> staffOptions;
|
||||
@SuppressWarnings("unused")
|
||||
private final boolean transferActiveLoans;
|
||||
@SuppressWarnings("unused")
|
||||
private final boolean inheritDestinationGroupLoanOfficer;
|
||||
|
||||
private GroupTransferData(final Long groupId, final Collection<ClientData> clientOptions,
|
||||
final Collection<GroupGeneralData> groupOptions, final Collection<StaffData> 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<ClientData> clientOptions,
|
||||
final Collection<GroupGeneralData> groupOptions, final Collection<StaffData> staffOptions, final boolean transferActiveLoans,
|
||||
final boolean inheritDestinationGroupLoanOfficer) {
|
||||
return new GroupTransferData(groupId, clientOptions, groupOptions, staffOptions, transferActiveLoans,
|
||||
inheritDestinationGroupLoanOfficer);
|
||||
}
|
||||
}
|
||||
-3
@@ -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<GroupGeneralData> retrieveGroupsForLookup(Long officeId, Long groupId);
|
||||
|
||||
GroupTransferData retrieveClientTransferTemplate(Long officeId, Long groupId, boolean staffInSelectedOfficeOnly);
|
||||
}
|
||||
-27
@@ -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<ClientData> membersOfGroup = this.clientReadPlatformService.retrieveClientMembersOfGroup(groupId);
|
||||
if (CollectionUtils.isEmpty(membersOfGroup)) {
|
||||
membersOfGroup = null;
|
||||
}
|
||||
|
||||
final boolean loanOfficersOnly = false;
|
||||
Collection<StaffData> staffOptions = null;
|
||||
if (staffInSelectedOfficeOnly) {
|
||||
staffOptions = this.staffReadPlatformService.retrieveAllStaffForDropdown(officeId);
|
||||
} else {
|
||||
staffOptions = this.staffReadPlatformService.retrieveAllStaffInOfficeAndItsParentOfficeHierarchy(officeId, loanOfficersOnly);
|
||||
}
|
||||
if (CollectionUtils.isEmpty(staffOptions)) {
|
||||
staffOptions = null;
|
||||
}
|
||||
|
||||
Collection<GroupGeneralData> groupOptions = this.retrieveGroupsForLookup(officeId, groupId);
|
||||
return GroupTransferData.template(groupId, membersOfGroup, groupOptions, staffOptions, transferActiveLoans,
|
||||
inheritDestinationGroupLoanOfficer);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user