diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/CenterData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/CenterData.java index 8ecd24ca4..d0a6acef5 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/CenterData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/CenterData.java @@ -34,7 +34,7 @@ public class CenterData { private final Long staffId; private final String staffName; private final String hierarchy; - + private final GroupTimelineData timeline; // associations private final Collection groupMembers; @@ -49,20 +49,21 @@ public class CenterData { final Collection staffOptions, final Collection groupMembersOptions) { final CalendarData collectionMeetingCalendar = null; final Collection closureReasons = null; + final GroupTimelineData timeline = null; return new CenterData(null, null, null, null, activationDate, officeId, null, null, null, null, null, officeOptions, staffOptions, - groupMembersOptions, collectionMeetingCalendar, closureReasons); + groupMembersOptions, collectionMeetingCalendar, closureReasons, timeline); } public static CenterData withTemplate(final CenterData templateCenter, final CenterData center) { return new CenterData(center.id, center.name, center.externalId, center.status, center.activationDate, center.officeId, center.officeName, center.staffId, center.staffName, center.hierarchy, center.groupMembers, templateCenter.officeOptions, templateCenter.staffOptions, templateCenter.groupMembersOptions, templateCenter.collectionMeetingCalendar, - templateCenter.closureReasons); + templateCenter.closureReasons, center.timeline); } public static CenterData instance(final Long id, final String name, final String externalId, final EnumOptionData status, final LocalDate activationDate, final Long officeId, final String officeName, final Long staffId, final String staffName, - final String hierarchy) { + final String hierarchy, final GroupTimelineData timeline) { final Collection groupMembers = null; final Collection officeOptions = null; @@ -72,7 +73,7 @@ public class CenterData { final Collection closureReasons = null; return new CenterData(id, name, externalId, status, activationDate, officeId, officeName, staffId, staffName, hierarchy, - groupMembers, officeOptions, staffOptions, groupMembersOptions, collectionMeetingCalendar, closureReasons); + groupMembers, officeOptions, staffOptions, groupMembersOptions, collectionMeetingCalendar, closureReasons, timeline); } public static CenterData withAssociations(final CenterData centerData, final Collection groupMembers, @@ -80,7 +81,7 @@ public class CenterData { return new CenterData(centerData.id, centerData.name, centerData.externalId, centerData.status, centerData.activationDate, centerData.officeId, centerData.officeName, centerData.staffId, centerData.staffName, centerData.hierarchy, groupMembers, centerData.officeOptions, centerData.staffOptions, centerData.groupMembersOptions, collectionMeetingCalendar, - centerData.closureReasons); + centerData.closureReasons, centerData.timeline); } public static CenterData withClosureReasons(final Collection closureReasons) { @@ -99,15 +100,16 @@ public class CenterData { final Collection staffOptions = null; final Collection groupMembersOptions = null; final CalendarData collectionMeetingCalendar = null; + final GroupTimelineData timeline = null; return new CenterData(id, name, externalId, status, activationDate, officeId, officeName, staffId, staffName, hierarchy, - groupMembers, officeOptions, staffOptions, groupMembersOptions, collectionMeetingCalendar, closureReasons); + groupMembers, officeOptions, staffOptions, groupMembersOptions, collectionMeetingCalendar, closureReasons, timeline); } private CenterData(final Long id, final String name, final String externalId, final EnumOptionData status, final LocalDate activationDate, final Long officeId, final String officeName, final Long staffId, final String staffName, final String hierarchy, final Collection groupMembers, final Collection officeOptions, final Collection staffOptions, final Collection groupMembersOptions, - final CalendarData collectionMeetingCalendar, final Collection closureReasons) { + final CalendarData collectionMeetingCalendar, final Collection closureReasons, final GroupTimelineData timeline) { this.id = id; this.name = name; this.externalId = externalId; @@ -132,6 +134,7 @@ public class CenterData { this.groupMembersOptions = groupMembersOptions; this.collectionMeetingCalendar = collectionMeetingCalendar; this.closureReasons = closureReasons; + this.timeline = timeline; } public Long officeId() { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupTimelineData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupTimelineData.java index fa3426586..eba821873 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupTimelineData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/data/GroupTimelineData.java @@ -8,8 +8,8 @@ package org.mifosplatform.portfolio.group.data; import org.joda.time.LocalDate; /** - * Immutable data object represent the important time-line events of a loan - * application and loan. + * Immutable data object represent the important time-line events of a group/center. + * */ @SuppressWarnings("unused") public class GroupTimelineData { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/CenterReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/CenterReadPlatformServiceImpl.java index 55e2a9f31..b66a2d311 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/CenterReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/service/CenterReadPlatformServiceImpl.java @@ -33,6 +33,7 @@ import org.mifosplatform.portfolio.client.service.ClientReadPlatformService; import org.mifosplatform.portfolio.group.api.GroupingTypesApiConstants; import org.mifosplatform.portfolio.group.data.CenterData; import org.mifosplatform.portfolio.group.data.GroupGeneralData; +import org.mifosplatform.portfolio.group.data.GroupTimelineData; import org.mifosplatform.portfolio.group.domain.GroupTypes; import org.mifosplatform.portfolio.group.domain.GroupingTypeEnumerations; import org.mifosplatform.portfolio.group.exception.CenterNotFoundException; @@ -120,9 +121,25 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService + "g.office_id as officeId, o.name as officeName, " // + "g.staff_id as staffId, s.display_name as staffName, " // + "g.status_enum as statusEnum, g.activation_date as activationDate, " // - + "g.hierarchy as hierarchy " // + + "g.hierarchy as hierarchy, " // + + "g.closedon_date as closedOnDate, " + + "g.submittedon_date as submittedOnDate, " + + "sbu.username as submittedByUsername, " + + "sbu.firstname as submittedByFirstname, " + + "sbu.lastname as submittedByLastname, " + + "clu.username as closedByUsername, " + + "clu.firstname as closedByFirstname, " + + "clu.lastname as closedByLastname, " + + "acu.username as activatedByUsername, " + + "acu.firstname as activatedByFirstname, " + + "acu.lastname as activatedByLastname " + "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 "; + + "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 " + + "left join m_appuser sbu on sbu.id = g.submittedon_userid " + + "left join m_appuser acu on acu.id = g.activatedon_userid " + + "left join m_appuser clu on clu.id = g.closedon_userid "; private static final class CenterDataMapper implements RowMapper { @@ -151,8 +168,27 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService final Long staffId = JdbcSupport.getLong(rs, "staffId"); final String staffName = rs.getString("staffName"); final String hierarchy = rs.getString("hierarchy"); + + final LocalDate closedOnDate = JdbcSupport.getLocalDate(rs, "closedOnDate"); + final String closedByUsername = rs.getString("closedByUsername"); + final String closedByFirstname = rs.getString("closedByFirstname"); + final String closedByLastname = rs.getString("closedByLastname"); - return CenterData.instance(id, name, externalId, status, activationDate, officeId, officeName, staffId, staffName, hierarchy); + final LocalDate submittedOnDate = JdbcSupport.getLocalDate(rs, "submittedOnDate"); + final String submittedByUsername = rs.getString("submittedByUsername"); + final String submittedByFirstname = rs.getString("submittedByFirstname"); + final String submittedByLastname = rs.getString("submittedByLastname"); + + + final String activatedByUsername = rs.getString("activatedByUsername"); + final String activatedByFirstname = rs.getString("activatedByFirstname"); + final String activatedByLastname = rs.getString("activatedByLastname"); + + final GroupTimelineData timeline = new GroupTimelineData (submittedOnDate, submittedByUsername, submittedByFirstname, submittedByLastname, + activationDate, activatedByUsername, activatedByFirstname, activatedByLastname, closedOnDate, closedByUsername, + closedByFirstname, closedByLastname); + + return CenterData.instance(id, name, externalId, status, activationDate, officeId, officeName, staffId, staffName, hierarchy, timeline); } } @@ -185,9 +221,28 @@ public class CenterReadPlatformServiceImpl implements CenterReadPlatformService final Long staffId = JdbcSupport.getLong(rs, "staffId"); final String staffName = rs.getString("staffName"); final String hierarchy = rs.getString("hierarchy"); + + final LocalDate closedOnDate = JdbcSupport.getLocalDate(rs, "closedOnDate"); + final String closedByUsername = rs.getString("closedByUsername"); + final String closedByFirstname = rs.getString("closedByFirstname"); + final String closedByLastname = rs.getString("closedByLastname"); + + final LocalDate submittedOnDate = JdbcSupport.getLocalDate(rs, "submittedOnDate"); + final String submittedByUsername = rs.getString("submittedByUsername"); + final String submittedByFirstname = rs.getString("submittedByFirstname"); + final String submittedByLastname = rs.getString("submittedByLastname"); + + + final String activatedByUsername = rs.getString("activatedByUsername"); + final String activatedByFirstname = rs.getString("activatedByFirstname"); + final String activatedByLastname = rs.getString("activatedByLastname"); + + final GroupTimelineData timeline = new GroupTimelineData (submittedOnDate, submittedByUsername, submittedByFirstname, submittedByLastname, + activationDate, activatedByUsername, activatedByFirstname, activatedByLastname, closedOnDate, closedByUsername, + closedByFirstname, closedByLastname); return GroupGeneralData.instance(id, name, externalId, status, activationDate, officeId, officeName, null, null, staffId, - staffName, hierarchy,null); + staffName, hierarchy,timeline); } }