Commit 56c433dd by Jay

Application Flow Change.

parent c380a086
......@@ -22,7 +22,8 @@ public class CompleteApplicationFP extends SaveFP
{
HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = process.getTransaction();
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
JobApplication jobApplication = process.getAttribute("JobApplication") != null ? (JobApplication) process.getAttribute("JobApplication") : (JobApplication)request.getAttribute("JobApplication");
jobApplication = jobApplication.getInTransaction(objTran);
if(jobApplication.getStatus() != ObjectStatus.NEW) //getInTransaction will return NULL for NEW object, resulting NPE
{
......@@ -40,6 +41,8 @@ public class CompleteApplicationFP extends SaveFP
updateJobApplication(objTran, jobApplication.getID().longID());
}
process.setAttribute("JobApplication", jobApplication);
return super.processForm(process, submission, params);
}
......@@ -49,7 +52,8 @@ public class CompleteApplicationFP extends SaveFP
{
HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = ObjectTransaction.getTransaction();
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
JobApplication jobApplication = process.getAttribute("JobApplication") != null ? (JobApplication) process.getAttribute("JobApplication") : (JobApplication)request.getAttribute("JobApplication");
jobApplication = jobApplication.getInTransaction(objTran);
if(!jobApplication.cultureCompleted())
{
......@@ -82,6 +86,7 @@ public class CompleteApplicationFP extends SaveFP
{
jobApplication.setApplicationStatus(ApplicationStatus.UNSUITABLE);
}
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication);
}
}
\ No newline at end of file
package performa.form;
import java.util.Date;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import oneit.business.content.Article;
import oneit.components.ParticipantInitialisationContext;
import oneit.email.ConfigurableArticleTemplateEmailer;
import oneit.email.ConfigurableEmailerException;
import oneit.logging.*;
import oneit.net.LoopbackHTTP;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.SecUser;
import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.utils.*;
import performa.orm.*;
import performa.orm.types.RoleType;
import performa.utils.Utils;
import performa.utils.WebUtils;
public class ConfirmDetailsFP extends SaveFP
{
private static final LoggingArea LOG = LoggingArea.createLoggingArea("ConfirmDetailsFP");
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = process.getTransaction();
Job job = (Job) request.getAttribute("Job");
String email = job.getEmail();
Debug.assertion(email != null, "Email not avaialble");
email = email.toLowerCase();
LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to send varification email.", job , email);
SecUser secUser = SecUser.searchNAME(objTran, email);
if(secUser==null)
{
secUser = SecUser.createSecUser(objTran);
secUser.setUserName(email);
secUser.setEmail(email);
secUser.setAttribute("md5:" + SecUser.FIELD_Password, CompanyUser.DEFAULT_PASSWORD);
secUser.addRole(Utils.getRole(Utils.ROLE_APPLICANT, objTran));
}
Candidate candidate = secUser.getExtensionOrCreate(Candidate.REFERENCE_Candidate);
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser);
process.setAttribute("NewCandidate",candidate);
request.setAttribute("nextPage", request.getAttribute("nextPage"));
return super.processForm(process, submission, params);
}
}
\ No newline at end of file
......@@ -62,6 +62,7 @@ public class SendVerificationMailFP extends SaveFP
HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = process.getTransaction();
Job job = (Job) request.getAttribute("Job");
Candidate candidate = (Candidate) request.getAttribute("Candidate");
Company company = (Company) request.getAttribute("Company");
if(company != null)
......@@ -113,40 +114,6 @@ public class SendVerificationMailFP extends SaveFP
}
else
{
String email = job.getEmail();
Debug.assertion(email != null, "Email not avaialble");
email = email.toLowerCase();
LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to send varification email.", job , email);
SecUser secUser = SecUser.searchNAME(objTran, email);
if(secUser!=null)
{
Candidate tmpCandidate = secUser.getExtension(Candidate.REFERENCE_Candidate);
Debug.assertion((tmpCandidate == null || !tmpCandidate.getIsAccountVerified()), "user available", email, secUser);
}
LogMgr.log(LOG, LogLevel.PROCESSING1, "Inside SendVerificationMailFP for send account verification mail for ", email);
if(secUser==null)
{
secUser = SecUser.createSecUser(objTran);
secUser.setUserName(email);
secUser.setEmail(email);
secUser.setAttribute("md5:" + SecUser.FIELD_Password, CompanyUser.DEFAULT_PASSWORD);
secUser.addRole(Utils.getRole(Utils.ROLE_APPLICANT, objTran));
}
Candidate candidate = secUser.getExtensionOrCreate(Candidate.REFERENCE_Candidate);
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser);
sendVerificationMail(candidate, job, request);
request.setAttribute("nextPage", request.getAttribute("nextPage") + "&JobID=" + job.getID());
......
......@@ -5,6 +5,7 @@ import javax.servlet.http.HttpServletRequest;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState;
......@@ -13,6 +14,7 @@ import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException;
import oneit.utils.Debug;
import oneit.utils.MultiException;
import performa.orm.AssessmentCriteriaAnswer;
import performa.orm.JobApplication;
......@@ -32,24 +34,20 @@ public class ValidateApplicationFP extends SaveFP
super.validate(process, submission, exceptions, params);
HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = ObjectTransaction.getTransaction();
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
ObjectTransaction objTran = process.getTransaction();
JobApplication jobApplication = process.getAttribute("JobApplication") != null ? (JobApplication) process.getAttribute("JobApplication") : (JobApplication)request.getAttribute("JobApplication");
boolean fromRequirements = request.getAttribute("fromRequirements") != null ? (boolean) request.getAttribute("fromRequirements"): false;
boolean fromCoverLetter = request.getAttribute("fromCoverLetter") != null ? (boolean) request.getAttribute("fromCoverLetter"): false;
Debug.assertion(jobApplication != null, "No jobApplication found . Call from " + getClass().getName());
jobApplication = jobApplication.getInTransaction(objTran);
if(jobApplication.isIncludeAssessmentCriteria() && fromRequirements)
{
JobApplication application = jobApplication.getInTransaction(objTran);
// JobApplication application = jobApplication.getInTransaction(objTran);
AssessmentCriteriaAnswer[] application = AssessmentCriteriaAnswer.SearchByAll().andJobApplication(new EqualsFilter<>(jobApplication)).search(objTran);
BusinessObjectParser.assertFieldCondition(jobApplication.getJob().getAssessmentCriteriasCount() == application.getAssessmentCriteriaAnswersCount(), jobApplication, JobApplication.FIELD_ObjectID, "completeAssessment", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(jobApplication.getJob().getAssessmentCriteriasCount() == application.length, jobApplication, JobApplication.FIELD_ObjectID, "completeAssessment", exceptions, true, request);
}
if(fromCoverLetter)
{
BusinessObjectParser.assertFieldCondition(jobApplication.getCV() != null , jobApplication, JobApplication.FIELD_CV, "uploadCV", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(jobApplication.getCoverLetter() != null , jobApplication, JobApplication.FIELD_CoverLetter, "uploadCover", exceptions, true, request);
}
}
}
\ No newline at end of file
......@@ -10,6 +10,7 @@ import oneit.logging.*;
import oneit.net.LoopbackHTTP;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.security.SecUser;
import oneit.servlets.forms.*;
import oneit.servlets.process.*;
......@@ -28,11 +29,13 @@ public class VerifyIdentityFP extends SaveFP
@Override
protected Map validate(SubmissionDetails submission, MultiException exceptions)
{
HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job");
Candidate candidate = (Candidate) request.getAttribute("Candidate");
SecUser secUser = candidate.getUser();
Boolean isVerify = CollectionUtils.equals(request.getAttribute("isVerify"), Boolean.TRUE);
HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job");
JobApplication jobApplication = (JobApplication)request.getAttribute("JobApplication");
Candidate candidate = (Candidate) request.getAttribute("Candidate");
SecUser secUser = candidate.getUser();
Boolean isVerify = CollectionUtils.equals(request.getAttribute("isVerify"), Boolean.TRUE);
boolean fromCoverLetter = request.getAttribute("fromCoverLetter") != null ? (boolean) request.getAttribute("fromCoverLetter"): false;
BusinessObjectParser.assertFieldCondition(secUser.getEmail() != null , job, Job.FIELD_Email, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(StringUtils.isEmailAddress(secUser.getEmail()), job, Job.FIELD_Email, "invalid", exceptions, true, request);
......@@ -46,6 +49,12 @@ public class VerifyIdentityFP extends SaveFP
BusinessObjectParser.assertFieldCondition(candidate.isTrue(candidate.getConditionsAgreed()), candidate, Candidate.FIELD_ConditionsAgreed, "agreeTerms", exceptions, true, request);
}
if(fromCoverLetter)
{
BusinessObjectParser.assertFieldCondition(jobApplication.getCV() != null , jobApplication, JobApplication.FIELD_CV, "uploadCV", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(jobApplication.getCoverLetter() != null , jobApplication, JobApplication.FIELD_CoverLetter, "uploadCover", exceptions, true, request);
}
return super.validate(submission, exceptions);
}
......@@ -63,7 +72,14 @@ public class VerifyIdentityFP extends SaveFP
if(isVerify)
{
SecUser secUser = candidate.getUser();
boolean isPwdMatch = secUser.checkPassword(job.getPassword());
if(!isPwdMatch)
{
throw new BusinessException("Password doesnot match with the records !!");
}
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing User", job, secUser);
// if(CollectionUtils.equals(job.getPassword(), job.getConfirmPassword()))
......@@ -85,9 +101,14 @@ public class VerifyIdentityFP extends SaveFP
// location in the next application
jobApplication.setGoogleAddressText(candidate.getGoogleAddressText());
process.completeAndRestart();
return new ProcessRedirectResult(nextPage + "&JobID=" + job.getObjectID(), new String[0]);
process.setAttribute("JobApplication", jobApplication);
request.setAttribute("nextPage", nextPage + "&JobID=" + job.getObjectID());
return super.processForm(process, submission, params);
// process.completeAndRestart();
//
// return new ProcessRedirectResult(nextPage + "&JobID=" + job.getObjectID(), new String[0]);
}
......
......@@ -21,6 +21,7 @@
<ResetCodeEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="ResetCodeEmail"/>
</FORM>
<FORM name="*.resetPassword" factory="Participant" class="performa.form.ResetPasswordFP"/>
<FORM name="*.confirmDetails" factory="Participant" class="performa.form.ConfirmDetailsFP"/>
</NODE>
<NODE name="dynamic_content_form_applicant" factory="Participant">
......
......@@ -24,6 +24,9 @@
<RenderMode name="Page" preIncludeJSP="extensions/applicantportal/job_overview.jsp"/>
<RenderMode name="SignIn" preIncludeJSP="extensions/applicantportal/sign_in.jsp"/>
<RenderMode name="VerifyIdentity" preIncludeJSP="extensions/applicantportal/verify_identity.jsp"/>
<RenderMode name="PasswordPage" preIncludeJSP="extensions/applicantportal/password_page.jsp"/>
<RenderMode name="ConfirmDetails" preIncludeJSP="extensions/applicantportal/confirm_details.jsp"/>
<RenderMode name="VerificationSent" preIncludeJSP="extensions/applicantportal/verification_sent.jsp"/>
<RenderMode name="ForgotPassword" preIncludeJSP="extensions/applicantportal/forgot_password.jsp"/>
<RenderMode name="ResetPassword" preIncludeJSP="extensions/applicantportal/reset_password.jsp"/>
......@@ -39,7 +42,8 @@
<INHERITS nodename="StandardJSP"/>
<RenderMode name="Page" preIncludeJSP="extensions/applicantportal/verify_identity.jsp"/>
<RenderMode name="Page" preIncludeJSP="extensions/applicantportal/password_page.jsp"/>
<!--<RenderMode name="PasswordPage" preIncludeJSP="extensions/applicantportal/password_page.jsp"/>-->
<RenderMode name="AuthError" preIncludeJSP="extensions/applicantportal/auth_error.jsp"/>
</NODE>
......
......@@ -13,8 +13,7 @@
SecUser secUser = SecUser.getTXUser(transaction);
Candidate candidate = secUser.getExtension(Candidate.REFERENCE_Candidate);
String nextPage = WebUtils.getSamePageInRenderMode(request, "CoverLetter") + "&JobID=" + job.getID().toString();
String outlinePage = WebUtils.getSamePageInRenderMode(request, "Page") + "&JobID=" + job.getID().toString();
String nextPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria") + "&JobID=" + job.getID().toString();
Debug.assertion(candidate != null, "Invalid candidate in applicant portal");
......@@ -22,16 +21,55 @@
if(jobApplication != null)
{
response.sendRedirect(!job.getRequireCV() || (jobApplication.getCV() != null && jobApplication.getCoverLetter() != null) ? outlinePage : nextPage);
Boolean isSelectionComplete = jobApplication.selectionCompleted();
Boolean isCultureComplete = jobApplication.cultureCompleted();
Boolean isAssesmentComplete = jobApplication.assessmentCompleted();
if(!isSelectionComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria")+"&JobApplicationID="+jobApplication.getID().toString();
}
else if(!isCultureComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture")+"&JobApplicationID="+jobApplication.getID().toString();
}
else if(!isAssesmentComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment")+"&JobApplicationID="+jobApplication.getID().toString();
}
String selectionPage = nextPage + "&JobID=" + job.getID().toString()+"&JobApplicationID="+jobApplication.getID().toString();
response.sendRedirect(selectionPage);
}
if(jobApplication == null)
{
jobApplication = JobApplication.createNewApplication(candidate, job);
Boolean isSelectionComplete = jobApplication.selectionCompleted();
Boolean isCultureComplete = jobApplication.cultureCompleted();
Boolean isAssesmentComplete = jobApplication.assessmentCompleted();
if(!isSelectionComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria")+"&JobApplicationID="+jobApplication.getID().toString();
}
else if(!isCultureComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture")+"&JobApplicationID="+jobApplication.getID().toString();
}
else if(!isAssesmentComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment")+"&JobApplicationID="+jobApplication.getID().toString();
}
}
process.setAttribute("JobApplication", jobApplication);
process.setAttribute("JobApplicationID", jobApplication.getID().longID());
Set<String> attribsToRestore = new HashSet<>();
attribsToRestore.add("JobApplication");
BinaryContent logo = job.getLogo();
%>
......@@ -43,6 +81,21 @@
recalcFunction = setupRecalc ($("form#confirmDetails"), {'recalcOnError':true});
});
</script>
<script type="text/javascript">
$(document.body).addClass('bg-color');
$(document).ready(function(){
$('.attach-icon-btn').click(function(){
$(this).parent().find("input").click();
});
$("input:file").change(function (){
var fullPath = $(this).val();
var filename = fullPath.replace(/^.*[\\\/]/, '');
$(this).parents(".form-control").append(filename);
});
});
</script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&key=AIzaSyCaBh-MsMb8BBYJD_NcFzoCmygQbt5-QSw"></script>
<oneit:script>
<oneit:script src="/scripts/google_address.js"/>
......@@ -101,6 +154,27 @@
<label><oneit:ormlabel obj="<%= candidate %>" field="Phone" /></label>
<oneit:ormInput obj="<%= candidate %>" type="text" attributeName="Phone" cssClass="form-control second-style" required="true"/>
</div>
<%
if(job.getRequireCV() == Boolean.TRUE)
{
%>
<div class="form-group text-left relative-parent ">
<label>Upload your CV</label>
<div class="form-control second-style">
<oneit:ormInput obj="<%= jobApplication %>" type="file" attributeName="CV" cssClass="hide"/>
<div class="attach-icon-btn"></div>
</div>
</div>
<div class="form-group text-left relative-parent">
<label>Upload your Cover Letter</label>
<div class="form-control second-style">
<oneit:ormInput obj="<%= jobApplication %>" type="file" attributeName="CoverLetter" cssClass="hide"/>
<div class="attach-icon-btn"></div>
</div>
</div>
<% } %>
<hr class="seperate-line">
<div class="form-group text-left">
<label>Location</label>
......@@ -152,7 +226,11 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Job",job)
.mapEntry("Candidate",candidate)
.mapEntry("fromCoverLetter", true)
.mapEntry("JobApplication",jobApplication)
.mapEntry("restartProcess", Boolean.TRUE)
.mapEntry("attribNamesToRestore", attribsToRestore)
.mapEntry(NotificationUtils.DISPLAY_NOTIFICATION_PARAM, false)
.toMap() %>"/>
</div>
</div>
......
......@@ -5,7 +5,7 @@
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<%
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
JobApplication jobApplication = process.getAttribute("JobApplication") != null ? (JobApplication) process.getAttribute("JobApplication") : (JobApplication)getData(request,"JobApplication");
String pageNumber = (String) getData(request, "PageNumber");
String firstPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria");
String secondPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
......@@ -30,8 +30,9 @@
{
%>
<li class="<%= pageNumber == "1" ? "active" : isSelectionComplete ? "complate" : ""%>">
<oneit:button value=" " name="gotoPage" skin="link"
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= isSelectionComplete ? "true" : "false"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", firstPage)
.mapEntry("JobApplication", jobApplication)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>">
<span><%= isSelectionComplete ? "<img src=\"images/right-mark.png\" />" : "1"%></span>
......@@ -44,6 +45,7 @@
<li class="<%= pageNumber == "2" ? "active" : isCultureComplete ? "complate" : ""%>">
<oneit:button value=" " name="validateApplication" skin="link" disabled="<%= isCultureComplete ? "true" : "false"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondPage)
.mapEntry("JobApplication", jobApplication)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.mapEntry("fromRequirements", fromRequirements)
.toMap() %>">
......@@ -54,6 +56,7 @@
<li class="<%= pageNumber == "3" ? "active" : isAssesmentComplete ? "complate" : ""%>">
<oneit:button value=" " name="validateApplication" skin="link" disabled="<%= isAssesmentComplete ? "true" : "false"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", thirdPage)
.mapEntry("JobApplication", jobApplication)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.mapEntry("fromRequirements", fromRequirements)
.toMap() %>">
......
......@@ -182,6 +182,7 @@
%>
<oneit:button value=" " name="gotoPage" id="gotoPageNext" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", culturePage)
.mapEntry ("JobApplication", jobApplication)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry("attribNamesToRestore", Collections.singleton("JobApplication"))
.toMap() %>"/>
......@@ -192,6 +193,7 @@
%>
<oneit:button value=" " name="completeApplication" id="gotoPageNext" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry ("JobApplication", jobApplication)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry("attribNamesToRestore", Collections.singleton("JobApplication"))
.toMap() %>"/>
......
......@@ -11,7 +11,8 @@
ObjectTransaction objTran = ObjectTransaction.getTransaction();
Long jobAppId = process.getAttribute("JobApplicationID") != null ?
(Long) process.getAttribute("JobApplicationID") :
((JobApplication) process.getAttribute("JobApplication")).getID().longValue();
Long.parseLong(request.getParameter("JobApplicationID"));
JobApplication jobApplication = null;
if(jobAppId != null)
......@@ -56,6 +57,8 @@
process.setAttribute("AllQuestions", allQuestions);
}
// process.setAttribute("JobApplication",jobApplication);
Question question = (Question) allQuestions.get(questionNumber).getInTransaction (objTran);
QuestionType questionType = question.getQuestionType();
%>
......@@ -161,7 +164,7 @@
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/application_main_tabs.jsp" PageNumber="3" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/application_main_tabs.jsp" PageNumber="3" data="<%= CollectionUtils.EMPTY_MAP%>" JobApplication="<%= jobApplication %>"/>
<div class="section-page-area section-job-match">
<div class="job-match-questions">
......
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<oneit:dynIncluded>
<%
ObjectTransaction objTran = process.getTransaction ();
Job job = (Job) process.getAttribute("Job");
Candidate candidate = (Candidate) process.getAttribute("NewCandidate");
SecUser secUser = null;
boolean toRedirect = false;
String id = request.getParameter("id");
String key = request.getParameter("key");
String candidateId = request.getParameter("aid");
String pin = request.getParameter("pin");
Boolean isVerify = Boolean.FALSE;
if(id != null || key != null || candidateId != null || pin != null)
{
isVerify = Boolean.TRUE;
if(candidateId != null && pin != null)
{
candidate = Candidate.searchIdPin(transaction, Long.parseLong(candidateId), pin);
if(candidate != null && candidate.getIsAccountVerified() != Boolean.TRUE)
{
secUser = candidate.getUser();
process.setAttribute("NewCandidate", candidate);
}
}
if(id != null && key != null)
{
job = Job.searchJobKey(transaction, Long.parseLong(id), key);
process.setAttribute("Job", job);
}
}
else
{
toRedirect = GenericObjDF.getOrCreateObject (request, "Job", Job.REFERENCE_Job);
}
//INVALID REQUEST FOR VERIFY CANDIDATE
if(isVerify && (job == null || secUser == null))
{
response.sendRedirect(WebUtils.getSamePageInRenderMode(request, "AuthError"));
return; //Else it will continue execution and throws NPE.
}
if(secUser == null)
{
secUser = SecUser.getTXUser(transaction);
candidate = secUser.getExtension(Candidate.REFERENCE_Candidate);
}
Debug.assertion(job != null && !toRedirect, "Invalid job in applicant portal");
Debug.assertion(candidate != null, "Invalid candidate in applicant portal");
JobApplication jobApplication = JobApplication.searchCandidateJob(transaction, candidate, job);
Article applyJobArticle = WebUtils.getArticleByShortCut(objTran, WebUtils.JOB_APPLICATION);
String nextPage = applyJobArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "SelectionCriteria").toMap());
if(jobApplication == null)
{
jobApplication = JobApplication.createNewApplication(candidate, job);
}
candidate.setPrivacyPolicyAgreed(Boolean.TRUE);
candidate.setConditionsAgreed(Boolean.TRUE);
process.setAttribute("JobApplication", jobApplication);
process.setAttribute("JobApplicationID", jobApplication.getID().longID());
Set<String> attribsToRestore = new HashSet<>();
attribsToRestore.add("JobApplication");
%>
<style>
.main-verify-identity .second-style {
font-size: 14px;
line-height: 40px;
}
</style>
<div class="apply-job-logo-header signinpage">
<div>
<div class="logo-img">
<%
BinaryContent logo = job.getLogo();
if(logo != null)
{
int logoHeight = 45;
%>
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(logo), "KEEP", new ScaleWithin (0, logoHeight)) %>" />
<%
}
%>
</div>
<div class="header-title">
<%= job.getTeamName() %>
</div>
</div>
</div>
<oneit:form name="editApplication" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="main-verify-identity">
<%
if(isVerify)
{
%>
<div id="overlay">
<div class="modal-dialog welcome-pop-top">
<div class="modal-body main-welcome-popup">
<div class="form-group text-left">
<label>Password</label>
<oneit:ormInput obj="<%= job %>" type="password" attributeName="Password" cssClass="form-control second-style" autofocus="true"/>
</div>
<div class="create-y-f-job">
<oneit:button value="Verify and proceed" name="verifyIdentity" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Job",job)
.mapEntry("Candidate",candidate)
.mapEntry("JobApplication",jobApplication)
.mapEntry("isVerify",Boolean.TRUE)
.mapEntry("restartProcess", Boolean.TRUE)
.mapEntry("attribNamesToRestore", attribsToRestore)
.mapEntry(NotificationUtils.DISPLAY_NOTIFICATION_PARAM, false)
.toMap() %>"/>
</div>
</div>
</div>
</div>
<% } %>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
......@@ -7,8 +7,8 @@
<%
ObjectTransaction objTran = ObjectTransaction.getTransaction();
String nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
Long jobAppId = process.getAttribute("JobApplicationID") != null ?
(Long) process.getAttribute("JobApplicationID") :
Long jobAppId = request.getParameter("JobApplicationID") != null ?
Long.parseLong(request.getParameter("JobApplicationID")) :
((JobApplication) process.getAttribute("JobApplication")).getID().longValue();
JobApplication jobApplication = null;
......@@ -21,7 +21,7 @@
{
jobApplication = (JobApplication) process.getAttribute("JobApplication");
}
Debug.assertion(jobApplication != null, "Job Application cannot be null in applicant portal - selection criteria ");
if(process.getAttribute("JobApplicationID") == null)
......@@ -65,6 +65,7 @@
{criteriaID : criteriaID, answerOption: answerOption, note: note},
function () {},
function (jqXHR, textStatus, errorThrown) {
console.log("entered");
if (jqXHR.status == 0) {
log("Empty Response. Status : " + jqXHR.status);
} else {
......@@ -129,7 +130,7 @@
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/application_main_tabs.jsp" PageNumber="1" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/application_main_tabs.jsp" PageNumber="1" data="<%= CollectionUtils.EMPTY_MAP%>" JobApplication="<%= jobApplication %>"/>
<div class="section-page-area">
<div class="main-sc-section">
......@@ -222,6 +223,7 @@
%>
<oneit:button value="Complete" name="completeApplication" id="nextButton" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("JobApplication", jobApplication)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.mapEntry("attribNamesToRestore", Collections.singleton("JobApplication"))
.mapEntry("restartProcess", Boolean.TRUE)
......@@ -235,11 +237,13 @@
<oneit:button value="Proceed to next step" name="validateApplication" cssClass="box-btn m-hide"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("fromRequirements", true)
.mapEntry("JobApplication", jobApplication)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
<oneit:button value="Proceed" name="validateApplication" cssClass="box-btn show-mobile"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("fromRequirements", true)
.mapEntry("JobApplication", jobApplication)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
<%
......
......@@ -11,6 +11,8 @@
String nextPage = applicationArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "ConfirmDetails").toMap());
Job job = (Job) process.getAttribute("Job");
Candidate candidate = (Candidate) process.getAttribute("NewCandidate");
Article applyJobArticle = WebUtils.getArticleByShortCut(objTran, WebUtils.APPLY_JOB);
String confirmPage = applyJobArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "VerifyIdentity").toMap());
if(request.getParameter("JobID")!=null)
{
......@@ -19,6 +21,10 @@
Debug.assertion(job != null, "Job is null in applicant portal");
Set<String> attribsToRestore = new HashSet<>();
attribsToRestore.add("Job");
attribsToRestore.add("NewCandidate");
String socialLoginNextPage = nextPage + "&JobID=" + job.getID().toString();
%>
<script type="text/javascript">
......@@ -188,16 +194,15 @@
</oneit:recalcClass>
<oneit:recalcClass htmlTag="div" classScript="job.getEmail() == null || job.isEmailFound() || job.hasHiringTeamAccount() ? 'hide': 'show'" job="<%= job %>">
<div class="form-group">
<p>We don't recognize that email address yet, so we'll send a link so that you can create an account.</p>
</div>
<div class="form-group">
<oneit:button value="Send link" name="sendVerificationMail" cssClass="box-btn send-link-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", successPage)
<oneit:button value="Continue" name="confirmDetails" cssClass="box-btn send-link-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", confirmPage)
.mapEntry("Job",job)
.mapEntry("restartProcess", Boolean.TRUE)
.mapEntry("attribNamesToRestore", Collections.singleton("Job"))
.mapEntry(NotificationUtils.NOTIFICATION_MSG_PARAM, "emailSent")
.mapEntry("attribNamesToRestore", attribsToRestore)
.mapEntry(NotificationUtils.DISPLAY_NOTIFICATION_PARAM, false)
.toMap() %>"/>
</div>
</oneit:recalcClass>
......
......@@ -51,6 +51,7 @@
<div class="text-center">
<oneit:button value="Return to Job Details" name="gotoPage" cssClass="box-btn btn-gotojob"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", exitPage)
.mapEntry("JobApplication", jobApplication)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
</div>
......
......@@ -7,60 +7,21 @@
<%
Candidate candidate = (Candidate) process.getAttribute("NewCandidate");
Job job = (Job) process.getAttribute("Job");
String successPage = WebUtils.getSamePageInRenderMode(request, "VerificationSent");
SecUser secUser = null;
boolean toRedirect = false;
//to process candidate verification
String id = request.getParameter("id");
String key = request.getParameter("key");
String candidateId = request.getParameter("aid");
String pin = request.getParameter("pin");
Boolean isVerify = Boolean.FALSE;
if(id != null || key != null || candidateId != null || pin != null)
{
isVerify = Boolean.TRUE;
if(candidateId != null && pin != null)
{
candidate = Candidate.searchIdPin(transaction, Long.parseLong(candidateId), pin);
if(candidate != null && candidate.getIsAccountVerified() != Boolean.TRUE)
{
secUser = candidate.getUser();
process.setAttribute("NewCandidate", candidate);
}
}
if(id != null && key != null)
{
job = Job.searchJobKey(transaction, Long.parseLong(id), key);
process.setAttribute("Job", job);
}
}
else
{
toRedirect = GenericObjDF.getOrCreateObject (request, "Job", Job.REFERENCE_Job);
}
//INVALID REQUEST FOR VERIFY CANDIDATE
if(isVerify && (job == null || secUser == null))
{
response.sendRedirect(WebUtils.getSamePageInRenderMode(request, "AuthError"));
return; //Else it will continue execution and throws NPE.
}
if(secUser == null)
if(candidate != null)
{
secUser = SecUser.getTXUser(transaction);
candidate = secUser.getExtension(Candidate.REFERENCE_Candidate);
secUser = candidate.getUser();
process.setAttribute("NewCandidate", candidate);
}
Debug.assertion(job != null && !toRedirect, "Invalid job in applicant portal");
Debug.assertion(candidate != null, "Invalid candidate in applicant portal");
JobApplication jobApplication = JobApplication.searchCandidateJob(transaction, candidate, job);
String nextPage = WebUtils.getArticleLink(request, process.getTransaction (), WebUtils.JOB_APPLICATION, job.getRequireCV() ? "CoverLetter" : "Page");
String nextPage = WebUtils.getSamePageInRenderMode(request, "Page");
if(jobApplication == null)
{
......@@ -122,6 +83,21 @@
}
}
</script>
<script type="text/javascript">
$(document.body).addClass('bg-color');
$(document).ready(function(){
$('.attach-icon-btn').click(function(){
$(this).parent().find("input").click();
});
$("input:file").change(function (){
var fullPath = $(this).val();
var filename = fullPath.replace(/^.*[\\\/]/, '');
$(this).parents(".form-control").append(filename);
});
});
</script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&key=AIzaSyCaBh-MsMb8BBYJD_NcFzoCmygQbt5-QSw"></script>
<oneit:script>
<oneit:script src="/scripts/google_address.js"/>
......@@ -155,24 +131,19 @@
<label>Email Address</label>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="Email" cssClass="form-control second-style" disabled="true" readonly="true"/>
</div>
<%
if(isVerify)
{
%>
<div class="form-group text-left email">
<label style="display: none;"><oneit:ormlabel obj="<%= secUser %>" field="Email" /></label>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="Email" cssClass="form-control"/>
</div>
<div class="form-group text-left" id="myPassword">
<label>Password</label>
</div>
<div class="form-group text-left">
<label>Confirm password</label>
<oneit:input type="password" name="<%= passkey + 2 %>" class="form-control second-style reset-pw"/>
</div>
<%
}
%>
<div class="form-group text-left email">
<label style="display: none;"><oneit:ormlabel obj="<%= secUser %>" field="Email" /></label>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="Email" cssClass="form-control"/>
</div>
<div class="form-group text-left" id="myPassword">
<label>Password</label>
</div>
<div class="form-group text-left">
<label>Confirm password</label>
<oneit:input type="password" name="<%= passkey + 2 %>" class="form-control second-style reset-pw"/>
</div>
<div class="row">
<div class="form-group text-left col-sm-6 col-xs-12">
<label><oneit:ormlabel obj="<%= secUser %>" field="FirstName" /></label>
......@@ -187,6 +158,22 @@
<label><oneit:ormlabel obj="<%= candidate %>" field="Phone" /></label>
<oneit:ormInput obj="<%= candidate %>" type="text" attributeName="Phone" cssClass="form-control second-style" required="true"/>
</div>
<div class="form-group text-left relative-parent ">
<label>Upload your CV</label>
<div class="form-control second-style">
<oneit:ormInput obj="<%= jobApplication %>" type="file" attributeName="CV" cssClass="hide"/>
<div class="attach-icon-btn"></div>
</div>
</div>
<div class="form-group text-left relative-parent">
<label>Upload your Cover Letter</label>
<div class="form-control second-style">
<oneit:ormInput obj="<%= jobApplication %>" type="file" attributeName="CoverLetter" cssClass="hide"/>
<div class="attach-icon-btn"></div>
</div>
</div>
<hr class="seperate-line">
<div class="form-group text-left">
<label>Location</label>
......@@ -253,13 +240,13 @@
</div>
</div>
<div class="text-center">
<oneit:button value="Verify and proceed" name="verifyIdentity" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Job",job)
.mapEntry("Candidate",candidate)
.mapEntry("JobApplication",jobApplication)
.mapEntry("isVerify",isVerify)
.toMap() %>"/>
<oneit:button value="Submit" name="sendVerificationMail" cssClass="box-btn send-link-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", successPage)
.mapEntry("Job",job)
.mapEntry("Candidate",candidate)
.mapEntry(NotificationUtils.NOTIFICATION_MSG_PARAM, "emailSent")
.toMap() %>"/>
</div>
</div>
</div>
......
......@@ -6,9 +6,11 @@
<oneit:dynIncluded>
<%
ObjectTransaction objTran = process.getTransaction ();
String currentPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
String nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
Long jobAppId = process.getAttribute("JobApplicationID") != null ? (Long)process.getAttribute("JobApplicationID") : Long.parseLong(request.getParameter("JobApplicationID"));
JobApplication jobApplication = process.getAttribute("JobApplication") != null ? (JobApplication) process.getAttribute("JobApplication") : JobApplication.getJobApplicationByID(objTran, jobAppId);
String currentPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture")+"&JobApplicationID="+jobApplication.getID().toString();
String nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment")+"&JobApplicationID="+jobApplication.getID().toString();
Job job = jobApplication.getJob();
Candidate candidate = jobApplication.getCandidate();
int cultureQuestionNo = process.getAttribute("CultureQuestionNo")!= null ? (int) process.getAttribute("CultureQuestionNo") : candidate.getCultureCriteriaAnswersCount();
......@@ -54,6 +56,7 @@
int numberText = ((cultureQuestionNo)* 100) / total;
process.setAttribute("JobApplication", jobApplication);
process.setAttribute("JobApplicationID",jobAppId);
request.getSession().setAttribute ("historyQuestionNo", cultureQuestionNo);
%>
......
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