From 06f6ad2dff804a8c54e8c156a5dd892f53c9c751 Mon Sep 17 00:00:00 2001 From: Michal Dudzinski Date: Sat, 5 Jan 2013 16:24:18 +0100 Subject: [PATCH] Extended Groups API to return individual loans created from group. --- .../GroupAccountSummaryCollectionData.java | 31 +++++++++++++++---- .../service/GroupReadPlatformServiceImpl.java | 29 +++++++++++++++-- 2 files changed, 52 insertions(+), 8 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupAccountSummaryCollectionData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupAccountSummaryCollectionData.java index 25cf0f01e..c3db9367d 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupAccountSummaryCollectionData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupAccountSummaryCollectionData.java @@ -15,24 +15,43 @@ public class GroupAccountSummaryCollectionData { private final int closedLoanCount; private final List closedLoans; + private final int anyIndividualLoanCount; + private final int pendingApprovalIndividualLoanCount; + private final List pendingApprovalIndividualLoans; + private final int awaitingDisbursalIndividualLoanCount; + private final List awaitingDisbursalIndividualLoans; + private final int activeIndividualLoanCount; + private final List openIndividualLoans; + private final int closedIndividualLoanCount; + private final List closedIndividualLoans; public GroupAccountSummaryCollectionData(List pendingApprovalLoans, - List awaitingDisbursalLoans, - List openLoans, - List closedLoans) { + List awaitingDisbursalLoans, List openLoans, + List closedLoans, List pendingApprovalIndividualLoans, + List awaitingDisbursalIndividualLoans, List openIndividualLoans, + List 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() { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java index 446e30a22..600f866f1 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformServiceImpl.java @@ -174,8 +174,33 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { } } - return new GroupAccountSummaryCollectionData(pendingApprovalLoans, - awaitingDisbursalLoans, openLoans, closedLoans); + List pendingApprovalIndividualLoans = new ArrayList(); + List awaitingDisbursalIndividualLoans = new ArrayList(); + List openIndividualLoans = new ArrayList(); + List closedIndividualLoans = new ArrayList(); + + 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); }