ActionForward actionForwardError = verifySubmissionPreconditions(mapping);
if (actionForwardError != null) {
return actionForwardError;
}
IndividualCandidacyProcessBean bean = getIndividualCandidacyProcessBean();
final PersonBean personBean = bean.getPersonBean();
if (existsIndividualCandidacyProcessForDocumentId(request, personBean.getIdDocumentType(),
personBean.getDocumentIdNumber())) {
addActionMessage("individualCandidacyMessages", request, "error.candidacy.for.person.already.exists");
return executeCreateCandidacyPersonalInformationInvalid(mapping, form, request, response);
}
final Set<Person> persons = new HashSet<Person>(Person.readByDocumentIdNumber(personBean.getDocumentIdNumber()));
if (persons.size() > 1) {
addActionMessage("individualCandidacyMessages", request, getProcessType().getSimpleName()
+ ".error.public.candidacies.fill.personal.information.and.institution.id.person.already.exist");
return executeCreateCandidacyPersonalInformationInvalid(mapping, form, request, response);
}
final Person person = persons.size() == 1 ? persons.iterator().next() : null;
// check if person already exists
if (person != null) {
if (isPersonStudentAndNumberIsCorrect(person, bean.getPersonNumber())) {
if (!person.getDateOfBirthYearMonthDay().equals(personBean.getDateOfBirth())) {
// found person with diff date
addActionMessage("individualCandidacyMessages", request, getProcessType().getSimpleName()
+ ".error.public.candidacies.fill.personal.information.and.institution.id.birth");
return executeCreateCandidacyPersonalInformationInvalid(mapping, form, request, response);
} else if (!StringUtils.isEmpty(personBean.getSocialSecurityNumber())
&& !StringUtils.isEmpty(person.getSocialSecurityNumber())
&& !person.getSocialSecurityNumber().equals(personBean.getSocialSecurityNumber())) {
// found person with diff social security number
addActionMessage("individualCandidacyMessages", request, getProcessType().getSimpleName()
+ ".error.public.candidacies.fill.personal.information.and.institution.id.contributorNumber");
return executeCreateCandidacyPersonalInformationInvalid(mapping, form, request, response);
} else {
personBean.setPerson(person);
}
} else {
// found person with diff ist userid
addActionMessage("individualCandidacyMessages", request, getProcessType().getSimpleName()
+ ".error.public.candidacies.fill.personal.information.and.institution.id.userId");
return executeCreateCandidacyPersonalInformationInvalid(mapping, form, request, response);
}
} else {
if (Person.readByContributorNumber(personBean.getSocialSecurityNumber()) != null) {
// found person with same contributor number
addActionMessage("individualCandidacyMessages", request, getProcessType().getSimpleName()
+ ".error.public.candidacies.fill.personal.information.and.institution.id.contributorNumber");
return executeCreateCandidacyPersonalInformationInvalid(mapping, form, request, response);
}
if (!StringUtils.isEmpty(bean.getPersonNumber())) {
// person must fill ist userid
addActionMessage("individualCandidacyMessages", request, getProcessType().getSimpleName()
+ ".error.public.candidacies.fill.personal.information.and.institution.id.userId.missing");
return executeCreateCandidacyPersonalInformationInvalid(mapping, form, request, response);
} else {
fillExternalPrecedentInformation(mapping, form, request, response);
}
}
IndividualCandidacyDocumentFile photoDocumentFile =
createIndividualCandidacyDocumentFile(bean.getPhotoDocument(), bean.getPersonBean().getDocumentIdNumber());
bean.getPhotoDocument().setDocumentFile(photoDocumentFile);
request.setAttribute(getIndividualCandidacyProcessBeanName(), getIndividualCandidacyProcessBean());
return mapping.findForward("candidacy-continue-creation");
}