Commit 4d8872f4 by nilu

S43014153 # Matchd / Talentology - No Plan [Enhancement] #Including diversity…

S43014153 # Matchd / Talentology - No Plan [Enhancement] #Including diversity questions in applicant process
parent bad2fe18
...@@ -39,16 +39,28 @@ public class SaveDiversityAnswersFP extends SaveFP ...@@ -39,16 +39,28 @@ public class SaveDiversityAnswersFP extends SaveFP
{ {
CandidateDiversityAnswer diversityAnswer = candidate.getDiversityAnswerByQuestion(htQuestion.getQuestion()); CandidateDiversityAnswer diversityAnswer = candidate.getDiversityAnswerByQuestion(htQuestion.getQuestion());
if(htQuestion.getQuestion().getMultipleAnswers())
{
for(AnswerOption answer : diversityAnswer.getAnswersSet()) for(AnswerOption answer : diversityAnswer.getAnswersSet())
{ {
if(!answer.isTrue(answer.getIsSelected())) if(!answer.isTrue(answer.getIsSelected()))
{ {
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In SaveDiversityAnswersFP deleting AnswerOption : ", answer ); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In SaveDiversityAnswersFP for multiple answer questions deleting AnswerOption : ", answer );
answer.delete(); answer.delete();
} }
} }
} }
else
{
AnswerOption answerOption = AnswerOption.createAnswerOption(process.getTransaction());
diversityAnswer.addToAnswers(answerOption);
answerOption.setAnswer(diversityAnswer.getAnswerOption());
answerOption.setIsSelected(Boolean.TRUE);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In SaveDiversityAnswersFP created AnswerOption : ", answerOption);
}
}
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
} }
...@@ -64,10 +76,18 @@ public class SaveDiversityAnswersFP extends SaveFP ...@@ -64,10 +76,18 @@ public class SaveDiversityAnswersFP extends SaveFP
for(HTDiversityQuestion htQuestion : job.getDiversityQuestions()) for(HTDiversityQuestion htQuestion : job.getDiversityQuestions())
{ {
CandidateDiversityAnswer diversityAnswer = candidate.getDiversityAnswerByQuestion(htQuestion.getQuestion()); CandidateDiversityAnswer diversityAnswer = candidate.getDiversityAnswerByQuestion(htQuestion.getQuestion());
if(htQuestion.getQuestion().getMultipleAnswers())
{
Filter<AnswerOption> filter = AnswerOption.SearchByAll().andIsSelected(new EqualsFilter<>(Boolean.TRUE)); Filter<AnswerOption> filter = AnswerOption.SearchByAll().andIsSelected(new EqualsFilter<>(Boolean.TRUE));
BusinessObjectParser.assertFieldCondition(diversityAnswer.pipelineCandidateDiversityAnswer().toAnswers(filter).uniqueVals().size() >= 1 , diversityAnswer, CandidateDiversityAnswer.MULTIPLEREFERENCE_Answers, "atleastOneAnswer", exceptions, true, request); BusinessObjectParser.assertFieldCondition(diversityAnswer.pipelineCandidateDiversityAnswer().toAnswers(filter).uniqueVals().size() >= 1 , diversityAnswer, CandidateDiversityAnswer.MULTIPLEREFERENCE_Answers, "atleastOneAnswer", exceptions, true, request);
} }
else
{
BusinessObjectParser.assertFieldCondition(diversityAnswer.getAnswerOption() != null , diversityAnswer, CandidateDiversityAnswer.SINGLEREFERENCE_AnswerOption, "mandatory", exceptions, true, request);
}
}
super.validate(process, submission, exceptions, params); super.validate(process, submission, exceptions, params);
} }
......
package performa.orm; package performa.orm;
import oneit.utils.CollectionUtils;
public class CandidateDiversityAnswer extends BaseCandidateDiversityAnswer public class CandidateDiversityAnswer extends BaseCandidateDiversityAnswer
{ {
...@@ -12,24 +10,4 @@ public class CandidateDiversityAnswer extends BaseCandidateDiversityAnswer ...@@ -12,24 +10,4 @@ public class CandidateDiversityAnswer extends BaseCandidateDiversityAnswer
{ {
// Do not add any code to this, always put it in initialiseNewObject // Do not add any code to this, always put it in initialiseNewObject
} }
public CandidateDiversityAnswer getAnswerForQuestion(HTDiversityQuestion htQuestion)
{
CandidateDiversityAnswer answer = null;
if(htQuestion != null)
{
// for(CultureCriteria cc: htQuestion.getQ)
// {
// if(CollectionUtils.equals(cc.getCultureElement(), getCultureElement()))
// {
// criteria = cc;
//
// break;
// }
// }
}
return answer;
}
} }
\ No newline at end of file
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
<BUSINESSCLASS name="CandidateDiversityAnswer" package="performa.orm"> <BUSINESSCLASS name="CandidateDiversityAnswer" package="performa.orm">
<TRANSIENTSINGLE name="AnswerOption" type="DiversityAnswer" />
<MULTIPLEREFERENCE name="Answers" type="AnswerOption" backreferenceName="CandidateAnswer" /> <MULTIPLEREFERENCE name="Answers" type="AnswerOption" backreferenceName="CandidateAnswer" />
<TABLE name="tl_candidate_diversity_answer" tablePrefix="object" polymorphic="FALSE"> <TABLE name="tl_candidate_diversity_answer" tablePrefix="object" polymorphic="FALSE">
......
...@@ -228,6 +228,8 @@ public class JobApplication extends BaseJobApplication ...@@ -228,6 +228,8 @@ public class JobApplication extends BaseJobApplication
{ {
CandidateDiversityAnswer answer = CandidateDiversityAnswer.createCandidateDiversityAnswer(getTransaction()); CandidateDiversityAnswer answer = CandidateDiversityAnswer.createCandidateDiversityAnswer(getTransaction());
if(question.getMultipleAnswers())
{
for(DiversityAnswer diversityAnswer : question.getAnswersSet()) for(DiversityAnswer diversityAnswer : question.getAnswersSet())
{ {
AnswerOption answerOption = AnswerOption.createAnswerOption(getTransaction()); AnswerOption answerOption = AnswerOption.createAnswerOption(getTransaction());
...@@ -235,6 +237,7 @@ public class JobApplication extends BaseJobApplication ...@@ -235,6 +237,7 @@ public class JobApplication extends BaseJobApplication
answer.addToAnswers(answerOption); answer.addToAnswers(answerOption);
answerOption.setAnswer(diversityAnswer); answerOption.setAnswer(diversityAnswer);
} }
}
candidate.addToDiversityAnswers(answer); candidate.addToDiversityAnswers(answer);
answer.setQuestion(question); answer.setQuestion(question);
...@@ -246,6 +249,21 @@ public class JobApplication extends BaseJobApplication ...@@ -246,6 +249,21 @@ public class JobApplication extends BaseJobApplication
return safeRedirect; return safeRedirect;
} }
public void setDiversityAnswerOptions() throws StorageException, FieldException
{
for(CandidateDiversityAnswer candidateAnswer : pipelineJobApplication().toCandidate().toDiversityAnswers().uniqueVals())
{
if(!candidateAnswer.getQuestion().getMultipleAnswers())
{
AnswerOption answerOption = candidateAnswer.pipelineCandidateDiversityAnswer().toAnswers().val();
if(answerOption != null && answerOption.getAnswer() != null && answerOption.isTrue(answerOption.getIsSelected()))
{
candidateAnswer.setAnswerOption(answerOption.getAnswer());
}
}
}
}
public Answer getAnswerForQuestion(Question question) throws FieldException public Answer getAnswerForQuestion(Question question) throws FieldException
{ {
......
...@@ -23,6 +23,11 @@ ...@@ -23,6 +23,11 @@
Debug.assertion(jobApplication != null, "Invalid Job Application in applicant portal"); Debug.assertion(jobApplication != null, "Invalid Job Application in applicant portal");
if(jobApplication.diversityCompleted())
{
response.sendRedirect(WebUtils.getSamePageInRenderMode(request, "VerificationSent") + "&JobID=" + job.getID());
}
Boolean isSelectionComplete = jobApplication.selectionCompleted(); Boolean isSelectionComplete = jobApplication.selectionCompleted();
Boolean isCultureComplete = jobApplication.cultureCompleted(); Boolean isCultureComplete = jobApplication.cultureCompleted();
Boolean isAssesmentComplete = jobApplication.assessmentCompleted(); Boolean isAssesmentComplete = jobApplication.assessmentCompleted();
...@@ -56,6 +61,8 @@ ...@@ -56,6 +61,8 @@
%><%@include file="/saferedirect.jsp" %><% %><%@include file="/saferedirect.jsp" %><%
} }
jobApplication.setDiversityAnswerOptions();
process.setAttribute("JobApplication", jobApplication); process.setAttribute("JobApplication", jobApplication);
%> %>
<oneit:form name="diversity" method="post" enctype="multipart/form-data"> <oneit:form name="diversity" method="post" enctype="multipart/form-data">
...@@ -89,18 +96,27 @@ ...@@ -89,18 +96,27 @@
<div class="main-verify-identity"> <div class="main-verify-identity">
<div class="main-box-layout main-verify-step-2"> <div class="main-box-layout main-verify-step-2">
<% <%
FormTag applicationForm = FormTag.getActiveFormTag(request);
FormBuilder formBuilder = applicationForm.getFormBuilder();
for(HTDiversityQuestion question : job.getDiversityQuestions()) for(HTDiversityQuestion question : job.getDiversityQuestions())
{ {
DiversityQuestion originalQuestion = question.getQuestion(); DiversityQuestion originalQuestion = question.getQuestion();
CandidateDiversityAnswer candidateAnswer = candidate.getDiversityAnswerByQuestion(originalQuestion); CandidateDiversityAnswer candidateAnswer = candidate.getDiversityAnswerByQuestion(originalQuestion);
// not showing question if already answered
if(candidateAnswer.pipelineCandidateDiversityAnswer().toAnswers(AnswerOption.SearchByAll().andIsSelected(new EqualsFilter<>(Boolean.TRUE))).uniqueVals().size() >= 1)
{
continue;
}
%> %>
<div class="form-group text-left"> <div class="form-group text-left">
<label><%= question.getQuestionText() %></label> <label><%= question.getQuestionText() %></label>
<% <%
for(AnswerOption answer : candidateAnswer.getAnswersSet())
{
if(originalQuestion.getMultipleAnswers()) if(originalQuestion.getMultipleAnswers())
{ {
for(AnswerOption answer : candidateAnswer.getAnswersSet())
{
%> %>
<div class="styled_checkboxes"> <div class="styled_checkboxes">
<div class="checkbox checkbox-primary"> <div class="checkbox checkbox-primary">
...@@ -114,14 +130,31 @@ ...@@ -114,14 +130,31 @@
</div> </div>
<% <%
} }
}
else else
{ {
String optionKey = WebUtils.getRadioSingleAssocKey(request, candidateAnswer, CandidateDiversityAnswer.SINGLEREFERENCE_AnswerOption);
String formValue = formBuilder.fieldValue (optionKey, candidateAnswer.getAnswerOption() == null ? "" : String.valueOf(candidateAnswer.getAnswerOptionID()));
%> %>
<div class="radio radio-primary second-radio-primary full-width"> <%--<div class="radio radio-primary second-radio-primary full-width">
<input type="radio" name="<%= candidateAnswer.getObjectID() %>" value="<%= answer.getIsSelected() %>" id="<%= answer.getObjectID() %>"/> <input type="radio" name="<%= candidateAnswer.getObjectID() %>" value="<%= answer.getIsSelected() %>" id="<%= answer.getObjectID() %>"/>
<label for="<%= answer.getObjectID() %>"> <label for="<%= answer.getObjectID() %>">
<%= answer.getAnswer().getAnswer() %> <%= answer.getAnswer().getAnswer() %>
</label> </label>
</div>--%>
<%
for(DiversityAnswer diversityAnswer : originalQuestion.getAnswersSet())
{
String answerId = String.valueOf(diversityAnswer.getID().longID());
String selectedStr = (CollectionUtils.equals(answerId, formValue) ? "checked" : "");
%>
<div class="radio radio-primary second-radio-primary full-width">
<input type="radio" name="<%= optionKey %>" id="<%= answerId %>" class="element_rating_radio" value="<%= answerId %>" <%= selectedStr %>>
<label for="<%= answerId %>">
<oneit:toString value="<%= diversityAnswer.getAnswer() %>" mode="EscapeHTML" nullValue="-"/>
</label>
</div> </div>
<% <%
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment