Search in sources :

Example 1 with ClientPersonalDetailDto

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

the class PictureFormFile method updatePersonalInfo.

@CloseSession
@TransactionDemarcate(validateAndResetToken = true)
public ActionForward updatePersonalInfo(ActionMapping mapping, ActionForm form, HttpServletRequest request, @SuppressWarnings("unused") HttpServletResponse response) throws Exception {
    ClientCustActionForm actionForm = (ClientCustActionForm) form;
    ClientBO clientInSession = getClientFromSession(request);
    Integer oldClientVersionNumber = clientInSession.getVersionNo();
    Integer customerId = clientInSession.getCustomerId();
    String clientStatus = clientInSession.getCustomerStatus().getName();
    List<CustomFieldDto> customFields = new ArrayList<CustomFieldDto>();
    short loanOfficerId = clientInSession.getCreatedBy();
    final String clientSystemId = clientInSession.getGlobalCustNum();
    ClientPersonalInfoDto clientPersonalInfo = this.clientServiceFacade.retrieveClientPersonalInfoForUpdate(clientSystemId, clientStatus, loanOfficerId);
    AddressDto address = null;
    if (actionForm.getAddress() != null) {
        address = Address.toDto(actionForm.getAddress());
    }
    if (clientPersonalInfo.getCustomerDetail() != null) {
        if (clientPersonalInfo.getCustomerDetail().getAddress() != null) {
            if (clientPersonalInfo.getCustomerDetail().getAddress().getPhoneNumber() != null && (!clientPersonalInfo.getCustomerDetail().getAddress().getPhoneNumber().equals(address.getPhoneNumber()))) {
                UserContext userContext = getUserContext(request);
                if (!ActivityMapper.getInstance().isEditPhoneNumberPermitted(userContext, userContext.getBranchId())) {
                    throw new CustomerException(SecurityConstants.KEY_ACTIVITY_NOT_ALLOWED);
                }
            } else if (clientPersonalInfo.getCustomerDetail().getAddress().getPhoneNumber() == null && address.getPhoneNumber() != null && !address.getPhoneNumber().equals("")) {
                UserContext userContext = getUserContext(request);
                if (!ActivityMapper.getInstance().isEditPhoneNumberPermitted(userContext, userContext.getBranchId())) {
                    throw new CustomerException(SecurityConstants.KEY_ACTIVITY_NOT_ALLOWED);
                }
            }
        } else if (address.getPhoneNumber() != null && !address.getPhoneNumber().equals("")) {
            UserContext userContext = getUserContext(request);
            if (!ActivityMapper.getInstance().isEditPhoneNumberPermitted(userContext, userContext.getBranchId())) {
                throw new CustomerException(SecurityConstants.KEY_ACTIVITY_NOT_ALLOWED);
            }
        }
    } else if (address.getPhoneNumber() != null && !address.getPhoneNumber().equals("")) {
        UserContext userContext = getUserContext(request);
        if (!ActivityMapper.getInstance().isEditPhoneNumberPermitted(userContext, userContext.getBranchId())) {
            throw new CustomerException(SecurityConstants.KEY_ACTIVITY_NOT_ALLOWED);
        }
    }
    ClientNameDetailDto spouseFather = null;
    if (!ClientRules.isFamilyDetailsRequired()) {
        spouseFather = actionForm.getSpouseName();
    }
    InputStream picture = null;
    if (actionForm.getPicture() != null && StringUtils.isNotBlank(actionForm.getPicture().getFileName())) {
        picture = actionForm.getCustomerPicture();
    }
    ClientNameDetailDto clientNameDetails = actionForm.getClientName();
    ClientPersonalDetailDto clientDetail = actionForm.getClientDetailView();
    String governmentId = actionForm.getGovernmentId();
    String clientDisplayName = actionForm.getClientName().getDisplayName();
    String dateOfBirth = actionForm.getDateOfBirth();
    ClientPersonalInfoUpdate personalInfo = new ClientPersonalInfoUpdate(customerId, oldClientVersionNumber, customFields, address, clientDetail, clientNameDetails, spouseFather, picture, governmentId, clientDisplayName, dateOfBirth);
    this.clientServiceFacade.updateClientPersonalInfo(personalInfo, clientStatus, loanOfficerId);
    return mapping.findForward(ActionForwards.updatePersonalInfo_success.toString());
}
Also used : ClientCustActionForm(org.mifos.customers.client.struts.actionforms.ClientCustActionForm) CustomerException(org.mifos.customers.exceptions.CustomerException) UserContext(org.mifos.security.util.UserContext) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) ClientBO(org.mifos.customers.client.business.ClientBO) CustomFieldDto(org.mifos.dto.domain.CustomFieldDto) ClientPersonalDetailDto(org.mifos.dto.screen.ClientPersonalDetailDto) ArrayList(java.util.ArrayList) AddressDto(org.mifos.dto.domain.AddressDto) ClientPersonalInfoUpdate(org.mifos.dto.domain.ClientPersonalInfoUpdate) ClientNameDetailDto(org.mifos.dto.screen.ClientNameDetailDto) ClientPersonalInfoDto(org.mifos.dto.screen.ClientPersonalInfoDto) CloseSession(org.mifos.framework.util.helpers.CloseSession) TransactionDemarcate(org.mifos.framework.util.helpers.TransactionDemarcate)

Example 2 with ClientPersonalDetailDto

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

the class ClientCustActionForm method clearMostButNotAllFieldsOnActionForm.

public void clearMostButNotAllFieldsOnActionForm() {
    setDefaultFees(new ArrayList<ApplicableAccountFeeDto>());
    setAdditionalFees(new ArrayList<ApplicableAccountFeeDto>());
    setCustomFields(new ArrayList<CustomFieldDto>());
    setFamilyNames(new ArrayList<ClientNameDetailDto>());
    setFamilyDetails(new ArrayList<ClientFamilyDetailDto>());
    setFamilyRelationship(new ArrayList<Short>());
    setFamilyFirstName(new ArrayList<String>());
    setFamilyMiddleName(new ArrayList<String>());
    setFamilyLastName(new ArrayList<String>());
    setFamilySecondLastName(new ArrayList<String>());
    setFamilyDateOfBirthDD(new ArrayList<String>());
    setFamilyDateOfBirthMM(new ArrayList<String>());
    setFamilyDateOfBirthYY(new ArrayList<String>());
    setFamilyGender(new ArrayList<Short>());
    setFamilyLivingStatus(new ArrayList<Short>());
    initializeFamilyMember();
    addFamilyMember();
    setAddress(new Address());
    setDisplayName(null);
    setDateOfBirthDD(null);
    setDateOfBirthMM(null);
    setDateOfBirthYY(null);
    setGovernmentId(null);
    setMfiJoiningDate(null);
    setGlobalCustNum(null);
    setCustomerId(null);
    setExternalId(null);
    setLoanOfficerId(null);
    setLoanOfficerName("");
    setFormedByPersonnel(null);
    setTrained(null);
    setTrainedDate(null);
    setClientName(new ClientNameDetailDto());
    setSpouseName(new ClientNameDetailDto());
    setClientDetailView(new ClientPersonalDetailDto());
    setNextOrPreview("next");
    setQuestionGroups(null);
    for (int i = 0; i < getSelectedOfferings().size(); i++) {
        getSelectedOfferings().set(i, null);
    }
    setFiles(new ArrayList<FormFile>());
    setFilesMetadata(new ArrayList<UploadedFileDto>());
}
Also used : Address(org.mifos.framework.business.util.Address) CustomFieldDto(org.mifos.dto.domain.CustomFieldDto) ClientPersonalDetailDto(org.mifos.dto.screen.ClientPersonalDetailDto) ApplicableAccountFeeDto(org.mifos.dto.domain.ApplicableAccountFeeDto) FormFile(org.apache.struts.upload.FormFile) ClientFamilyDetailDto(org.mifos.dto.screen.ClientFamilyDetailDto) ClientNameDetailDto(org.mifos.dto.screen.ClientNameDetailDto) UploadedFileDto(org.mifos.dto.screen.UploadedFileDto)

Example 3 with ClientPersonalDetailDto

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

the class XlsClientsImporter method parse.

public ParsedClientsDto parse(final InputStream input) {
    final List<ValueListElement> buisnessActivitiesList = customerDao.retrieveBusinessActivities();
    final List<ValueListElement> gendersList = customerDao.retrieveGenders();
    final List<ValueListElement> citizenshipsList = customerDao.retrieveCitizenship();
    final List<ValueListElement> ethinicitiesList = customerDao.retrieveEthnicity();
    final List<ValueListElement> educationLevelsList = customerDao.retrieveEducationLevels();
    final List<ValueListElement> handicappedList = customerDao.retrieveHandicapped();
    final List<ValueListElement> povertyStatusList = customerDao.retrievePoverty();
    final List<ValueListElement> maritalStatusList = customerDao.retrieveMaritalStatuses();
    final List<ValueListElement> salutationsList = customerDao.retrieveSalutations();
    final List<OfficeDto> allOfficess = officeDao.findAllOffices();
    final FieldConfig fieldConfig = FieldConfig.getInstance();
    final List<String> globalCustNums = new ArrayList<String>();
    final List<String> errorsList = new ArrayList<String>();
    final List<ImportedClientDetail> parsedClientDetails = new ArrayList<ImportedClientDetail>();
    try {
        final HSSFWorkbook workbook = new HSSFWorkbook(input);
        final HSSFSheet sheet = workbook.getSheetAt(0);
        /* test first data row */
        HSSFRow row = sheet.getRow(XlsImportConstants.FIRST_CLIENT_ROW.value());
        if (row == null) {
            errorsList.add(getMessage(XlsMessageConstants.NOT_ENOUGH_INPUT_ROW));
        }
        @SuppressWarnings("rawtypes") Iterator rowIterator = sheet.rowIterator();
        /* Skip first rows */
        if (errorsList.isEmpty()) {
            for (int i = 0; i < XlsImportConstants.SKIPPED_ROWS.value(); i++) {
                if (rowIterator.hasNext()) {
                    rowIterator.next();
                } else {
                    errorsList.add(getMessage(XlsMessageConstants.NOT_ENOUGH_INPUT_ROW));
                    break;
                }
            }
        }
        XlsImportConstants currentCell = XlsImportConstants.CLIENT_NUM_CELL;
        int friendlyRowNumber = 0;
        /* Parse client data */
        if (errorsList.isEmpty()) {
            while (rowIterator.hasNext()) {
                try {
                    row = (HSSFRow) rowIterator.next();
                    friendlyRowNumber = row.getRowNum() + 1;
                    /* Get data from sheet */
                    currentCell = XlsImportConstants.CLIENT_NUM_CELL;
                    String clientGlobalNum = getCellStringValue(row, currentCell);
                    if (StringUtils.isBlank(clientGlobalNum)) {
                        // generate number
                        clientGlobalNum = null;
                    } else {
                        // check for duplicates
                        validateGlobalCustNum(clientGlobalNum, globalCustNums);
                        globalCustNums.add(clientGlobalNum);
                    }
                    currentCell = XlsImportConstants.BRANCH_SHORT_NAME_CELL;
                    final String branchShortName = getCellStringValue(row, currentCell);
                    final Short branchOfficeId = getBranchId(branchShortName, allOfficess);
                    currentCell = XlsImportConstants.GROUP_GLOBAL_NUM_CELL;
                    final String groupGlobalNum = getCellStringValue(row, currentCell);
                    validateGroup(groupGlobalNum);
                    if (StringUtils.isBlank(groupGlobalNum) && branchOfficeId == null) {
                        String error = getRowError(friendlyRowNumber) + getMessage(XlsMessageConstants.OFFICE_AND_BRANCH);
                        errorsList.add(error);
                        continue;
                    }
                    currentCell = XlsImportConstants.SALUTATION_CELL;
                    final String salutation = getCellStringValue(row, currentCell);
                    final Integer salutationId = getValueElementId(salutation, salutationsList);
                    validateMandatoryField(salutationId);
                    currentCell = XlsImportConstants.FIRST_NAME_CELL;
                    final String clientFirstName = getCellStringValue(row, currentCell);
                    validateMandatoryField(clientFirstName);
                    currentCell = XlsImportConstants.MIDDLE_NAME_CELL;
                    final String clientMiddleName = getCellStringValue(row, currentCell);
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.MIDDLE_NAME)) {
                        validateMandatoryField(clientMiddleName);
                    }
                    currentCell = XlsImportConstants.LAST_NAME_CELL;
                    final String clientLastName = getCellStringValue(row, currentCell);
                    validateMandatoryField(clientLastName);
                    currentCell = XlsImportConstants.SECOND_LAST_NAME_CELL;
                    final String clientSecondLastName = getCellStringValue(row, currentCell);
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.SECOND_LAST_NAME)) {
                        validateMandatoryField(clientSecondLastName);
                    }
                    currentCell = XlsImportConstants.GOVERNMENT_ID_CELL;
                    String governmentId = getCellStringValue(row, currentCell);
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.GOVERNMENT_ID)) {
                        validateMandatoryField(governmentId);
                    }
                    currentCell = XlsImportConstants.DATE_OF_BIRTH_CELL;
                    final Date dateOfBirth = getCellDateValue(row, currentCell);
                    validateMandatoryField(dateOfBirth);
                    validateAge(dateOfBirth);
                    currentCell = XlsImportConstants.GENDER_CELL;
                    final String gender = getCellStringValue(row, currentCell);
                    final Short genderId = intToShort(getValueElementId(gender, gendersList));
                    validateMandatoryField(genderId);
                    currentCell = XlsImportConstants.MARITAL_STATUS_CELL;
                    final String maritalStatus = getCellStringValue(row, currentCell);
                    final Integer maritalStatusId = getValueElementId(maritalStatus, maritalStatusList);
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.MARITAL_STATUS)) {
                        validateMandatoryField(maritalStatusId);
                    }
                    currentCell = XlsImportConstants.NUMBER_OF_CHILDREN_CELL;
                    final Short numberOfChildren = intToShort(getCellIntegerValue(row, currentCell));
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.NUMBER_OF_CHILDREN)) {
                        validateMandatoryField(numberOfChildren);
                    }
                    currentCell = XlsImportConstants.CITIZENSHIP_CELL;
                    final String citizenship = getCellStringValue(row, currentCell);
                    final Integer citizenshipId = getValueElementId(citizenship, citizenshipsList);
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.CITIZENSHIP)) {
                        validateMandatoryField(citizenshipId);
                    }
                    currentCell = XlsImportConstants.ETHINICITY_CELL;
                    final String ethinicity = getCellStringValue(row, currentCell);
                    final Integer ethinicityId = getValueElementId(ethinicity, ethinicitiesList);
                    if (fieldConfig.isFieldHidden(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.ETHNICITY)) {
                        validateMandatoryField(ethinicityId);
                    }
                    currentCell = XlsImportConstants.EDUCATION_LEVEL_CELL;
                    final String educationLevel = getCellStringValue(row, currentCell);
                    final Integer educationLevelId = getValueElementId(educationLevel, educationLevelsList);
                    if (fieldConfig.isFieldHidden(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.EDUCATION_LEVEL)) {
                        validateMandatoryField(educationLevelId);
                    }
                    currentCell = XlsImportConstants.ACTIVITIES_CELL;
                    final String activites = getCellStringValue(row, currentCell);
                    final Integer activityId = getValueElementId(activites, buisnessActivitiesList);
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.BUSINESS_ACTIVITIES)) {
                        validateMandatoryField(activityId);
                    }
                    currentCell = XlsImportConstants.POVERTY_STATUS_CELL;
                    final String povertyStatus = getCellStringValue(row, currentCell);
                    final Short povertyStatusId = intToShort(getValueElementId(povertyStatus, povertyStatusList));
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.POVERTY_STATUS)) {
                        validateMandatoryField(povertyStatusId);
                    }
                    currentCell = XlsImportConstants.HANDICAPPED_CELL;
                    final String handicapped = getCellStringValue(row, currentCell);
                    final Integer handicappedId = getValueElementId(handicapped, handicappedList);
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.HANDICAPPED)) {
                        validateMandatoryField(handicappedId);
                    }
                    currentCell = XlsImportConstants.SPOUSE_FATHER_RELATIONSHIP_CELL;
                    final String spouseOrFather = getCellStringValue(row, currentCell);
                    final Short spouseFatherNameType = getSpouseNameType(spouseOrFather);
                    final boolean familyMandatory = fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.FAMILY_DETAILS);
                    if (familyMandatory) {
                        validateMandatoryField(spouseFatherNameType);
                    }
                    currentCell = XlsImportConstants.SPOUSE_FIRST_NAME_CELL;
                    final String spouseFirstName = getCellStringValue(row, currentCell);
                    if (familyMandatory) {
                        validateMandatoryField(spouseFirstName);
                    }
                    currentCell = XlsImportConstants.SPOUSE_MIDDLE_NAME_CELL;
                    final String spouseMiddleName = getCellStringValue(row, currentCell);
                    currentCell = XlsImportConstants.SPOUSE_SECOND_LAST_NAME_CELL;
                    final String spouseSecondLastName = getCellStringValue(row, currentCell);
                    if (familyMandatory && fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.SPOUSE_FATHER_SECOND_LAST_NAME)) {
                        validateMandatoryField(spouseSecondLastName);
                    }
                    currentCell = XlsImportConstants.SPOUSE_LAST_NAME_CELL;
                    final String spouseLastName = getCellStringValue(row, currentCell);
                    if (familyMandatory) {
                        validateMandatoryField(spouseLastName);
                    }
                    currentCell = XlsImportConstants.ADDRESS_CELL;
                    final String address = getCellStringValue(row, currentCell);
                    if (fieldConfig.isFieldManadatory(CLIENT_ENTITY + HiddenMandatoryFieldNamesConstants.ADDRESS1)) {
                        validateMandatoryField(address);
                    }
                    currentCell = XlsImportConstants.CITY_DISTRICT_CELL;
                    final String cityDistrict = getCellStringValue(row, currentCell);
                    currentCell = XlsImportConstants.STATE_CELL;
                    final String state = getCellStringValue(row, currentCell);
                    currentCell = XlsImportConstants.COUNTRY_CELL;
                    final String country = getCellStringValue(row, currentCell);
                    currentCell = XlsImportConstants.POSTAL_CODE_CELL;
                    final String postalCode = getCellStringValue(row, currentCell);
                    currentCell = XlsImportConstants.TELEPHONE_CELL;
                    final String telephone = getCellStringValue(row, currentCell);
                    currentCell = XlsImportConstants.RECRUITED_BY_CELL;
                    final String recruitedBy = getCellStringValue(row, currentCell);
                    validateMandatoryField(recruitedBy);
                    final Short formedBy = getOfficerId(recruitedBy);
                    currentCell = XlsImportConstants.STATUS_CELL;
                    final String status = getCellStringValue(row, currentCell);
                    final Short statusId = statusToShort(status);
                    currentCell = XlsImportConstants.LOAN_OFFICER_CELL;
                    final String loanOfficer = getCellStringValue(row, currentCell);
                    if (!StringUtils.isBlank(groupGlobalNum) && !StringUtils.isBlank(loanOfficer)) {
                        throw new CellException(getMessage(XlsMessageConstants.LOAN_OFFICER_FOR_GROUP_CLIENT));
                    }
                    currentCell = XlsImportConstants.ACTIVATION_DATE_CELL;
                    final LocalDate activationDate = DateUtils.getLocalDateFromDate(getCellDateValue(row, currentCell));
                    if (activationDate != null && !status.equals(getMessage(XlsMessageConstants.ACTIVE))) {
                        throw new CellException(getMessage(XlsMessageConstants.ACTIVE_STATUS_FOR_ACTIVATION_DATE));
                    }
                    /* Meeting data */
                    currentCell = XlsImportConstants.MEETING_FREQUENCY_CELL;
                    final Integer recurrenceType = getRecurrenceType(getCellStringValue(row, currentCell));
                    currentCell = XlsImportConstants.MEETING_RECUR_EVERY_WEEK_CELL;
                    final Integer recurEveryWeek = getCellIntegerValue(row, currentCell);
                    currentCell = XlsImportConstants.MEETING_ON_WEEK_CELL;
                    final Integer weeklyMeetingDay = getDayValue(getCellStringValue(row, currentCell));
                    currentCell = XlsImportConstants.MEETING_OPT1_DAY_CELL;
                    final Integer opt1Day = getCellIntegerValue(row, currentCell);
                    validateMonthDay(opt1Day);
                    currentCell = XlsImportConstants.MEETING_OPT1_EVERY_CELL;
                    final Integer opt1Every = getCellIntegerValue(row, currentCell);
                    validatePositive(opt1Every);
                    currentCell = XlsImportConstants.MEETING_OPT2_THE_CELL;
                    final Integer opt2The = getDayRankValue(getCellStringValue(row, currentCell));
                    currentCell = XlsImportConstants.MEETING_OPT2_DAY_CELL;
                    final Integer opt2Day = getDayValue(getCellStringValue(row, currentCell));
                    currentCell = XlsImportConstants.MEETING_OPT2_EVERY_CELL;
                    final Integer opt2Every = getCellIntegerValue(row, currentCell);
                    validatePositive(opt2Every);
                    currentCell = XlsImportConstants.MEETING_LOCATION_CELL;
                    final String meetingLocation = getCellStringValue(row, currentCell);
                    Integer recurrenceDayNumber = 0;
                    Integer recurrenceWeekOfMonth = 0;
                    Integer recurrenceDayOfWeek = 0;
                    Integer recurEvery = 0;
                    /*
                         * Validate meeting data
                         */
                    if (!StringUtils.isBlank(groupGlobalNum) && recurrenceType != null) {
                        // no meeting allowed for a group
                        throw new RowException(getMessage(XlsMessageConstants.MEETING_FOR_GROUP));
                    } else if (recurrenceType == null) {
                        // make sure everything is empty
                        if (recurEveryWeek != null || weeklyMeetingDay != null || opt1Day != null || opt1Every != null || opt2Day != null || opt2Every != null || opt2The != null || !StringUtils.isBlank(meetingLocation)) {
                            throw new RowException(getMessage(XlsMessageConstants.INCOMPLETE_MEETING_DATA));
                        }
                    } else if (recurrenceType == RecurrenceType.WEEKLY.getValue().intValue()) {
                        // make sure weekly data is set
                        if (recurEveryWeek == null || weeklyMeetingDay == null) {
                            throw new RowException(getMessage(XlsMessageConstants.INCOMPLETE_MEETING_DATA));
                        }
                        // make sure monthly details are empty
                        if (opt1Day != null || opt1Every != null || opt2Day != null || opt2Every != null || opt2The != null) {
                            throw new RowException(getMessage(XlsMessageConstants.MONTHLY_MEETING_DETAILS_NOT_EMPTY));
                        }
                        // set data
                        recurrenceDayOfWeek = weeklyMeetingDay;
                        recurEvery = recurEveryWeek;
                        // validate location
                        validateMandatoryField(meetingLocation);
                    } else {
                        // make sure weekly details are empty
                        if (recurEveryWeek != null || weeklyMeetingDay != null) {
                            throw new RowException(getMessage(XlsMessageConstants.WEEKLY_MEETING_DETAILS_NOT_EMPTY));
                        }
                        if (opt1Day == null) {
                            // make sure option 2 is set
                            if (opt2Day == null || opt2Every == null || opt2The == null) {
                                throw new RowException(getMessage(XlsMessageConstants.INCOMPLETE_MEETING_DATA));
                            }
                            // make sure option 1 is empty
                            if (opt1Every != null) {
                                throw new RowException(getMessage(XlsMessageConstants.OPTIONS_EXCLUSIVE));
                            }
                            // set data
                            recurrenceWeekOfMonth = opt2The;
                            recurrenceDayOfWeek = opt2Day;
                            recurEvery = opt2Every;
                        } else {
                            // make sure option 1 is set
                            if (opt1Every == null) {
                                throw new RowException(getMessage(XlsMessageConstants.INCOMPLETE_MEETING_DATA));
                            }
                            // make sure option 2 is empty
                            if (opt2Day != null || opt2Every != null || opt2The != null) {
                                throw new RowException(getMessage(XlsMessageConstants.OPTIONS_EXCLUSIVE));
                            }
                            // set data
                            recurrenceDayNumber = opt1Day;
                            recurEvery = opt1Every;
                        }
                        // validate location
                        validateMandatoryField(meetingLocation);
                    }
                    /*
                         * Create meeting data
                         */
                    MeetingDto meetingDto = null;
                    if (recurrenceType != null) {
                        final LocalDate meetingStartDate = new LocalDate();
                        final MeetingRecurrenceDto meetingRecurrenceDto = new MeetingRecurrenceDto(recurrenceDayNumber, recurrenceWeekOfMonth, recurrenceDayOfWeek);
                        final MeetingDetailsDto meetingDetailsDto = new MeetingDetailsDto(recurrenceType, null, recurEvery, meetingRecurrenceDto);
                        final MeetingTypeDto meetingTypeDto = new MeetingTypeDto(MeetingType.CUSTOMER_MEETING.getValue().intValue(), null, null);
                        meetingDto = new MeetingDto(meetingStartDate, meetingLocation, meetingTypeDto, meetingDetailsDto);
                    } else {
                    }
                    String clientName = buildName(clientFirstName, clientMiddleName, clientLastName, clientSecondLastName);
                    customerDao.validateClientForDuplicateNameOrGovtId(clientName, dateOfBirth, governmentId);
                    /* Create dto's */
                    /* address */
                    final Address addressObject = new Address(address, null, null, cityDistrict, state, country, postalCode, telephone);
                    final AddressDto addressDto = Address.toDto(addressObject);
                    /* Personal details */
                    final ClientNameDetailDto clientNameDetailDto = new ClientNameDetailDto(CLIENT_NAME_TYPE, salutationId, clientFirstName, clientMiddleName, clientLastName, clientSecondLastName);
                    final ClientPersonalDetailDto clientPersonalDetailDto = new ClientPersonalDetailDto(ethinicityId, citizenshipId, handicappedId, activityId, maritalStatusId, educationLevelId, numberOfChildren, genderId, povertyStatusId);
                    /* Spouse details */
                    ClientNameDetailDto spouseNameDetailDto = null;
                    if (spouseFatherNameType == null) {
                        spouseNameDetailDto = new ClientNameDetailDto();
                        spouseNameDetailDto.setFirstName("");
                        spouseNameDetailDto.setLastName("");
                    } else {
                        spouseNameDetailDto = new ClientNameDetailDto(spouseFatherNameType, null, spouseFirstName, spouseMiddleName, spouseLastName, spouseSecondLastName);
                    }
                    /* branch office */
                    Short officeId = 0;
                    Short loanOfficerId = null;
                    Short groupFlagValue = 1;
                    if (StringUtils.isBlank(groupGlobalNum)) {
                        if (statusId == CustomerStatus.CLIENT_ACTIVE.getValue() && meetingDto == null) {
                            String error = getRowError(friendlyRowNumber) + getMessage(XlsMessageConstants.NO_MEETING_ERROR);
                            errorsList.add(error);
                            continue;
                        }
                        groupFlagValue = 0;
                        officeId = branchOfficeId;
                        List<PersonnelBO> officers = legacyPersonnelDao.getActiveLoanOfficersUnderOffice(officeId);
                        if (officers.isEmpty()) {
                            String error = getCellError(friendlyRowNumber, XlsImportConstants.BRANCH_SHORT_NAME_CELL) + getMessage(XlsMessageConstants.NO_OFFICERS_ERROR, branchShortName);
                            errorsList.add(error);
                            continue;
                        }
                        loanOfficerId = null;
                        for (PersonnelBO officer : officers) {
                            if (officer.getDisplayName().equals(loanOfficer)) {
                                loanOfficerId = officer.getPersonnelId();
                                break;
                            }
                        }
                    } else {
                        validateGroupStatus(groupGlobalNum, statusId);
                    }
                    /* Not imported values */
                    final boolean trained = false;
                    final Date trainedDate = null;
                    final java.sql.Date mfiJoiningDate = null;
                    final String externalId = "";
                    final InputStream picture = null;
                    final List<ApplicableAccountFeeDto> feesToApply = null;
                    final List<ClientNameDetailDto> familyNames = null;
                    final List<ClientFamilyDetailDto> familyDetails = null;
                    final List<Short> selectedSavingsProducts = null;
                    /* Final dto */
                    final ClientCreationDetail clientCreationDetail = new ClientCreationDetail(selectedSavingsProducts, clientName, statusId, mfiJoiningDate, externalId, addressDto, formedBy, dateOfBirth, governmentId, trained, trainedDate, groupFlagValue, clientNameDetailDto, clientPersonalDetailDto, spouseNameDetailDto, picture, feesToApply, groupGlobalNum, familyNames, familyDetails, loanOfficerId, officeId, activationDate);
                    validateDuplicateCustomers(clientCreationDetail, parsedClientDetails);
                    final ImportedClientDetail importedClientDetail = new ImportedClientDetail(clientCreationDetail, clientGlobalNum, meetingDto);
                    parsedClientDetails.add(importedClientDetail);
                } catch (RowException ex) {
                    final String error = getRowError(friendlyRowNumber) + ex.getMessage();
                    errorsList.add(error);
                } catch (CustomerException ex) {
                    final String error = getRowError(friendlyRowNumber) + getMessage(XlsMessageConstants.DUPLICATE_CLIENT_ERROR);
                    errorsList.add(error);
                } catch (Exception ex) {
                    final String error = getCellError(friendlyRowNumber, currentCell) + ex.getMessage();
                    errorsList.add(error);
                }
            }
        }
    } catch (Exception ex) {
        errorsList.add(getMessage(XlsMessageConstants.ERROR_READING_DOCUMENT, ex.getMessage()));
    }
    return new ParsedClientsDto(errorsList, parsedClientDetails);
}
Also used : OfficeDto(org.mifos.dto.domain.OfficeDto) Address(org.mifos.framework.business.util.Address) FieldConfig(org.mifos.framework.components.fieldConfiguration.util.helpers.FieldConfig) ArrayList(java.util.ArrayList) HSSFRow(org.apache.poi.hssf.usermodel.HSSFRow) HSSFRichTextString(org.apache.poi.hssf.usermodel.HSSFRichTextString) LocalDate(org.joda.time.LocalDate) ClientCreationDetail(org.mifos.dto.domain.ClientCreationDetail) ParsedClientsDto(org.mifos.dto.domain.ParsedClientsDto) ClientFamilyDetailDto(org.mifos.dto.screen.ClientFamilyDetailDto) PersonnelBO(org.mifos.customers.personnel.business.PersonnelBO) ClientNameDetailDto(org.mifos.dto.screen.ClientNameDetailDto) Iterator(java.util.Iterator) MeetingDetailsDto(org.mifos.dto.domain.MeetingDetailsDto) CustomerException(org.mifos.customers.exceptions.CustomerException) InputStream(java.io.InputStream) ClientPersonalDetailDto(org.mifos.dto.screen.ClientPersonalDetailDto) AddressDto(org.mifos.dto.domain.AddressDto) ApplicableAccountFeeDto(org.mifos.dto.domain.ApplicableAccountFeeDto) HSSFWorkbook(org.apache.poi.hssf.usermodel.HSSFWorkbook) Date(java.util.Date) LocalDate(org.joda.time.LocalDate) CustomerException(org.mifos.customers.exceptions.CustomerException) ConfigurationException(org.mifos.config.exceptions.ConfigurationException) MeetingDto(org.mifos.dto.domain.MeetingDto) MeetingRecurrenceDto(org.mifos.dto.domain.MeetingRecurrenceDto) MeetingTypeDto(org.mifos.dto.domain.MeetingTypeDto) ImportedClientDetail(org.mifos.dto.domain.ImportedClientDetail) HSSFSheet(org.apache.poi.hssf.usermodel.HSSFSheet) ValueListElement(org.mifos.dto.domain.ValueListElement)

Example 4 with ClientPersonalDetailDto

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

the class ClientCustActionStrutsTest method createClientForAuditLog.

private void createClientForAuditLog() throws Exception {
    OfficeBO office = new OfficePersistence().getOffice(TestObjectFactory.HEAD_OFFICE);
    PersonnelBO personnel = legacyPersonnelDao.getPersonnel(PersonnelConstants.TEST_USER);
    meeting = getMeeting();
    Integer salutation = 47;
    Integer ethnicity = 218;
    Integer citizenship = 130;
    Integer handicapped = 138;
    Integer businessActivities = 225;
    Integer educationLevel = 226;
    Short numChildren = Short.valueOf("1");
    Short gender = Short.valueOf("49");
    Short povertyStatus = Short.valueOf("41");
    StaticHibernateUtil.startTransaction();
    ClientNameDetailDto clientNameDetailDto = new ClientNameDetailDto(NameType.CLIENT.getValue(), salutation, "Client", "", "1", "");
    clientNameDetailDto.setNames(ClientRules.getNameSequence());
    ClientNameDetailDto spouseNameDetailView = new ClientNameDetailDto(NameType.SPOUSE.getValue(), TestObjectFactory.SAMPLE_SALUTATION, "first", "middle", "last", "secondLast");
    spouseNameDetailView.setNames(ClientRules.getNameSequence());
    ClientPersonalDetailDto clientPersonalDetailDto = new ClientPersonalDetailDto(ethnicity, citizenship, handicapped, businessActivities, ClientPersonalDetailDto.MARRIED, educationLevel, numChildren, gender, povertyStatus);
    client = new ClientBO(TestUtils.makeUser(), clientNameDetailDto.getDisplayName(), CustomerStatus.fromInt(new Short("1")), null, null, new Address(), getCustomFields(), null, null, personnel, office, meeting, personnel, new java.util.Date(), null, null, null, YesNoFlag.NO.getValue(), clientNameDetailDto, spouseNameDetailView, clientPersonalDetailDto, null);
    legacyClientDao.saveClient(client);
    StaticHibernateUtil.flushAndClearSession();
    client = TestObjectFactory.getClient(new Integer(client.getCustomerId()).intValue());
    request.setAttribute(Constants.CURRENTFLOWKEY, flowKey);
    SessionUtils.setAttribute(Constants.BUSINESS_KEY, client, request);
}
Also used : Address(org.mifos.framework.business.util.Address) OfficeBO(org.mifos.customers.office.business.OfficeBO) PersonnelBO(org.mifos.customers.personnel.business.PersonnelBO) ClientNameDetailDto(org.mifos.dto.screen.ClientNameDetailDto) ClientPersonalDetailDto(org.mifos.dto.screen.ClientPersonalDetailDto) ClientBO(org.mifos.customers.client.business.ClientBO) OfficePersistence(org.mifos.customers.office.persistence.OfficePersistence) Date(java.util.Date)

Example 5 with ClientPersonalDetailDto

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

the class ClientIntegrationTest method testSuccessfulCreateClientInBranch.

@Test
public void testSuccessfulCreateClientInBranch() throws Exception {
    OfficeBO office = new OfficePersistence().getOffice(TestObjectFactory.HEAD_OFFICE);
    String firstName = "Client";
    String lastName = "Last";
    String displayName = "Client Last";
    ClientNameDetailDto clientNameDetailDto = new ClientNameDetailDto(NameType.CLIENT.getValue(), TestObjectFactory.SAMPLE_SALUTATION, firstName, "", lastName, "");
    clientNameDetailDto.setNames(ClientRules.getNameSequence());
    ClientNameDetailDto spouseNameDetailView = new ClientNameDetailDto(NameType.SPOUSE.getValue(), TestObjectFactory.SAMPLE_SALUTATION, "first", "middle", "last", "secondLast");
    spouseNameDetailView.setNames(ClientRules.getNameSequence());
    ClientPersonalDetailDto clientPersonalDetailDto = new ClientPersonalDetailDto(1, 1, 1, 1, 1, 1, Short.valueOf("1"), Short.valueOf("1"), Short.valueOf("41"));
    client = new ClientBO(TestUtils.makeUser(), clientNameDetailDto.getDisplayName(), CustomerStatus.fromInt(new Short("1")), null, null, null, getCustomFields(), null, null, personnel, office, meeting, personnel, null, null, null, null, YesNoFlag.YES.getValue(), clientNameDetailDto, spouseNameDetailView, clientPersonalDetailDto, null);
    legacyClientDao.saveClient(client);
    StaticHibernateUtil.flushSession();
    client = TestObjectFactory.getClient(client.getCustomerId());
    Assert.assertEquals(displayName, client.getDisplayName());
    Assert.assertEquals(firstName, client.getFirstName());
    Assert.assertEquals(lastName, client.getLastName());
    Assert.assertEquals(officeId, client.getOffice().getOfficeId());
}
Also used : OfficeBO(org.mifos.customers.office.business.OfficeBO) ClientNameDetailDto(org.mifos.dto.screen.ClientNameDetailDto) ClientPersonalDetailDto(org.mifos.dto.screen.ClientPersonalDetailDto) OfficePersistence(org.mifos.customers.office.persistence.OfficePersistence) Test(org.junit.Test)

Aggregations

ClientNameDetailDto (org.mifos.dto.screen.ClientNameDetailDto)26 ClientPersonalDetailDto (org.mifos.dto.screen.ClientPersonalDetailDto)26 Test (org.junit.Test)13 CustomerException (org.mifos.customers.exceptions.CustomerException)12 ClientBO (org.mifos.customers.client.business.ClientBO)9 OfficePersistence (org.mifos.customers.office.persistence.OfficePersistence)8 ArrayList (java.util.ArrayList)7 PersonnelBO (org.mifos.customers.personnel.business.PersonnelBO)7 InputStream (java.io.InputStream)5 LocalDate (org.joda.time.LocalDate)5 OfficeBO (org.mifos.customers.office.business.OfficeBO)5 AddressDto (org.mifos.dto.domain.AddressDto)5 ClientFamilyDetailDto (org.mifos.dto.screen.ClientFamilyDetailDto)5 Date (java.sql.Date)4 Date (java.util.Date)4 ApplicableAccountFeeDto (org.mifos.dto.domain.ApplicableAccountFeeDto)4 ClientCreationDetail (org.mifos.dto.domain.ClientCreationDetail)4 MeetingDto (org.mifos.dto.domain.MeetingDto)4 Address (org.mifos.framework.business.util.Address)4 SavingsOfferingBO (org.mifos.accounts.productdefinition.business.SavingsOfferingBO)3