Extended Groups API to return individual loans created from group.

This commit is contained in:
Michal Dudzinski
2013-01-05 16:24:18 +01:00
parent 556f75fcc1
commit 06f6ad2dff
2 changed files with 52 additions and 8 deletions
@@ -15,24 +15,43 @@ public class GroupAccountSummaryCollectionData {
private final int closedLoanCount;
private final List<GroupAccountSummaryData> closedLoans;
private final int anyIndividualLoanCount;
private final int pendingApprovalIndividualLoanCount;
private final List<GroupAccountSummaryData> pendingApprovalIndividualLoans;
private final int awaitingDisbursalIndividualLoanCount;
private final List<GroupAccountSummaryData> awaitingDisbursalIndividualLoans;
private final int activeIndividualLoanCount;
private final List<GroupAccountSummaryData> openIndividualLoans;
private final int closedIndividualLoanCount;
private final List<GroupAccountSummaryData> closedIndividualLoans;
public GroupAccountSummaryCollectionData(List<GroupAccountSummaryData> pendingApprovalLoans,
List<GroupAccountSummaryData> awaitingDisbursalLoans,
List<GroupAccountSummaryData> openLoans,
List<GroupAccountSummaryData> closedLoans) {
List<GroupAccountSummaryData> awaitingDisbursalLoans, List<GroupAccountSummaryData> openLoans,
List<GroupAccountSummaryData> closedLoans, List<GroupAccountSummaryData> pendingApprovalIndividualLoans,
List<GroupAccountSummaryData> awaitingDisbursalIndividualLoans, List<GroupAccountSummaryData> openIndividualLoans,
List<GroupAccountSummaryData> closedIndividualLoans) {
this.pendingApprovalLoans = pendingApprovalLoans;
this.pendingApprovalLoanCount = pendingApprovalLoans.size();
this.awaitingDisbursalLoans = awaitingDisbursalLoans;
this.awaitingDisbursalLoanCount = awaitingDisbursalLoans.size();
this.openLoans = openLoans;
this.activeLoanCount = openLoans.size();
this.closedLoans = closedLoans;
this.closedLoanCount = closedLoans.size();
this.anyLoanCount = pendingApprovalLoanCount + awaitingDisbursalLoanCount + activeLoanCount + closedLoanCount;
this.pendingApprovalIndividualLoans = pendingApprovalIndividualLoans;
this.pendingApprovalIndividualLoanCount = pendingApprovalIndividualLoans.size();
this.awaitingDisbursalIndividualLoans = awaitingDisbursalIndividualLoans;
this.awaitingDisbursalIndividualLoanCount = awaitingDisbursalIndividualLoans.size();
this.openIndividualLoans = openIndividualLoans;
this.activeIndividualLoanCount = openIndividualLoans.size();
this.closedIndividualLoans = closedIndividualLoans;
this.closedIndividualLoanCount = closedIndividualLoans.size();
this.anyIndividualLoanCount = pendingApprovalIndividualLoanCount + awaitingDisbursalIndividualLoanCount + activeIndividualLoanCount
+ closedIndividualLoanCount;
}
public int getAnyLoanCount() {
@@ -174,8 +174,33 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService {
}
}
return new GroupAccountSummaryCollectionData(pendingApprovalLoans,
awaitingDisbursalLoans, openLoans, closedLoans);
List<GroupAccountSummaryData> pendingApprovalIndividualLoans = new ArrayList<GroupAccountSummaryData>();
List<GroupAccountSummaryData> awaitingDisbursalIndividualLoans = new ArrayList<GroupAccountSummaryData>();
List<GroupAccountSummaryData> openIndividualLoans = new ArrayList<GroupAccountSummaryData>();
List<GroupAccountSummaryData> closedIndividualLoans = new ArrayList<GroupAccountSummaryData>();
sql = "select " + rm.loanAccountSummarySchema() + " where l.group_id = ? and l.client_id is not null";
results = this.jdbcTemplate.query(sql, rm, new Object[] {groupId});
if (results != null) {
for (GroupAccountSummaryData row : results) {
LoanStatusMapper statusMapper = new LoanStatusMapper(row.getAccountStatusId());
if (statusMapper.isOpen()) {
openIndividualLoans.add(row);
} else if (statusMapper.isAwaitingDisbursal()) {
awaitingDisbursalIndividualLoans.add(row);
} else if (statusMapper.isPendingApproval()) {
pendingApprovalIndividualLoans.add(row);
} else {
closedIndividualLoans.add(row);
}
}
}
return new GroupAccountSummaryCollectionData(pendingApprovalLoans, awaitingDisbursalLoans, openLoans, closedLoans,
pendingApprovalIndividualLoans, awaitingDisbursalIndividualLoans, openIndividualLoans, closedIndividualLoans);
} catch (EmptyResultDataAccessException e) {
throw new GroupNotFoundException(groupId);
}