From 47feb800abf5e416a345d798cd96abf5c45ba9c6 Mon Sep 17 00:00:00 2001 From: goutham-M Date: Wed, 5 Jun 2013 18:50:54 +0530 Subject: [PATCH] differentiate b/w savings a/c activated/pending(fixed) --- .../client/data/ClientAccountSummaryData.java | 18 +++++++++++++ .../ClientReadPlatformServiceImpl.java | 25 +++++++++++++++---- .../data/SavingsAccountStatusEnumData.java | 4 +++ .../savings/service/SavingStatusMapper.java | 19 ++++++++++++++ 4 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingStatusMapper.java diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientAccountSummaryData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientAccountSummaryData.java index 6bf022033..d3efb9eca 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientAccountSummaryData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/data/ClientAccountSummaryData.java @@ -6,6 +6,7 @@ package org.mifosplatform.portfolio.client.data; import org.mifosplatform.portfolio.loanaccount.data.LoanStatusEnumData; +import org.mifosplatform.portfolio.savings.data.SavingsAccountStatusEnumData; /** * Immutable data object for client loan accounts. @@ -25,6 +26,7 @@ public class ClientAccountSummaryData { private final Integer accountStatusId; private final LoanStatusEnumData status; + private final SavingsAccountStatusEnumData savingAccountStatus; public ClientAccountSummaryData(final Long id, final String externalId, final Long productId, final String loanProductName, final Integer loanStatusId) { @@ -35,6 +37,7 @@ public class ClientAccountSummaryData { this.productName = loanProductName; this.accountStatusId = loanStatusId; this.status = null; + this.savingAccountStatus = null; } public ClientAccountSummaryData(final Long id, final String accountNo, final String externalId, final Long productId, @@ -46,12 +49,27 @@ public class ClientAccountSummaryData { this.productName = loanProductName; this.accountStatusId = null; this.status = loanStatus; + this.savingAccountStatus = null; + } + + public ClientAccountSummaryData(final Long id, final String accountNo, final String externalId, final Long productId, + final String loanProductName, final SavingsAccountStatusEnumData savingAccountStatus) { + this.id = id; + this.accountNo = accountNo; + this.externalId = externalId; + this.productId = productId; + this.productName = loanProductName; + this.accountStatusId = null; + this.status = null; + this.savingAccountStatus = savingAccountStatus; } public Integer accountStatusId() { Integer accountStatus = this.accountStatusId; if (accountStatus == null && this.status != null) { accountStatus = this.status.id().intValue(); + }else if (accountStatus == null && this.savingAccountStatus != null) { + accountStatus = this.savingAccountStatus.id().intValue(); } return accountStatus; } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java index 714f29a36..729e4a995 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientReadPlatformServiceImpl.java @@ -31,6 +31,10 @@ import org.mifosplatform.portfolio.group.data.GroupGeneralData; import org.mifosplatform.portfolio.group.service.SearchParameters; import org.mifosplatform.portfolio.loanaccount.data.LoanStatusEnumData; import org.mifosplatform.portfolio.loanproduct.service.LoanEnumerations; +import org.mifosplatform.portfolio.savings.data.SavingsAccountStatusEnumData; +import org.mifosplatform.portfolio.savings.domain.SavingsAccountStatusType; +import org.mifosplatform.portfolio.savings.service.SavingStatusMapper; +import org.mifosplatform.portfolio.savings.service.SavingsEnumerations; import org.mifosplatform.useradministration.domain.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.EmptyResultDataAccessException; @@ -411,8 +415,18 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService final List savingsAccounts = this.jdbcTemplate.query(savingsSql, savingsAccountSummaryDataMapper, new Object[] { clientId }); - approvedSavingAccounts.addAll(savingsAccounts); + if (results != null) { + for (ClientAccountSummaryData row : savingsAccounts) { + SavingStatusMapper statusMapper = new SavingStatusMapper(row.accountStatusId()); + + if (statusMapper.isOpen()) { + approvedSavingAccounts.add(row); + } else { + pendingApprovalSavingAccounts.add(row); + } + } + } return new ClientAccountSummaryCollectionData(pendingApprovalLoans, awaitingDisbursalLoans, openLoans, closedLoans, pendingApprovalDepositAccounts, approvedDepositAccounts, withdrawnByClientDespositAccounts, rejectedDepositAccounts, closedDepositAccounts, preclosedDepositAccounts, maturedDepositAccounts, pendingApprovalSavingAccounts, @@ -446,7 +460,7 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService public ClientSavingsAccountSummaryDataMapper() { StringBuilder accountsSummary = new StringBuilder(); - accountsSummary.append("sa.id as id, sa.account_no as accountNo, sa.external_id as externalId,"); + accountsSummary.append("sa.id as id, sa.account_no as accountNo, sa.external_id as externalId, sa.status_enum as statusEnum, "); accountsSummary.append("sa.product_id as productId, p.name as productName "); accountsSummary.append("from m_savings_account sa "); accountsSummary.append("join m_savings_product as p on p.id = sa.product_id "); @@ -465,10 +479,11 @@ public class ClientReadPlatformServiceImpl implements ClientReadPlatformService final String accountNo = rs.getString("accountNo"); final String externalId = rs.getString("externalId"); final Long productId = JdbcSupport.getLong(rs, "productId"); - final String loanProductName = rs.getString("productName"); - final LoanStatusEnumData loanStatus = null; + final String savingsProductName = rs.getString("productName"); + final Integer statusId = JdbcSupport.getInteger(rs, "statusEnum"); + final SavingsAccountStatusEnumData savingAccountStatus = SavingsEnumerations.status(statusId); - return new ClientAccountSummaryData(id, accountNo, externalId, productId, loanProductName, loanStatus); + return new ClientAccountSummaryData(id, accountNo, externalId, productId, savingsProductName, savingAccountStatus); } } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountStatusEnumData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountStatusEnumData.java index 3a3479079..444bc5a05 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountStatusEnumData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/data/SavingsAccountStatusEnumData.java @@ -32,4 +32,8 @@ public class SavingsAccountStatusEnumData { this.active = active; this.closed = closed; } + + public Long id() { + return this.id; + } } \ No newline at end of file diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingStatusMapper.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingStatusMapper.java new file mode 100644 index 000000000..507f48357 --- /dev/null +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/savings/service/SavingStatusMapper.java @@ -0,0 +1,19 @@ +package org.mifosplatform.portfolio.savings.service; + +public class SavingStatusMapper { + + private final Integer statusId; + + public SavingStatusMapper(Integer statusId) { + this.statusId = statusId; + } + + public boolean isPendingApproval() { + return Integer.valueOf(100).equals(statusId); + } + + public boolean isOpen() { + return Integer.valueOf(300).equals(statusId); + } + +}