From 6e60f5baf897a5ac80f9866bb9a3953dbb95f8fe Mon Sep 17 00:00:00 2001 From: Nayan Ambali Date: Wed, 27 Feb 2013 19:23:02 +0530 Subject: [PATCH] fix: get group summary details --- .../portfolio/group/data/GroupData.java | 11 ++++++++++- .../group/service/GroupReadPlatformService.java | 6 +++--- .../service/GroupReadPlatformServiceImpl.java | 17 +++++++++-------- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupData.java index ae0610fe8..7f6d2c9de 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupData.java @@ -26,6 +26,7 @@ public class GroupData { private final Long groupLevel; private final Long parentId; private final String parentName; + private final String hierarchy; @SuppressWarnings("unused") private final GroupSummaryData groupSummaryData; @SuppressWarnings("unused") @@ -43,7 +44,7 @@ public class GroupData { private final Collection childGroups; public GroupData(final Long id, final Long officeId, final String officeName, final String name, final String externalId, - final Long groupLevel, final Long parentId, final String parentName, final Long staffId, final String staffName) { + final Long groupLevel, final Long parentId, final String parentName, final Long staffId, final String staffName , final String hierarchy) { this.id = id; this.officeId = officeId; this.officeName = officeName; @@ -54,6 +55,7 @@ public class GroupData { this.parentName = parentName; this.staffId = staffId; this.staffName = staffName; + this.hierarchy = hierarchy; this.groupSummaryData = null; this.groupLevelData = null; this.clientMembers = null; @@ -77,6 +79,7 @@ public class GroupData { this.parentName = group.getParentName(); this.staffId = group.getStaffId(); this.staffName = group.getStaffName(); + this.hierarchy = group.getHierarchy(); this.groupSummaryData = groupSummaryData; this.groupLevelData = groupLevelData; @@ -102,6 +105,7 @@ public class GroupData { this.parentName = null; this.staffId = null; this.staffName = null; + this.hierarchy = null; this.groupSummaryData = null; this.groupLevelData = groupLevelData; this.allowedClients = allowedClients; @@ -151,6 +155,11 @@ public class GroupData { return this.parentName; } + + public String getHierarchy() { + return this.hierarchy; + } + public Collection clientMembers() { return this.clientMembers; } diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformService.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformService.java index e893dbdf9..0ae67461f 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformService.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/GroupReadPlatformService.java @@ -40,9 +40,9 @@ public interface GroupReadPlatformService { Collection retrieveChildGroupsbyGroupId(Long groupId); - Long retrieveTotalClients(Long groupId); - Long retrieveTotalNoOfChildGroups(Long groupId); - Collection retrieveGroupLoanPortfolio(Long groupId); + Long retrieveTotalClients(String hierarchy); + + Collection retrieveGroupLoanPortfolio(String hierarchy); } 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 f1c1b9a61..ef8c97143 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 @@ -182,9 +182,9 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { Collection allowedStaffs = null; Collection childGroups = this.retrieveChildGroupsbyGroupId(groupId); - final Long totalActiveClients = this.retrieveTotalClients(groupId); + final Long totalActiveClients = this.retrieveTotalClients(group.getHierarchy()); final Long totalChildGroups = this.retrieveTotalNoOfChildGroups(groupId); - Collection totalLoanPortfolio = this.retrieveGroupLoanPortfolio(groupId); + Collection totalLoanPortfolio = this.retrieveGroupLoanPortfolio(group.getHierarchy()); GroupSummaryData groupSummaryData = new GroupSummaryData(totalActiveClients, totalChildGroups, totalLoanPortfolio, null); @@ -230,11 +230,11 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { } @Override - public Long retrieveTotalClients(final Long groupId) { + public Long retrieveTotalClients(final String hierarchy) { this.context.authenticatedUser(); - String groupHierarchy = "." + groupId + "%"; + String groupHierarchy = hierarchy + "%"; String sqlTotalClients = "SELECT count(gc.client_id) FROM m_group_client gc JOIN m_group g " + "ON gc.group_id = g.id WHERE g.hierarchy LIKE ? "; return this.jdbcTemplate.queryForLong(sqlTotalClients, new Object[] { groupHierarchy }); @@ -251,13 +251,13 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { } @Override - public Collection retrieveGroupLoanPortfolio(final Long groupId) { + public Collection retrieveGroupLoanPortfolio(final String hierarchy) { this.context.authenticatedUser(); MoneyDataMapper rm = new MoneyDataMapper(); - String groupHierarchy = "." + groupId + "%"; + String groupHierarchy = hierarchy + "%"; String sql = "select " + rm.moneyDataSchema() + " FROM m_group_client gc JOIN m_group g ON gc.group_id = g.id " + "JOIN m_loan l ON l.client_id = gc.client_id LEFT JOIN m_organisation_currency oc ON oc.code = l.currency_code " + " WHERE g.hierarchy LIKE ? GROUP BY l.currency_code "; @@ -289,7 +289,7 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { public String groupSchema() { return "g.office_id as officeId, g.level_id as groupLevel , g.parent_id as parentId , o.name as officeName," + " g.id as id, g.external_id as externalId, g.name as name , s.display_name as staffName , pg.name as" - + " parentName , g.staff_id as staffId from m_group g join m_office o on o.id = g.office_id left join " + + " parentName , g.staff_id as staffId , g.hierarchy as hierarchy from m_group g join m_office o on o.id = g.office_id left join " + "m_staff s on s.id = g.staff_id left join m_group pg on pg.id = g.parent_id"; } @@ -306,8 +306,9 @@ public class GroupReadPlatformServiceImpl implements GroupReadPlatformService { String parentName = rs.getString("parentName"); Long staffId = rs.getLong("staffId"); String staffName = rs.getString("staffName"); + String hierarchy =rs.getString("hierarchy"); - return new GroupData(id, officeId, officeName, name, externalId, groupLevel, parentId, parentName, staffId, staffName); + return new GroupData(id, officeId, officeName, name, externalId, groupLevel, parentId, parentName, staffId, staffName , hierarchy); } }