Merge pull request #924 from lingalamadhukar/MIFOSX-1242
MIFOSX-1245,MIFOSX-1244,MIFOSX-1243,MIFOSX-1242,MIFOSX-1241,MIFOSX-1240
This commit is contained in:
@@ -16,7 +16,6 @@ public final class AuditData {
|
||||
private final Long id;
|
||||
@SuppressWarnings("unused")
|
||||
private final String actionName;
|
||||
@SuppressWarnings("unused")
|
||||
private final String entityName;
|
||||
@SuppressWarnings("unused")
|
||||
private final Long resourceId;
|
||||
@@ -84,4 +83,8 @@ public final class AuditData {
|
||||
public String getCommandAsJson() {
|
||||
return this.commandAsJson;
|
||||
}
|
||||
|
||||
public String getEntityName() {
|
||||
return this.entityName;
|
||||
}
|
||||
}
|
||||
+108
-29
@@ -38,6 +38,12 @@ import org.mifosplatform.portfolio.client.service.ClientReadPlatformService;
|
||||
import org.mifosplatform.portfolio.loanproduct.data.LoanProductData;
|
||||
import org.mifosplatform.portfolio.loanproduct.service.LoanEnumerations;
|
||||
import org.mifosplatform.portfolio.loanproduct.service.LoanProductReadPlatformService;
|
||||
import org.mifosplatform.portfolio.savings.DepositAccountType;
|
||||
import org.mifosplatform.portfolio.savings.data.DepositProductData;
|
||||
import org.mifosplatform.portfolio.savings.data.SavingsProductData;
|
||||
import org.mifosplatform.portfolio.savings.service.DepositProductReadPlatformService;
|
||||
import org.mifosplatform.portfolio.savings.service.SavingsEnumerations;
|
||||
import org.mifosplatform.portfolio.savings.service.SavingsProductReadPlatformService;
|
||||
import org.mifosplatform.useradministration.data.AppUserData;
|
||||
import org.mifosplatform.useradministration.domain.AppUser;
|
||||
import org.mifosplatform.useradministration.service.AppUserReadPlatformService;
|
||||
@@ -70,13 +76,17 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
|
||||
private final StaffReadPlatformService staffReadPlatformService;
|
||||
private final PaginationHelper<AuditData> paginationHelper = new PaginationHelper<AuditData>();
|
||||
private final PaginationParametersDataValidator paginationParametersDataValidator;
|
||||
private final SavingsProductReadPlatformService savingsProductReadPlatformService;
|
||||
private final DepositProductReadPlatformService depositProductReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
public AuditReadPlatformServiceImpl(final PlatformSecurityContext context, final RoutingDataSource dataSource,
|
||||
final FromJsonHelper fromApiJsonHelper, final AppUserReadPlatformService appUserReadPlatformService,
|
||||
final OfficeReadPlatformService officeReadPlatformService, final ClientReadPlatformService clientReadPlatformService,
|
||||
final LoanProductReadPlatformService loanProductReadPlatformService, final StaffReadPlatformService staffReadPlatformService,
|
||||
final PaginationParametersDataValidator paginationParametersDataValidator) {
|
||||
final PaginationParametersDataValidator paginationParametersDataValidator,
|
||||
final SavingsProductReadPlatformService savingsProductReadPlatformService,
|
||||
final DepositProductReadPlatformService depositProductReadPlatformService) {
|
||||
this.context = context;
|
||||
this.jdbcTemplate = new JdbcTemplate(dataSource);
|
||||
this.fromApiJsonHelper = fromApiJsonHelper;
|
||||
@@ -86,6 +96,8 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
|
||||
this.loanProductReadPlatformService = loanProductReadPlatformService;
|
||||
this.staffReadPlatformService = staffReadPlatformService;
|
||||
this.paginationParametersDataValidator = paginationParametersDataValidator;
|
||||
this.savingsProductReadPlatformService = savingsProductReadPlatformService;
|
||||
this.depositProductReadPlatformService = depositProductReadPlatformService;
|
||||
}
|
||||
|
||||
private static final class AuditMapper implements RowMapper<AuditData> {
|
||||
@@ -308,43 +320,52 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
|
||||
final String productIdStr = auditObject.get("productId").getAsString();
|
||||
if (StringUtils.isNotBlank(productIdStr)) {
|
||||
productId = Long.valueOf(productIdStr);
|
||||
final LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveLoanProduct(productId);
|
||||
commandAsJsonMap.put("productName", loanProduct.getName());
|
||||
if (auditResult.getEntityName().equalsIgnoreCase("LOAN")) {
|
||||
final LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveLoanProduct(productId);
|
||||
commandAsJsonMap.put("productName", loanProduct.getName());
|
||||
} else if (auditResult.getEntityName().equalsIgnoreCase("SAVINGSACCOUNT")) {
|
||||
final SavingsProductData savingProduct = this.savingsProductReadPlatformService.retrieveOne(productId);
|
||||
commandAsJsonMap.put("productName", savingProduct.getName());
|
||||
} else if (auditResult.getEntityName().equalsIgnoreCase("RECURRINGDEPOSITACCOUNT")) {
|
||||
final DepositProductData depositProduct = this.depositProductReadPlatformService.retrieveOne(
|
||||
DepositAccountType.RECURRING_DEPOSIT, productId);
|
||||
commandAsJsonMap.put("productName", depositProduct.getName());
|
||||
} else if (auditResult.getEntityName().equalsIgnoreCase("FIXEDDEPOSITACCOUNT")) {
|
||||
final DepositProductData depositProduct = this.depositProductReadPlatformService.retrieveOne(
|
||||
DepositAccountType.FIXED_DEPOSIT, productId);
|
||||
commandAsJsonMap.put("productName", depositProduct.getName());
|
||||
} else {
|
||||
commandAsJsonMap.put("productName", "");
|
||||
}
|
||||
} else {
|
||||
commandAsJsonMap.put("productName", "");
|
||||
}
|
||||
}
|
||||
|
||||
if (commandAsJsonMap.containsKey("loanOfficerId")) {
|
||||
commandAsJsonMap.remove("loanOfficerId");
|
||||
if (commandAsJsonMap.containsKey("loanOfficerId") || commandAsJsonMap.containsKey("fieldOfficerId")
|
||||
|| commandAsJsonMap.containsKey("staffId")) {
|
||||
String staffIdStr = "";
|
||||
String staffNameParamName = "";
|
||||
|
||||
Long loanOfficerId = null;
|
||||
final String loanOfficerIdStr = auditObject.get("loanOfficerId").getAsString();
|
||||
if (StringUtils.isNotBlank(loanOfficerIdStr)) {
|
||||
loanOfficerId = Long.valueOf(loanOfficerIdStr);
|
||||
final StaffData officer = this.staffReadPlatformService.retrieveStaff(loanOfficerId);
|
||||
commandAsJsonMap.put("loanOfficerName", officer.getDisplayName());
|
||||
} else {
|
||||
commandAsJsonMap.put("loanOfficerName", "");
|
||||
if (commandAsJsonMap.containsKey("loanOfficerId")) {
|
||||
commandAsJsonMap.remove("loanOfficerId");
|
||||
staffIdStr = auditObject.get("loanOfficerId").getAsString();
|
||||
staffNameParamName = "loanOfficerName";
|
||||
} else if (commandAsJsonMap.containsKey("fieldOfficerId")) {
|
||||
commandAsJsonMap.remove("fieldOfficerId");
|
||||
staffIdStr = auditObject.get("fieldOfficerId").getAsString();
|
||||
staffNameParamName = "fieldOfficerName";
|
||||
} else if (commandAsJsonMap.containsKey("staffId")) {
|
||||
commandAsJsonMap.remove("staffId");
|
||||
staffIdStr = auditObject.get("staffId").getAsString();
|
||||
staffNameParamName = "staffName";
|
||||
}
|
||||
|
||||
replaceStaffIdWithStaffName(staffIdStr, staffNameParamName, commandAsJsonMap);
|
||||
|
||||
}
|
||||
|
||||
final String[] enumTypes = { "loanTermFrequencyType", "repaymentFrequencyType", "amortizationType", "interestType",
|
||||
"interestCalculationPeriodType", "interestRateFrequencyType" };
|
||||
|
||||
for (final String typeName : enumTypes) {
|
||||
if (commandAsJsonMap.containsKey(typeName)) {
|
||||
commandAsJsonMap.remove(typeName);
|
||||
|
||||
final Integer enumTypeId = auditObject.get(typeName).getAsInt();
|
||||
if (enumTypeId != null) {
|
||||
final String code = LoanEnumerations.loanEnumueration(typeName, enumTypeId).getCode();
|
||||
if (code != null) {
|
||||
commandAsJsonMap.put(typeName, code);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
updateEnumerations(commandAsJsonMap, auditObject, auditResult.getEntityName());
|
||||
|
||||
final String newAuditAsJson = this.fromApiJsonHelper.toJson(commandAsJsonMap);
|
||||
auditResult.setCommandAsJson(newAuditAsJson);
|
||||
@@ -352,6 +373,64 @@ public class AuditReadPlatformServiceImpl implements AuditReadPlatformService {
|
||||
return auditResult;
|
||||
}
|
||||
|
||||
private void updateEnumerations(Map<String, Object> commandAsJsonMap, JsonObject auditObject, String entityName) {
|
||||
|
||||
if (entityName.equalsIgnoreCase("LOAN") || entityName.equalsIgnoreCase("LOANPRODUCT")) {
|
||||
|
||||
final String[] enumTypes = { "loanTermFrequencyType", "termFrequencyType", "repaymentFrequencyType", "amortizationType",
|
||||
"interestType", "interestCalculationPeriodType", "interestRateFrequencyType", "loanType", "accountingRule" };
|
||||
|
||||
for (final String typeName : enumTypes) {
|
||||
if (commandAsJsonMap.containsKey(typeName)) {
|
||||
commandAsJsonMap.remove(typeName);
|
||||
|
||||
final Integer enumTypeId = auditObject.get(typeName).getAsInt();
|
||||
if (enumTypeId != null) {
|
||||
final String code = LoanEnumerations.loanEnumueration(typeName, enumTypeId).getValue();
|
||||
if (code != null) {
|
||||
commandAsJsonMap.put(typeName, code);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} else if (entityName.equalsIgnoreCase("SAVINGSPRODUCT") || entityName.equalsIgnoreCase("SAVINGSACCOUNT")
|
||||
|| entityName.equalsIgnoreCase("RECURRINGDEPOSITPRODUCT") || entityName.equalsIgnoreCase("RECURRINGDEPOSITACCOUNT")
|
||||
|| entityName.equalsIgnoreCase("FIXEDDEPOSITPRODUCT") || entityName.equalsIgnoreCase("FIXEDDEPOSITACCOUNT")) {
|
||||
|
||||
final String[] enumTypes = { "interestCompoundingPeriodType", "interestPostingPeriodType", "interestCalculationType",
|
||||
"lockinPeriodFrequencyType", "minDepositTermTypeId", "maxDepositTermTypeId", "inMultiplesOfDepositTermTypeId",
|
||||
"depositPeriodFrequencyId", "accountingRule", "interestCalculationDaysInYearType", "preClosurePenalInterestOnTypeId",
|
||||
"recurringFrequencyType" };
|
||||
|
||||
for (final String typeName : enumTypes) {
|
||||
if (commandAsJsonMap.containsKey(typeName)) {
|
||||
commandAsJsonMap.remove(typeName);
|
||||
|
||||
final Integer enumTypeId = auditObject.get(typeName).getAsInt();
|
||||
if (enumTypeId != null) {
|
||||
final String code = SavingsEnumerations.savingEnumueration(typeName, enumTypeId).getValue();
|
||||
if (code != null) {
|
||||
commandAsJsonMap.put(typeName, code);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void replaceStaffIdWithStaffName(final String staffIdStr, final String staffNameParamName, Map<String, Object> commandAsJsonMap) {
|
||||
|
||||
Long staffId = null;
|
||||
if (StringUtils.isNotBlank(staffIdStr)) {
|
||||
staffId = Long.valueOf(staffIdStr);
|
||||
final StaffData officer = this.staffReadPlatformService.retrieveStaff(staffId);
|
||||
commandAsJsonMap.put(staffNameParamName, officer.getDisplayName());
|
||||
} else {
|
||||
commandAsJsonMap.put(staffNameParamName, "");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AuditSearchData retrieveSearchTemplate(final String useType) {
|
||||
|
||||
|
||||
@@ -429,6 +429,11 @@ public final class Client extends AbstractPersistable<Long> {
|
||||
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.staffIdParamName);
|
||||
actualChanges.put(ClientApiConstants.staffIdParamName, newValue);
|
||||
}
|
||||
|
||||
if (command.isChangeInLongParameterNamed(ClientApiConstants.genderIdParamName, genderId())) {
|
||||
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.genderIdParamName);
|
||||
actualChanges.put(ClientApiConstants.genderIdParamName, newValue);
|
||||
}
|
||||
|
||||
if (command.isChangeInLongParameterNamed(ClientApiConstants.savingsProductIdParamName, savingsProductId())) {
|
||||
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.savingsProductIdParamName);
|
||||
@@ -734,4 +739,16 @@ public final class Client extends AbstractPersistable<Long> {
|
||||
public CodeValue gender() {
|
||||
return this.gender;
|
||||
}
|
||||
|
||||
private Long genderId() {
|
||||
Long genderId = null;
|
||||
if (this.gender != null) {
|
||||
genderId = this.gender.getId();
|
||||
}
|
||||
return genderId;
|
||||
}
|
||||
|
||||
public void updateGender(final CodeValue gender) {
|
||||
this.gender = gender;
|
||||
}
|
||||
}
|
||||
+10
@@ -260,6 +260,16 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
|
||||
}
|
||||
clientForUpdate.updateStaff(newStaff);
|
||||
}
|
||||
|
||||
if (changes.containsKey(ClientApiConstants.genderIdParamName)) {
|
||||
|
||||
final Long newValue = command.longValueOfParameterNamed(ClientApiConstants.genderIdParamName);
|
||||
CodeValue gender = null;
|
||||
if (newValue != null) {
|
||||
gender = this.codeValueRepository.findOneByCodeNameAndIdWithNotFoundDetection(ClientApiConstants.GENDER, newValue);
|
||||
}
|
||||
clientForUpdate.updateGender(gender);
|
||||
}
|
||||
|
||||
if (changes.containsKey(ClientApiConstants.savingsProductIdParamName)) {
|
||||
if (clientForUpdate.isActive()) { throw new ClientActiveForUpdateException(clientId,
|
||||
|
||||
+7
-2
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
package org.mifosplatform.portfolio.loanproduct.service;
|
||||
|
||||
import org.mifosplatform.accounting.common.AccountingEnumerations;
|
||||
import org.mifosplatform.infrastructure.core.data.EnumOptionData;
|
||||
import org.mifosplatform.portfolio.accountdetails.service.AccountEnumerations;
|
||||
import org.mifosplatform.portfolio.common.domain.PeriodFrequencyType;
|
||||
@@ -29,7 +30,7 @@ public class LoanEnumerations {
|
||||
public static final String INTEREST_TYPE = "interestType";
|
||||
public static final String INTEREST_CALCULATION_PERIOD_TYPE = "interestCalculationPeriodType";
|
||||
public static final String PAYMENT_TYPE = "paymentType";
|
||||
public static final String ACCOUNTING_RULE_TYPE = "accountingRuleType";
|
||||
public static final String ACCOUNTING_RULE_TYPE = "accountingRule";
|
||||
public static final String LOAN_TYPE = "loanType";
|
||||
|
||||
public static EnumOptionData loanEnumueration(final String typeName, final int id) {
|
||||
@@ -47,7 +48,11 @@ public class LoanEnumerations {
|
||||
return interestType(id);
|
||||
} else if (typeName.equals(INTEREST_CALCULATION_PERIOD_TYPE)) {
|
||||
return interestCalculationPeriodType(id);
|
||||
} else if (typeName.equals(LOAN_TYPE)) { return AccountEnumerations.loanType(id); }
|
||||
} else if (typeName.equals(ACCOUNTING_RULE_TYPE)) {
|
||||
return AccountingEnumerations.accountingRuleType(id);
|
||||
} else if (typeName.equals(LOAN_TYPE)) {
|
||||
return AccountEnumerations.loanType(id);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -361,4 +361,8 @@ public class DepositProductData {
|
||||
public int accountingRuleTypeId() {
|
||||
return this.accountingRule.getId().intValue();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
}
|
||||
+4
@@ -341,4 +341,8 @@ public class SavingsProductData {
|
||||
public int hashCode() {
|
||||
return this.id.hashCode();
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
}
|
||||
+44
-1
@@ -8,6 +8,7 @@ package org.mifosplatform.portfolio.savings.service;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.mifosplatform.accounting.common.AccountingEnumerations;
|
||||
import org.mifosplatform.infrastructure.core.data.EnumOptionData;
|
||||
import org.mifosplatform.portfolio.savings.DepositAccountOnClosureType;
|
||||
import org.mifosplatform.portfolio.savings.DepositAccountType;
|
||||
@@ -25,7 +26,49 @@ import org.mifosplatform.portfolio.savings.data.SavingsAccountTransactionEnumDat
|
||||
import org.mifosplatform.portfolio.savings.domain.SavingsAccountStatusType;
|
||||
|
||||
public class SavingsEnumerations {
|
||||
|
||||
|
||||
public static final String INTEREST_COMPOUNDING_PERIOD_TYPE = "interestCompoundingPeriodType";
|
||||
public static final String INTEREST_POSTING_PERIOD_TYPE = "interestPostingPeriodType";
|
||||
public static final String INTEREST_CALCULATION_TYPE = "interestCalculationType";
|
||||
public static final String MIN_DEPOSIT_TERM_TYPE = "minDepositTermTypeId";
|
||||
public static final String MAX_DEPOSIT_TERM_TYPE = "maxDepositTermTypeId";
|
||||
public static final String IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE = "inMultiplesOfDepositTermTypeId";
|
||||
public static final String DEPOSIT_PERIOD_FREQUNCY_TYPE = "depositPeriodFrequencyId";
|
||||
public static final String LOCKIN_PERIOD_FREQUNCY_TYPE = "lockinPeriodFrequencyType";
|
||||
public static final String ACCOUNTING_RULE_TYPE = "accountingRule";
|
||||
public static final String PRE_CLOSURE_PENAL_INTEREST_TYPE = "preClosurePenalInterestOnTypeId";
|
||||
public static final String INTEREST_CALCULATION_DAYS_IN_YEAR = "interestCalculationDaysInYearType";
|
||||
public static final String RECURRING_FREQUENCY_TYPE = "recurringFrequencyType";
|
||||
|
||||
public static EnumOptionData savingEnumueration(final String typeName, final int id) {
|
||||
if (typeName.equals(INTEREST_COMPOUNDING_PERIOD_TYPE)) {
|
||||
return compoundingInterestPeriodType(id);
|
||||
} else if (typeName.equals(INTEREST_POSTING_PERIOD_TYPE)) {
|
||||
return interestPostingPeriodType(id);
|
||||
} else if (typeName.equals(INTEREST_CALCULATION_TYPE)) {
|
||||
return interestCalculationType(id);
|
||||
} else if (typeName.equals(MIN_DEPOSIT_TERM_TYPE)) {
|
||||
return depositTermFrequencyType(id);
|
||||
} else if (typeName.equals(MAX_DEPOSIT_TERM_TYPE)) {
|
||||
return depositTermFrequencyType(id);
|
||||
} else if (typeName.equals(IN_MULTIPLES_OF_DEPOSIT_TERM_TYPE)) {
|
||||
return inMultiplesOfDepositTermFrequencyType(id);
|
||||
} else if (typeName.equals(DEPOSIT_PERIOD_FREQUNCY_TYPE)) {
|
||||
return depositPeriodFrequency(id);
|
||||
} else if (typeName.equals(LOCKIN_PERIOD_FREQUNCY_TYPE)) {
|
||||
return lockinPeriodFrequencyType(id);
|
||||
} else if (typeName.equals(ACCOUNTING_RULE_TYPE)) {
|
||||
return AccountingEnumerations.accountingRuleType(id);
|
||||
} else if (typeName.equals(PRE_CLOSURE_PENAL_INTEREST_TYPE)) {
|
||||
return preClosurePenaltyInterestOnType(id);
|
||||
} else if (typeName.equals(INTEREST_CALCULATION_DAYS_IN_YEAR)) {
|
||||
return interestCalculationDaysInYearType(id);
|
||||
} else if (typeName.equals(RECURRING_FREQUENCY_TYPE)) {
|
||||
return depositPeriodFrequency(id);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static EnumOptionData lockinPeriodFrequencyType(final int id) {
|
||||
return lockinPeriodFrequencyType(SavingsPeriodFrequencyType.fromInt(id));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user