Merge pull request #1189 from MegaAlex/MIFOSX-1701
MIFOSX-1701 Add option to display only active group members
This commit is contained in:
+45
-22
@@ -6418,19 +6418,42 @@ Request Body:
|
||||
|
||||
<a id="groups_retrieve" name="groups_retrieve" class="old-syle-anchor"> </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",
|
||||
@@ -6449,14 +6472,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",
|
||||
@@ -6492,9 +6515,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"> </a>
|
||||
|
||||
+11
-2
@@ -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) {
|
||||
|
||||
+20
-15
@@ -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() {
|
||||
|
||||
+10
-8
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user