Search in sources :

Example 1 with ClientSearchResultDto

use of org.mifos.dto.screen.ClientSearchResultDto in project head by mifos.

the class CustomerSearchServiceFacadeWebTier method search.

@Override
public CustomerHierarchyDto search(String searchString, Short officeId, int pageNumber, int pageSize, SearchFiltersDto filters) {
    MifosUser user = (MifosUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    UserContext userContext = new UserContextFactory().create(user);
    if (searchString == null) {
        throw new MifosRuntimeException(CenterConstants.NO_SEARCH_STRING);
    }
    String normalisedSearchString = org.mifos.framework.util.helpers.SearchUtils.normalizeSearchString(searchString);
    if (normalisedSearchString.equals("")) {
        throw new MifosRuntimeException(CenterConstants.NO_SEARCH_STRING);
    }
    CustomerHierarchyDto customerHierarchyDto = new CustomerHierarchyDto();
    QueryResult searchResult = null;
    List<CustomerSearchDto> resultList = null;
    try {
        searchResult = new CustomerPersistence().search(normalisedSearchString, officeId, userContext.getId(), userContext.getBranchId(), filters);
    } catch (PersistenceException e) {
        throw new MifosRuntimeException(e);
    }
    try {
        resultList = searchResult.get(pageNumber, pageSize);
        customerHierarchyDto.setSize(searchResult.getSize());
        customerHierarchyDto.setSearchResultSize(resultList.size());
    } catch (HibernateSearchException e) {
        throw new MifosRuntimeException(e);
    }
    /* FIXME: QueryResult.get returns CustomerSearchDto with messed up customers and accounts data.
		 */
    for (CustomerSearchDto customerSearchDto : resultList) {
        if (customerSearchDto.getCustomerType() == 1) {
            ClientSearchResultDto clientSearchResultDto = new ClientSearchResultDto();
            clientSearchResultDto.setOfficeId(customerSearchDto.getOfficeId());
            clientSearchResultDto.setOfficeName(customerSearchDto.getOfficeName());
            /* QueryResult.get returns CustomerSearchDto (as Client) with clientName as centerName, 
        		 * clientGobalCustNum as centerGobalCustNum and vice versa 
        		 */
            clientSearchResultDto.setClientName(customerSearchDto.getCenterName());
            clientSearchResultDto.setClientGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
            clientSearchResultDto.setGroupName(customerSearchDto.getGroupName());
            clientSearchResultDto.setGroupGlobalCustNum(customerSearchDto.getGroupGlobalCustNum());
            clientSearchResultDto.setCenterName(customerSearchDto.getClientName());
            clientSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getClientGlobalCustNum());
            clientSearchResultDto.setBranchName(customerSearchDto.getBranchName());
            clientSearchResultDto.setBranchId(customerSearchDto.getBranchGlobalNum());
            clientSearchResultDto.setCustomerStatusId(customerSearchDto.getCustomerStatus());
            clientSearchResultDto.setLoanOfficerName(customerSearchDto.getLoanOfficerName());
            clientSearchResultDto.setLoanOfficerId(customerSearchDto.getLoanOffcerGlobalNum());
            for (Object loanGlobalAccount : customerSearchDto.getLoanGlobalAccountNum()) {
                String accountStr = (String) loanGlobalAccount;
                clientSearchResultDto.getLoanGlobalAccountNum().add(accountStr);
                clientSearchResultDto.getLoanGlobalAccountStateIds().put(accountStr, loanDao.findByGlobalAccountNum(accountStr).getAccountState().getId());
            }
            for (Object savingGlobalAccount : customerSearchDto.getSavingsGlobalAccountNum()) {
                String accountStr = (String) savingGlobalAccount;
                clientSearchResultDto.getSavingsGlobalAccountNum().add(accountStr);
                clientSearchResultDto.getSavingsGlobalAccountStateIds().put(accountStr, savingsDao.findBySystemId(accountStr).getState().getValue());
            }
            for (Object groupLoanAccount : customerSearchDto.getGroupLoanGlobalAccountNum()) {
                String accountStr = (String) groupLoanAccount;
                clientSearchResultDto.getGroupLoanGlobalAccountNum().add(accountStr);
                clientSearchResultDto.getGroupLoanGlobalAccountStateIds().put(accountStr, loanDao.findByGlobalAccountNum(accountStr).getAccountState().getId());
            }
            clientSearchResultDto.setStatus(customerSearchDto.getStatus());
            customerHierarchyDto.getClients().add(clientSearchResultDto);
        } else if (customerSearchDto.getCustomerType() == 2) {
            GroupSearchResultDto groupSearchResultDto = new GroupSearchResultDto();
            groupSearchResultDto.setOfficeId(customerSearchDto.getOfficeId());
            groupSearchResultDto.setOfficeName(customerSearchDto.getOfficeName());
            /* QueryResult.get returns CustomerSearchDto (as Group) with groupName as centerName, 
        		 * groupGobalCustNum as centerGobalCustNum and vice versa 
        		 */
            groupSearchResultDto.setGroupName(customerSearchDto.getCenterName());
            groupSearchResultDto.setGroupGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
            groupSearchResultDto.setCenterName(customerSearchDto.getGroupName());
            groupSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getGroupGlobalCustNum());
            groupSearchResultDto.setBranchName(customerSearchDto.getBranchName());
            groupSearchResultDto.setBranchId(customerSearchDto.getBranchGlobalNum());
            groupSearchResultDto.setCustomerStatusId(customerSearchDto.getCustomerStatus());
            groupSearchResultDto.setLoanOfficerName(customerSearchDto.getLoanOfficerName());
            groupSearchResultDto.setLoanOfficerId(customerSearchDto.getLoanOffcerGlobalNum());
            for (Object loanGlobalAccount : customerSearchDto.getLoanGlobalAccountNum()) {
                String accountStr = (String) loanGlobalAccount;
                groupSearchResultDto.getLoanGlobalAccountNum().add(accountStr);
                groupSearchResultDto.getLoanGlobalAccountStateIds().put(accountStr, loanDao.findByGlobalAccountNum(accountStr).getAccountState().getId());
            }
            for (Object savingGlobalAccount : customerSearchDto.getSavingsGlobalAccountNum()) {
                String accountStr = (String) savingGlobalAccount;
                groupSearchResultDto.getSavingsGlobalAccountNum().add(accountStr);
                groupSearchResultDto.getSavingsGlobalAccountStateIds().put(accountStr, savingsDao.findBySystemId(accountStr).getState().getValue());
            }
            for (Object groupLoanAccount : customerSearchDto.getGroupLoanGlobalAccountNum()) {
                String accountStr = (String) groupLoanAccount;
                groupSearchResultDto.getGroupLoanGlobalAccountNum().add(accountStr);
                groupSearchResultDto.getGroupLoanGlobalAccountStateIds().put(accountStr, loanDao.findByGlobalAccountNum(accountStr).getAccountState().getId());
            }
            groupSearchResultDto.setStatus(customerSearchDto.getStatus());
            customerHierarchyDto.getGroups().add(groupSearchResultDto);
        } else if (customerSearchDto.getCustomerType() == 3) {
            CenterSearchResultDto centerSearchResultDto = new CenterSearchResultDto();
            centerSearchResultDto.setOfficeId(customerSearchDto.getOfficeId());
            centerSearchResultDto.setOfficeName(customerSearchDto.getOfficeName());
            centerSearchResultDto.setCenterName(customerSearchDto.getCenterName());
            centerSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
            centerSearchResultDto.setBranchName(customerSearchDto.getBranchName());
            centerSearchResultDto.setBranchId(customerSearchDto.getBranchGlobalNum());
            centerSearchResultDto.setCustomerStatusId(customerSearchDto.getCustomerStatus());
            centerSearchResultDto.setLoanOfficerName(customerSearchDto.getLoanOfficerName());
            centerSearchResultDto.setLoanOfficerId(customerSearchDto.getLoanOffcerGlobalNum());
            for (Object savingGlobalAccount : customerSearchDto.getSavingsGlobalAccountNum()) {
                String accountStr = (String) savingGlobalAccount;
                centerSearchResultDto.getSavingsGlobalAccountNum().add(accountStr);
                centerSearchResultDto.getSavingsGlobalAccountStateIds().put(accountStr, savingsDao.findBySystemId(accountStr).getState().getValue());
            }
            centerSearchResultDto.setStatus(customerSearchDto.getStatus());
            customerHierarchyDto.getCenters().add(centerSearchResultDto);
        } else if (customerSearchDto.getLoanGlobalAccountNumber() != null && (customerSearchDto.getCustomerType() == 5 || customerSearchDto.getCustomerType() == 4 || customerSearchDto.getCustomerType() == 9) || customerSearchDto.getCustomerType() == 10) {
            LoanAccountSearchResultDto loanAccountSearchResultDto = new LoanAccountSearchResultDto();
            loanAccountSearchResultDto.setLoanGlobalAccountNum(customerSearchDto.getLoanGlobalAccountNumber());
            loanAccountSearchResultDto.setOfficeId(customerSearchDto.getOfficeId());
            loanAccountSearchResultDto.setOfficeName(customerSearchDto.getOfficeName());
            loanAccountSearchResultDto.setBranchName(customerSearchDto.getBranchName());
            loanAccountSearchResultDto.setBranchId(customerSearchDto.getBranchGlobalNum());
            loanAccountSearchResultDto.setAccountStatusId(customerSearchDto.getCustomerStatus());
            loanAccountSearchResultDto.setLoanOfficerName(customerSearchDto.getLoanOfficerName());
            loanAccountSearchResultDto.setLoanOfficerId(customerSearchDto.getLoanOffcerGlobalNum());
            //new group loan group or client account
            if (customerSearchDto.getCustomerType() == 9 || customerSearchDto.getCustomerType() == 10) {
                loanAccountSearchResultDto.setGroupLoan(Boolean.TRUE);
                loanAccountSearchResultDto.setAccountStatusId(AccountTypes.GROUP_LOAN_ACCOUNT.getValue());
            }
            if (customerSearchDto.getClientGlobalCustNum() != null) {
                loanAccountSearchResultDto.setCenterName(customerSearchDto.getClientName());
                loanAccountSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getClientGlobalCustNum());
                loanAccountSearchResultDto.setClientName(customerSearchDto.getCenterName());
                loanAccountSearchResultDto.setClientGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
                loanAccountSearchResultDto.setGroupName(customerSearchDto.getGroupName());
                loanAccountSearchResultDto.setGroupGlobalCustNum(customerSearchDto.getGroupGlobalCustNum());
            } else if (customerSearchDto.getCustomerType() == 5 || customerSearchDto.getCustomerType() == 9) {
                loanAccountSearchResultDto.setGroupName(customerSearchDto.getCenterName());
                loanAccountSearchResultDto.setGroupGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
                loanAccountSearchResultDto.setCenterName(customerSearchDto.getGroupName());
                loanAccountSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getGroupGlobalCustNum());
            } else {
                loanAccountSearchResultDto.setClientName(customerSearchDto.getCenterName());
                loanAccountSearchResultDto.setClientGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
                loanAccountSearchResultDto.setGroupName(customerSearchDto.getClientName());
                loanAccountSearchResultDto.setGroupGlobalCustNum(customerSearchDto.getClientGlobalCustNum());
                loanAccountSearchResultDto.setCenterName(customerSearchDto.getGroupName());
                loanAccountSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getGroupGlobalCustNum());
            }
            loanAccountSearchResultDto.setStatus(customerSearchDto.getStatus());
            customerHierarchyDto.setLoan(loanAccountSearchResultDto);
        } else if (customerSearchDto.getLoanGlobalAccountNumber() != null || customerSearchDto.getCustomerType() == 6) {
            SavingsAccountSearchResultDto savingsAccountSearchResultDto = new SavingsAccountSearchResultDto();
            savingsAccountSearchResultDto.setSavingsGlobalAccountNum(customerSearchDto.getLoanGlobalAccountNumber());
            savingsAccountSearchResultDto.setOfficeId(customerSearchDto.getOfficeId());
            savingsAccountSearchResultDto.setOfficeName(customerSearchDto.getOfficeName());
            savingsAccountSearchResultDto.setBranchName(customerSearchDto.getBranchName());
            savingsAccountSearchResultDto.setBranchId(customerSearchDto.getBranchGlobalNum());
            savingsAccountSearchResultDto.setAccountStatusId(customerSearchDto.getCustomerStatus());
            savingsAccountSearchResultDto.setLoanOfficerName(customerSearchDto.getLoanOfficerName());
            savingsAccountSearchResultDto.setLoanOfficerId(customerSearchDto.getLoanOffcerGlobalNum());
            if (customerSearchDto.getClientGlobalCustNum() != null) {
                savingsAccountSearchResultDto.setCenterName(customerSearchDto.getClientName());
                savingsAccountSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getClientGlobalCustNum());
                savingsAccountSearchResultDto.setClientName(customerSearchDto.getCenterName());
                savingsAccountSearchResultDto.setClientGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
                savingsAccountSearchResultDto.setGroupName(customerSearchDto.getGroupName());
                savingsAccountSearchResultDto.setGroupGlobalCustNum(customerSearchDto.getGroupGlobalCustNum());
            } else if (customerSearchDto.getGroupGlobalCustNum() != null) {
                savingsAccountSearchResultDto.setClientName(customerSearchDto.getClientName());
                savingsAccountSearchResultDto.setClientGlobalCustNum(customerSearchDto.getClientGlobalCustNum());
                savingsAccountSearchResultDto.setGroupName(customerSearchDto.getCenterName());
                savingsAccountSearchResultDto.setGroupGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
                savingsAccountSearchResultDto.setCenterName(customerSearchDto.getGroupName());
                savingsAccountSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getGroupGlobalCustNum());
            } else {
                savingsAccountSearchResultDto.setCenterName(customerSearchDto.getCenterName());
                savingsAccountSearchResultDto.setCenterGlobalCustNum(customerSearchDto.getCenterGlobalCustNum());
            }
            savingsAccountSearchResultDto.setStatus(customerSearchDto.getStatus());
            customerHierarchyDto.setSavings(savingsAccountSearchResultDto);
        }
    }
    return customerHierarchyDto;
}
Also used : SavingsAccountSearchResultDto(org.mifos.dto.screen.SavingsAccountSearchResultDto) UserContext(org.mifos.security.util.UserContext) HibernateSearchException(org.mifos.framework.exceptions.HibernateSearchException) LoanAccountSearchResultDto(org.mifos.dto.screen.LoanAccountSearchResultDto) MifosUser(org.mifos.security.MifosUser) UserContextFactory(org.mifos.accounts.servicefacade.UserContextFactory) CenterSearchResultDto(org.mifos.dto.screen.CenterSearchResultDto) ClientSearchResultDto(org.mifos.dto.screen.ClientSearchResultDto) QueryResult(org.mifos.framework.hibernate.helper.QueryResult) CustomerHierarchyDto(org.mifos.dto.screen.CustomerHierarchyDto) PersistenceException(org.mifos.framework.exceptions.PersistenceException) CustomerSearchDto(org.mifos.customers.business.CustomerSearchDto) CustomerPersistence(org.mifos.customers.persistence.CustomerPersistence) GroupSearchResultDto(org.mifos.dto.screen.GroupSearchResultDto) MifosRuntimeException(org.mifos.core.MifosRuntimeException)

Aggregations

UserContextFactory (org.mifos.accounts.servicefacade.UserContextFactory)1 MifosRuntimeException (org.mifos.core.MifosRuntimeException)1 CustomerSearchDto (org.mifos.customers.business.CustomerSearchDto)1 CustomerPersistence (org.mifos.customers.persistence.CustomerPersistence)1 CenterSearchResultDto (org.mifos.dto.screen.CenterSearchResultDto)1 ClientSearchResultDto (org.mifos.dto.screen.ClientSearchResultDto)1 CustomerHierarchyDto (org.mifos.dto.screen.CustomerHierarchyDto)1 GroupSearchResultDto (org.mifos.dto.screen.GroupSearchResultDto)1 LoanAccountSearchResultDto (org.mifos.dto.screen.LoanAccountSearchResultDto)1 SavingsAccountSearchResultDto (org.mifos.dto.screen.SavingsAccountSearchResultDto)1 HibernateSearchException (org.mifos.framework.exceptions.HibernateSearchException)1 PersistenceException (org.mifos.framework.exceptions.PersistenceException)1 QueryResult (org.mifos.framework.hibernate.helper.QueryResult)1 MifosUser (org.mifos.security.MifosUser)1 UserContext (org.mifos.security.util.UserContext)1