MIFOSX-1701 Add option to display only active group members

Complete documentation for the retrieving group call
This commit is contained in:
Alex Ivanov
2014-12-15 21:59:57 +02:00
parent 6e07b83075
commit 312f016a56
4 changed files with 86 additions and 47 deletions
+45 -22
View File
@@ -6300,19 +6300,42 @@ Request Body:
<a id="groups_retrieve" name="groups_retrieve" class="old-syle-anchor">&nbsp;</a>
<div class="method-section">
<div class="method-description">
<h4>Retrieve a Group</h4>
<p>Example Requests:</p>
<div class=apiClick>groups/1</div>
<br/>
<div class=apiClick>groups/1?associations=clientMembers</div>
</div>
<div class="method-example">
<p>Group without details of Client associations.</p>
<code class="method-declaration">
<div class="method-description">
<h4>Retrieve a Group</h4>
<p>Retrieve group information.</p>
<dl class="argument-list">
<dt>associations</dt>
<dd>
String <span>optional</span>
</dd>
<dd>
One of, or comma separated of <span>clientMembers, activeClientMembers, groupRoles, calendars, collectionMeetingCalendar</span>
<br>
or <span>all</span> for all associations.
</dd>
<dt>staffInSelectedOfficeOnly</dt>
<dd>
Boolean <span>optional</span>, defaults to false
</dd>
<dd>If <strong>staffInSelectedOfficeOnly=true</strong> only staff
who are associated with the selected branch are returned.</dd>
<dt>roleId</dt>
<dd>
Long <span>optional</span>
</dd>
<dd>If present, will retrieve group role information</dd>
</dl>
<p>Example Requests:</p>
<div class=apiClick>groups/1</div>
<br/>
<div class=apiClick>groups/1?associations=clientMembers</div>
</div>
<div class="method-example">
<p>Group without any associations.</p>
<code class="method-declaration">
GET https://DomainName/mifosng-provider/api/v1/groups/1
</code>
<code class="method-response">
</code>
<code class="method-response">
{
"id": 1,
"name": "First Group",
@@ -6331,14 +6354,14 @@ GET https://DomainName/mifosng-provider/api/v1/groups/1
"activatedByLastname": "Administrator"
}
}
</code>
</div>
<div class="method-example">
<p>Group along with all its Clients.</p>
<code class="method-declaration">
</code>
</div>
<div class="method-example">
<p>Group along with all its Clients.</p>
<code class="method-declaration">
GET https://DomainName/mifosng-provider/api/v1/groups/1?associations=clientMembers
</code>
<code class="method-response">
</code>
<code class="method-response">
{
"id": 1,
"name": "First Group",
@@ -6374,9 +6397,9 @@ GET https://DomainName/mifosng-provider/api/v1/groups/1?associations=clientMembe
}
]
}
</code>
</div>
</div>
</code>
</div>
</div>
<!--Start of Group account summary -->
<a id="groups_accounts" name="groups_accounts" class="old-syle-anchor">&nbsp;</a>
@@ -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);