wip:MIFOSX-256 - attaching calendar to loan
This commit is contained in:
+15
-2
@@ -28,6 +28,7 @@ import org.joda.time.LocalDate;
|
||||
import org.mifosplatform.commands.domain.CommandWrapper;
|
||||
import org.mifosplatform.commands.service.CommandWrapperBuilder;
|
||||
import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService;
|
||||
import org.mifosplatform.infrastructure.core.api.ApiParameterHelper;
|
||||
import org.mifosplatform.infrastructure.core.api.ApiRequestParameterHelper;
|
||||
import org.mifosplatform.infrastructure.core.data.CommandProcessingResult;
|
||||
import org.mifosplatform.infrastructure.core.data.EnumOptionData;
|
||||
@@ -107,9 +108,21 @@ public class CalendarsApiResource {
|
||||
@Context final UriInfo uriInfo) {
|
||||
|
||||
this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions);
|
||||
|
||||
final Set<String> associationParameters = ApiParameterHelper.extractAssociationsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
|
||||
Collection<CalendarData> calendarsData = new ArrayList<CalendarData>();
|
||||
|
||||
if (!associationParameters.isEmpty()) {
|
||||
if (associationParameters.contains("parentCalendars")) {
|
||||
calendarsData.addAll(this.readPlatformService.retrieveParentCalendarsByEntity(entityId,
|
||||
CalendarEntityType.valueOf(entityType.toUpperCase()).getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
calendarsData.addAll(this.readPlatformService.retrieveCalendarsByEntity(entityId, CalendarEntityType.valueOf(entityType.toUpperCase())
|
||||
.getValue()));
|
||||
|
||||
Collection<CalendarData> calendarsData = this.readPlatformService.retrieveCalendarsByEntity(entityId,
|
||||
CalendarEntityType.valueOf(entityType.toUpperCase()).getValue());
|
||||
//Add recurring dates
|
||||
calendarsData = handleRecurringDates(calendarsData);
|
||||
|
||||
|
||||
+2
@@ -14,6 +14,8 @@ public interface CalendarReadPlatformService {
|
||||
CalendarData retrieveCalendar(final Long calendarId, Long entityId, Integer entityTypeId);
|
||||
|
||||
Collection<CalendarData> retrieveCalendarsByEntity(final Long entityId, final Integer entityTypeId);
|
||||
|
||||
Collection<CalendarData> retrieveParentCalendarsByEntity(final Long entityId, final Integer entityTypeId);
|
||||
|
||||
Collection<CalendarData> retrieveAllCalendars();
|
||||
|
||||
|
||||
+40
@@ -14,6 +14,7 @@ import org.mifosplatform.infrastructure.core.data.EnumOptionData;
|
||||
import org.mifosplatform.infrastructure.core.domain.JdbcSupport;
|
||||
import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource;
|
||||
import org.mifosplatform.portfolio.calendar.data.CalendarData;
|
||||
import org.mifosplatform.portfolio.calendar.domain.CalendarEntityType;
|
||||
import org.mifosplatform.portfolio.calendar.exception.CalendarNotFoundException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.dao.EmptyResultDataAccessException;
|
||||
@@ -101,6 +102,18 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ
|
||||
|
||||
return this.jdbcTemplate.query(sql, rm, new Object[] { entityId, entityTypeId });
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<CalendarData> retrieveParentCalendarsByEntity(Long entityId, Integer entityTypeId) {
|
||||
|
||||
final CalendarDataMapper rm = new CalendarDataMapper();
|
||||
CalendarEntityType ceType = CalendarEntityType.fromInt(entityTypeId);
|
||||
String parentHeirarchyCondition = getParentHierarchyCondition(ceType);
|
||||
final String sql = rm.schema() + " " + parentHeirarchyCondition
|
||||
+ " and ci.entity_type_enum = ? order by c.start_date ";
|
||||
|
||||
return this.jdbcTemplate.query(sql, rm, new Object[] { entityId, CalendarEntityType.GROUPS.getValue() });
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<CalendarData> retrieveAllCalendars() {
|
||||
@@ -116,5 +129,32 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ
|
||||
public CalendarData retrieveNewCalendarDetails() {
|
||||
return CalendarData.sensibleDefaultsForNewCalendarCreation();
|
||||
}
|
||||
|
||||
public static String getParentHierarchyCondition(final CalendarEntityType calendarEntityType) {
|
||||
String conditionSql = "";
|
||||
|
||||
switch (calendarEntityType) {
|
||||
case CLIENTS:
|
||||
//TODO : AA : do we need to propagate to top level parent in hierarchy?
|
||||
conditionSql = " and ci.entity_id in (select gc.group_id from m_client c join m_group_client gc "
|
||||
+ " on c.id=gc.client_id where c.id = ? ) ";
|
||||
break;
|
||||
|
||||
case GROUPS:
|
||||
//TODO : AA: add parent hierarchy for groups
|
||||
conditionSql = " and ci.entity_id = ? ) ";
|
||||
break;
|
||||
|
||||
case LOANS:
|
||||
//TODO : AA: do we need parent hierarchy calendars for loans?
|
||||
conditionSql = " and ci.entity_id = ? ) ";
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return conditionSql;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+4
-3
@@ -43,16 +43,17 @@ public class CalendarWrapperService {
|
||||
|
||||
public Collection<LocalDate> getNextRecurrencesList(final CalendarData calendarData) {
|
||||
int maxCount = 10;//Default number of recurring dates
|
||||
return getNextRecurrencesList(calendarData, maxCount);
|
||||
LocalDate periodStartDate = new LocalDate(Calendar.getInstance().getTime());
|
||||
return getNextRecurrencesList(calendarData, maxCount, periodStartDate);
|
||||
}
|
||||
|
||||
public Collection<LocalDate> getNextRecurrencesList(final CalendarData calendarData, int maxCount) {
|
||||
public Collection<LocalDate> getNextRecurrencesList(final CalendarData calendarData, int maxCount, final LocalDate psDate) {
|
||||
final Recur recur = getRecur(calendarData);
|
||||
|
||||
if (recur == null) { return null; }
|
||||
|
||||
final Date seed = new Date(calendarData.getStartDate().toDate());
|
||||
final DateTime periodStart = new DateTime(calendarData.getStartDate().toDate());
|
||||
final DateTime periodStart = new DateTime(psDate.toDate());
|
||||
|
||||
Calendar endDate = Calendar.getInstance();
|
||||
endDate.setTime(calendarData.getStartDate().toDate());
|
||||
|
||||
+8
-1
@@ -43,7 +43,8 @@ public final class LoanApplicationCommandFromApiJsonHelper {
|
||||
"submittedOnDate", "submittedOnNote", //
|
||||
"accountNo", "externalId", "fundId", "loanOfficerId", // optional
|
||||
"loanPurposeId", "inArrearsTolerance", "charges", "collateral", // optional
|
||||
"transactionProcessingStrategyId" // settings
|
||||
"transactionProcessingStrategyId", // settings
|
||||
"calendarId" // optional
|
||||
));
|
||||
|
||||
private final FromJsonHelper fromApiJsonHelper;
|
||||
@@ -207,6 +208,12 @@ public final class LoanApplicationCommandFromApiJsonHelper {
|
||||
baseDataValidator.reset().parameter(transactionProcessingStrategyIdParameterName).value(transactionProcessingStrategyId).notNull()
|
||||
.integerGreaterThanZero();
|
||||
|
||||
final String calendarIdParameterName = "calendarId";
|
||||
if (fromApiJsonHelper.parameterExists(calendarIdParameterName, element)) {
|
||||
final Long calendarId = fromApiJsonHelper.extractLongNamed(calendarIdParameterName, element);
|
||||
baseDataValidator.reset().parameter(calendarIdParameterName).value(calendarId).ignoreIfNull().integerGreaterThanZero();
|
||||
}
|
||||
|
||||
// charges
|
||||
final String chargesParameterName = "charges";
|
||||
if (element.isJsonObject() && fromApiJsonHelper.parameterExists(chargesParameterName, element)) {
|
||||
|
||||
+6
@@ -138,6 +138,12 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
|
||||
Note note = Note.loanNote(newLoanApplication, submittedOnNote);
|
||||
this.noteRepository.save(note);
|
||||
}
|
||||
|
||||
//get calendar
|
||||
final Long calendarId = command.longValueOfParameterNamed("calendarId");
|
||||
if(calendarId != null && calendarId != 0){
|
||||
//Save calendar instance
|
||||
}
|
||||
|
||||
return new CommandProcessingResultBuilder() //
|
||||
.withCommandId(command.commandId()) //
|
||||
|
||||
Reference in New Issue
Block a user