Add permissions for retrieveing

This commit is contained in:
Madhukar
2012-09-10 07:47:35 +05:30
parent 940a665255
commit dc9c17ad08
6 changed files with 91 additions and 2 deletions
@@ -25,6 +25,7 @@ import org.mifosng.platform.api.commands.DepositStateTransitionApprovalCommand;
import org.mifosng.platform.api.commands.DepositStateTransitionCommand;
import org.mifosng.platform.api.commands.UndoStateTransitionCommand;
import org.mifosng.platform.api.data.DepositAccountData;
import org.mifosng.platform.api.data.DepositPermissionData;
import org.mifosng.platform.api.data.DepositProductLookup;
import org.mifosng.platform.api.data.EntityIdentifier;
import org.mifosng.platform.api.data.EnumOptionData;
@@ -106,6 +107,9 @@ public class DepositAccountsApiResource {
public String retrieveDepositAccount(@PathParam("accountId") final Long accountId, @Context final UriInfo uriInfo) {
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
DepositPermissionData permissions = null;
if (responseParameters.isEmpty()) {
responseParameters.addAll(typicalResponseParameters);
}
@@ -118,6 +122,18 @@ public class DepositAccountsApiResource {
account = handleTemplateRelatedData(responseParameters, account);
}
Set<String> associationParameters = ApiParameterHelper.extractAssociationsForResponseIfProvided(uriInfo.getQueryParameters());
if (!associationParameters.isEmpty()) {
if (associationParameters.contains("all")) {
responseParameters.addAll(Arrays.asList("permissions"));
} else {
responseParameters.addAll(associationParameters);
}
permissions = this.depositAccountReadPlatformService.retrieveDepositAccountsPermissions(account);
}
account.setPermissions(permissions);
return this.apiJsonSerializerService.serializeDepositAccountDataToJson(prettyPrint, responseParameters, account);
}
@@ -46,6 +46,7 @@ public class DepositAccountData {
private final List<DepositProductLookup> productOptions;
private Collection<DepositAccountTransactionData> transactions;
private DepositPermissionData permissions;
/*
* used when returning account template data but only a clientId is passed, no selected product.
@@ -89,6 +90,7 @@ public class DepositAccountData {
this.rejectedonDate=null;
this.transactions=null;
this.permissions=null;
}
public DepositAccountData(
@@ -127,6 +129,7 @@ public class DepositAccountData {
this.closedonDate=account.getClosedonDate();
this.transactions=account.getTransactions();
this.permissions=account.getPermissions();
}
public DepositAccountData(
@@ -187,6 +190,7 @@ public class DepositAccountData {
this.closedonDate = closedonDate;
this.transactions = null;
this.permissions = null;
}
public DepositAccountData(
@@ -234,6 +238,7 @@ public class DepositAccountData {
this.rejectedonDate=null;
this.transactions = null;
this.permissions = null;
}
public Long getId() {
@@ -355,5 +360,13 @@ public class DepositAccountData {
public void setTransactions(Collection<DepositAccountTransactionData> transactions) {
this.transactions = transactions;
}
public DepositPermissionData getPermissions() {
return permissions;
}
public void setPermissions(DepositPermissionData permissions) {
this.permissions = permissions;
}
}
@@ -0,0 +1,45 @@
package org.mifosng.platform.api.data;
public class DepositPermissionData {
private final boolean rejectAllowed;
private final boolean withdrawnByApplicantAllowed;
private final boolean undoApprovalAllowed;
private final boolean pendingApproval;
private final boolean isActive;
private final boolean anyActionOnLoanAllowed;
public DepositPermissionData(final boolean rejectAllowed,final boolean withdrawnByApplicantAllowed,final boolean undoApprovalAllowed,final boolean pendingApproval,final boolean isActive) {
this.rejectAllowed = rejectAllowed;
this.withdrawnByApplicantAllowed = withdrawnByApplicantAllowed;
this.undoApprovalAllowed = undoApprovalAllowed;
this.pendingApproval = pendingApproval;
this.isActive=isActive;
this.anyActionOnLoanAllowed = isRejectAllowed() || isPendingApproval() || isUndoApprovalAllowed() || isWithdrawnByApplicantAllowed();
}
public boolean isRejectAllowed() {
return rejectAllowed;
}
public boolean isWithdrawnByApplicantAllowed() {
return withdrawnByApplicantAllowed;
}
public boolean isUndoApprovalAllowed() {
return undoApprovalAllowed;
}
public boolean isPendingApproval() {
return pendingApproval;
}
public boolean isAnyActionOnLoanAllowed() {
return anyActionOnLoanAllowed;
}
public boolean isActive() {
return isActive;
}
}
@@ -105,7 +105,7 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ
"currency", "deposit", "maturityInterestRate", "tenureInMonths",
"interestCompoundedEvery", "interestCompoundedEveryPeriodType",
"renewalAllowed","preClosureAllowed","preClosureInterestRate",
"withdrawnonDate","rejectedonDate","closedonDate","transactions"
"withdrawnonDate","rejectedonDate","closedonDate","transactions","permissions"
)
);
@@ -3,6 +3,7 @@ package org.mifosng.platform.saving.service;
import java.util.Collection;
import org.mifosng.platform.api.data.DepositAccountData;
import org.mifosng.platform.api.data.DepositPermissionData;
public interface DepositAccountReadPlatformService {
@@ -10,5 +11,7 @@ public interface DepositAccountReadPlatformService {
DepositAccountData retrieveDepositAccount(Long accountId);
DepositAccountData retrieveNewDepositAccountDetails(Long clientId, Long productId);
DepositAccountData retrieveNewDepositAccountDetails(Long clientId, Long productId);
DepositPermissionData retrieveDepositAccountsPermissions(DepositAccountData depositAccountData);
}
@@ -12,6 +12,7 @@ import org.mifosng.platform.api.data.ClientData;
import org.mifosng.platform.api.data.CurrencyData;
import org.mifosng.platform.api.data.DepositAccountData;
import org.mifosng.platform.api.data.DepositAccountTransactionData;
import org.mifosng.platform.api.data.DepositPermissionData;
import org.mifosng.platform.api.data.DepositProductData;
import org.mifosng.platform.api.data.DepositProductLookup;
import org.mifosng.platform.api.data.EnumOptionData;
@@ -245,4 +246,15 @@ public class DepositAccountReadPlatformServiceImpl implements DepositAccountRead
}
}
@Override
public DepositPermissionData retrieveDepositAccountsPermissions(DepositAccountData depositAccountData) {
boolean pendingApproval = (depositAccountData.getStatus().getId().equals(100L));
boolean undoApprovalAllowed = (depositAccountData.getStatus().getId().equals(200L));
boolean isActive = (depositAccountData.getStatus().getId().equals(300L));
boolean rejectAllowed = pendingApproval;
boolean withdrawnByApplicantAllowed = pendingApproval;
return new DepositPermissionData(rejectAllowed, withdrawnByApplicantAllowed, undoApprovalAllowed, pendingApproval,isActive);
}
}