Merge pull request #1189 from MegaAlex/MIFOSX-1701

MIFOSX-1701 Add option to display only active group members
This commit is contained in:
Michael Vorburger
2014-12-16 19:18:32 +01:00
4 changed files with 86 additions and 47 deletions
@@ -190,6 +190,7 @@ public class GroupsApiResource {
// associations
Collection<ClientData> membersOfGroup = null;
Collection<ClientData> activeClientMembers = null;
Collection<GroupRoleData> groupRoles = null;
GroupRoleData selectedRole = null;
Collection<CalendarData> calendars = null;
@@ -197,7 +198,8 @@ public class GroupsApiResource {
if (!associationParameters.isEmpty()) {
if (associationParameters.contains("all")) {
associationParameters.addAll(Arrays.asList("clientMembers", "groupRoles", "calendars", "collectionMeetingCalendar"));
associationParameters.addAll(Arrays.asList("clientMembers", "activeClientMembers",
"groupRoles", "calendars", "collectionMeetingCalendar"));
}
if (associationParameters.contains("clientMembers")) {
membersOfGroup = this.clientReadPlatformService.retrieveClientMembersOfGroup(groupId);
@@ -205,6 +207,12 @@ public class GroupsApiResource {
membersOfGroup = null;
}
}
if (associationParameters.contains("activeClientMembers")) {
activeClientMembers = this.clientReadPlatformService.retrieveActiveClientMembersOfGroup(groupId);
if (CollectionUtils.isEmpty(activeClientMembers)) {
activeClientMembers = null;
}
}
if (associationParameters.contains("groupRoles")) {
groupRoles = this.groupRolesReadPlatformService.retrieveGroupRoles(groupId);
if (CollectionUtils.isEmpty(groupRoles)) {
@@ -243,7 +251,8 @@ public class GroupsApiResource {
}
}
group = GroupGeneralData.withAssocations(group, membersOfGroup, groupRoles, calendars, collectionMeetingCalendar);
group = GroupGeneralData.withAssocations(group, membersOfGroup, activeClientMembers,
groupRoles, calendars, collectionMeetingCalendar);
}
if (roleId != null) {
@@ -40,6 +40,7 @@ public class GroupGeneralData {
// associations
private final Collection<ClientData> clientMembers;
private final Collection<ClientData> activeClientMembers;
private final Collection<GroupRoleData> groupRoles;
private final Collection<CalendarData> calendarsData;
private final CalendarData collectionMeetingCalendar;
@@ -58,7 +59,7 @@ public class GroupGeneralData {
final Collection<ClientData> clientMembers = null;
final Collection<GroupRoleData> groupRoles = null;
final Collection<CodeValueData> closureReasons = null;
return new GroupGeneralData(groupId, groupName, null, null, null, null, null, null, null, null, null, null, clientMembers, null,
return new GroupGeneralData(groupId, groupName, null, null, null, null, null, null, null, null, null, null, clientMembers, null, null,
null, null, null, groupRoles, null, null, null, null, closureReasons, null);
}
@@ -72,25 +73,25 @@ public class GroupGeneralData {
final Collection<CodeValueData> closureReasons = null;
return new GroupGeneralData(null, null, null, null, null, officeId, null, centerId, centerName, staffId, staffName, null,
clientMembers, centerOptions, officeOptions, staffOptions, clientOptions, groupRoles, availableRoles, null, null, null,
clientMembers, null, centerOptions, officeOptions, staffOptions, clientOptions, groupRoles, availableRoles, null, null, null,
closureReasons, null);
}
public static GroupGeneralData withTemplate(final GroupGeneralData templatedGrouping, final GroupGeneralData grouping) {
return new GroupGeneralData(grouping.id, grouping.name, grouping.externalId, grouping.status, grouping.activationDate,
grouping.officeId, grouping.officeName, grouping.centerId, grouping.centerName, grouping.staffId, grouping.staffName,
grouping.hierarchy, grouping.clientMembers, templatedGrouping.centerOptions, templatedGrouping.officeOptions,
grouping.hierarchy, grouping.clientMembers, grouping.activeClientMembers, templatedGrouping.centerOptions, templatedGrouping.officeOptions,
templatedGrouping.staffOptions, templatedGrouping.clientOptions, grouping.groupRoles, templatedGrouping.availableRoles,
grouping.selectedRole, grouping.calendarsData, grouping.collectionMeetingCalendar, grouping.closureReasons,
templatedGrouping.timeline);
}
public static GroupGeneralData withAssocations(final GroupGeneralData grouping, final Collection<ClientData> membersOfGroup,
final Collection<GroupRoleData> groupRoles, final Collection<CalendarData> calendarsData,
final Collection<ClientData> activeClientMembers, final Collection<GroupRoleData> groupRoles, final Collection<CalendarData> calendarsData,
final CalendarData collectionMeetingCalendar) {
return new GroupGeneralData(grouping.id, grouping.name, grouping.externalId, grouping.status, grouping.activationDate,
grouping.officeId, grouping.officeName, grouping.centerId, grouping.centerName, grouping.staffId, grouping.staffName,
grouping.hierarchy, membersOfGroup, grouping.centerOptions, grouping.officeOptions, grouping.staffOptions,
grouping.hierarchy, membersOfGroup, activeClientMembers, grouping.centerOptions, grouping.officeOptions, grouping.staffOptions,
grouping.clientOptions, groupRoles, grouping.availableRoles, grouping.selectedRole, calendarsData,
collectionMeetingCalendar, grouping.closureReasons, grouping.timeline);
}
@@ -100,6 +101,7 @@ public class GroupGeneralData {
final Long staffId, final String staffName, final String hierarchy, final GroupTimelineData timeline) {
final Collection<ClientData> clientMembers = null;
final Collection<ClientData> activeClientMembers = null;
final Collection<CenterData> centerOptions = null;
final Collection<OfficeData> officeOptions = null;
final Collection<StaffData> staffOptions = null;
@@ -112,16 +114,17 @@ public class GroupGeneralData {
final Collection<CodeValueData> closureReasons = null;
return new GroupGeneralData(id, name, externalId, status, activationDate, officeId, officeName, centerId, centerName, staffId,
staffName, hierarchy, clientMembers, centerOptions, officeOptions, staffOptions, clientOptions, groupRoles, availableRoles,
role, calendarsData, collectionMeetingCalendar, closureReasons, timeline);
staffName, hierarchy, clientMembers, activeClientMembers, centerOptions, officeOptions, staffOptions,
clientOptions, groupRoles, availableRoles, role, calendarsData, collectionMeetingCalendar, closureReasons, timeline);
}
private GroupGeneralData(final Long id, final String name, final String externalId, final EnumOptionData status,
final LocalDate activationDate, final Long officeId, final String officeName, final Long centerId, final String centerName,
final Long staffId, final String staffName, final String hierarchy, final Collection<ClientData> clientMembers,
final Collection<CenterData> centerOptions, final Collection<OfficeData> officeOptions,
final Collection<StaffData> staffOptions, final Collection<ClientData> clientOptions,
final Collection<GroupRoleData> groupRoles, final Collection<CodeValueData> availableRoles, final GroupRoleData role,
final Collection<ClientData> activeClientMembers, final Collection<CenterData> centerOptions,
final Collection<OfficeData> officeOptions, final Collection<StaffData> staffOptions,
final Collection<ClientData> clientOptions, final Collection<GroupRoleData> groupRoles,
final Collection<CodeValueData> availableRoles, final GroupRoleData role,
final Collection<CalendarData> calendarsData, final CalendarData collectionMeetingCalendar,
final Collection<CodeValueData> closureReasons, final GroupTimelineData timeline) {
this.id = id;
@@ -145,6 +148,7 @@ public class GroupGeneralData {
// associations
this.clientMembers = clientMembers;
this.activeClientMembers = activeClientMembers;
// template
this.centerOptions = centerOptions;
@@ -191,9 +195,9 @@ public class GroupGeneralData {
public static GroupGeneralData updateSelectedRole(final GroupGeneralData grouping, final GroupRoleData selectedRole) {
return new GroupGeneralData(grouping.id, grouping.name, grouping.externalId, grouping.status, grouping.activationDate,
grouping.officeId, grouping.officeName, grouping.centerId, grouping.centerName, grouping.staffId, grouping.staffName,
grouping.hierarchy, grouping.clientMembers, grouping.centerOptions, grouping.officeOptions, grouping.staffOptions,
grouping.clientOptions, grouping.groupRoles, grouping.availableRoles, selectedRole, grouping.calendarsData,
grouping.collectionMeetingCalendar, grouping.closureReasons, null);
grouping.hierarchy, grouping.clientMembers, grouping.activeClientMembers, grouping.centerOptions,
grouping.officeOptions, grouping.staffOptions, grouping.clientOptions, grouping.groupRoles, grouping.availableRoles,
selectedRole, grouping.calendarsData, grouping.collectionMeetingCalendar, grouping.closureReasons, null);
}
public static GroupGeneralData withClosureReasons(final Collection<CodeValueData> closureReasons) {
@@ -210,6 +214,7 @@ public class GroupGeneralData {
final String staffName = null;
final String hierarchy = null;
final Collection<ClientData> clientMembers = null;
final Collection<ClientData> activeClientMembers = null;
final Collection<CenterData> centerOptions = null;
final Collection<OfficeData> officeOptions = null;
final Collection<StaffData> staffOptions = null;
@@ -221,8 +226,8 @@ public class GroupGeneralData {
final CalendarData collectionMeetingCalendar = null;
return new GroupGeneralData(id, name, externalId, status, activationDate, officeId, officeName, centerId, centerName, staffId,
staffName, hierarchy, clientMembers, centerOptions, officeOptions, staffOptions, clientOptions, groupRoles, availableRoles,
role, calendarsData, collectionMeetingCalendar, closureReasons, null);
staffName, hierarchy, clientMembers, activeClientMembers, centerOptions, officeOptions, staffOptions, clientOptions, groupRoles,
availableRoles, role, calendarsData, collectionMeetingCalendar, closureReasons, null);
}
public Collection<ClientData> clientMembers() {
@@ -324,11 +324,12 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
// get group associations
final Collection<ClientData> membersOfGroup = this.clientReadPlatformService.retrieveClientMembersOfGroup(groupId);
if (!CollectionUtils.isEmpty(membersOfGroup)) {
final Collection<ClientData> activeClientMembers = null;
final Collection<CalendarData> calendarsData = null;
final CalendarData collectionMeetingCalendar = null;
final Collection<GroupRoleData> groupRoles = null;
groupAccount = GroupGeneralData.withAssocations(groupAccount, membersOfGroup, groupRoles, calendarsData,
collectionMeetingCalendar);
groupAccount = GroupGeneralData.withAssocations(groupAccount, membersOfGroup, activeClientMembers,
groupRoles, calendarsData, collectionMeetingCalendar);
}
final LocalDate expectedDisbursementDate = DateUtils.getLocalDateOfTenant();
@@ -443,14 +444,14 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
@Override
public LoanApprovalData retrieveApprovalTemplate(final Long loanId) {
final Loan loan = this.loanRepository.findOne(loanId);
if (loan == null) { throw new LoanNotFoundException(loanId); }
return new LoanApprovalData(loan.getProposedPrincipal(),DateUtils.getLocalDateOfTenant());
}
@Override
public LoanTransactionData retrieveDisbursalTemplate(final Long loanId, boolean paymentDetailsRequired) {
final Loan loan = this.loanRepository.findOne(loanId);
@@ -1317,11 +1318,12 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
// get group associations
final Collection<ClientData> membersOfGroup = this.clientReadPlatformService.retrieveActiveClientMembersOfGroup(groupId);
if (!CollectionUtils.isEmpty(membersOfGroup)) {
final Collection<ClientData> activeClientMembers = null;
final Collection<CalendarData> calendarsData = null;
final CalendarData collectionMeetingCalendar = null;
final Collection<GroupRoleData> groupRoles = null;
groupAccount = GroupGeneralData.withAssocations(groupAccount, membersOfGroup, groupRoles, calendarsData,
collectionMeetingCalendar);
groupAccount = GroupGeneralData.withAssocations(groupAccount, membersOfGroup, activeClientMembers,
groupRoles, calendarsData, collectionMeetingCalendar);
}
return LoanAccountData.groupDefaults(groupAccount, expectedDisbursementDate);