Commit 77d5a3b1 by chenith Committed by Harsh Shah

UPdated Job application process, compete Culture and Role stages if applicant…

UPdated Job application process, compete Culture and Role stages if applicant has already completed the Culture and Role tests.
parent 298df18a
...@@ -42,11 +42,14 @@ public class CompleteApplicationFP extends SaveFP ...@@ -42,11 +42,14 @@ public class CompleteApplicationFP extends SaveFP
@Override @Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
{ {
HttpServletRequest request = submission.getRequest(); HttpServletRequest request = submission.getRequest();
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication"); JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
if(jobApplication.getAlreadyCompletedApplicationForCulture()==null)
{
BusinessObjectParser.assertFieldCondition(jobApplication.getCultureCriteriaAnswersCount()>0, jobApplication, jobApplication.FIELD_ObjectID, "completeCulture", exceptions, true, request);
}
BusinessObjectParser.assertFieldCondition(jobApplication.getCultureCriteriaAnswersCount()>0, jobApplication, jobApplication.FIELD_ObjectID, "completeCulture", exceptions, true, request);
super.validate(process, submission, exceptions, params); super.validate(process, submission, exceptions, params);
} }
} }
\ No newline at end of file
...@@ -61,7 +61,7 @@ public class SendVerificationMailFP extends SaveFP ...@@ -61,7 +61,7 @@ public class SendVerificationMailFP extends SaveFP
SecUser newSecUser = SecUser.createSecUser(objTran); SecUser newSecUser = SecUser.createSecUser(objTran);
newSecUser.setUserName(email); newSecUser.setUserName(email.toLowerCase());
newSecUser.setAttribute("md5:" + SecUser.FIELD_Password, DEFAULT_PASSWORD); newSecUser.setAttribute("md5:" + SecUser.FIELD_Password, DEFAULT_PASSWORD);
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", newSecUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", newSecUser);
......
...@@ -26,7 +26,7 @@ public class SignInCandidateFP extends LoginProcessor ...@@ -26,7 +26,7 @@ public class SignInCandidateFP extends LoginProcessor
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Inside SignInCandidateFP for ", job, " Email:", email); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Inside SignInCandidateFP for ", job, " Email:", email);
userMap.put("username", job.getEmail()); userMap.put("username", job.getEmail().toLowerCase());
userMap.put("password", job.getPassword()); userMap.put("password", job.getPassword());
request.setAttribute("nextPage", nextPage + "&JobID=" + job.getObjectID()); request.setAttribute("nextPage", nextPage + "&JobID=" + job.getObjectID());
......
...@@ -5,19 +5,16 @@ import oneit.logging.LoggingArea; ...@@ -5,19 +5,16 @@ import oneit.logging.LoggingArea;
import oneit.objstore.StorageException; import oneit.objstore.StorageException;
import oneit.objstore.rdbms.filters.EqualsFilter; import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.objstore.rdbms.filters.IsNotNullFilter; import oneit.objstore.rdbms.filters.IsNotNullFilter;
import oneit.objstore.rdbms.filters.NotEqualsFilter;
import oneit.objstore.utils.ObjstoreUtils; import oneit.objstore.utils.ObjstoreUtils;
import oneit.utils.CollectionUtils; import oneit.utils.CollectionUtils;
import oneit.utils.ObjectTransform; import oneit.utils.ObjectTransform;
import oneit.utils.filter.CollectionFilter; import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import oneit.utils.math.MathUtils;
import oneit.utils.math.Rounding;
import oneit.utils.parsers.FieldException; import oneit.utils.parsers.FieldException;
import performa.orm.types.AppProcessOption; import performa.orm.types.AppProcessOption;
import performa.orm.types.ApplicationStatus; import performa.orm.types.ApplicationStatus;
import performa.orm.types.CriteriaType; import performa.orm.types.CriteriaType;
import performa.orm.types.CultureClass;
import performa.orm.types.Importance;
import performa.utils.AnalysisEngine; import performa.utils.AnalysisEngine;
...@@ -227,9 +224,10 @@ public class JobApplication extends BaseJobApplication ...@@ -227,9 +224,10 @@ public class JobApplication extends BaseJobApplication
{ {
Filter filter = Answer.SearchByAll().andAnswerNo(new IsNotNullFilter<>()); Filter filter = Answer.SearchByAll().andAnswerNo(new IsNotNullFilter<>());
Collection selectedAnswers = pipelineJobApplication().toProfileAssessmentAnswers(filter).vals(); Collection selectedAnswers = pipelineJobApplication().toProfileAssessmentAnswers(filter).vals();
return (selectedAnswers.size() == allAnswersCount); return (selectedAnswers.size() >= allAnswersCount);
} }
return false; return false;
} }
...@@ -298,4 +296,50 @@ public class JobApplication extends BaseJobApplication ...@@ -298,4 +296,50 @@ public class JobApplication extends BaseJobApplication
return statuses; return statuses;
} }
public Collection<JobApplication> getAllSubmittedApplicationsByCandidate()
{
Filter filter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT));
return CollectionFilter.filter(getCandidate().getJobApplicationsSet(), filter);
}
public JobApplication getAlreadyCompletedApplicationForCulture()
{
for(JobApplication application: getAllSubmittedApplicationsByCandidate())
{
if(CollectionUtils.equals(application, this))
{
continue;
}
if(application.cultureCompleted())
{
return application;
}
}
return null;
}
public JobApplication getAlreadyCompletedApplicationForRole()
{
for(JobApplication application: getAllSubmittedApplicationsByCandidate())
{
if(CollectionUtils.equals(application, this))
{
continue;
}
if(application.assessmentCompleted())
{
return application;
}
}
return null;
}
} }
\ No newline at end of file
...@@ -32,9 +32,25 @@ ...@@ -32,9 +32,25 @@
nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture"); nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
} }
Boolean isSelectionComplete = jobApplication.selectionCompleted(); //to store already completed culture or role data
Boolean isCultureComplete = jobApplication.cultureCompleted(); Boolean alreadyCompletedCulture = (Boolean) process.getAttribute("AlreadyCompletedCulture");
Boolean isAssesmentComplete = jobApplication.assessmentCompleted(); Boolean alreadyCompletedRole = (Boolean) process.getAttribute("AlreadyCompletedRole");
if(alreadyCompletedCulture==null)
{
alreadyCompletedCulture = jobApplication.getAlreadyCompletedApplicationForCulture()!=null;
process.setAttribute("AlreadyCompletedCulture", alreadyCompletedCulture);
}
if(alreadyCompletedRole==null)
{
alreadyCompletedRole = jobApplication.getAlreadyCompletedApplicationForRole()!=null;
process.setAttribute("AlreadyCompletedRole", alreadyCompletedRole);
}
Boolean isSelectionComplete = jobApplication.selectionCompleted();
Boolean isCultureComplete = jobApplication.cultureCompleted() || alreadyCompletedCulture;
Boolean isAssesmentComplete = jobApplication.assessmentCompleted() || alreadyCompletedRole;
process.setAttribute("JobApplication", jobApplication); process.setAttribute("JobApplication", jobApplication);
%> %>
......
...@@ -5,12 +5,18 @@ ...@@ -5,12 +5,18 @@
<%@ include file="/extensions/performa/inc/stdimports.jsp" %> <%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<% <%
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication"); JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
String pageNumber = (String) getData(request, "PageNumber"); String pageNumber = (String) getData(request, "PageNumber");
String firstPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria"); String firstPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria");
String secondPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture"); String secondPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
String thirdPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment"); String thirdPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
boolean includeAssessment = jobApplication.isIncludeAssessmentCriteria(); boolean includeAssessment = jobApplication.isIncludeAssessmentCriteria();
Boolean alreadyCompletedCulture = (Boolean) process.getAttribute("AlreadyCompletedCulture");
Boolean alreadyCompletedRole = (Boolean) process.getAttribute("AlreadyCompletedRole");
Boolean isSelectionComplete = jobApplication.selectionCompleted(); //REQ
Boolean isCultureComplete = jobApplication.cultureCompleted() || alreadyCompletedCulture;
Boolean isAssesmentComplete = jobApplication.assessmentCompleted() || alreadyCompletedRole;
%> %>
<oneit:dynIncluded> <oneit:dynIncluded>
...@@ -21,33 +27,33 @@ ...@@ -21,33 +27,33 @@
if(includeAssessment) if(includeAssessment)
{ {
%> %>
<li class="<%= pageNumber == "1" ? "active" : jobApplication.selectionCompleted() ? "complate" : ""%>"> <li class="<%= pageNumber == "1" ? "active" : isSelectionComplete ? "complate" : ""%>">
<oneit:button value=" " name="gotoPage" skin="link" <oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", firstPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", firstPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<span><%= jobApplication.selectionCompleted() ? "<img src=\"images/right-mark.png\" />" : "1"%></span> <span><%= isSelectionComplete ? "<img src=\"images/right-mark.png\" />" : "1"%></span>
<div class="mobile-hide">Your Experience</div> <div class="mobile-hide">Your Experience</div>
</oneit:button> </oneit:button>
</li> </li>
<% <%
} }
%> %>
<li class="<%= pageNumber == "2" ? "active" : jobApplication.cultureCompleted() ? "complate" : ""%>"> <li class="<%= pageNumber == "2" ? "active" : isCultureComplete ? "complate" : ""%>">
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= jobApplication.cultureCompleted() ? "true" : "false"%>" <oneit:button value=" " name="gotoPage" skin="link" disabled="<%= isCultureComplete ? "true" : "false"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<span><%= jobApplication.cultureCompleted() ? "<img src=\"images/right-mark.png\" />" : (includeAssessment ? "2" : "1")%></span> <span><%= isCultureComplete ? "<img src=\"images/right-mark.png\" />" : (includeAssessment ? "2" : "1")%></span>
<div class="mobile-hide">Workplace Preference</div> <div class="mobile-hide">Workplace Preference</div>
</oneit:button> </oneit:button>
</li> </li>
<li class="<%= pageNumber == "3" ? "active" : jobApplication.assessmentCompleted() ? "complate" : ""%>"> <li class="<%= pageNumber == "3" ? "active" : isAssesmentComplete ? "complate" : ""%>">
<oneit:button value=" " name="gotoPage" skin="link" <oneit:button value=" " name="gotoPage" skin="link" disabled="<%= isAssesmentComplete ? "true" : "false"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", thirdPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", thirdPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<span><%= jobApplication.assessmentCompleted() ? "<img src=\"images/right-mark.png\" />" : (includeAssessment ? "3" : "2")%></span> <span><%= isAssesmentComplete ? "<img src=\"images/right-mark.png\" />" : (includeAssessment ? "3" : "2")%></span>
<div class="mobile-hide">Your Work Style</div> <div class="mobile-hide">Your Work Style</div>
</oneit:button> </oneit:button>
</li> </li>
......
...@@ -5,15 +5,28 @@ ...@@ -5,15 +5,28 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
ObjectTransaction objTran = process.getTransaction (); ObjectTransaction objTran = process.getTransaction ();
String nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture"); String nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication"); JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
Job job = jobApplication.getJob(); Job job = jobApplication.getJob();
String exitPage = WebUtils.getArticleLink(request, objTran, WebUtils.APPLY_JOB, "Page"); String exitPage = WebUtils.getArticleLink(request, objTran, WebUtils.APPLY_JOB, "Page");
exitPage = exitPage + "&id=" + job.getID() + "&key=" + job.getRandomKey(); exitPage = exitPage + "&id=" + job.getID() + "&key=" + job.getRandomKey();
Boolean alreadyCompletedCulture = (Boolean) process.getAttribute("AlreadyCompletedCulture");
Boolean alreadyCompletedRole = (Boolean) process.getAttribute("AlreadyCompletedRole");
Boolean isCultureComplete = jobApplication.cultureCompleted() || alreadyCompletedCulture;
Boolean isAssesmentComplete = jobApplication.assessmentCompleted() || alreadyCompletedRole;
boolean toRedirect = jobApplication.createAssessmentCriteriaObjects();
if(isCultureComplete && isAssesmentComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "SubmitApplication");
}
else if(isCultureComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
}
boolean toRedirect = jobApplication.createAssessmentCriteriaObjects();
if (toRedirect) if (toRedirect)
{ {
%> %>
...@@ -124,10 +137,28 @@ ...@@ -124,10 +137,28 @@
.mapEntry ("JobApplication", jobApplication) .mapEntry ("JobApplication", jobApplication)
.mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE) .mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE)
.toMap() %>"/> .toMap() %>"/>
<oneit:button value="Proceed to next step" name="gotoPage" cssClass="box-btn" <%
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage) if(isCultureComplete && isAssesmentComplete)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) {
.toMap() %>"/> %>
<oneit:button value="Complete" name="completeApplication" id="nextButton" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.mapEntry("attribNamesToRestore", Collections.singleton("JobApplication"))
.mapEntry("restartProcess", Boolean.TRUE)
.toMap() %>"/>
<%
}
else
{
%>
<oneit:button value="Proceed to next step" name="gotoPage" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
<%
}
%>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -5,14 +5,21 @@ ...@@ -5,14 +5,21 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
ObjectTransaction objTran = process.getTransaction (); ObjectTransaction objTran = process.getTransaction ();
String currentPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture"); String currentPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
String nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment"); String nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication"); JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
Job job = jobApplication.getJob(); Job job = jobApplication.getJob();
int cultureQuestionNo = process.getAttribute("CultureQuestionNo")!= null ? (int) process.getAttribute("CultureQuestionNo") : jobApplication.getCultureCriteriaAnswersCount(); int cultureQuestionNo = process.getAttribute("CultureQuestionNo")!= null ? (int) process.getAttribute("CultureQuestionNo") : jobApplication.getCultureCriteriaAnswersCount();
String exitPage = WebUtils.getArticleLink(request, objTran, WebUtils.APPLY_JOB, "Page") + "&id=" + job.getID() + "&key=" + job.getRandomKey(); String exitPage = WebUtils.getArticleLink(request, objTran, WebUtils.APPLY_JOB, "Page") + "&id=" + job.getID() + "&key=" + job.getRandomKey();
boolean toRedirect = jobApplication.createCultureCriteriaObjects(); boolean toRedirect = jobApplication.createCultureCriteriaObjects();
Boolean alreadyCompletedRole = (Boolean) process.getAttribute("AlreadyCompletedRole");
Boolean isAssesmentComplete = jobApplication.assessmentCompleted() || alreadyCompletedRole;
if(isAssesmentComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "SubmitApplication");
}
if(toRedirect) if(toRedirect)
{ {
...@@ -129,7 +136,18 @@ ...@@ -129,7 +136,18 @@
.mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE) .mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE)
.toMap() %>"/> .toMap() %>"/>
<% <%
if(isLast) if(isAssesmentComplete)
{
%>
<oneit:button value="Complete" name="completeApplication" id="nextButton" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.mapEntry("attribNamesToRestore", Collections.singleton("JobApplication"))
.mapEntry("restartProcess", Boolean.TRUE)
.toMap() %>"/>
<%
}
else if(isLast)
{ {
%> %>
<oneit:button value="Proceed to next step" name="gotoPage" cssClass="box-btn" <oneit:button value="Proceed to next step" name="gotoPage" cssClass="box-btn"
......
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