diff --git a/api-docs/apiLive.htm b/api-docs/apiLive.htm index a0dd71e7a..a9ac53a8c 100644 --- a/api-docs/apiLive.htm +++ b/api-docs/apiLive.htm @@ -6418,19 +6418,42 @@ Request Body:  
-
-

Retrieve a Group

-

Example Requests:

-
groups/1
-
-
groups/1?associations=clientMembers
-
-
-

Group without details of Client associations.

- +
+

Retrieve a Group

+

Retrieve group information.

+
+
associations
+
+ String optional +
+
+ One of, or comma separated of clientMembers, activeClientMembers, groupRoles, calendars, collectionMeetingCalendar +
+ or all for all associations. +
+
staffInSelectedOfficeOnly
+
+ Boolean optional, defaults to false +
+
If staffInSelectedOfficeOnly=true only staff + who are associated with the selected branch are returned.
+
roleId
+
+ Long optional +
+
If present, will retrieve group role information
+
+

Example Requests:

+
groups/1
+
+
groups/1?associations=clientMembers
+
+
+

Group without any associations.

+ GET https://DomainName/mifosng-provider/api/v1/groups/1 - - + + { "id": 1, "name": "First Group", @@ -6449,14 +6472,14 @@ GET https://DomainName/mifosng-provider/api/v1/groups/1 "activatedByLastname": "Administrator" } } - -
-
-

Group along with all its Clients.

- + +
+
+

Group along with all its Clients.

+ GET https://DomainName/mifosng-provider/api/v1/groups/1?associations=clientMembers - - + + { "id": 1, "name": "First Group", @@ -6492,9 +6515,9 @@ GET https://DomainName/mifosng-provider/api/v1/groups/1?associations=clientMembe } ] } - -
-
+ +
+   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 bcbf6d7cf..d1ca45cc1 100755 --- 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 @@ -190,6 +190,7 @@ public class GroupsApiResource { // associations Collection membersOfGroup = null; + Collection activeClientMembers = null; Collection groupRoles = null; GroupRoleData selectedRole = null; Collection 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) { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupGeneralData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupGeneralData.java index 025013ff0..bdb6444cd 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupGeneralData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupGeneralData.java @@ -40,6 +40,7 @@ public class GroupGeneralData { // associations private final Collection clientMembers; + private final Collection activeClientMembers; private final Collection groupRoles; private final Collection calendarsData; private final CalendarData collectionMeetingCalendar; @@ -58,7 +59,7 @@ public class GroupGeneralData { final Collection clientMembers = null; final Collection groupRoles = null; final Collection 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 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 membersOfGroup, - final Collection groupRoles, final Collection calendarsData, + final Collection activeClientMembers, final Collection groupRoles, final Collection 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 clientMembers = null; + final Collection activeClientMembers = null; final Collection centerOptions = null; final Collection officeOptions = null; final Collection staffOptions = null; @@ -112,16 +114,17 @@ public class GroupGeneralData { final Collection 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 clientMembers, - final Collection centerOptions, final Collection officeOptions, - final Collection staffOptions, final Collection clientOptions, - final Collection groupRoles, final Collection availableRoles, final GroupRoleData role, + final Collection activeClientMembers, final Collection centerOptions, + final Collection officeOptions, final Collection staffOptions, + final Collection clientOptions, final Collection groupRoles, + final Collection availableRoles, final GroupRoleData role, final Collection calendarsData, final CalendarData collectionMeetingCalendar, final Collection 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 closureReasons) { @@ -210,6 +214,7 @@ public class GroupGeneralData { final String staffName = null; final String hierarchy = null; final Collection clientMembers = null; + final Collection activeClientMembers = null; final Collection centerOptions = null; final Collection officeOptions = null; final Collection 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 clientMembers() { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index 5c5f2f5f3..01c87a48c 100755 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -324,11 +324,12 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { // get group associations final Collection membersOfGroup = this.clientReadPlatformService.retrieveClientMembersOfGroup(groupId); if (!CollectionUtils.isEmpty(membersOfGroup)) { + final Collection activeClientMembers = null; final Collection calendarsData = null; final CalendarData collectionMeetingCalendar = null; final Collection 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 membersOfGroup = this.clientReadPlatformService.retrieveActiveClientMembersOfGroup(groupId); if (!CollectionUtils.isEmpty(membersOfGroup)) { + final Collection activeClientMembers = null; final Collection calendarsData = null; final CalendarData collectionMeetingCalendar = null; final Collection groupRoles = null; - groupAccount = GroupGeneralData.withAssocations(groupAccount, membersOfGroup, groupRoles, calendarsData, - collectionMeetingCalendar); + groupAccount = GroupGeneralData.withAssocations(groupAccount, membersOfGroup, activeClientMembers, + groupRoles, calendarsData, collectionMeetingCalendar); } return LoanAccountData.groupDefaults(groupAccount, expectedDisbursementDate);