diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/calendar/api/CalendarsApiResource.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/calendar/api/CalendarsApiResource.java index 7ef9725f9..dc36a824c 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/calendar/api/CalendarsApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/calendar/api/CalendarsApiResource.java @@ -34,6 +34,7 @@ import org.mifosplatform.infrastructure.core.data.CommandProcessingResult; import org.mifosplatform.infrastructure.core.data.EnumOptionData; import org.mifosplatform.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.mifosplatform.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.mifosplatform.infrastructure.core.service.DateUtils; import org.mifosplatform.infrastructure.security.service.PlatformSecurityContext; import org.mifosplatform.portfolio.calendar.data.CalendarData; import org.mifosplatform.portfolio.calendar.domain.Calendar; @@ -56,7 +57,7 @@ public class CalendarsApiResource { private final Set RESPONSE_DATA_PARAMETERS = new HashSet(Arrays.asList("id", "entityId", "entityType", "title", "description", "location", "startDate", "endDate", "duration", "type", "repeating", "recurrence", "remindBy", "firstReminder", "secondReminder", "humanReadable", "createdDate", "lastUpdatedDate", "createdByUserId", "createdByUsername", - "lastUpdatedByUserId", "lastUpdatedByUsername", "recurringDates")); + "lastUpdatedByUserId", "lastUpdatedByUsername", "recurringDates","nextTenRecurringDates")); private final String resourceNameForPermissions = "CALENDAR"; private final PlatformSecurityContext context; @@ -197,9 +198,21 @@ public class CalendarsApiResource { private CalendarData handleRecurringDate(final CalendarData calendarData){ if(!calendarData.isRepeating()) return calendarData; - - final Collection recurringDates = CalendarHelper.getRecurringDates(calendarData.getRecurrence(), calendarData.getStartDate(), calendarData.getEndDate()); - return new CalendarData(calendarData, recurringDates); + final String rrule = calendarData.getRecurrence(); + final LocalDate currentDate = DateUtils.getLocalDateOfTenant(); + LocalDate seedDate = calendarData.getStartDate(); + LocalDate endDate = calendarData.getEndDate(); + if(seedDate.isBefore(currentDate.minusYears(1))){ + seedDate = currentDate.minusYears(1); + } + + if(endDate == null || endDate.isAfter(currentDate.plusYears(1))){ + endDate = currentDate.plusYears(1); + } + + final Collection recurringDates = CalendarHelper.getRecurringDates(rrule, seedDate, seedDate, endDate, -1); + final Collection nextTenRecurringDates = CalendarHelper.getRecurringDates(rrule, seedDate, endDate); + return new CalendarData(calendarData, recurringDates, nextTenRecurringDates); } private Collection handleRecurringDates(final Collection calendarsData) { diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/calendar/data/CalendarData.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/calendar/data/CalendarData.java index a76659129..ffd205f61 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/calendar/data/CalendarData.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/calendar/data/CalendarData.java @@ -35,6 +35,7 @@ public class CalendarData { private final Integer firstReminder; private final Integer secondReminder; private final Collection recurringDates; + private final Collection nextTenRecurringDates; private final String humanReadable; private final LocalDate createdDate; @@ -74,6 +75,7 @@ public class CalendarData { this.calendarTypeOptions = null; this.remindByOptions = null; this.recurringDates = null; + this.nextTenRecurringDates = null; this.humanReadable = humanReadable; this.createdDate = createdDate; @@ -105,6 +107,7 @@ public class CalendarData { this.calendarTypeOptions = calendarTypeOptions; this.remindByOptions = remindByOptions; this.recurringDates = calendarData.recurringDates; + this.nextTenRecurringDates = calendarData.nextTenRecurringDates; this.humanReadable = calendarData.humanReadable; this.createdDate = calendarData.createdDate; this.lastUpdatedDate = calendarData.lastUpdatedDate; @@ -114,7 +117,7 @@ public class CalendarData { this.lastUpdatedByUsername = calendarData.lastUpdatedByUsername; } - public CalendarData(final CalendarData calendarData, final Collection recurringDates) { + public CalendarData(final CalendarData calendarData, final Collection recurringDates, final Collection nextTenRecurringDates) { this.id = calendarData.id; this.entityId = calendarData.entityId; this.entityType = calendarData.entityType; @@ -134,6 +137,7 @@ public class CalendarData { this.calendarTypeOptions = null; this.remindByOptions = null; this.recurringDates = recurringDates; + this.nextTenRecurringDates = nextTenRecurringDates; this.humanReadable = calendarData.humanReadable; this.createdDate = calendarData.createdDate; this.lastUpdatedDate = calendarData.lastUpdatedDate;