Commit 0dfbe6bd by Nilu

S28236507 # Matchd / Talentology - No Plan [Enhancement] #Workflow refinements…

S28236507 # Matchd / Talentology - No Plan [Enhancement] #Workflow refinements of Email ingest / Messaging
parent 46853397
......@@ -15,6 +15,7 @@
<column name="verification_mail_send_date" type="Date" nullable="true"/>
<column name="verification_key" type="String" nullable="true" length="10"/>
<column name="is_account_verified" type="Boolean" nullable="true"/>
<column name="is_password_changed" type="Boolean" nullable="true"/>
<column name="google_address_text" type="String" nullable="true" length="300"/>
<column name="is_email_ingest" type="Boolean" nullable="true"/>
<column name="is_masked_email" type="Boolean" nullable="true"/>
......
......@@ -14,6 +14,7 @@ CREATE TABLE oneit_sec_user_extension (
verification_mail_send_date datetime NULL,
verification_key varchar(10) NULL,
is_account_verified char(1) NULL,
is_password_changed char(1) NULL,
google_address_text varchar(300) NULL,
is_email_ingest char(1) NULL,
is_masked_email char(1) NULL,
......
......@@ -15,6 +15,7 @@ CREATE TABLE oneit_sec_user_extension (
verification_mail_send_date date NULL,
verification_key varchar2(10) NULL,
is_account_verified char(1) NULL,
is_password_changed char(1) NULL,
google_address_text varchar2(300) NULL,
is_email_ingest char(1) NULL,
is_masked_email char(1) NULL,
......
......@@ -15,6 +15,7 @@ CREATE TABLE oneit_sec_user_extension (
verification_mail_send_date timestamp NULL,
verification_key varchar(10) NULL,
is_account_verified char(1) NULL,
is_password_changed char(1) NULL,
google_address_text varchar(300) NULL,
is_email_ingest char(1) NULL,
is_masked_email char(1) NULL,
......
......@@ -48,26 +48,14 @@ public class MessagingEngineBatch extends ORMBatch implements InitialisationPart
Job job = jobApplication.getJob();
Candidate candidate = jobApplication.getCandidate();
String jobLink = LoopbackHTTP.getRemoteAccessURL()
+Utils.APPLICANT_SIGN_IN
+ "&JobID=" + jobApplication.getJob().getID()
+ "&UserName=" + candidate.getUser().getUserName();
//set invitation key and send mail time
if(scheduledEmail.getMessageContent().contains(PlaceholderOptions.VERIFY_LINK.getPlaceholder()))
// for existing users without a verification code
if( candidate.getVerificationKey() == null)
{
if( candidate.getVerificationKey() == null)
{
RandomStringGen random = new RandomStringGen();
candidate.setVerificationKey(random.generateAlphaNum(6));
}
candidate.setVerificationMailSendDate(new Date());
candidate.setVerificationKey(new RandomStringGen().generateAlphaNum(6));
}
String verifyLink = LoopbackHTTP.getRemoteAccessURL()
+ Utils.APPLICANT_VERIFY_LINK
String jobLink = LoopbackHTTP.getRemoteAccessURL()
+ Utils.APPLICANT_LINK
+ "?id=" + job.getID()
+ "&key=" + job.getRandomKey()
+ "&aid=" + candidate.getID()
......@@ -82,7 +70,6 @@ public class MessagingEngineBatch extends ORMBatch implements InitialisationPart
PlaceholderOptions.JOB_TITLE.getPlaceholder(),
PlaceholderOptions.JOB_REFERENCE.getPlaceholder(),
PlaceholderOptions.HIRING_TEAM.getPlaceholder(),
PlaceholderOptions.VERIFY_LINK.getPlaceholder(),
PlaceholderOptions.JOB_LINK.getPlaceholder()},
new String[] {candidate.getFirstName(),
candidate.getUser().getLastName(),
......@@ -91,7 +78,6 @@ public class MessagingEngineBatch extends ORMBatch implements InitialisationPart
job.getJobTitle(),
StringUtils.subNulls(job.getReferenceNumber(), ""),
job.getHiringTeam().getHiringTeamName(),
verifyLink,
jobLink});
LogMgr.log (MESSAGING_ENGINE_BATCH, LogLevel.PROCESSING1, "Replaced tags of message content : " , messageContent);
......@@ -128,4 +114,4 @@ public class MessagingEngineBatch extends ORMBatch implements InitialisationPart
emailEngine = (Emailer) context.getSingleChild("EmailEngine");
}
}
}
\ No newline at end of file
package performa.form;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import oneit.logging.*;
import oneit.objstore.ObjectTransaction;
......@@ -10,6 +8,7 @@ import oneit.objstore.StorageException;
import oneit.security.SecUser;
import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.servlets.security.SessionSecUserDecorator;
import oneit.utils.*;
import performa.orm.*;
import performa.utils.Utils;
......@@ -47,14 +46,10 @@ public class ConfirmDetailsFP extends SaveFP
Candidate candidate = secUser.getExtensionOrCreate(Candidate.REFERENCE_Candidate);
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser);
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser, " Candidate: " , candidate);
Set<String> attribsToRestore = new HashSet<>();
attribsToRestore.add("Job");
attribsToRestore.add("NewCandidate");
request.setAttribute("attribNamesToRestore", attribsToRestore);
process.setAttribute("NewCandidate",candidate);
request.getSession().setAttribute (SecUser.SEC_USER_ID, secUser);
request.getSession().setAttribute (SessionSecUserDecorator.REFRESH_SECURITY, Boolean.TRUE);
return super.processForm(process, submission, params);
}
......
......@@ -13,7 +13,7 @@ import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.utils.*;
import performa.orm.*;
import performa.orm.types.RoleType;
import performa.orm.types.*;
import performa.utils.Utils;
......@@ -21,7 +21,6 @@ public class SendVerificationMailFP extends SaveFP
{
private static final LoggingArea LOG = LoggingArea.createLoggingArea("SendVerificationLink");
protected ConfigurableArticleTemplateEmailer emailer;
protected ConfigurableArticleTemplateEmailer emailChangedMailer;
@Override
......@@ -58,8 +57,6 @@ public class SendVerificationMailFP extends SaveFP
BusinessObjectParser.assertFieldCondition(candidate.isTrue(candidate.getPrivacyPolicyAgreed()), candidate, Candidate.FIELD_PrivacyPolicyAgreed, "agreePrivacy", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(candidate.isTrue(candidate.getConditionsAgreed()), candidate, Candidate.FIELD_ConditionsAgreed, "agreeTerms", exceptions, true, request);
// BusinessObjectParser.assertFieldCondition(secUser.checkPassword(job.getPassword()), job, Job.FIELD_Password, "invalid", exceptions, true, request);
if(job.getRequireCV())
{
BusinessObjectParser.assertFieldCondition(jobApplication.getCV() != null , jobApplication, JobApplication.FIELD_CV, "uploadCV", exceptions, true, request);
......@@ -74,12 +71,13 @@ public class SendVerificationMailFP extends SaveFP
@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");
Candidate candidate = (Candidate) request.getAttribute("Candidate");
Company company = (Company) request.getAttribute("Company");
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");
JobApplication jobApplication = (JobApplication) request.getAttribute("JobApplication");
if(company != null)
{
CompanyUser companyUser = company.getAddedByUser();
......@@ -140,8 +138,8 @@ public class SendVerificationMailFP extends SaveFP
throw new BusinessException("Please enter a valid email address");
}
// send email changed mail
Utils.sendMaskedEmailChangedMail(candidate, job, emailChangedMailer);
//set new verification key as email changed
candidate.setVerificationKey(new RandomStringGen().generateAlphaNum(6));
candidate.getUser().setUserName(candidate.getUser().getEmail());
candidate.setIsMaskedEmail(false);
......@@ -151,19 +149,29 @@ public class SendVerificationMailFP extends SaveFP
{
candidate.setIsAccountVerified(true);
}
jobApplication.setApplicationStatus(ApplicationStatus.DRAFT);
}
if(!candidate.isTrue(candidate.getIsPasswordChanged()))
{
candidate.setIsPasswordChanged(true);
}
// storing candidate location in application for distance calculation to be accurate even if user edits
// location in the next application
jobApplication.setGoogleAddressText(candidate.getGoogleAddressText());
}
return super.processForm(process, submission, params);
}
@Override
public void init(ParticipantInitialisationContext context) throws InitialisationException
{
super.init(context);
emailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("AccountVerificationEmailer"));
emailChangedMailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("EmailChangedEmailer"));
}
}
\ No newline at end of file
......@@ -2,120 +2,38 @@ package performa.form;
import java.util.Map;
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.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.SecUser;
import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.servlets.security.SessionSecUserDecorator;
import oneit.utils.*;
import performa.orm.*;
import performa.utils.Utils;
import performa.utils.WebUtils;
public class VerifyIdentityFP extends SaveFP
{
private static LoggingArea LOG = LoggingArea.createLoggingArea("VerifyIdentity");
protected ConfigurableArticleTemplateEmailer emailer;
@Override
protected Map validate(SubmissionDetails submission, MultiException exceptions)
{
HttpServletRequest request = submission.getRequest();
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;
Job job = (Job) request.getAttribute("Job");
if(isVerify)
{
BusinessObjectParser.assertFieldCondition(secUser.checkPassword(job.getPassword()) , job, Job.FIELD_Password, "invalid", exceptions, true, request);
}
if(fromCoverLetter && job.getRequireCV())
{
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);
}
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
Boolean isVerify = CollectionUtils.equals(request.getAttribute("isVerify"), Boolean.TRUE);
Job job = (Job) request.getAttribute("Job");
JobApplication jobApplication = (JobApplication) request.getAttribute("JobApplication");
Candidate candidate = (Candidate) request.getAttribute("Candidate");
if(isVerify)
if(candidate.isTrue(candidate.getIsEmailIngest()) && candidate.getKnownAsAlias() == null && !candidate.isTrue(candidate.getIsPasswordChanged()))
{
SecUser secUser = candidate.getUser();
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing User ", job, secUser);
candidate.setIsAccountVerified(Boolean.TRUE);
sendMail(candidate, job, request);
request.getSession().setAttribute (SecUser.SEC_USER_ID, secUser);
request.getSession().setAttribute (SecUser.SEC_USER_ID, candidate.getUser());
request.getSession().setAttribute (SessionSecUserDecorator.REFRESH_SECURITY, Boolean.TRUE);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verified User ", job, secUser);
}
// storing candidate location in application for distance calculation to be accurate even if user edits
// location in the next application
jobApplication.setGoogleAddressText(candidate.getGoogleAddressText());
return super.processForm(process, submission, params);
}
@Override
public void init(ParticipantInitialisationContext context) throws InitialisationException
{
super.init(context);
emailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("ApplicantAccountCreatedEmailer"));
}
protected void sendMail(Candidate candidate, Job job, HttpServletRequest request) throws BusinessException
{
try
if(candidate.isFalse(candidate.getIsMaskedEmail()) && candidate.isFalse(candidate.getIsAccountVerified()))
{
LogMgr.log(LOG, LogLevel.PROCESSING1, "Sending Account Created mail from VerifyIdentityFP to :: ", candidate);
Article applyJobArticle = WebUtils.getArticleByShortCut(candidate.getTransaction(), WebUtils.APPLY_JOB);
String link = LoopbackHTTP.getRemoteAccessURL(request)
+ applyJobArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", WebUtils.FORGOT_PASSWORD).toMap(), "/")
+ "&id=" + job.getID()
+ "&key=" + job.getRandomKey();
Map defaultParams = CollectionUtils.mapEntry("link", link).toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, candidate.getUser());
Utils.sendMail(emailer, transform, new String[]{candidate.getUser().getUserName()}, null, candidate);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Sent Account Created mail successfully from " + VerifyIdentityFP.class + " to :: ", candidate);
}
catch (ConfigurableEmailerException ex)
{
LogMgr.log(LOG, LogLevel.SYSTEMERROR1, ex, "Error occured while sending mail for Candidate :: " + candidate);
throw new BusinessException("We are unable to send mail. Please try again or contact Matchd for more details.");
candidate.setIsAccountVerified(true);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing User ", candidate);
}
return super.processForm(process, submission, params);
}
}
\ No newline at end of file
......@@ -15,9 +15,11 @@ import oneit.objstore.rdbms.filters.IsNotNullFilter;
import oneit.objstore.utils.ObjstoreUtils;
import oneit.servlets.objstore.MessageSourceDecorator;
import oneit.servlets.process.ORMProcessState;
import oneit.utils.BusinessException;
import oneit.utils.CollectionUtils;
import oneit.utils.DateDiff;
import oneit.utils.ObjectTransform;
import oneit.utils.RandomStringGen;
import oneit.utils.StringUtils;
import oneit.utils.filter.*;
import performa.utils.DistanceUtils;
......@@ -34,6 +36,16 @@ public class Candidate extends BaseCandidate
{
// Do not add any code to this, always put it in initialiseNewObject
}
@Override
protected void postInitNewObj() throws BusinessException
{
RandomStringGen random = new RandomStringGen();
setVerificationKey(random.generateAlphaNum(6));
super.postInitNewObj();
}
public String getFirstName()
......
......@@ -22,6 +22,7 @@
<ATTRIB name="VerificationMailSendDate" type="Date" dbcol="verification_mail_send_date" />
<ATTRIB name="VerificationKey" type="String" dbcol="verification_key" length="10"/>
<ATTRIB name="IsAccountVerified" type="Boolean" dbcol="is_account_verified" defaultValue="Boolean.FALSE"/>
<ATTRIB name="IsPasswordChanged" type="Boolean" dbcol="is_password_changed" defaultValue="Boolean.FALSE"/>
<ATTRIB name="GoogleAddressText" type="String" dbcol="google_address_text" length="300"/>
<ATTRIB name="IsEmailIngest" type="Boolean" dbcol="is_email_ingest" defaultValue="Boolean.FALSE"/>
<ATTRIB name="IsMaskedEmail" type="Boolean" dbcol="is_masked_email" defaultValue="Boolean.FALSE"/>
......
......@@ -227,7 +227,7 @@ public class Job extends BaseJob
public int getNoOfCandidatesApplied()
{
Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new NotInFilter<>(ApplicationStatus.DRAFT));
Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new NotInFilter<>(ApplicationStatus.DRAFT, ApplicationStatus.POST_INGEST));
return pipelineJob().toJobApplications(filter).toCandidate().vals().size();
}
......
......@@ -15,4 +15,22 @@ public class MessageTemplate extends BaseMessageTemplate
{
return (getDelayHrs() * 60) + getDelayMin();
}
@Override
public Integer getVariance()
{
return super.getVariance() != null ? super.getVariance() : 0;
}
@Override
public Integer getDelayHrs()
{
return super.getDelayHrs() != null ? super.getDelayHrs() : 0;
}
@Override
public Integer getDelayMin()
{
return super.getDelayMin() != null ? super.getDelayMin(): 0;
}
}
\ No newline at end of file
......@@ -20,6 +20,8 @@ public class ApplicationStatus extends AbstractEnumerated
public static final EnumeratedFactory FACTORY_ApplicationStatus = new ApplicationStatusFactory();
public static final ApplicationStatus POST_INGEST = new ApplicationStatus ("POST_INGEST", "POST_INGEST", "Post Ingest", false);
public static final ApplicationStatus DRAFT = new ApplicationStatus ("DRAFT", "DRAFT", "Incomplete", false);
public static final ApplicationStatus SUBMITTED = new ApplicationStatus ("SUBMITTED", "SUBMITTED", "Applicant", false);
......@@ -39,7 +41,7 @@ public class ApplicationStatus extends AbstractEnumerated
public static final ApplicationStatus UNSUITABLE = new ApplicationStatus ("UNSUITABLE", "UNSUITABLE", "Unsuitable", false);
private static final ApplicationStatus[] allApplicationStatuss =
new ApplicationStatus[] { DRAFT,SUBMITTED,SHORTLISTED,STATUS_4,STATUS_5,STATUS_6,STATUS_7,STATUS_8,UNSUITABLE};
new ApplicationStatus[] { POST_INGEST,DRAFT,SUBMITTED,SHORTLISTED,STATUS_4,STATUS_5,STATUS_6,STATUS_7,STATUS_8,UNSUITABLE};
private static ApplicationStatus[] getAllApplicationStatuss ()
......@@ -126,6 +128,7 @@ public class ApplicationStatus extends AbstractEnumerated
public static void defineAdditionalData ()
{
POST_INGEST.SortOrder = 0;
DRAFT.SortOrder = 1;
SUBMITTED.SortOrder = 2;
SHORTLISTED.SortOrder = 3;
......
......@@ -5,6 +5,7 @@
<DATA name="SortOrder" type="Integer"/>
<VALUE name="POST_INGEST" value="POST_INGEST" description="Post Ingest" SortOrder="0"/>
<VALUE name="DRAFT" value="DRAFT" description="Incomplete" SortOrder="1"/>
<VALUE name="SUBMITTED" value="SUBMITTED" description="Applicant" SortOrder="2"/>
<VALUE name="SHORTLISTED" value="SHORTLISTED" description="Shortlisted" SortOrder="3"/>
......
......@@ -35,11 +35,9 @@ public class PlaceholderOptions extends AbstractEnumerated
public static final PlaceholderOptions JOB_REFERENCE = new PlaceholderOptions ("JOB_REFERENCE", "JOB_REFERENCE", "Job Reference", false);
public static final PlaceholderOptions JOB_LINK = new PlaceholderOptions ("JOB_LINK", "JOB_LINK", "Job Link", false);
public static final PlaceholderOptions VERIFY_LINK = new PlaceholderOptions ("VERIFY_LINK", "VERIFY_LINK", "Verify Link", false);
private static final PlaceholderOptions[] allPlaceholderOptionss =
new PlaceholderOptions[] { FIRST_NAME,SURNAME,EMAIL_ADDRESS,LOCATION,HIRING_TEAM,JOB_TITLE,JOB_REFERENCE,JOB_LINK,VERIFY_LINK};
new PlaceholderOptions[] { FIRST_NAME,SURNAME,EMAIL_ADDRESS,LOCATION,HIRING_TEAM,JOB_TITLE,JOB_REFERENCE,JOB_LINK};
private static PlaceholderOptions[] getAllPlaceholderOptionss ()
......@@ -134,7 +132,6 @@ public class PlaceholderOptions extends AbstractEnumerated
JOB_TITLE.Placeholder = "$jobTitle";
JOB_REFERENCE.Placeholder = "$jobReference";
JOB_LINK.Placeholder = "$jobLink";
VERIFY_LINK.Placeholder = "$verifyLink";
}
......
......@@ -13,7 +13,6 @@
<VALUE name="JOB_TITLE" value="JOB_TITLE" description="Job Title" Placeholder='"$jobTitle"' />
<VALUE name="JOB_REFERENCE" value="JOB_REFERENCE" description="Job Reference" Placeholder='"$jobReference"' />
<VALUE name="JOB_LINK" value="JOB_LINK" description="Job Link" Placeholder='"$jobLink"' />
<VALUE name="VERIFY_LINK" value="VERIFY_LINK" description="Verify Link" Placeholder='"$verifyLink"' />
</CONSTANT>
</ROOT>
\ No newline at end of file
......@@ -15,6 +15,7 @@ import oneit.security.SecUser;
import oneit.utils.*;
import oneit.utils.parsers.FieldException;
import performa.orm.*;
import performa.orm.types.ApplicationStatus;
public class PerformaEmailFetcher implements Runnable, InitialisationParticipant
......@@ -366,6 +367,8 @@ public class PerformaEmailFetcher implements Runnable, InitialisationParticipant
JobApplication jobApplication = JobApplication.createNewApplication(candidate, job);
jobApplication.setApplicationStatus(ApplicationStatus.POST_INGEST);
if(contents.size() > 0)
{
jobApplication.setCV(contents.get(0));
......@@ -415,6 +418,8 @@ public class PerformaEmailFetcher implements Runnable, InitialisationParticipant
JobApplication jobApplication = JobApplication.createNewApplication(candidate, job);
jobApplication.setApplicationStatus(ApplicationStatus.POST_INGEST);
if(contents.size() > 0)
{
jobApplication.setCV(contents.get(0));
......
......@@ -45,7 +45,7 @@ public class Utils
public static final String PRIV_ACCESS_COMPANY = "TL_AccessCompany";
public static final String ADVT_CONFIG_EMAIL_EXTENSION = ConfigMgr.getKeyfileString ("advt.config.email.extension", "matchdmail.com");
public static final String APPLICANT_VERIFY_LINK = "/ApplicantPortal-Applicant_Account_Verification.htm";
public static final String APPLICANT_SIGN_IN = "/ApplicantPortal-ApplyJob.htm?cms.rm=SignIn";
public static final String APPLICANT_LINK = "/ApplicantPortal-ApplyJob.htm";
public static Role getRole(String role, ObjectTransaction transaction)
{
......@@ -469,40 +469,6 @@ public class Utils
}
public static void sendMaskedEmailChangedMail(Candidate candidate, Job job, ConfigurableArticleTemplateEmailer emailer) throws BusinessException
{
try
{
LogMgr.log(Candidate.LOG, LogLevel.PROCESSING1, "Sending masked email changed mail to :: ", candidate);
RandomStringGen random = new RandomStringGen();
//set verification key and send mail time
candidate.setVerificationKey(random.generateAlphaNum(6));
candidate.setVerificationMailSendDate(new Date());
String link = LoopbackHTTP.getRemoteAccessURL()
+ APPLICANT_VERIFY_LINK
+ "?id=" + job.getID()
+ "&key=" + job.getRandomKey()
+ "&aid=" + candidate.getID()
+ "&pin=" + candidate.getVerificationKey();
Map defaultParams = CollectionUtils.mapEntry("link", link).toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, candidate.getUser(), job);
Utils.sendMail(emailer, transform, new String[]{candidate.getUser().getEmail()}, null, candidate);
LogMgr.log(CompanyUser.LOG, LogLevel.PROCESSING1, "Sent masked email changed mail successfully to :: ", candidate);
}
catch (ConfigurableEmailerException ex)
{
LogMgr.log(CompanyUser.LOG, LogLevel.SYSTEMERROR1, ex, "Error occured while sending mail for user :: " + candidate);
throw new BusinessException("We are unable to send mail. Please try again or contact Matchd for more details.");
}
}
public static void sendEmailChangedMail(CompanyUser companyUser, HttpServletRequest request, ConfigurableArticleTemplateEmailer emailer, String callingClass) throws BusinessException
{
if(companyUser.getIsEmailChanged()==Boolean.TRUE)
......
......@@ -21,7 +21,7 @@
</MAP>
<!-- AAdded only for legacy data and should never be used -->
<!-- Added only for legacy data and should never be used -->
<MAP value="CREATE_JOB" description="Create Job" TemplatePage="dynamic_content_form_client.jsp">
<NODE name="Config" factory="Participant" class="oneit.business.content.ArticleConfiguration">
<INHERITS nodename="StandardJSP"/>
......
......@@ -12,7 +12,7 @@
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
int noOfIncomplete = job.getNoOfCandidatesFor(ApplicationStatus.DRAFT);
int noOfIncomplete = job.getNoOfCandidatesFor(ApplicationStatus.DRAFT, ApplicationStatus.POST_INGEST);
int noOfUnsuitable = job.getNoOfCandidatesFor(ApplicationStatus.UNSUITABLE);
%>
<oneit:dynIncluded>
......
......@@ -57,41 +57,48 @@
<div class="appli-list-name appli-l eq-second-height wider-box">
<oneit:button value=" " name="gotoPage" cssClass="<%= jobApplication.getID() + ""%>" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", applications).toMap())
.toMap() %>">
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", applications).toMap())
.toMap() %>">
<%
if(jobApplication.isTrue(jobApplication.getCandidate().getIsEmailIngest()))
{
%>
<span style="padding-right: 5px;"><img src="images/email-ingest-icon.jpg"></span>
<%
}
%>
<oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" />
</oneit:button>
<div class="appli-int-status">
<span>
<a href="<%= "mailto:" + jobApplication.getCandidate().getUser().getEmail() %>">Email</a>
</span>
<oneit:toString value="<%= jobApplication.getCandidate().getPhone() %>" mode="EscapeHTML" />
<span><img src="images/clip_icon.png"></span>
<%
if(jobApplication.getCV() != null)
{
%>
<span>
<a target='blank' href='<%= request.getContextPath() + "/" + BinaryContentHandler.getRelativeURL(request, jobApplication, "CV", jobApplication.getCV(), true) %>'>
CV
</a>
</span>
<%
}
</oneit:button>
<div class="appli-int-status">
<span>
<a href="<%= "mailto:" + jobApplication.getCandidate().getUser().getEmail() %>">Email</a>
</span>
<oneit:toString value="<%= jobApplication.getCandidate().getPhone() %>" mode="EscapeHTML" />
<span><img src="images/clip_icon.png"></span>
<%
if(jobApplication.getCV() != null)
{
%>
<span>
<a target='blank' href='<%= request.getContextPath() + "/" + BinaryContentHandler.getRelativeURL(request, jobApplication, "CV", jobApplication.getCV(), true) %>'>
CV
</a>
</span>
<%
}
if(jobApplication.getCoverLetter() != null)
{
%>
<span>
<a target='blank' href='<%= request.getContextPath() + "/" + BinaryContentHandler.getRelativeURL(request, jobApplication, "CoverLetter", jobApplication.getCoverLetter(), true) %>'>
Cover Letter
</a>
</span>
<%
}
%>
</div>
if(jobApplication.getCoverLetter() != null)
{
%>
<span>
<a target='blank' href='<%= request.getContextPath() + "/" + BinaryContentHandler.getRelativeURL(request, jobApplication, "CoverLetter", jobApplication.getCoverLetter(), true) %>'>
Cover Letter
</a>
</span>
<%
}
%>
</div>
</div>
<%
String widthClass = "appli-jcs2";
......@@ -147,10 +154,17 @@
role fit
</div>
<div class="appli-status appli-l eq-second-height">
<div class="appli-list-drop">
<tagfile:ormsingleasso_select obj="<%= jobApplication %>" assocName="WorkFlow" cssClass="form-control app-process"
options="<%= sortedWorkFlows.toArray(new WorkFlow[0]) %>"/>
</div>
<%
if(jobApplication.getApplicationStatus() == ApplicationStatus.DRAFT)
{
%>
<div class="appli-list-drop">
<tagfile:ormsingleasso_select obj="<%= jobApplication %>" assocName="WorkFlow" cssClass="form-control app-process"
options="<%= sortedWorkFlows.toArray(new WorkFlow[0]) %>"/>
</div>
<%
}
%>
</div>
<oneit:button name="changeApplicationStatus" value=" " cssClass="<%= "save-application" + jobApplication.getID().toString() + " hidden"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
......
......@@ -81,6 +81,7 @@
}
boolean isApplicantPage = workflowStatus == ApplicationStatus.SUBMITTED;
boolean isDraftPage = workflowStatus == ApplicationStatus.DRAFT;
// handle application filter (showing dropdown)
if(parameterMap.containsKey("ApplicationFilter") && !request.getParameter("ApplicationFilter").isEmpty())
......@@ -101,10 +102,11 @@
// filter applicants by status
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(workflowStatus));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotInFilter<>(ApplicationStatus.DRAFT, ApplicationStatus.POST_INGEST));
oneit.utils.filter.Filter<JobApplication> draftFilter = JobApplication.SearchByAll().andApplicationStatus(new InFilter<>(ApplicationStatus.DRAFT, ApplicationStatus.POST_INGEST));
// if Applicant Status, then show all application completed applicants
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, isApplicantPage ? applicantFilter : filter));
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, isDraftPage ? draftFilter : (isApplicantPage ? applicantFilter : filter)));
if(appFilter != ApplicationFilter.ALL_APPLICATIONS)
{
......
......@@ -3,9 +3,7 @@
<NODE name="dynamic_content_form::APPLICANT_PORTAL" factory="Participant">
<FORM name="*.signIn" factory="Participant" class="performa.form.SignInCandidateFP"/>
<FORM name="*.verifyIdentity" factory="Participant" class="performa.form.VerifyIdentityFP">
<ApplicantAccountCreatedEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="ApplicantAccountCreatedMail"/>
</FORM>
<FORM name="*.verifyIdentity" factory="Participant" class="performa.form.VerifyIdentityFP"/>
<FORM name="*.completeApplication" factory="Participant" class="performa.form.CompleteApplicationFP"/>
<FORM name="*.validateApplication" factory="Participant" class="performa.form.ValidateApplicationFP"/>
<FORM name="*.saveAndExitExperienece" factory="Participant" class="performa.form.SaveAndExitExperienceFP"/>
......@@ -13,7 +11,6 @@
<FORM name="*.saveAndExitWorkStyle" factory="Participant" class="performa.form.SaveAndExitWorkStypeFP"/>
<FORM name="*.sendVerificationMail" factory="Participant" class="performa.form.SendVerificationMailFP">
<AccountVerificationEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="AccountVerificationMail"/>
<EmailChangedEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="EmailChangedMail"/>
</FORM>
<FORM name="*.facebookOAuthLogin" factory="Participant" class="oneit.security.oauth.form.FacebookOAuthLoginFP"/>
<FORM name="*.googleOAuthLogin" factory="Participant" class="oneit.security.oauth.form.GoogleOAuthLoginFP"/>
......
......@@ -25,8 +25,6 @@
<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"/>
......@@ -36,19 +34,15 @@
</MAP>
<!-- Added only for legacy data and should never be used -->
<MAP value="APPLICANT_ACCOUNT_VERIFICATION" description="Applicant Account Verification" TemplatePage="dynamic_content_form.jsp">
<NODE name="Config" factory="Participant" class="oneit.business.content.ArticleConfiguration">
<INHERITS nodename="StandardJSP"/>
<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>
</MAP>
<MAP value="JOB_APLICATION" description="Job Application" TemplatePage="dynamic_content_form_applicant.jsp">
<NODE name="Config" factory="Participant" class="oneit.business.content.ArticleConfiguration">
......@@ -56,8 +50,6 @@
<INHERITS nodename="StandardJSP"/>
<RenderMode name="Page" preIncludeJSP="extensions/applicantportal/application_outline.jsp"/>
<RenderMode name="ConfirmDetails" preIncludeJSP="extensions/applicantportal/confirm_details.jsp"/>
<RenderMode name="CoverLetter" preIncludeJSP="extensions/applicantportal/cv_cover_letter.jsp"/>
<RenderMode name="SelectionCriteria" preIncludeJSP="extensions/applicantportal/selection_criteria.jsp"/>
<RenderMode name="WorkplaceCulture" preIncludeJSP="extensions/applicantportal/workplace_culture.jsp"/>
<RenderMode name="JobMatchAssessment" preIncludeJSP="extensions/applicantportal/job_match_assessment.jsp"/>
......
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<oneit:dynIncluded>
<div style="width: 50%; margin: 0px auto 0px auto; text-align: center">
<h3>Authentication Error</h3>
<p><span>Access expired.</span></p>
</div>
</oneit:dynIncluded>
<%@ 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>
<%
String currentPage = WebUtils.getSamePageInRenderMode(request, "CoverLetter");
String nextPage = WebUtils.getSamePageInRenderMode(request, "Page");
ObjectTransaction objTran = process.getTransaction ();
boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Job", Job.REFERENCE_Job);
Job job = (Job) process.getAttribute("Job");
Debug.assertion(job != null && !toRedirect, "Invalid job in applicant portal");
SecUser secUser = SecUser.getTXUser(transaction);
Candidate candidate = secUser.getExtension(Candidate.REFERENCE_Candidate);
Debug.assertion(candidate != null, "Invalid candidate in applicant portal");
JobApplication jobApplication = JobApplication.searchCandidateJob(objTran, candidate, job);
Debug.assertion(jobApplication != null, "Invalid Job Application in applicant portal");
if(process.getAttribute("JobApplicationID") == null)
{
process.setAttribute("JobApplicationID" , jobApplication.getID().longValue());
}
process.setAttribute("JobApplication" , jobApplication);
%>
<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>
<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">
<div class="pl-confirm text-center">
Great! Now let's attach your CV and Cover Letter<br/><br/>
Uploading your files in PDF format is strongly recommended</div>
<div class="main-box-layout main-verify-step-2">
<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>
<div class="text-center">
<oneit:button value="Attach and proceed" name="validateApplication" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("fromCoverLetter", true)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
</div>
</div>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
......@@ -5,14 +5,46 @@
<oneit:dynIncluded>
<%
String nextPage = WebUtils.getSamePageInRenderMode(request, "SignIn");
Job job = (Job) process.getAttribute("Job");
String id = request.getParameter("id");
String key = request.getParameter("key");
String nextPage = WebUtils.getSamePageInRenderMode(request, "SignIn");
Job job = (Job) process.getAttribute("Job");
String id = request.getParameter("id");
String key = request.getParameter("key");
String candidateId = request.getParameter("aid");
String pin = request.getParameter("pin");
SecUser secUser = null;
Candidate candidate = null;
SecUser loggedInUser = SecUser.getTXUser(transaction);
if(id != null && key != null)
{
job = Job.searchJobKey(transaction, Long.parseLong(id), key);
process.setAttribute("Job", job);
}
if(job != null && candidateId != null && pin != null)
{
candidate = Candidate.searchIdPin(transaction, Long.parseLong(candidateId), pin);
if(candidate != null)
{
secUser = candidate.getUser();
String navigateTo = WebUtils.getSamePageInRenderMode(request,((loggedInUser != null && loggedInUser == secUser) || candidate.isUnverifiedEmailIngestUser() || !candidate.isTrue(candidate.getIsPasswordChanged())) ? "VerifyIdentity" : "SignIn") + "&JobID=" + job.getID().toString();
%>
<oneit:form name="navigateJob" method="post" enctype="multipart/form-data">
<oneit:button value=" " name="verifyIdentity" cssClass="verifyIdentity" style="display:none;"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", navigateTo)
.mapEntry("Candidate", candidate)
.mapEntry("Job", job)
.mapEntry(NotificationUtils.DISPLAY_NOTIFICATION_PARAM, false)
.toMap() %>"/>
</oneit:form>
<script type="text/javascript">
$(".verifyIdentity").click();
</script>
<%
}
}
if(job != null)
......
<%@ 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)
{
secUser = candidate.getUser();
if(candidate.getIsAccountVerified() != Boolean.TRUE)
{
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.
}
Debug.assertion(job != null && !toRedirect, "Invalid job in applicant portal");
Debug.assertion(candidate != null, "Invalid candidate in applicant portal");
Article applyJobArticle = WebUtils.getArticleByShortCut(objTran, WebUtils.APPLY_JOB);
String confirmDetailsPage = LoopbackHTTP.getRemoteAccessURL(request)
+ applyJobArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "VerifyIdentity").toMap(), "/");
String signinPage = LoopbackHTTP.getRemoteAccessURL(request)
+ applyJobArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "SignIn").toMap(), "/");
if(candidate.getIsAccountVerified())
{
response.sendRedirect(signinPage + "&JobID=" + job.getID().toString());
}
if(candidate.isUnverifiedEmailIngestUser() && candidate.getKnownAsAlias() == null)
{
request.getSession().setAttribute (SecUser.SEC_USER_ID, secUser);
request.getSession().setAttribute (SessionSecUserDecorator.REFRESH_SECURITY, Boolean.TRUE);
response.sendRedirect(confirmDetailsPage + "&JobID=" + job.getID().toString());
}
JobApplication jobApplication = JobApplication.searchCandidateJob(transaction, candidate, job);
Article jobApplicationArticle = WebUtils.getArticleByShortCut(objTran, WebUtils.JOB_APPLICATION);
String nextPage = jobApplicationArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", job.getIncludeAssessmentCriteria() ? "SelectionCriteria" : "WorkplaceCulture").toMap());
process.setAttribute("JobApplication", jobApplication);
%>
<style>
.pwd-verify-identity .second-style {
font-size: 14px;
/*line-height: 40px;*/
}
.pl-verify {margin: 8.3% auto 9px !important}
body {background-color: #e9ecef !important}
.email input[name$="Email"] {
opacity: 0;
position: absolute;
}
</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="pwd-verify-identity">
<div class="pl-verify">Please enter your password to continue your application</div>
<div id="overlay">
<div class="modal-dialog">
<div class="modal-body main-password-popup">
<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 pwd-box">
<label class="pwd-label">Password</label>
<oneit:ormInput obj="<%= job %>" type="password" attributeName="Password" cssClass="form-control second-style pwd-input-box" 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", Collections.singleton("JobApplication"))
.mapEntry(NotificationUtils.DISPLAY_NOTIFICATION_PARAM, false)
.toMap() %>"/>
</div>
</div>
</div>
</div>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
......@@ -49,7 +49,6 @@
{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 {
......
......@@ -109,7 +109,7 @@
}
</style>
<div class="apply-job-logo-header signinpage">
<div class="box-sizing-border-box">
<div class="box-sizing-border-box">
<div class="logo-img">
<%
BinaryContent logo = job.getLogo();
......@@ -193,7 +193,7 @@
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"/>
<oneit:button value="Sign in" name="signIn" cssClass="box-btn sign-in-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", confirmPage)
.mapEntry("Job",job)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"/>
......@@ -208,6 +208,7 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", confirmPage)
.mapEntry("Job",job)
.mapEntry("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.mapEntry(NotificationUtils.DISPLAY_NOTIFICATION_PARAM, false)
.toMap() %>"/>
</div>
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS name="" xmlns:oneit="http://www.1iT.com.au">
<NODE name="Script" factory="Vector">
<NODE name="DDL" factory="Participant" class="oneit.sql.transfer.RedefineTableOperation">
<tableName factory="String">oneit_sec_user_extension</tableName>
<column name="is_password_changed" type="Boolean" nullable="true"/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
......@@ -6,11 +6,7 @@
<oneit:dynIncluded>
<%
ObjectTransaction objTran = process.getTransaction ();
String currentPage = WebUtils.getSamePageInRenderMode(request, "SignIn");
String nextPage = WebUtils.getArticleLink(request, objTran, WebUtils.JOB_APPLICATION, "Page");
Job job = (Job) process.getAttribute("Job");
Candidate candidate = (Candidate) process.getAttribute("NewCandidate");
Job job = (Job) process.getAttribute("Job");
if(request.getParameter("JobID")!=null)
{
......@@ -50,7 +46,7 @@
<oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/>
</div>
<div class="main-box-layout verify-i-setpone">
<div class="box-label">Please check your email for further details.</div>
<div class="box-label">We will get in touch with you soon</div>
</div>
</div>
</oneit:dynIncluded>
\ No newline at end of file
......@@ -75,7 +75,7 @@
</oneit:layout_label>
<oneit:layout_field width="1">
<oneit:ormEnum obj="<%= messageTemplate %>" attributeName="ApplicationStatus"
enums="<%= Arrays.asList(new ApplicationStatus[]{ApplicationStatus.DRAFT, ApplicationStatus.SUBMITTED, ApplicationStatus.SHORTLISTED, ApplicationStatus.UNSUITABLE}) %>"/>
enums="<%= Arrays.asList(new ApplicationStatus[]{ApplicationStatus.POST_INGEST, ApplicationStatus.DRAFT, ApplicationStatus.SUBMITTED, ApplicationStatus.SHORTLISTED, ApplicationStatus.UNSUITABLE}) %>"/>
</oneit:layout_field>
</oneit:skin>
......
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