Merge remote-tracking branch 'ashok/MIFOSX-256'
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.domain.CommandWrapper;
|
||||||
import org.mifosplatform.commands.service.CommandWrapperBuilder;
|
import org.mifosplatform.commands.service.CommandWrapperBuilder;
|
||||||
import org.mifosplatform.commands.service.PortfolioCommandSourceWritePlatformService;
|
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.api.ApiRequestParameterHelper;
|
||||||
import org.mifosplatform.infrastructure.core.data.CommandProcessingResult;
|
import org.mifosplatform.infrastructure.core.data.CommandProcessingResult;
|
||||||
import org.mifosplatform.infrastructure.core.data.EnumOptionData;
|
import org.mifosplatform.infrastructure.core.data.EnumOptionData;
|
||||||
@@ -107,9 +108,21 @@ public class CalendarsApiResource {
|
|||||||
@Context final UriInfo uriInfo) {
|
@Context final UriInfo uriInfo) {
|
||||||
|
|
||||||
this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions);
|
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
|
//Add recurring dates
|
||||||
calendarsData = handleRecurringDates(calendarsData);
|
calendarsData = handleRecurringDates(calendarsData);
|
||||||
|
|
||||||
|
|||||||
+2
@@ -14,6 +14,8 @@ public interface CalendarReadPlatformService {
|
|||||||
CalendarData retrieveCalendar(final Long calendarId, Long entityId, Integer entityTypeId);
|
CalendarData retrieveCalendar(final Long calendarId, Long entityId, Integer entityTypeId);
|
||||||
|
|
||||||
Collection<CalendarData> retrieveCalendarsByEntity(final Long entityId, final Integer entityTypeId);
|
Collection<CalendarData> retrieveCalendarsByEntity(final Long entityId, final Integer entityTypeId);
|
||||||
|
|
||||||
|
Collection<CalendarData> retrieveParentCalendarsByEntity(final Long entityId, final Integer entityTypeId);
|
||||||
|
|
||||||
Collection<CalendarData> retrieveAllCalendars();
|
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.domain.JdbcSupport;
|
||||||
import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource;
|
import org.mifosplatform.infrastructure.core.service.TenantAwareRoutingDataSource;
|
||||||
import org.mifosplatform.portfolio.calendar.data.CalendarData;
|
import org.mifosplatform.portfolio.calendar.data.CalendarData;
|
||||||
|
import org.mifosplatform.portfolio.calendar.domain.CalendarEntityType;
|
||||||
import org.mifosplatform.portfolio.calendar.exception.CalendarNotFoundException;
|
import org.mifosplatform.portfolio.calendar.exception.CalendarNotFoundException;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.dao.EmptyResultDataAccessException;
|
import org.springframework.dao.EmptyResultDataAccessException;
|
||||||
@@ -101,6 +102,18 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ
|
|||||||
|
|
||||||
return this.jdbcTemplate.query(sql, rm, new Object[] { entityId, entityTypeId });
|
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
|
@Override
|
||||||
public Collection<CalendarData> retrieveAllCalendars() {
|
public Collection<CalendarData> retrieveAllCalendars() {
|
||||||
@@ -116,5 +129,32 @@ public class CalendarReadPlatformServiceImpl implements CalendarReadPlatformServ
|
|||||||
public CalendarData retrieveNewCalendarDetails() {
|
public CalendarData retrieveNewCalendarDetails() {
|
||||||
return CalendarData.sensibleDefaultsForNewCalendarCreation();
|
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) {
|
public Collection<LocalDate> getNextRecurrencesList(final CalendarData calendarData) {
|
||||||
int maxCount = 10;//Default number of recurring dates
|
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);
|
final Recur recur = getRecur(calendarData);
|
||||||
|
|
||||||
if (recur == null) { return null; }
|
if (recur == null) { return null; }
|
||||||
|
|
||||||
final Date seed = new Date(calendarData.getStartDate().toDate());
|
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();
|
Calendar endDate = Calendar.getInstance();
|
||||||
endDate.setTime(calendarData.getStartDate().toDate());
|
endDate.setTime(calendarData.getStartDate().toDate());
|
||||||
|
|||||||
+8
-1
@@ -43,7 +43,8 @@ public final class LoanApplicationCommandFromApiJsonHelper {
|
|||||||
"submittedOnDate", "submittedOnNote", //
|
"submittedOnDate", "submittedOnNote", //
|
||||||
"accountNo", "externalId", "fundId", "loanOfficerId", // optional
|
"accountNo", "externalId", "fundId", "loanOfficerId", // optional
|
||||||
"loanPurposeId", "inArrearsTolerance", "charges", "collateral", // optional
|
"loanPurposeId", "inArrearsTolerance", "charges", "collateral", // optional
|
||||||
"transactionProcessingStrategyId" // settings
|
"transactionProcessingStrategyId", // settings
|
||||||
|
"calendarId" // optional
|
||||||
));
|
));
|
||||||
|
|
||||||
private final FromJsonHelper fromApiJsonHelper;
|
private final FromJsonHelper fromApiJsonHelper;
|
||||||
@@ -207,6 +208,12 @@ public final class LoanApplicationCommandFromApiJsonHelper {
|
|||||||
baseDataValidator.reset().parameter(transactionProcessingStrategyIdParameterName).value(transactionProcessingStrategyId).notNull()
|
baseDataValidator.reset().parameter(transactionProcessingStrategyIdParameterName).value(transactionProcessingStrategyId).notNull()
|
||||||
.integerGreaterThanZero();
|
.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
|
// charges
|
||||||
final String chargesParameterName = "charges";
|
final String chargesParameterName = "charges";
|
||||||
if (element.isJsonObject() && fromApiJsonHelper.parameterExists(chargesParameterName, element)) {
|
if (element.isJsonObject() && fromApiJsonHelper.parameterExists(chargesParameterName, element)) {
|
||||||
|
|||||||
+6
@@ -138,6 +138,12 @@ public class LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
|
|||||||
Note note = Note.loanNote(newLoanApplication, submittedOnNote);
|
Note note = Note.loanNote(newLoanApplication, submittedOnNote);
|
||||||
this.noteRepository.save(note);
|
this.noteRepository.save(note);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//get calendar
|
||||||
|
final Long calendarId = command.longValueOfParameterNamed("calendarId");
|
||||||
|
if(calendarId != null && calendarId != 0){
|
||||||
|
//Save calendar instance
|
||||||
|
}
|
||||||
|
|
||||||
return new CommandProcessingResultBuilder() //
|
return new CommandProcessingResultBuilder() //
|
||||||
.withCommandId(command.commandId()) //
|
.withCommandId(command.commandId()) //
|
||||||
|
|||||||
Reference in New Issue
Block a user