package org.mifos.platform.rest.controller;
import java.util.List;
import org.codehaus.jackson.annotate.JsonCreator;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.joda.time.LocalDate;
import org.mifos.application.servicefacade.CreateClientNameDetailDto;
import org.mifos.application.servicefacade.CreatePersonalDetailDto;
import org.mifos.application.servicefacade.CreationAccountPenaltyDto;
import org.mifos.application.servicefacade.CreationAddresDto;
import org.mifos.application.servicefacade.CreationFeeDto;
import org.mifos.application.servicefacade.CreationGLIMAccountsDto;
import org.mifos.application.servicefacade.CreationMeetingDto;
public class RESTAPIHelper {
public static class ErrorMessage {
public static final String INVALID_AMOUNT = "please specify correct amount";
public static final String NON_NEGATIVE_AMOUNT = "amount must be grater than 0";
public static final String NOT_ACTIVE_ACCOUNT = "account is not in active state.";
public static final String INVALID_NOTE = "note is not specified";
public static final String INVALID_FEE_ID = "invalid fee Id";
public static final String INVALID_DATE_STRING = "string is not valid date";
public static final String FUTURE_DATE = "Date can not be a future date.";
public static final String INVALID_PAYMENT_TYPE_ID = "invalid payment type Id";
public static final String INVALID_PRODUCT_ID = "invalid product Id";
public static final String INVALID_GLOABAL_CUSTOMER_NUM = "invalid global customer number";
public static final String INVALID_MEETING = "meeting can not be null";
public static final String INVALID_DISPLAY_NAME = "invalid customer name";
public static final String INVALID_LOAN_OFFICER_ID = "invalid loan officer id";
public static final String INVALID_OFFICE_ID = "invalid office id";
public static final String INVALID_MFI_DATE = "mfiJoiningDate is mandatory";
public static final String INVALID_GLIM_AMOUNT = "individual amont must be equal glim amount";
public static final String INVALID_CUSTOMER_STATUS = "invalid customer status";
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreationAddresDtoMixIn {
@JsonCreator
public CreationAddresDtoMixIn(@JsonProperty("address1") String address1,
@JsonProperty("address2") String address2, @JsonProperty("address3") String address3,
@JsonProperty("city") String city, @JsonProperty("state") String state,
@JsonProperty("country") String country, @JsonProperty("zip") String zip,
@JsonProperty("phoneNumber") String phoneNumber) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreationFeeDtoMixIn {
@JsonCreator
public CreationFeeDtoMixIn(@JsonProperty("feeId") Integer feeId, @JsonProperty("amount") String amount) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreationMeetingDtoMixIn {
@JsonCreator
public CreationMeetingDtoMixIn(@JsonProperty("meetingStartDate") LocalDate meetingStartDate,
@JsonProperty("meetingPlace") String meetingPlace,
@JsonProperty("recurrenceType") Short recurrenceType, @JsonProperty("dayNumber") Short dayNumber,
@JsonProperty("weekDay") Short weekDay, @JsonProperty("rankOfDay") Short rankOfDay,
@JsonProperty("recurAfter") Short recurAfter) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CenterCreationDetailMixIn {
@JsonCreator
public CenterCreationDetailMixIn(@JsonProperty("mfiJoiningDate") LocalDate mfiJoiningDate,
@JsonProperty("displayName") String displayName, @JsonProperty("externalId") String externalId,
@JsonProperty("loanOfficerId") Integer loanOfficerId, @JsonProperty("officeId") Integer officeId,
@JsonProperty("address") CreationAddresDto creationAddresDto,
@JsonProperty("accountFees") List<CreationFeeDto> creationFeeDto,
@JsonProperty("meeting") CreationMeetingDto meeting) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreateGroupCreationDetailDtoMixIn {
@JsonCreator
public CreateGroupCreationDetailDtoMixIn(@JsonProperty("centerId") Short centerId,
@JsonProperty("officeId") Short officeId, @JsonProperty("loanOfficerId") Short loanOfficerId,
@JsonProperty("displayName") String displayName, @JsonProperty("externalId") String externalId,
@JsonProperty("address") CreationAddresDto creationAddresDto,
@JsonProperty("accountFees") List<CreationFeeDto> creationFeeDto,
@JsonProperty("customerStatus") Short customerStatus, @JsonProperty("trained") Boolean trained,
@JsonProperty("trainedDate") String trainedOn, @JsonProperty("mfiJoiningDate") String mfiJoiningDate,
@JsonProperty("activationDate") String activationDate,
@JsonProperty("parentSystemId") String parentSystemId,
@JsonProperty("meeting") CreationMeetingDto meeting) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreateClientCreationDetailMixIn {
@JsonCreator
public CreateClientCreationDetailMixIn(@JsonProperty("officeId") Short officeId,
@JsonProperty("loanOfficerId") Short loanOfficerId, @JsonProperty("formedBy") Short formedBy,
@JsonProperty("parentGroupId") String parentGroupId, @JsonProperty("externalId") String externalId,
@JsonProperty("groupFlag") Short groupFlag, @JsonProperty("governmentId") String governmentId,
@JsonProperty("trained") boolean trained, @JsonProperty("trainedDate") LocalDate trainedDate,
@JsonProperty("dateOfBirth") LocalDate dateOfBirth,
@JsonProperty("activationDate") LocalDate activationDate,
@JsonProperty("mfiJoiningDate") LocalDate mfiJoiningDate,
@JsonProperty("customerStatus") Short customerStatus,
@JsonProperty("personalDetail") CreatePersonalDetailDto personalDetail,
@JsonProperty("clientNameDetail") CreateClientNameDetailDto clientNameDetail,
@JsonProperty("address") CreationAddresDto address,
@JsonProperty("accountFees") List<CreationFeeDto> accountFees,
@JsonProperty("meeting") CreationMeetingDto meeting) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreateClientNameDetailDtoMixIn {
@JsonCreator
public CreateClientNameDetailDtoMixIn(@JsonProperty("salutationId") Integer salutation,
@JsonProperty("firstName") String firstName, @JsonProperty("middleName") String middleName,
@JsonProperty("lastName") String lastName, @JsonProperty("secondLastName") String secondLastName) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreatePersonalDetailDtoMixIn {
@JsonCreator
public CreatePersonalDetailDtoMixIn(@JsonProperty("ethnicity") Integer ethnicity,
@JsonProperty("citizenship") Integer citizenship, @JsonProperty("handicapped") Integer handicapped,
@JsonProperty("businessActivities") Integer businessActivities,
@JsonProperty("maritalStatus") Integer maritalStatus,
@JsonProperty("educationLevel") Integer educationLevel,
@JsonProperty("numberOfChildren") Short numberOfChildren, @JsonProperty("gender") Short genderId,
@JsonProperty("povertyStatus") Short povertyStatus) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreationLoanAccountDtoMixIn {
@JsonCreator
public CreationLoanAccountDtoMixIn(@JsonProperty("customerId") Integer customerId,
@JsonProperty("glim") Boolean glim, @JsonProperty("productId") Integer productId,
@JsonProperty("accountState") Integer accountState, @JsonProperty("loanAmount") Double loanAmount,
@JsonProperty("interesRate") Double interesRate,
@JsonProperty("disbusmentDate") LocalDate disbursnebtDate,
@JsonProperty("disbursalPaymentTypeId") Short disbursalPaymentTypeId,
@JsonProperty("numberofInstallments") Integer numberOfInstallments,
@JsonProperty("graceDuration") Integer graceDuration,
@JsonProperty("sourceOfFoundId") Integer sourceOfFoundId,
@JsonProperty("loanPurposeId") Integer loanPurposeId,
@JsonProperty("collateralTypeId") Integer collateralTypeId,
@JsonProperty("collateralNotes") String collateralNotes, @JsonProperty("externalId") String externalId,
@JsonProperty("accountFees") List<CreationFeeDto> accountFees,
@JsonProperty("accountPenalties") List<CreationAccountPenaltyDto> accountPenalties,
@JsonProperty("minNumOfInstallments") Integer minNumOfInstallments,
@JsonProperty("maxNumOfInstallments") Integer maxNumOfInstallments,
@JsonProperty("minAllowedLoanAmount") Double minAllowedLoanAmount,
@JsonProperty("maxAllowedLoanAmount") Double maxAllowedLoanAmount,
@JsonProperty("predefinedAccountNumber") String predefinedAccountNumber,
@JsonProperty("flagId") Short flagId,
@JsonProperty("glimAccounts") List<CreationGLIMAccountsDto> glimAccounts) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreationGLIMAccountsDtoMixIn {
@JsonCreator
public CreationGLIMAccountsDtoMixIn(@JsonProperty("globalId") String globalId,
@JsonProperty("ammount") Double ammount, @JsonProperty("loanPurposeId") Integer loanPurposeId) {
}
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static abstract class CreationAccountPenaltyDtoMixIn {
@JsonCreator
public CreationAccountPenaltyDtoMixIn(@JsonProperty("penaltyId") Integer penaltyId,
@JsonProperty("amount") String amount) {
}
}
}