Commit 23aec6ce by Harsh Shah

Finish Release-20171030

parents 8f0fee74 897c1e95
...@@ -23,7 +23,8 @@ ...@@ -23,7 +23,8 @@
<column name="city" type="String" nullable="true" length="100"/> <column name="city" type="String" nullable="true" length="100"/>
<column name="state" type="String" nullable="true" length="200"/> <column name="state" type="String" nullable="true" length="200"/>
<column name="country" type="String" nullable="true" length="200"/> <column name="country" type="String" nullable="true" length="200"/>
<column name="level_id" type="Long" length="11" nullable="false"/> <column name="manually_closed" type="Boolean" nullable="true"/>
<column name="level_id" type="Long" length="11" nullable="true"/>
<column name="client_id" type="Long" length="11" nullable="true"/> <column name="client_id" type="Long" length="11" nullable="true"/>
<column name="company_user_id" type="Long" length="11" nullable="true"/> <column name="company_user_id" type="Long" length="11" nullable="true"/>
<column name="shortened_url_id" type="Long" length="11" nullable="true"/> <column name="shortened_url_id" type="Long" length="11" nullable="true"/>
......
...@@ -23,7 +23,8 @@ CREATE TABLE tl_job ( ...@@ -23,7 +23,8 @@ CREATE TABLE tl_job (
city varchar(100) NULL, city varchar(100) NULL,
state varchar(200) NULL, state varchar(200) NULL,
country varchar(200) NULL, country varchar(200) NULL,
level_id numeric(12) NOT NULL, manually_closed char(1) NULL,
level_id numeric(12) NULL,
client_id numeric(12) NULL, client_id numeric(12) NULL,
company_user_id numeric(12) NULL, company_user_id numeric(12) NULL,
shortened_url_id numeric(12) NULL shortened_url_id numeric(12) NULL
......
...@@ -24,7 +24,8 @@ CREATE TABLE tl_job ( ...@@ -24,7 +24,8 @@ CREATE TABLE tl_job (
city varchar2(100) NULL, city varchar2(100) NULL,
state varchar2(200) NULL, state varchar2(200) NULL,
country varchar2(200) NULL, country varchar2(200) NULL,
level_id number(12) NOT NULL, manually_closed char(1) NULL,
level_id number(12) NULL,
client_id number(12) NULL, client_id number(12) NULL,
company_user_id number(12) NULL, company_user_id number(12) NULL,
shortened_url_id number(12) NULL shortened_url_id number(12) NULL
......
...@@ -24,7 +24,8 @@ CREATE TABLE tl_job ( ...@@ -24,7 +24,8 @@ CREATE TABLE tl_job (
city varchar(100) NULL, city varchar(100) NULL,
state varchar(200) NULL, state varchar(200) NULL,
country varchar(200) NULL, country varchar(200) NULL,
level_id numeric(12) NOT NULL, manually_closed char(1) NULL,
level_id numeric(12) NULL,
client_id numeric(12) NULL, client_id numeric(12) NULL,
company_user_id numeric(12) NULL, company_user_id numeric(12) NULL,
shortened_url_id numeric(12) NULL shortened_url_id numeric(12) NULL
......
package performa.batch; package performa.batch;
import java.util.Set;
import oneit.appservices.batch.ORMBatch; import oneit.appservices.batch.ORMBatch;
import oneit.logging.*; import oneit.logging.*;
import oneit.objstore.ObjectTransaction; import oneit.objstore.ObjectTransaction;
...@@ -7,7 +8,9 @@ import oneit.objstore.StorageException; ...@@ -7,7 +8,9 @@ import oneit.objstore.StorageException;
import oneit.objstore.rdbms.filters.LessThanFilter; import oneit.objstore.rdbms.filters.LessThanFilter;
import oneit.utils.DateDiff; import oneit.utils.DateDiff;
import oneit.utils.parsers.FieldException; import oneit.utils.parsers.FieldException;
import performa.intercom.utils.IntercomUtils;
import performa.orm.Job; import performa.orm.Job;
import performa.orm.Company;
import performa.orm.types.JobStatus; import performa.orm.types.JobStatus;
...@@ -27,8 +30,17 @@ public class CloseJobBatch extends ORMBatch ...@@ -27,8 +30,17 @@ public class CloseJobBatch extends ORMBatch
for (Job job : expiringJobs) for (Job job : expiringJobs)
{ {
job.setJobStatus(JobStatus.COMPLETE); job.setJobStatus(JobStatus.COMPLETE);
job.setIsManuallyClosed(Boolean.FALSE);
LogMgr.log(CLOSE_JOB_BATCH, LogLevel.DEBUG2, "Setting Job Status to Closed in job : ", job); LogMgr.log(CLOSE_JOB_BATCH, LogLevel.DEBUG2, "Setting Job Status to Closed in job : ", job);
} }
// Update closed job details to intercom
Set<Company> companies = Job.pipesJob(expiringJobs).toCompanyUser().toCompany().uniqueVals();
for (Company company : companies)
{
IntercomUtils.updateCompany(company);
}
} }
} }
\ No newline at end of file
...@@ -10,6 +10,7 @@ import oneit.objstore.StorageException; ...@@ -10,6 +10,7 @@ import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser; import oneit.objstore.parser.BusinessObjectParser;
import oneit.objstore.rdbms.filters.EqualsFilter; import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.objstore.utils.ObjstoreUtils; import oneit.objstore.utils.ObjstoreUtils;
import oneit.security.SecUser;
import oneit.servlets.forms.SubmissionDetails; import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult; import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState; import oneit.servlets.process.ORMProcessState;
...@@ -17,6 +18,8 @@ import oneit.servlets.process.SaveFP; ...@@ -17,6 +18,8 @@ import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException; import oneit.utils.BusinessException;
import oneit.utils.filter.CollectionFilter; import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser;
import performa.orm.Job; import performa.orm.Job;
import performa.orm.JobApplication; import performa.orm.JobApplication;
import performa.orm.types.AppProcessOption; import performa.orm.types.AppProcessOption;
...@@ -61,7 +64,19 @@ public class BulkUpdateFP extends SaveFP ...@@ -61,7 +64,19 @@ public class BulkUpdateFP extends SaveFP
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In BulkUpdateFP Job Application Status successfully changed : ", application ); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In BulkUpdateFP Job Application Status successfully changed : ", application );
} }
// restarting process as custom attributes needs to be updated to intercom
completeProcessRestartAndRestoreAttribs(process, request);
SecUser secUser = SecUser.getTXUser(process.getTransaction());
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
// Update company in intercom
if(companyUser.getCompany() != null)
{
IntercomUtils.updateCompany(companyUser.getCompany());
}
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
} }
} }
...@@ -5,11 +5,14 @@ import javax.servlet.http.HttpServletRequest; ...@@ -5,11 +5,14 @@ import javax.servlet.http.HttpServletRequest;
import oneit.logging.LogLevel; import oneit.logging.LogLevel;
import oneit.logging.LogMgr; import oneit.logging.LogMgr;
import oneit.objstore.StorageException; import oneit.objstore.StorageException;
import oneit.security.SecUser;
import oneit.servlets.forms.SubmissionDetails; import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult; import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState; import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP; import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException; import oneit.utils.BusinessException;
import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser;
import performa.orm.JobApplication; import performa.orm.JobApplication;
import performa.orm.types.AppProcessOption; import performa.orm.types.AppProcessOption;
import performa.orm.types.ApplicationStatus; import performa.orm.types.ApplicationStatus;
...@@ -34,7 +37,19 @@ public class ChangeApplicationStatusFP extends SaveFP ...@@ -34,7 +37,19 @@ public class ChangeApplicationStatusFP extends SaveFP
} }
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In ChangeApplicationStatusFP Job Application Status successfully changed : ", jobApplication ); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In ChangeApplicationStatusFP Job Application Status successfully changed : ", jobApplication );
// restarting process as custom attributes needs to be updated to intercom
completeProcessRestartAndRestoreAttribs(process, request);
SecUser secUser = SecUser.getTXUser(process.getTransaction());
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
// Update company in intercom
if(companyUser.getCompany() != null)
{
IntercomUtils.updateCompany(companyUser.getCompany());
}
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
} }
} }
\ No newline at end of file
...@@ -6,9 +6,12 @@ import javax.servlet.http.HttpServletRequest; ...@@ -6,9 +6,12 @@ import javax.servlet.http.HttpServletRequest;
import oneit.logging.*; import oneit.logging.*;
import oneit.objstore.StorageException; import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser; import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.SecUser;
import oneit.servlets.forms.*; import oneit.servlets.forms.*;
import oneit.servlets.process.*; import oneit.servlets.process.*;
import static oneit.servlets.process.SaveFP.completeProcessRestartAndRestoreAttribs;
import oneit.utils.*; import oneit.utils.*;
import performa.intercom.utils.IntercomUtils;
import performa.orm.*; import performa.orm.*;
import performa.orm.types.ApplicationStatus; import performa.orm.types.ApplicationStatus;
import performa.utils.AnalysisEngine; import performa.utils.AnalysisEngine;
...@@ -19,14 +22,14 @@ public class CompleteApplicationFP extends SaveFP ...@@ -19,14 +22,14 @@ public class CompleteApplicationFP extends SaveFP
@Override @Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{ {
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication"); HttpServletRequest request = submission.getRequest();
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED); jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
jobApplication.setSubmittedDate(new Date()); jobApplication.setSubmittedDate(new Date());
AnalysisEngine.analyseAnswers(jobApplication.getCandidate(), jobApplication.getJob().getLevel(), jobApplication.getCompletedAnswers()); AnalysisEngine.analyseAnswers(jobApplication.getCandidate(), jobApplication.getJob().getLevel(), jobApplication.getCompletedAnswers());
//TODO: set application status as UNSUITABLE if not scored //TODO: set application status as UNSUITABLE if not scored
if(false) if(false)
{ {
...@@ -35,6 +38,18 @@ public class CompleteApplicationFP extends SaveFP ...@@ -35,6 +38,18 @@ public class CompleteApplicationFP extends SaveFP
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication);
// restarting process as custom attributes needs to be updated to intercom
completeProcessRestartAndRestoreAttribs(process, request);
SecUser secUser = SecUser.getTXUser(process.getTransaction());
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
// Update company in intercom
if(companyUser.getCompany() != null)
{
IntercomUtils.updateCompany(companyUser.getCompany());
}
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
} }
......
...@@ -7,12 +7,17 @@ import java.util.Map; ...@@ -7,12 +7,17 @@ import java.util.Map;
import oneit.logging.LogLevel; import oneit.logging.LogLevel;
import oneit.logging.LogMgr; import oneit.logging.LogMgr;
import oneit.objstore.StorageException; import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.SecUser;
import oneit.servlets.forms.SubmissionDetails; import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult; import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState; import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP; import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException; import oneit.utils.BusinessException;
import oneit.utils.DateDiff; import oneit.utils.DateDiff;
import oneit.utils.MultiException;
import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser;
import performa.orm.Job; import performa.orm.Job;
import performa.orm.types.JobStatus; import performa.orm.types.JobStatus;
...@@ -30,19 +35,17 @@ public class SaveJobFP extends SaveFP ...@@ -30,19 +35,17 @@ public class SaveJobFP extends SaveFP
Job oldJob = (Job) job.getEarliestBackup(); Job oldJob = (Job) job.getEarliestBackup();
if(oldJob != null && oldJob.getJobStatus() == JobStatus.DRAFT && job.getJobStatus() == JobStatus.OPEN) if(openJob==Boolean.TRUE)
{ {
job.setApplyBy(DateDiff.add(DateDiff.getToday(), Calendar.DATE, 30)); job.setJobStatus(JobStatus.OPEN);
job.setOpenDate(new Date());
LogMgr.log(Job.LOG, LogLevel.PROCESSING1,"Job status changed as Open. ", job );
} }
if(openJob==Boolean.TRUE) if(oldJob != null && oldJob.getJobStatus() == JobStatus.DRAFT && job.getJobStatus() == JobStatus.OPEN)
{ {
job.setJobStatus(JobStatus.OPEN);
job.setApplyBy(DateDiff.add(DateDiff.getToday(), Calendar.DATE, 30)); job.setApplyBy(DateDiff.add(DateDiff.getToday(), Calendar.DATE, 30));
job.setOpenDate(new Date()); job.setOpenDate(new Date());
LogMgr.log(Job.LOG, LogLevel.PROCESSING1,"Job status changed as Open. ", job );
} }
if(job.getJobStatus() == JobStatus.OPEN && job.getShortenedURL() == null) if(job.getJobStatus() == JobStatus.OPEN && job.getShortenedURL() == null)
...@@ -50,6 +53,38 @@ public class SaveJobFP extends SaveFP ...@@ -50,6 +53,38 @@ public class SaveJobFP extends SaveFP
job.createShortenedURL(); job.createShortenedURL();
} }
if(job.getJobStatus() == JobStatus.COMPLETE)
{
job.setIsManuallyClosed(Boolean.TRUE);
}
// restarting process as custom attributes needs to be updated to intercom
completeProcessRestartAndRestoreAttribs(process, request);
SecUser secUser = SecUser.getTXUser(process.getTransaction());
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
// Update company in intercom
if(companyUser.getCompany() != null)
{
IntercomUtils.updateCompany(companyUser.getCompany());
}
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
} }
@Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
{
HttpServletRequest request = submission.getRequest();
Job job = process.getAttribute("Job") != null ? (Job) process.getAttribute("Job") : (Job) request.getAttribute("Job");
Boolean openJob = (Boolean) request.getAttribute("openJob");
if(job.getJobStatus() != JobStatus.DRAFT || openJob == Boolean.TRUE)
{
BusinessObjectParser.assertFieldCondition(job.getLevel() != null, job , Job.SINGLEREFERENCE_Level, "mandatory", exceptions, true, request);
}
super.validate(process, submission, exceptions, params);
}
} }
\ No newline at end of file
...@@ -29,6 +29,7 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -29,6 +29,7 @@ public class SendCompanyUserInvitesFP extends SaveFP
private static final LoggingArea LOG = LoggingArea.createLoggingArea("SendCompanyUserInvites"); private static final LoggingArea LOG = LoggingArea.createLoggingArea("SendCompanyUserInvites");
protected ConfigurableArticleTemplateEmailer emailer; protected ConfigurableArticleTemplateEmailer emailer;
protected ConfigurableArticleTemplateEmailer ownerAccountCreatedEmailer;
protected ConfigurableArticleTemplateEmailer invitationEmailer; protected ConfigurableArticleTemplateEmailer invitationEmailer;
...@@ -80,7 +81,6 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -80,7 +81,6 @@ public class SendCompanyUserInvitesFP extends SaveFP
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User", companyUser, secUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User", companyUser, secUser);
companyUser.setRole(RoleType.ADMIN);
companyUser.setIsAccountVerified(Boolean.TRUE); companyUser.setIsAccountVerified(Boolean.TRUE);
company.setIsVerified(Boolean.TRUE); company.setIsVerified(Boolean.TRUE);
...@@ -98,6 +98,8 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -98,6 +98,8 @@ public class SendCompanyUserInvitesFP extends SaveFP
if(companyUser == company.getAddedByUser()) if(companyUser == company.getAddedByUser())
{ {
companyUser.setRole(RoleType.ADMIN);
//process user invitations //process user invitations
for(CompanyUser cUser : company.getUsersSet()) for(CompanyUser cUser : company.getUsersSet())
{ {
...@@ -147,8 +149,9 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -147,8 +149,9 @@ public class SendCompanyUserInvitesFP extends SaveFP
{ {
super.init(context); super.init(context);
emailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("AccountCreatedEmailer")); emailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("AccountCreatedEmailer"));
invitationEmailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("InvitationEmailer")); ownerAccountCreatedEmailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("OwnerAccountCreatedEmailer"));
invitationEmailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("InvitationEmailer"));
} }
private void sendAccountCreatedMail(CompanyUser companyUser, HttpServletRequest request) throws BusinessException private void sendAccountCreatedMail(CompanyUser companyUser, HttpServletRequest request) throws BusinessException
...@@ -157,11 +160,28 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -157,11 +160,28 @@ public class SendCompanyUserInvitesFP extends SaveFP
{ {
LogMgr.log(LOG, LogLevel.PROCESSING1, "Sending Account Created mail from SendCompanyUserInvitesFP to :: ", companyUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "Sending Account Created mail from SendCompanyUserInvitesFP to :: ", companyUser);
Map defaultParams = CollectionUtils.EMPTY_MAP; String link = LoopbackHTTP.getRemoteAccessURL(request) + "/extensions/adminportal/forgot_password.jsp";
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser);
if(companyUser == companyUser.getCompany().getAddedByUser())
Utils.sendMail(emailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser); {
Article article = WebUtils.getArticleByShortCut(companyUser.getTransaction(), WebUtils.JOBS);
String jobCreateLink = LoopbackHTTP.getRemoteAccessURL(request)
+ article.getLink(request, CollectionUtils.mapEntry("cms.rm", WebUtils.CREATE_JOB).toMap(), "/");
Map defaultParams = CollectionUtils.mapEntry("link", link)
.mapEntry("create_job_link", jobCreateLink)
.toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser.getUser(), companyUser.getCompany());
Utils.sendMail(ownerAccountCreatedEmailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser);
}
else
{
Map defaultParams = CollectionUtils.mapEntry("link", link).toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser.getCompany(), companyUser.getUser());
Utils.sendMail(emailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser);
}
LogMgr.log(LOG, LogLevel.PROCESSING1, "Sent Account Created mail successfully from " + SendCompanyUserInvitesFP.class + " to :: ", companyUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "Sent Account Created mail successfully from " + SendCompanyUserInvitesFP.class + " to :: ", companyUser);
} }
catch (ConfigurableEmailerException ex) catch (ConfigurableEmailerException ex)
...@@ -192,7 +212,7 @@ public class SendCompanyUserInvitesFP extends SaveFP ...@@ -192,7 +212,7 @@ public class SendCompanyUserInvitesFP extends SaveFP
+ "?id=" + companyUser.getID() + "?id=" + companyUser.getID()
+ "&key=" + companyUser.getVerificationKey(); + "&key=" + companyUser.getVerificationKey();
Map defaultParams = CollectionUtils.mapEntry("link", link).toMap(); Map defaultParams = CollectionUtils.mapEntry("link", link).toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser); ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser.getCompany(), companyUser.getCompany().getAddedByUser().getUser());
Utils.sendMail(invitationEmailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser); Utils.sendMail(invitationEmailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser);
......
...@@ -60,7 +60,7 @@ public class SendUserInvitationFP extends SaveFP ...@@ -60,7 +60,7 @@ public class SendUserInvitationFP extends SaveFP
{ {
LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to re-sending invitaion email.", resendUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to re-sending invitaion email.", resendUser);
sendInvitationMail(resendUser, request); sendInvitationMail(resendUser, request, objTran);
LogMgr.log(LOG, LogLevel.PROCESSING1, "End of re-sending invitation email.", resendUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "End of re-sending invitation email.", resendUser);
} }
...@@ -90,7 +90,7 @@ public class SendUserInvitationFP extends SaveFP ...@@ -90,7 +90,7 @@ public class SendUserInvitationFP extends SaveFP
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", secUser);
sendInvitationMail(newComUser, request); sendInvitationMail(newComUser, request, objTran);
LogMgr.log(LOG, LogLevel.PROCESSING1, "End of sending invitation email.", secUser); LogMgr.log(LOG, LogLevel.PROCESSING1, "End of sending invitation email.", secUser);
} }
...@@ -108,7 +108,7 @@ public class SendUserInvitationFP extends SaveFP ...@@ -108,7 +108,7 @@ public class SendUserInvitationFP extends SaveFP
} }
protected void sendInvitationMail(CompanyUser companyUser, HttpServletRequest request) throws BusinessException protected void sendInvitationMail(CompanyUser companyUser, HttpServletRequest request, ObjectTransaction objTran) throws BusinessException
{ {
if(!companyUser.isTrue(companyUser.getIsAccountVerified())) if(!companyUser.isTrue(companyUser.getIsAccountVerified()))
{ {
...@@ -133,7 +133,7 @@ public class SendUserInvitationFP extends SaveFP ...@@ -133,7 +133,7 @@ public class SendUserInvitationFP extends SaveFP
+ "?id=" + companyUser.getID() + "?id=" + companyUser.getID()
+ "&key=" + companyUser.getVerificationKey(); + "&key=" + companyUser.getVerificationKey();
Map defaultParams = CollectionUtils.mapEntry("link", link).toMap(); Map defaultParams = CollectionUtils.mapEntry("link", link).toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser); ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser.getCompany(), SecUser.getTXUser(objTran));
Utils.sendMail(invitationEmailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser); Utils.sendMail(invitationEmailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser);
......
...@@ -24,6 +24,7 @@ import java.util.ArrayList; ...@@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.ThreadLocalRandom;
import oneit.utils.Storage;
class HttpClient { class HttpClient {
...@@ -248,7 +249,7 @@ class HttpClient { ...@@ -248,7 +249,7 @@ class HttpClient {
} }
private String generateAuthString(String username, String password) { private String generateAuthString(String username, String password) {
return Base64.encodeBase64String((username + ":" + password).getBytes()); return Storage.bytesToBase64((username + ":" + password).getBytes());
} }
private Map<String, String> createHeaders() { private Map<String, String> createHeaders() {
......
package performa.intercom.utils; package performa.intercom.utils;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import oneit.logging.LogLevel; import oneit.logging.LogLevel;
import oneit.logging.LogMgr; import oneit.logging.LogMgr;
import oneit.logging.LoggingArea; import oneit.logging.LoggingArea;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.StorageException;
import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.objstore.rdbms.filters.InFilter;
import oneit.objstore.utils.ObjstoreUtils;
import oneit.security.SecUser; import oneit.security.SecUser;
import oneit.utils.CollectionUtils;
import oneit.utils.ObjectTransform;
import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter;
import performa.intercom.resources.Company; import performa.intercom.resources.Company;
import performa.intercom.resources.CustomAttribute; import performa.intercom.resources.CustomAttribute;
import performa.intercom.resources.Intercom; import performa.intercom.resources.Intercom;
import performa.intercom.resources.User; import performa.intercom.resources.User;
import performa.orm.Job;
import performa.orm.JobApplication;
import performa.orm.types.ApplicationStatus;
import performa.orm.types.JobStatus;
import performa.utils.Utils; import performa.utils.Utils;
...@@ -99,8 +116,7 @@ public class IntercomUtils ...@@ -99,8 +116,7 @@ public class IntercomUtils
{ {
Company intercomCompany = new Company(); Company intercomCompany = new Company();
intercomCompany.setName(company.getCompanyName()); setCompanyDetails(intercomCompany, company);
intercomCompany.setCompanyID(company.getID().toString());
return Company.create(intercomCompany); return Company.create(intercomCompany);
} }
...@@ -111,6 +127,55 @@ public class IntercomUtils ...@@ -111,6 +127,55 @@ public class IntercomUtils
return null; return null;
} }
} }
private static void setCompanyDetails(Company intercomCompany, performa.orm.Company company) throws StorageException
{
intercomCompany.setName(company.getCompanyName());
intercomCompany.setCompanyID(company.getID().toString());
// job related custom attributes
Job[] jobs = Job.searchCompany(company.getTransaction(), company);
Filter draftFilter = Job.SearchByAll().andJobStatus(new EqualsFilter<>(JobStatus.DRAFT));
Collection draftJobs = CollectionFilter.filter(Arrays.asList(jobs), draftFilter);
Filter filledFilter = Job.SearchByAll().andJobStatus(new EqualsFilter<>(JobStatus.FILLED));
Collection filledJobs = CollectionFilter.filter(Arrays.asList(jobs), filledFilter);
Filter openFilter = Job.SearchByAll().andJobStatus(new EqualsFilter<>(JobStatus.OPEN));
Collection openJobs = CollectionFilter.filter(Arrays.asList(jobs), openFilter);
Filter closedFilter = Job.SearchByAll().andJobStatus(new EqualsFilter<>(JobStatus.COMPLETE));
Collection closedJobs = CollectionFilter.filter(Arrays.asList(jobs), closedFilter);
Filter manuallyFilter = Job.SearchByAll().andIsManuallyClosed(new EqualsFilter<>(Boolean.TRUE));
Collection manuallyClosed = CollectionFilter.filter(closedJobs, manuallyFilter);
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("job-count", jobs != null ? jobs.length : 0));
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("draft-job-count", draftJobs.size()));
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("filled_job_count", filledJobs.size()));
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("open_job_count", openJobs.size()));
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("manually_closed_job_count", manuallyClosed.size()));
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("expired_job_count", closedJobs.size() - manuallyClosed.size()));
// applicant related custom attributes
Filter allApplicantFilter = JobApplication.SearchByAll().andApplicationStatus(new InFilter<>(ApplicationStatus.SUBMITTED, ApplicationStatus.SHORTLISTED, ApplicationStatus.UNSUITABLE));
Collection applicants = Job.pipesJob(jobs).toJobApplications(allApplicantFilter).uniqueVals();
Filter shortlistedFilter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(ApplicationStatus.SHORTLISTED));
Collection shortlistedApplicants = CollectionFilter.filter(applicants, shortlistedFilter);
Filter unsuitableFilter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(ApplicationStatus.UNSUITABLE));
Collection unsuitableApplicants = CollectionFilter.filter(applicants, unsuitableFilter);
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("total_applicants", applicants.size()));
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("total_shortlisted", shortlistedApplicants.size()));
intercomCompany.addCustomAttribute(CustomAttribute.newIntegerAttribute("total_unsuitable", unsuitableApplicants.size()));
List<Job> sortedJobs = ObjstoreUtils.sort(Arrays.asList(jobs),
new ObjectTransform[]{Job.pipesJob().toObjectCreated()},
new Comparator[]{CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR)});
if(sortedJobs.size() > 0)
{
intercomCompany.addCustomAttribute(CustomAttribute.newLongAttribute("recent_job_created_at", sortedJobs.get(0).getObjectCreated().getTime() / 1000));
}
}
public static Company findCompanyByID(performa.orm.Company company) public static Company findCompanyByID(performa.orm.Company company)
...@@ -144,7 +209,8 @@ public class IntercomUtils ...@@ -144,7 +209,8 @@ public class IntercomUtils
} }
else else
{ {
intercomCompany.setName(company.getCompanyName()); setCompanyDetails(intercomCompany, company);
Company.update(intercomCompany); Company.update(intercomCompany);
} }
} }
...@@ -167,4 +233,28 @@ public class IntercomUtils ...@@ -167,4 +233,28 @@ public class IntercomUtils
return intercomCompany; return intercomCompany;
} }
// public static void createAccessedJobEvent(Job job, User user)
// {
// try
// {
// Map<String, CustomAttribute> customAttributes = user.getCustomAttributes();
// customAttributes.get("shortlisted-count");
// Event event = new Event();
//
// event.setEventName("accessed-job");
// event.putMetadata("applicant-count", job.getNoOfCandidatesApplied());
// event.putMetadata("shortlisted-count", job.getNoOfCandidatesShortlisted());
// event.setUserID(user.getUserId());
// event.setCreatedAt(currentTimeMillis()/1000L);
//
// Event.create(event);
// }
// catch (Exception e)
// {
// LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while creating accessed job event in intercom");
//
// }
// }
} }
...@@ -59,6 +59,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -59,6 +59,7 @@ public abstract class BaseJob extends BaseBusinessClass
public static final String FIELD_City = "City"; public static final String FIELD_City = "City";
public static final String FIELD_State = "State"; public static final String FIELD_State = "State";
public static final String FIELD_Country = "Country"; public static final String FIELD_Country = "Country";
public static final String FIELD_IsManuallyClosed = "IsManuallyClosed";
public static final String FIELD_Email = "Email"; public static final String FIELD_Email = "Email";
public static final String FIELD_Password = "Password"; public static final String FIELD_Password = "Password";
public static final String FIELD_ConfirmPassword = "ConfirmPassword"; public static final String FIELD_ConfirmPassword = "ConfirmPassword";
...@@ -109,6 +110,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -109,6 +110,7 @@ public abstract class BaseJob extends BaseBusinessClass
private static final DefaultAttributeHelper<Job> HELPER_City = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_City = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper<Job, State> HELPER_State = new EnumeratedAttributeHelper<Job, State> (State.FACTORY_State); private static final EnumeratedAttributeHelper<Job, State> HELPER_State = new EnumeratedAttributeHelper<Job, State> (State.FACTORY_State);
private static final EnumeratedAttributeHelper<Job, Countries> HELPER_Country = new EnumeratedAttributeHelper<Job, Countries> (Countries.FACTORY_Countries); private static final EnumeratedAttributeHelper<Job, Countries> HELPER_Country = new EnumeratedAttributeHelper<Job, Countries> (Countries.FACTORY_Countries);
private static final DefaultAttributeHelper<Job> HELPER_IsManuallyClosed = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_Email = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_Email = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_Password = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_Password = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_ConfirmPassword = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_ConfirmPassword = DefaultAttributeHelper.INSTANCE;
...@@ -140,6 +142,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -140,6 +142,7 @@ public abstract class BaseJob extends BaseBusinessClass
private String _City; private String _City;
private State _State; private State _State;
private Countries _Country; private Countries _Country;
private Boolean _IsManuallyClosed;
private String _Email; private String _Email;
private String _Password; private String _Password;
private String _ConfirmPassword; private String _ConfirmPassword;
...@@ -203,6 +206,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -203,6 +206,7 @@ public abstract class BaseJob extends BaseBusinessClass
private static final AttributeValidator[] FIELD_City_Validators; private static final AttributeValidator[] FIELD_City_Validators;
private static final AttributeValidator[] FIELD_State_Validators; private static final AttributeValidator[] FIELD_State_Validators;
private static final AttributeValidator[] FIELD_Country_Validators; private static final AttributeValidator[] FIELD_Country_Validators;
private static final AttributeValidator[] FIELD_IsManuallyClosed_Validators;
// Arrays of behaviour decorators // Arrays of behaviour decorators
...@@ -258,6 +262,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -258,6 +262,7 @@ public abstract class BaseJob extends BaseBusinessClass
FIELD_City_Validators = (AttributeValidator[])setupAttribMetaData_City(validatorMapping).toArray (new AttributeValidator[0]); FIELD_City_Validators = (AttributeValidator[])setupAttribMetaData_City(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_State_Validators = (AttributeValidator[])setupAttribMetaData_State(validatorMapping).toArray (new AttributeValidator[0]); FIELD_State_Validators = (AttributeValidator[])setupAttribMetaData_State(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Country_Validators = (AttributeValidator[])setupAttribMetaData_Country(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Country_Validators = (AttributeValidator[])setupAttribMetaData_Country(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_IsManuallyClosed_Validators = (AttributeValidator[])setupAttribMetaData_IsManuallyClosed(validatorMapping).toArray (new AttributeValidator[0]);
REFERENCE_Job.initialiseReference (); REFERENCE_Job.initialiseReference ();
...@@ -359,7 +364,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -359,7 +364,7 @@ public abstract class BaseJob extends BaseBusinessClass
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "level_id"); metaInfo.put ("dbcol", "level_id");
metaInfo.put ("mandatory", "true"); metaInfo.put ("mandatory", "false");
metaInfo.put ("name", "Level"); metaInfo.put ("name", "Level");
metaInfo.put ("type", "Level"); metaInfo.put ("type", "Level");
...@@ -931,6 +936,25 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -931,6 +936,25 @@ public abstract class BaseJob extends BaseBusinessClass
return validators; return validators;
} }
// Meta Info setup
private static List setupAttribMetaData_IsManuallyClosed(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "manually_closed");
metaInfo.put ("defaultValue", "Boolean.FALSE");
metaInfo.put ("name", "IsManuallyClosed");
metaInfo.put ("type", "Boolean");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Job.IsManuallyClosed:", metaInfo);
ATTRIBUTES_METADATA_Job.put (FIELD_IsManuallyClosed, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Job.class, "IsManuallyClosed", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Job.IsManuallyClosed:", validators);
return validators;
}
// END OF STATIC METADATA DEFINITION // END OF STATIC METADATA DEFINITION
...@@ -973,6 +997,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -973,6 +997,7 @@ public abstract class BaseJob extends BaseBusinessClass
_City = (String)(HELPER_City.initialise (_City)); _City = (String)(HELPER_City.initialise (_City));
_State = (State)(State.WA); _State = (State)(State.WA);
_Country = (Countries)(Countries.AU); _Country = (Countries)(Countries.AU);
_IsManuallyClosed = (Boolean)(Boolean.FALSE);
_Email = (String)(HELPER_Email.initialise (_Email)); _Email = (String)(HELPER_Email.initialise (_Email));
_Password = (String)(HELPER_Password.initialise (_Password)); _Password = (String)(HELPER_Password.initialise (_Password));
_ConfirmPassword = (String)(HELPER_ConfirmPassword.initialise (_ConfirmPassword)); _ConfirmPassword = (String)(HELPER_ConfirmPassword.initialise (_ConfirmPassword));
...@@ -2507,6 +2532,104 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -2507,6 +2532,104 @@ public abstract class BaseJob extends BaseBusinessClass
} }
/** /**
* Get the attribute IsManuallyClosed
*/
public Boolean getIsManuallyClosed ()
{
assertValid();
Boolean valToReturn = _IsManuallyClosed;
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
valToReturn = bhd.getIsManuallyClosed ((Job)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preIsManuallyClosedChange (Boolean newIsManuallyClosed) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postIsManuallyClosedChange () throws FieldException
{
}
public FieldWriteability getWriteability_IsManuallyClosed ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute IsManuallyClosed. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setIsManuallyClosed (Boolean newIsManuallyClosed) throws FieldException
{
boolean oldAndNewIdentical = HELPER_IsManuallyClosed.compare (_IsManuallyClosed, newIsManuallyClosed);
try
{
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
newIsManuallyClosed = bhd.setIsManuallyClosed ((Job)this, newIsManuallyClosed);
oldAndNewIdentical = HELPER_IsManuallyClosed.compare (_IsManuallyClosed, newIsManuallyClosed);
}
if (FIELD_IsManuallyClosed_Validators.length > 0)
{
Object newIsManuallyClosedObj = HELPER_IsManuallyClosed.toObject (newIsManuallyClosed);
if (newIsManuallyClosedObj != null)
{
int loopMax = FIELD_IsManuallyClosed_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Job.get (FIELD_IsManuallyClosed);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_IsManuallyClosed_Validators[v].checkAttribute (this, FIELD_IsManuallyClosed, metadata, newIsManuallyClosedObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_IsManuallyClosed () != FieldWriteability.FALSE, "Field IsManuallyClosed is not writeable");
preIsManuallyClosedChange (newIsManuallyClosed);
markFieldChange (FIELD_IsManuallyClosed);
_IsManuallyClosed = newIsManuallyClosed;
postFieldChange (FIELD_IsManuallyClosed);
postIsManuallyClosedChange ();
}
}
/**
* Get the attribute Email * Get the attribute Email
*/ */
public String getEmail () public String getEmail ()
...@@ -4373,7 +4496,6 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -4373,7 +4496,6 @@ public abstract class BaseJob extends BaseBusinessClass
*/ */
public void setLevel (Level newLevel) throws StorageException, FieldException public void setLevel (Level newLevel) throws StorageException, FieldException
{ {
BusinessObjectParser.assertFieldCondition (newLevel != null, this, SINGLEREFERENCE_Level, "mandatory");
if (_Level.wouldReferencedChange (newLevel)) if (_Level.wouldReferencedChange (newLevel))
...@@ -5236,6 +5358,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5236,6 +5358,7 @@ public abstract class BaseJob extends BaseBusinessClass
tl_jobPSet.setAttrib (FIELD_City, HELPER_City.toObject (_City)); // tl_jobPSet.setAttrib (FIELD_City, HELPER_City.toObject (_City)); //
tl_jobPSet.setAttrib (FIELD_State, HELPER_State.toObject (_State)); // tl_jobPSet.setAttrib (FIELD_State, HELPER_State.toObject (_State)); //
tl_jobPSet.setAttrib (FIELD_Country, HELPER_Country.toObject (_Country)); // tl_jobPSet.setAttrib (FIELD_Country, HELPER_Country.toObject (_Country)); //
tl_jobPSet.setAttrib (FIELD_IsManuallyClosed, HELPER_IsManuallyClosed.toObject (_IsManuallyClosed)); //
_Level.getPersistentSets (allSets); _Level.getPersistentSets (allSets);
_Client.getPersistentSets (allSets); _Client.getPersistentSets (allSets);
_CompanyUser.getPersistentSets (allSets); _CompanyUser.getPersistentSets (allSets);
...@@ -5269,6 +5392,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5269,6 +5392,7 @@ public abstract class BaseJob extends BaseBusinessClass
_City = (String)(HELPER_City.fromObject (_City, tl_jobPSet.getAttrib (FIELD_City))); // _City = (String)(HELPER_City.fromObject (_City, tl_jobPSet.getAttrib (FIELD_City))); //
_State = (State)(HELPER_State.fromObject (_State, tl_jobPSet.getAttrib (FIELD_State))); // _State = (State)(HELPER_State.fromObject (_State, tl_jobPSet.getAttrib (FIELD_State))); //
_Country = (Countries)(HELPER_Country.fromObject (_Country, tl_jobPSet.getAttrib (FIELD_Country))); // _Country = (Countries)(HELPER_Country.fromObject (_Country, tl_jobPSet.getAttrib (FIELD_Country))); //
_IsManuallyClosed = (Boolean)(HELPER_IsManuallyClosed.fromObject (_IsManuallyClosed, tl_jobPSet.getAttrib (FIELD_IsManuallyClosed))); //
_Level.setFromPersistentSets (objectID, allSets); _Level.setFromPersistentSets (objectID, allSets);
_Client.setFromPersistentSets (objectID, allSets); _Client.setFromPersistentSets (objectID, allSets);
_CompanyUser.setFromPersistentSets (objectID, allSets); _CompanyUser.setFromPersistentSets (objectID, allSets);
...@@ -5423,6 +5547,15 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5423,6 +5547,15 @@ public abstract class BaseJob extends BaseBusinessClass
e.addException (ex); e.addException (ex);
} }
try
{
setIsManuallyClosed (otherJob.getIsManuallyClosed ());
}
catch (FieldException ex)
{
e.addException (ex);
}
} }
} }
...@@ -5453,6 +5586,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5453,6 +5586,7 @@ public abstract class BaseJob extends BaseBusinessClass
_City = sourceJob._City; _City = sourceJob._City;
_State = sourceJob._State; _State = sourceJob._State;
_Country = sourceJob._Country; _Country = sourceJob._Country;
_IsManuallyClosed = sourceJob._IsManuallyClosed;
_Email = sourceJob._Email; _Email = sourceJob._Email;
_Password = sourceJob._Password; _Password = sourceJob._Password;
_ConfirmPassword = sourceJob._ConfirmPassword; _ConfirmPassword = sourceJob._ConfirmPassword;
...@@ -5518,8 +5652,6 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5518,8 +5652,6 @@ public abstract class BaseJob extends BaseBusinessClass
super.validate (context); super.validate (context);
context.check (getLevelID() != null, this, SINGLEREFERENCE_Level, "mandatory");
} }
...@@ -5545,6 +5677,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5545,6 +5677,7 @@ public abstract class BaseJob extends BaseBusinessClass
_City = (String)(HELPER_City.readExternal (_City, vals.get(FIELD_City))); // _City = (String)(HELPER_City.readExternal (_City, vals.get(FIELD_City))); //
_State = (State)(HELPER_State.readExternal (_State, vals.get(FIELD_State))); // _State = (State)(HELPER_State.readExternal (_State, vals.get(FIELD_State))); //
_Country = (Countries)(HELPER_Country.readExternal (_Country, vals.get(FIELD_Country))); // _Country = (Countries)(HELPER_Country.readExternal (_Country, vals.get(FIELD_Country))); //
_IsManuallyClosed = (Boolean)(HELPER_IsManuallyClosed.readExternal (_IsManuallyClosed, vals.get(FIELD_IsManuallyClosed))); //
_Email = (String)(HELPER_Email.readExternal (_Email, vals.get(FIELD_Email))); // _Email = (String)(HELPER_Email.readExternal (_Email, vals.get(FIELD_Email))); //
_Password = (String)(HELPER_Password.readExternal (_Password, vals.get(FIELD_Password))); // _Password = (String)(HELPER_Password.readExternal (_Password, vals.get(FIELD_Password))); //
_ConfirmPassword = (String)(HELPER_ConfirmPassword.readExternal (_ConfirmPassword, vals.get(FIELD_ConfirmPassword))); // _ConfirmPassword = (String)(HELPER_ConfirmPassword.readExternal (_ConfirmPassword, vals.get(FIELD_ConfirmPassword))); //
...@@ -5594,6 +5727,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5594,6 +5727,7 @@ public abstract class BaseJob extends BaseBusinessClass
vals.put (FIELD_City, HELPER_City.writeExternal (_City)); vals.put (FIELD_City, HELPER_City.writeExternal (_City));
vals.put (FIELD_State, HELPER_State.writeExternal (_State)); vals.put (FIELD_State, HELPER_State.writeExternal (_State));
vals.put (FIELD_Country, HELPER_Country.writeExternal (_Country)); vals.put (FIELD_Country, HELPER_Country.writeExternal (_Country));
vals.put (FIELD_IsManuallyClosed, HELPER_IsManuallyClosed.writeExternal (_IsManuallyClosed));
vals.put (FIELD_Email, HELPER_Email.writeExternal (_Email)); vals.put (FIELD_Email, HELPER_Email.writeExternal (_Email));
vals.put (FIELD_Password, HELPER_Password.writeExternal (_Password)); vals.put (FIELD_Password, HELPER_Password.writeExternal (_Password));
vals.put (FIELD_ConfirmPassword, HELPER_ConfirmPassword.writeExternal (_ConfirmPassword)); vals.put (FIELD_ConfirmPassword, HELPER_ConfirmPassword.writeExternal (_ConfirmPassword));
...@@ -5690,6 +5824,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5690,6 +5824,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
listener.notifyFieldChange(this, other, FIELD_Country, HELPER_Country.toObject(this._Country), HELPER_Country.toObject(otherJob._Country)); listener.notifyFieldChange(this, other, FIELD_Country, HELPER_Country.toObject(this._Country), HELPER_Country.toObject(otherJob._Country));
} }
if (!HELPER_IsManuallyClosed.compare(this._IsManuallyClosed, otherJob._IsManuallyClosed))
{
listener.notifyFieldChange(this, other, FIELD_IsManuallyClosed, HELPER_IsManuallyClosed.toObject(this._IsManuallyClosed), HELPER_IsManuallyClosed.toObject(otherJob._IsManuallyClosed));
}
// Compare single assocs // Compare single assocs
_AssessmentTemplate.compare (otherJob._AssessmentTemplate, listener); _AssessmentTemplate.compare (otherJob._AssessmentTemplate, listener);
...@@ -5750,6 +5888,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5750,6 +5888,7 @@ public abstract class BaseJob extends BaseBusinessClass
visitor.visitField(this, FIELD_City, HELPER_City.toObject(getCity())); visitor.visitField(this, FIELD_City, HELPER_City.toObject(getCity()));
visitor.visitField(this, FIELD_State, HELPER_State.toObject(getState())); visitor.visitField(this, FIELD_State, HELPER_State.toObject(getState()));
visitor.visitField(this, FIELD_Country, HELPER_Country.toObject(getCountry())); visitor.visitField(this, FIELD_Country, HELPER_Country.toObject(getCountry()));
visitor.visitField(this, FIELD_IsManuallyClosed, HELPER_IsManuallyClosed.toObject(getIsManuallyClosed()));
visitor.visitAssociation (_AssessmentTemplate); visitor.visitAssociation (_AssessmentTemplate);
visitor.visitAssociation (_CultureTemplate); visitor.visitAssociation (_CultureTemplate);
visitor.visitAssociation (_JobTemplate); visitor.visitAssociation (_JobTemplate);
...@@ -5893,6 +6032,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5893,6 +6032,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return filter.matches (getCountry ()); return filter.matches (getCountry ());
} }
else if (attribName.equals (FIELD_IsManuallyClosed))
{
return filter.matches (getIsManuallyClosed ());
}
else if (attribName.equals (SINGLEREFERENCE_Level)) else if (attribName.equals (SINGLEREFERENCE_Level))
{ {
return filter.matches (getLevel ()); return filter.matches (getLevel ());
...@@ -6030,6 +6173,12 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6030,6 +6173,12 @@ public abstract class BaseJob extends BaseBusinessClass
return this; return this;
} }
public SearchAll andIsManuallyClosed (QueryFilter<Boolean> filter)
{
filter.addFilter (context, "tl_job.manually_closed", "IsManuallyClosed");
return this;
}
public SearchAll andLevel (QueryFilter<Level> filter) public SearchAll andLevel (QueryFilter<Level> filter)
{ {
filter.addFilter (context, "tl_job.level_id", "Level"); filter.addFilter (context, "tl_job.level_id", "Level");
...@@ -6207,6 +6356,12 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6207,6 +6356,12 @@ public abstract class BaseJob extends BaseBusinessClass
return this; return this;
} }
public SearchJobKey andIsManuallyClosed (QueryFilter<Boolean> filter)
{
filter.addFilter (context, "tl_job.manually_closed", "IsManuallyClosed");
return this;
}
public SearchJobKey andLevel (QueryFilter<Level> filter) public SearchJobKey andLevel (QueryFilter<Level> filter)
{ {
filter.addFilter (context, "tl_job.level_id", "Level"); filter.addFilter (context, "tl_job.level_id", "Level");
...@@ -6378,6 +6533,12 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6378,6 +6533,12 @@ public abstract class BaseJob extends BaseBusinessClass
return this; return this;
} }
public SearchCompany andIsManuallyClosed (QueryFilter<Boolean> filter)
{
filter.addFilter (context, "tl_job.manually_closed", "IsManuallyClosed");
return this;
}
public SearchCompany andLevel (QueryFilter<Level> filter) public SearchCompany andLevel (QueryFilter<Level> filter)
{ {
filter.addFilter (context, "tl_job.level_id", "Level"); filter.addFilter (context, "tl_job.level_id", "Level");
...@@ -6498,6 +6659,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6498,6 +6659,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return HELPER_Country.toObject (getCountry ()); return HELPER_Country.toObject (getCountry ());
} }
else if (attribName.equals (FIELD_IsManuallyClosed))
{
return HELPER_IsManuallyClosed.toObject (getIsManuallyClosed ());
}
else if (attribName.equals (FIELD_Email)) else if (attribName.equals (FIELD_Email))
{ {
return HELPER_Email.toObject (getEmail ()); return HELPER_Email.toObject (getEmail ());
...@@ -6623,6 +6788,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6623,6 +6788,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return HELPER_Country; return HELPER_Country;
} }
else if (attribName.equals (FIELD_IsManuallyClosed))
{
return HELPER_IsManuallyClosed;
}
else if (attribName.equals (FIELD_Email)) else if (attribName.equals (FIELD_Email))
{ {
return HELPER_Email; return HELPER_Email;
...@@ -6748,6 +6917,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6748,6 +6917,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
setCountry ((Countries)(HELPER_Country.fromObject (_Country, attribValue))); setCountry ((Countries)(HELPER_Country.fromObject (_Country, attribValue)));
} }
else if (attribName.equals (FIELD_IsManuallyClosed))
{
setIsManuallyClosed ((Boolean)(HELPER_IsManuallyClosed.fromObject (_IsManuallyClosed, attribValue)));
}
else if (attribName.equals (FIELD_Email)) else if (attribName.equals (FIELD_Email))
{ {
setEmail ((String)(HELPER_Email.fromObject (_Email, attribValue))); setEmail ((String)(HELPER_Email.fromObject (_Email, attribValue)));
...@@ -6880,6 +7053,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6880,6 +7053,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return getWriteability_Country (); return getWriteability_Country ();
} }
else if (fieldName.equals (FIELD_IsManuallyClosed))
{
return getWriteability_IsManuallyClosed ();
}
else if (fieldName.equals (MULTIPLEREFERENCE_JobApplications)) else if (fieldName.equals (MULTIPLEREFERENCE_JobApplications))
{ {
return getWriteability_JobApplications (); return getWriteability_JobApplications ();
...@@ -7057,6 +7234,11 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7057,6 +7234,11 @@ public abstract class BaseJob extends BaseBusinessClass
fields.add (FIELD_Country); fields.add (FIELD_Country);
} }
if (getWriteability_IsManuallyClosed () != FieldWriteability.TRUE)
{
fields.add (FIELD_IsManuallyClosed);
}
if (getWriteability_Email () != FieldWriteability.TRUE) if (getWriteability_Email () != FieldWriteability.TRUE)
{ {
fields.add (FIELD_Email); fields.add (FIELD_Email);
...@@ -7146,6 +7328,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7146,6 +7328,7 @@ public abstract class BaseJob extends BaseBusinessClass
result.add(HELPER_City.getAttribObject (getClass (), _City, false, FIELD_City)); result.add(HELPER_City.getAttribObject (getClass (), _City, false, FIELD_City));
result.add(HELPER_State.getAttribObject (getClass (), _State, false, FIELD_State)); result.add(HELPER_State.getAttribObject (getClass (), _State, false, FIELD_State));
result.add(HELPER_Country.getAttribObject (getClass (), _Country, false, FIELD_Country)); result.add(HELPER_Country.getAttribObject (getClass (), _Country, false, FIELD_Country));
result.add(HELPER_IsManuallyClosed.getAttribObject (getClass (), _IsManuallyClosed, false, FIELD_IsManuallyClosed));
result.add(HELPER_Email.getAttribObject (getClass (), _Email, false, FIELD_Email)); result.add(HELPER_Email.getAttribObject (getClass (), _Email, false, FIELD_Email));
result.add(HELPER_Password.getAttribObject (getClass (), _Password, false, FIELD_Password)); result.add(HELPER_Password.getAttribObject (getClass (), _Password, false, FIELD_Password));
result.add(HELPER_ConfirmPassword.getAttribObject (getClass (), _ConfirmPassword, false, FIELD_ConfirmPassword)); result.add(HELPER_ConfirmPassword.getAttribObject (getClass (), _ConfirmPassword, false, FIELD_ConfirmPassword));
...@@ -7480,6 +7663,24 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7480,6 +7663,24 @@ public abstract class BaseJob extends BaseBusinessClass
} }
/** /**
* Get the attribute IsManuallyClosed
*/
public Boolean getIsManuallyClosed (Job obj, Boolean original)
{
return original;
}
/**
* Change the value set for attribute IsManuallyClosed.
* May modify the field beforehand
* Occurs before validation.
*/
public Boolean setIsManuallyClosed (Job obj, Boolean newIsManuallyClosed) throws FieldException
{
return newIsManuallyClosed;
}
/**
* Get the attribute Email * Get the attribute Email
*/ */
public String getEmail (Job obj, String original) public String getEmail (Job obj, String original)
...@@ -7901,6 +8102,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7901,6 +8102,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return toCountry (); return toCountry ();
} }
if (name.equals ("IsManuallyClosed"))
{
return toIsManuallyClosed ();
}
if (name.equals ("Level")) if (name.equals ("Level"))
{ {
return toLevel (); return toLevel ();
...@@ -7978,6 +8183,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7978,6 +8183,8 @@ public abstract class BaseJob extends BaseBusinessClass
public PipeLine<From, State> toState () { return pipe(new ORMAttributePipe<Me, State>(FIELD_State)); } public PipeLine<From, State> toState () { return pipe(new ORMAttributePipe<Me, State>(FIELD_State)); }
public PipeLine<From, Countries> toCountry () { return pipe(new ORMAttributePipe<Me, Countries>(FIELD_Country)); } public PipeLine<From, Countries> toCountry () { return pipe(new ORMAttributePipe<Me, Countries>(FIELD_Country)); }
public PipeLine<From, Boolean> toIsManuallyClosed () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_IsManuallyClosed)); }
public AssessmentCriteriaTemplate.AssessmentCriteriaTemplatePipeLineFactory<From, AssessmentCriteriaTemplate> toAssessmentTemplate () { return toAssessmentTemplate (Filter.ALL); } public AssessmentCriteriaTemplate.AssessmentCriteriaTemplatePipeLineFactory<From, AssessmentCriteriaTemplate> toAssessmentTemplate () { return toAssessmentTemplate (Filter.ALL); }
public AssessmentCriteriaTemplate.AssessmentCriteriaTemplatePipeLineFactory<From, AssessmentCriteriaTemplate> toAssessmentTemplate (Filter<AssessmentCriteriaTemplate> filter) public AssessmentCriteriaTemplate.AssessmentCriteriaTemplatePipeLineFactory<From, AssessmentCriteriaTemplate> toAssessmentTemplate (Filter<AssessmentCriteriaTemplate> filter)
......
package performa.orm; package performa.orm;
import oneit.utils.math.NullArith;
public class ClassNormalisation extends BaseClassNormalisation public class ClassNormalisation extends BaseClassNormalisation
{ {
...@@ -16,4 +18,9 @@ public class ClassNormalisation extends BaseClassNormalisation ...@@ -16,4 +18,9 @@ public class ClassNormalisation extends BaseClassNormalisation
{ {
return "ClassNormalisation"; return "ClassNormalisation";
} }
public Double getRoleFitScore(Integer weightedScore)
{
return NullArith.round(((10 * ((weightedScore - getWghtMeanScore()) / getWghtStddevScore())) + 50), 1);
}
} }
\ No newline at end of file
...@@ -5,6 +5,7 @@ import oneit.objstore.ObjectStatus; ...@@ -5,6 +5,7 @@ import oneit.objstore.ObjectStatus;
import oneit.objstore.ValidationContext; import oneit.objstore.ValidationContext;
import oneit.security.SecUser; import oneit.security.SecUser;
import oneit.utils.CollectionUtils; import oneit.utils.CollectionUtils;
import oneit.utils.StringUtils;
import oneit.utils.parsers.FieldException; import oneit.utils.parsers.FieldException;
...@@ -59,4 +60,17 @@ public class Company extends BaseCompany ...@@ -59,4 +60,17 @@ public class Company extends BaseCompany
super.validate(context); super.validate(context);
} }
public Boolean isEmailCorrect()
{
return StringUtils.isEmailAddress(getUserEmail());
}
@Override
public String getToString()
{
return StringUtils.subNulls(getCompanyName(), super.getToString());
}
} }
\ No newline at end of file
...@@ -46,8 +46,9 @@ ...@@ -46,8 +46,9 @@
<ATTRIB name="City" type="String" dbcol="city" length="100"/> <ATTRIB name="City" type="String" dbcol="city" length="100"/>
<ATTRIB name="State" type="State" dbcol="state" defaultValue="State.WA" attribHelper="EnumeratedAttributeHelper"/> <ATTRIB name="State" type="State" dbcol="state" defaultValue="State.WA" attribHelper="EnumeratedAttributeHelper"/>
<ATTRIB name="Country" type="Countries" dbcol="country" defaultValue="Countries.AU" attribHelper="EnumeratedAttributeHelper"/> <ATTRIB name="Country" type="Countries" dbcol="country" defaultValue="Countries.AU" attribHelper="EnumeratedAttributeHelper"/>
<ATTRIB name="IsManuallyClosed" type="Boolean" dbcol="manually_closed" defaultValue="Boolean.FALSE"/>
<SINGLEREFERENCE name="Level" type="Level" dbcol="level_id" mandatory="true"/> <SINGLEREFERENCE name="Level" type="Level" dbcol="level_id" mandatory="false"/>
<SINGLEREFERENCE name="Client" type="Client" dbcol="client_id" backreferenceName="Jobs"/> <SINGLEREFERENCE name="Client" type="Client" dbcol="client_id" backreferenceName="Jobs"/>
<SINGLEREFERENCE name="CompanyUser" type="CompanyUser" dbcol="company_user_id" /> <SINGLEREFERENCE name="CompanyUser" type="CompanyUser" dbcol="company_user_id" />
<SINGLEREFERENCE name="ShortenedURL" type="ShortenedURL" dbcol="shortened_url_id" /> <SINGLEREFERENCE name="ShortenedURL" type="ShortenedURL" dbcol="shortened_url_id" />
......
...@@ -313,8 +313,8 @@ public class JobApplication extends BaseJobApplication ...@@ -313,8 +313,8 @@ public class JobApplication extends BaseJobApplication
{ {
try try
{ {
Map<FactorClass, Map<FactorLevelLink, Map>> factorScoreDetails = new LinkedHashMap(); Map<FactorClass, Map<FactorLevelLink, Map>> factorScoreDetails = new LinkedHashMap();
Map<FactorClass, Tuple.T2<Double, ColorCode>> roleScoreMap = (Map<FactorClass, Tuple.T2<Double, ColorCode>>) getRoleFit(); Map<FactorClass, Tuple.T3<Double, ColorCode, Double>> roleScoreMap = (Map<FactorClass, Tuple.T3<Double, ColorCode, Double>>) getRoleFit();
for(FactorClass factorClass : getSortedFactorClasses()) for(FactorClass factorClass : getSortedFactorClasses())
{ {
...@@ -335,7 +335,7 @@ public class JobApplication extends BaseJobApplication ...@@ -335,7 +335,7 @@ public class JobApplication extends BaseJobApplication
public Double getRoleFitScore() public Double getRoleFitScore()
{ {
return getRoleFit() != null && getRoleFit().get(null) != null ? ((Tuple.T2<Double, ColorCode>)getRoleFit().get(null)).get0() : 0d; return getRoleFit() != null && getRoleFit().get(null) != null ? ((Tuple.T3<Double, ColorCode, Double>)getRoleFit().get(null)).get0() : 0d;
} }
public Long getCultureFitScore() public Long getCultureFitScore()
...@@ -375,26 +375,9 @@ public class JobApplication extends BaseJobApplication ...@@ -375,26 +375,9 @@ public class JobApplication extends BaseJobApplication
return score >= 80 ? "green" : (score >= 60 ? "yellow" : "red-b"); return score >= 80 ? "green" : (score >= 60 ? "yellow" : "red-b");
} }
//This will return relative percentage considering topper as 100%
public Double getRoleFitPercentage() public Double getRoleFitPercentage()
{ {
Double myScore = getRoleFitScore(); return getRoleFit() != null && getRoleFit().get(null) != null ? ((Tuple.T3<Double, ColorCode, Double>)getRoleFit().get(null)).get2() : 0d;
if(myScore > 0 && getCandidate() != null && getJob() != null && getJob().getLevel() != null)
{
TestAnalysis testAnalysis = getCandidate().getTestAnalysisFor(getJob().getLevel());
if(testAnalysis != null)
{
Double topScore = AnalysisEngine.getSuitabilityScore(testAnalysis, true).get0();
if(topScore > 0)
{
return NullArith.round(NullArith.divide(NullArith.multiply(myScore, 100), topScore), 2);
}
}
}
return 0d;
} }
public List<AppProcessOption> getValidProcessOptions() public List<AppProcessOption> getValidProcessOptions()
......
...@@ -44,6 +44,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr ...@@ -44,6 +44,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
private String dummyCity; private String dummyCity;
private State dummyState; private State dummyState;
private Countries dummyCountry; private Countries dummyCountry;
private Boolean dummyIsManuallyClosed;
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
...@@ -62,6 +63,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr ...@@ -62,6 +63,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
private static final DefaultAttributeHelper HELPER_City = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper HELPER_City = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper HELPER_State = new EnumeratedAttributeHelper (State.FACTORY_State); private static final EnumeratedAttributeHelper HELPER_State = new EnumeratedAttributeHelper (State.FACTORY_State);
private static final EnumeratedAttributeHelper HELPER_Country = new EnumeratedAttributeHelper (Countries.FACTORY_Countries); private static final EnumeratedAttributeHelper HELPER_Country = new EnumeratedAttributeHelper (Countries.FACTORY_Countries);
private static final DefaultAttributeHelper HELPER_IsManuallyClosed = DefaultAttributeHelper.INSTANCE;
...@@ -83,10 +85,11 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr ...@@ -83,10 +85,11 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
dummyCity = (String)(HELPER_City.initialise (dummyCity)); dummyCity = (String)(HELPER_City.initialise (dummyCity));
dummyState = (State)(HELPER_State.initialise (dummyState)); dummyState = (State)(HELPER_State.initialise (dummyState));
dummyCountry = (Countries)(HELPER_Country.initialise (dummyCountry)); dummyCountry = (Countries)(HELPER_Country.initialise (dummyCountry));
dummyIsManuallyClosed = (Boolean)(HELPER_IsManuallyClosed.initialise (dummyIsManuallyClosed));
} }
private String SELECT_COLUMNS = "{PREFIX}tl_job.object_id as id, {PREFIX}tl_job.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_job.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_job.job_title, {PREFIX}tl_job.job_description, {PREFIX}tl_job.job_status, {PREFIX}tl_job.open_date, {PREFIX}tl_job.apply_by, {PREFIX}tl_job.include_assessment_criteria, {PREFIX}tl_job.assessment_type, {PREFIX}tl_job.random_key, {PREFIX}tl_job.job_type, {PREFIX}tl_job.ref_number, {PREFIX}tl_job.last_status_change_date, {PREFIX}tl_job.remote, {PREFIX}tl_job.city, {PREFIX}tl_job.state, {PREFIX}tl_job.country, {PREFIX}tl_job.level_id, {PREFIX}tl_job.client_id, {PREFIX}tl_job.company_user_id, {PREFIX}tl_job.shortened_url_id, 1 AS commasafe "; private String SELECT_COLUMNS = "{PREFIX}tl_job.object_id as id, {PREFIX}tl_job.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_job.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_job.job_title, {PREFIX}tl_job.job_description, {PREFIX}tl_job.job_status, {PREFIX}tl_job.open_date, {PREFIX}tl_job.apply_by, {PREFIX}tl_job.include_assessment_criteria, {PREFIX}tl_job.assessment_type, {PREFIX}tl_job.random_key, {PREFIX}tl_job.job_type, {PREFIX}tl_job.ref_number, {PREFIX}tl_job.last_status_change_date, {PREFIX}tl_job.remote, {PREFIX}tl_job.city, {PREFIX}tl_job.state, {PREFIX}tl_job.country, {PREFIX}tl_job.manually_closed, {PREFIX}tl_job.level_id, {PREFIX}tl_job.client_id, {PREFIX}tl_job.company_user_id, {PREFIX}tl_job.shortened_url_id, 1 AS commasafe ";
private String SELECT_JOINS = ""; private String SELECT_JOINS = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
...@@ -152,6 +155,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr ...@@ -152,6 +155,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
!tl_jobPSet.containsAttrib(Job.FIELD_City)|| !tl_jobPSet.containsAttrib(Job.FIELD_City)||
!tl_jobPSet.containsAttrib(Job.FIELD_State)|| !tl_jobPSet.containsAttrib(Job.FIELD_State)||
!tl_jobPSet.containsAttrib(Job.FIELD_Country)|| !tl_jobPSet.containsAttrib(Job.FIELD_Country)||
!tl_jobPSet.containsAttrib(Job.FIELD_IsManuallyClosed)||
!tl_jobPSet.containsAttrib(Job.SINGLEREFERENCE_Level)|| !tl_jobPSet.containsAttrib(Job.SINGLEREFERENCE_Level)||
!tl_jobPSet.containsAttrib(Job.SINGLEREFERENCE_Client)|| !tl_jobPSet.containsAttrib(Job.SINGLEREFERENCE_Client)||
!tl_jobPSet.containsAttrib(Job.SINGLEREFERENCE_CompanyUser)|| !tl_jobPSet.containsAttrib(Job.SINGLEREFERENCE_CompanyUser)||
...@@ -235,10 +239,10 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr ...@@ -235,10 +239,10 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
{ {
int rowsUpdated = executeStatement (sqlMgr, int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_job " + "UPDATE {PREFIX}tl_job " +
"SET job_title = ?, job_description = ?, job_status = ?, open_date = ?, apply_by = ?, include_assessment_criteria = ?, assessment_type = ?, random_key = ?, job_type = ?, ref_number = ?, last_status_change_date = ?, remote = ?, city = ?, state = ?, country = ?, level_id = ? , client_id = ? , company_user_id = ? , shortened_url_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " + "SET job_title = ?, job_description = ?, job_status = ?, open_date = ?, apply_by = ?, include_assessment_criteria = ?, assessment_type = ?, random_key = ?, job_type = ?, ref_number = ?, last_status_change_date = ?, remote = ?, city = ?, state = ?, country = ?, manually_closed = ?, level_id = ? , client_id = ? , company_user_id = ? , shortened_url_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_job.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ", "WHERE tl_job.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_JobTitle.getForSQL(dummyJobTitle, tl_jobPSet.getAttrib (Job.FIELD_JobTitle))).listEntry (HELPER_JobDescription.getForSQL(dummyJobDescription, tl_jobPSet.getAttrib (Job.FIELD_JobDescription))).listEntry (HELPER_JobStatus.getForSQL(dummyJobStatus, tl_jobPSet.getAttrib (Job.FIELD_JobStatus))).listEntry (HELPER_OpenDate.getForSQL(dummyOpenDate, tl_jobPSet.getAttrib (Job.FIELD_OpenDate))).listEntry (HELPER_ApplyBy.getForSQL(dummyApplyBy, tl_jobPSet.getAttrib (Job.FIELD_ApplyBy))).listEntry (HELPER_IncludeAssessmentCriteria.getForSQL(dummyIncludeAssessmentCriteria, tl_jobPSet.getAttrib (Job.FIELD_IncludeAssessmentCriteria))).listEntry (HELPER_AssessmentType.getForSQL(dummyAssessmentType, tl_jobPSet.getAttrib (Job.FIELD_AssessmentType))).listEntry (HELPER_RandomKey.getForSQL(dummyRandomKey, tl_jobPSet.getAttrib (Job.FIELD_RandomKey))).listEntry (HELPER_JobType.getForSQL(dummyJobType, tl_jobPSet.getAttrib (Job.FIELD_JobType))).listEntry (HELPER_ReferenceNumber.getForSQL(dummyReferenceNumber, tl_jobPSet.getAttrib (Job.FIELD_ReferenceNumber))).listEntry (HELPER_LastStatusChangeDate.getForSQL(dummyLastStatusChangeDate, tl_jobPSet.getAttrib (Job.FIELD_LastStatusChangeDate))).listEntry (HELPER_Remote.getForSQL(dummyRemote, tl_jobPSet.getAttrib (Job.FIELD_Remote))).listEntry (HELPER_City.getForSQL(dummyCity, tl_jobPSet.getAttrib (Job.FIELD_City))).listEntry (HELPER_State.getForSQL(dummyState, tl_jobPSet.getAttrib (Job.FIELD_State))).listEntry (HELPER_Country.getForSQL(dummyCountry, tl_jobPSet.getAttrib (Job.FIELD_Country))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Client)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_CompanyUser)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_ShortenedURL)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray()); CollectionUtils.listEntry (HELPER_JobTitle.getForSQL(dummyJobTitle, tl_jobPSet.getAttrib (Job.FIELD_JobTitle))).listEntry (HELPER_JobDescription.getForSQL(dummyJobDescription, tl_jobPSet.getAttrib (Job.FIELD_JobDescription))).listEntry (HELPER_JobStatus.getForSQL(dummyJobStatus, tl_jobPSet.getAttrib (Job.FIELD_JobStatus))).listEntry (HELPER_OpenDate.getForSQL(dummyOpenDate, tl_jobPSet.getAttrib (Job.FIELD_OpenDate))).listEntry (HELPER_ApplyBy.getForSQL(dummyApplyBy, tl_jobPSet.getAttrib (Job.FIELD_ApplyBy))).listEntry (HELPER_IncludeAssessmentCriteria.getForSQL(dummyIncludeAssessmentCriteria, tl_jobPSet.getAttrib (Job.FIELD_IncludeAssessmentCriteria))).listEntry (HELPER_AssessmentType.getForSQL(dummyAssessmentType, tl_jobPSet.getAttrib (Job.FIELD_AssessmentType))).listEntry (HELPER_RandomKey.getForSQL(dummyRandomKey, tl_jobPSet.getAttrib (Job.FIELD_RandomKey))).listEntry (HELPER_JobType.getForSQL(dummyJobType, tl_jobPSet.getAttrib (Job.FIELD_JobType))).listEntry (HELPER_ReferenceNumber.getForSQL(dummyReferenceNumber, tl_jobPSet.getAttrib (Job.FIELD_ReferenceNumber))).listEntry (HELPER_LastStatusChangeDate.getForSQL(dummyLastStatusChangeDate, tl_jobPSet.getAttrib (Job.FIELD_LastStatusChangeDate))).listEntry (HELPER_Remote.getForSQL(dummyRemote, tl_jobPSet.getAttrib (Job.FIELD_Remote))).listEntry (HELPER_City.getForSQL(dummyCity, tl_jobPSet.getAttrib (Job.FIELD_City))).listEntry (HELPER_State.getForSQL(dummyState, tl_jobPSet.getAttrib (Job.FIELD_State))).listEntry (HELPER_Country.getForSQL(dummyCountry, tl_jobPSet.getAttrib (Job.FIELD_Country))).listEntry (HELPER_IsManuallyClosed.getForSQL(dummyIsManuallyClosed, tl_jobPSet.getAttrib (Job.FIELD_IsManuallyClosed))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Client)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_CompanyUser)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_ShortenedURL)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1) if (rowsUpdated != 1)
{ {
...@@ -619,6 +623,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr ...@@ -619,6 +623,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
tl_jobPSet.setAttrib(Job.FIELD_City, HELPER_City.getFromRS(dummyCity, r, "city")); tl_jobPSet.setAttrib(Job.FIELD_City, HELPER_City.getFromRS(dummyCity, r, "city"));
tl_jobPSet.setAttrib(Job.FIELD_State, HELPER_State.getFromRS(dummyState, r, "state")); tl_jobPSet.setAttrib(Job.FIELD_State, HELPER_State.getFromRS(dummyState, r, "state"));
tl_jobPSet.setAttrib(Job.FIELD_Country, HELPER_Country.getFromRS(dummyCountry, r, "country")); tl_jobPSet.setAttrib(Job.FIELD_Country, HELPER_Country.getFromRS(dummyCountry, r, "country"));
tl_jobPSet.setAttrib(Job.FIELD_IsManuallyClosed, HELPER_IsManuallyClosed.getFromRS(dummyIsManuallyClosed, r, "manually_closed"));
tl_jobPSet.setAttrib(Job.SINGLEREFERENCE_Level, r.getObject ("level_id")); tl_jobPSet.setAttrib(Job.SINGLEREFERENCE_Level, r.getObject ("level_id"));
tl_jobPSet.setAttrib(Job.SINGLEREFERENCE_Client, r.getObject ("client_id")); tl_jobPSet.setAttrib(Job.SINGLEREFERENCE_Client, r.getObject ("client_id"));
...@@ -640,10 +645,10 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr ...@@ -640,10 +645,10 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
{ {
executeStatement (sqlMgr, executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_job " + "INSERT INTO {PREFIX}tl_job " +
" (job_title, job_description, job_status, open_date, apply_by, include_assessment_criteria, assessment_type, random_key, job_type, ref_number, last_status_change_date, remote, city, state, country, level_id, client_id, company_user_id, shortened_url_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " + " (job_title, job_description, job_status, open_date, apply_by, include_assessment_criteria, assessment_type, random_key, job_type, ref_number, last_status_change_date, remote, city, state, country, manually_closed, level_id, client_id, company_user_id, shortened_url_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
"VALUES " + "VALUES " +
" (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")", " (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_JobTitle.getForSQL(dummyJobTitle, tl_jobPSet.getAttrib (Job.FIELD_JobTitle))).listEntry (HELPER_JobDescription.getForSQL(dummyJobDescription, tl_jobPSet.getAttrib (Job.FIELD_JobDescription))).listEntry (HELPER_JobStatus.getForSQL(dummyJobStatus, tl_jobPSet.getAttrib (Job.FIELD_JobStatus))).listEntry (HELPER_OpenDate.getForSQL(dummyOpenDate, tl_jobPSet.getAttrib (Job.FIELD_OpenDate))).listEntry (HELPER_ApplyBy.getForSQL(dummyApplyBy, tl_jobPSet.getAttrib (Job.FIELD_ApplyBy))).listEntry (HELPER_IncludeAssessmentCriteria.getForSQL(dummyIncludeAssessmentCriteria, tl_jobPSet.getAttrib (Job.FIELD_IncludeAssessmentCriteria))).listEntry (HELPER_AssessmentType.getForSQL(dummyAssessmentType, tl_jobPSet.getAttrib (Job.FIELD_AssessmentType))).listEntry (HELPER_RandomKey.getForSQL(dummyRandomKey, tl_jobPSet.getAttrib (Job.FIELD_RandomKey))).listEntry (HELPER_JobType.getForSQL(dummyJobType, tl_jobPSet.getAttrib (Job.FIELD_JobType))).listEntry (HELPER_ReferenceNumber.getForSQL(dummyReferenceNumber, tl_jobPSet.getAttrib (Job.FIELD_ReferenceNumber))).listEntry (HELPER_LastStatusChangeDate.getForSQL(dummyLastStatusChangeDate, tl_jobPSet.getAttrib (Job.FIELD_LastStatusChangeDate))).listEntry (HELPER_Remote.getForSQL(dummyRemote, tl_jobPSet.getAttrib (Job.FIELD_Remote))).listEntry (HELPER_City.getForSQL(dummyCity, tl_jobPSet.getAttrib (Job.FIELD_City))).listEntry (HELPER_State.getForSQL(dummyState, tl_jobPSet.getAttrib (Job.FIELD_State))).listEntry (HELPER_Country.getForSQL(dummyCountry, tl_jobPSet.getAttrib (Job.FIELD_Country))) .listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Client)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_CompanyUser)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_ShortenedURL)))) .listEntry (objectID.longID ()).toList().toArray()); CollectionUtils.listEntry (HELPER_JobTitle.getForSQL(dummyJobTitle, tl_jobPSet.getAttrib (Job.FIELD_JobTitle))).listEntry (HELPER_JobDescription.getForSQL(dummyJobDescription, tl_jobPSet.getAttrib (Job.FIELD_JobDescription))).listEntry (HELPER_JobStatus.getForSQL(dummyJobStatus, tl_jobPSet.getAttrib (Job.FIELD_JobStatus))).listEntry (HELPER_OpenDate.getForSQL(dummyOpenDate, tl_jobPSet.getAttrib (Job.FIELD_OpenDate))).listEntry (HELPER_ApplyBy.getForSQL(dummyApplyBy, tl_jobPSet.getAttrib (Job.FIELD_ApplyBy))).listEntry (HELPER_IncludeAssessmentCriteria.getForSQL(dummyIncludeAssessmentCriteria, tl_jobPSet.getAttrib (Job.FIELD_IncludeAssessmentCriteria))).listEntry (HELPER_AssessmentType.getForSQL(dummyAssessmentType, tl_jobPSet.getAttrib (Job.FIELD_AssessmentType))).listEntry (HELPER_RandomKey.getForSQL(dummyRandomKey, tl_jobPSet.getAttrib (Job.FIELD_RandomKey))).listEntry (HELPER_JobType.getForSQL(dummyJobType, tl_jobPSet.getAttrib (Job.FIELD_JobType))).listEntry (HELPER_ReferenceNumber.getForSQL(dummyReferenceNumber, tl_jobPSet.getAttrib (Job.FIELD_ReferenceNumber))).listEntry (HELPER_LastStatusChangeDate.getForSQL(dummyLastStatusChangeDate, tl_jobPSet.getAttrib (Job.FIELD_LastStatusChangeDate))).listEntry (HELPER_Remote.getForSQL(dummyRemote, tl_jobPSet.getAttrib (Job.FIELD_Remote))).listEntry (HELPER_City.getForSQL(dummyCity, tl_jobPSet.getAttrib (Job.FIELD_City))).listEntry (HELPER_State.getForSQL(dummyState, tl_jobPSet.getAttrib (Job.FIELD_State))).listEntry (HELPER_Country.getForSQL(dummyCountry, tl_jobPSet.getAttrib (Job.FIELD_Country))).listEntry (HELPER_IsManuallyClosed.getForSQL(dummyIsManuallyClosed, tl_jobPSet.getAttrib (Job.FIELD_IsManuallyClosed))) .listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Client)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_CompanyUser)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_ShortenedURL)))) .listEntry (objectID.longID ()).toList().toArray());
tl_jobPSet.setStatus (PersistentSetStatus.PROCESSED); tl_jobPSet.setStatus (PersistentSetStatus.PROCESSED);
} }
......
package performa.orm; package performa.orm;
import oneit.utils.math.NullArith;
public class LevelNormalisation extends BaseLevelNormalisation public class LevelNormalisation extends BaseLevelNormalisation
{ {
...@@ -16,4 +18,9 @@ public class LevelNormalisation extends BaseLevelNormalisation ...@@ -16,4 +18,9 @@ public class LevelNormalisation extends BaseLevelNormalisation
{ {
return "LevelNormalisation"; return "LevelNormalisation";
} }
public Double getRoleFitScore(Double weightedScore)
{
return NullArith.round(((10 * ((weightedScore - getWghtMeanScore()) / getWghtStddevScore())) + 50), 2);
}
} }
\ No newline at end of file
...@@ -22,7 +22,7 @@ public class AssessmentType extends AbstractEnumerated ...@@ -22,7 +22,7 @@ public class AssessmentType extends AbstractEnumerated
public static final AssessmentType COMPREHENSIVE = new AssessmentType ("COMPREHENSIVE", "COMPREHENSIVE", "Talentology Comprehensive", false); public static final AssessmentType COMPREHENSIVE = new AssessmentType ("COMPREHENSIVE", "COMPREHENSIVE", "Talentology Comprehensive", false);
public static final AssessmentType EXPRESS = new AssessmentType ("EXPRESS", "EXPRESS", "Talentology Express", true); public static final AssessmentType EXPRESS = new AssessmentType ("EXPRESS", "EXPRESS", "Talentology Express", false);
private static final AssessmentType[] allAssessmentTypes = private static final AssessmentType[] allAssessmentTypes =
new AssessmentType[] { COMPREHENSIVE,EXPRESS}; new AssessmentType[] { COMPREHENSIVE,EXPRESS};
...@@ -138,7 +138,7 @@ public class AssessmentType extends AbstractEnumerated ...@@ -138,7 +138,7 @@ public class AssessmentType extends AbstractEnumerated
COMPREHENSIVE.QuestionDetails = " (250 Questions - 20 Minutes)"; COMPREHENSIVE.QuestionDetails = " (250 Questions - 20 Minutes)";
COMPREHENSIVE.TestDescr = "Comprehensive Assessment"; COMPREHENSIVE.TestDescr = "Comprehensive Assessment";
EXPRESS.HeaderDesc = ""; EXPRESS.HeaderDesc = "";
EXPRESS.AdditionalDesc = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut."; EXPRESS.AdditionalDesc = "";
EXPRESS.QuestionDetails = " (30 Questions - 5 Minutes)"; EXPRESS.QuestionDetails = " (30 Questions - 5 Minutes)";
EXPRESS.TestDescr = "Express Assessment"; EXPRESS.TestDescr = "Express Assessment";
......
...@@ -13,8 +13,8 @@ ...@@ -13,8 +13,8 @@
QuestionDetails='" (250 Questions - 20 Minutes)"' QuestionDetails='" (250 Questions - 20 Minutes)"'
TestDescr='"Comprehensive Assessment"'/> TestDescr='"Comprehensive Assessment"'/>
<VALUE name="EXPRESS" description="Talentology Express" HeaderDesc='""' <VALUE name="EXPRESS" description="Talentology Express" HeaderDesc='""'
AdditionalDesc='"Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut."' AdditionalDesc='""'
QuestionDetails='" (30 Questions - 5 Minutes)"' disabled="true" QuestionDetails='" (30 Questions - 5 Minutes)"'
TestDescr='"Express Assessment"'/> TestDescr='"Express Assessment"'/>
</CONSTANT> </CONSTANT>
</ROOT> </ROOT>
\ No newline at end of file
...@@ -413,12 +413,12 @@ public class AnalysisEngine ...@@ -413,12 +413,12 @@ public class AnalysisEngine
return roleFitMap; return roleFitMap;
} }
public static Map<FactorClass, Tuple.T2<Double, ColorCode>> getRoleFitSuitability(Candidate candidate, Level level) public static Map<FactorClass, Tuple.T3<Double, ColorCode, Double>> getRoleFitSuitability(Candidate candidate, Level level)
{ {
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getRoleFitSuitability called for candidate ", candidate, " Level ", level); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getRoleFitSuitability called for candidate ", candidate, " Level ", level);
TestAnalysis testAnalysis = candidate.getTestAnalysisFor(level); TestAnalysis testAnalysis = candidate.getTestAnalysisFor(level);
Map<FactorClass, Tuple.T2<Double, ColorCode>> scoreMap = new HashMap(); Map<FactorClass, Tuple.T3<Double, ColorCode, Double>> scoreMap = new HashMap();
if(testAnalysis != null && testAnalysis.getCandidateClassScoresCount() > 0) if(testAnalysis != null && testAnalysis.getCandidateClassScoresCount() > 0)
{ {
...@@ -429,30 +429,36 @@ public class AnalysisEngine ...@@ -429,30 +429,36 @@ public class AnalysisEngine
CandidateClassScore candidateClassScore = testAnalysis.pipelineTestAnalysis().toCandidateClassScores(candidateClassScoreFilter).val(); CandidateClassScore candidateClassScore = testAnalysis.pipelineTestAnalysis().toCandidateClassScores(candidateClassScoreFilter).val();
ClassNormalisation classNormalisation = level.getClassNormalisationFor(factorClass); ClassNormalisation classNormalisation = level.getClassNormalisationFor(factorClass);
Double score = 0d; Double score = 0d;
Double maxScore = 0d;
Double scorePercentage = 0d;
ColorCode colorCode = null; ColorCode colorCode = null;
if(candidateClassScore != null && classNormalisation != null && NullArith.greaterThan(classNormalisation.getWghtStddevScore(), 0d)) if(candidateClassScore != null && classNormalisation != null && NullArith.greaterThan(classNormalisation.getWghtStddevScore(), 0d))
{ {
score = NullArith.round(((10 * ((candidateClassScore.getWghtdClassScore() - classNormalisation.getWghtMeanScore()) / classNormalisation.getWghtStddevScore())) + 50), 1); score = classNormalisation.getRoleFitScore(candidateClassScore.getWghtdClassScore());
colorCode = candidateClassScore.getColorCode(); maxScore = classNormalisation.getRoleFitScore(candidateClassScore.getMaxWghtdClassScore());
colorCode = candidateClassScore.getColorCode();
scorePercentage = NullArith.round(NullArith.divide(NullArith.multiply(score, 100), maxScore), 2);
} }
scoreMap.put(factorClass, new Tuple.T2(score, colorCode)); scoreMap.put(factorClass, new Tuple.T3(score, colorCode, scorePercentage));
} }
scoreMap.put(null, getSuitabilityScore(testAnalysis, false)); scoreMap.put(null, getSuitabilityScore(testAnalysis));
} }
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getRoleFitSuitability completed for candidate ", candidate, " Level ", level); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getRoleFitSuitability completed for candidate ", candidate, " Level ", level);
return scoreMap; return scoreMap;
} }
public static Tuple.T2<Double, ColorCode> getSuitabilityScore(TestAnalysis testAnalysis, boolean maxScore) public static Tuple.T3<Double, ColorCode, Double> getSuitabilityScore(TestAnalysis testAnalysis)
{ {
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getSuitabilityScore called for testAnalysis ", testAnalysis); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getSuitabilityScore called for testAnalysis ", testAnalysis);
Double totalScore = maxScore ? testAnalysis.getMaxWghtdLevelScore() : testAnalysis.getWghtdLevelScore(); Double rawScore = testAnalysis.getWghtdLevelScore();
Double wghtdMeanScore = 0d; Double wghtdMeanScore = 0d;
Double wghtdStdDevScore = 0d; Double wghtdStdDevScore = 0d;
Double suitabilityScore = 0d; Double suitabilityScore = 0d;
Double maxScore = 0d;
Double suitabilityPercent = 0d;
ColorCode colorCode = null; ColorCode colorCode = null;
LevelNormalisation levelNormalisation = testAnalysis.getLevel().getLevelNormalisation(); LevelNormalisation levelNormalisation = testAnalysis.getLevel().getLevelNormalisation();
...@@ -461,18 +467,20 @@ public class AnalysisEngine ...@@ -461,18 +467,20 @@ public class AnalysisEngine
{ {
wghtdMeanScore = levelNormalisation.getWghtMeanScore(); wghtdMeanScore = levelNormalisation.getWghtMeanScore();
wghtdStdDevScore = levelNormalisation.getWghtStddevScore(); wghtdStdDevScore = levelNormalisation.getWghtStddevScore();
}
if(wghtdStdDevScore > 0d) if(wghtdStdDevScore > 0d)
{ {
suitabilityScore = NullArith.round(((10 * ((totalScore - wghtdMeanScore) / wghtdStdDevScore)) + 50), 2); suitabilityScore = levelNormalisation.getRoleFitScore(rawScore);
maxScore = levelNormalisation.getRoleFitScore(testAnalysis.getMaxWghtdLevelScore());
suitabilityPercent = NullArith.round(NullArith.divide(NullArith.multiply(suitabilityScore, 100), maxScore), 2);
}
} }
if(totalScore >= wghtdMeanScore) if(rawScore >= wghtdMeanScore)
{ {
colorCode = ColorCode.GREEN; colorCode = ColorCode.GREEN;
} }
else if(totalScore < (wghtdMeanScore - wghtdStdDevScore)) else if(rawScore < (wghtdMeanScore - wghtdStdDevScore))
{ {
colorCode = ColorCode.RED; colorCode = ColorCode.RED;
} }
...@@ -482,7 +490,7 @@ public class AnalysisEngine ...@@ -482,7 +490,7 @@ public class AnalysisEngine
} }
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getSuitabilityScore completed for testAnalysis ", testAnalysis, " Score:", suitabilityScore, " Color:", colorCode); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> getSuitabilityScore completed for testAnalysis ", testAnalysis, " Score:", suitabilityScore, " Color:", colorCode);
return new Tuple.T2(suitabilityScore, colorCode); return new Tuple.T3(suitabilityScore, colorCode, suitabilityPercent);
} }
public static Map<FactorLevelLink, Map> getFactorScoreDetails(Candidate candidate, Level level, FactorClass factorClass) public static Map<FactorLevelLink, Map> getFactorScoreDetails(Candidate candidate, Level level, FactorClass factorClass)
......
...@@ -424,7 +424,7 @@ public class Utils ...@@ -424,7 +424,7 @@ public class Utils
+ "?id=" + companyUser.getID() + "?id=" + companyUser.getID()
+ "&key=" + companyUser.getVerificationKey(); + "&key=" + companyUser.getVerificationKey();
Map defaultParams = CollectionUtils.mapEntry("link", link).toMap(); Map defaultParams = CollectionUtils.mapEntry("link", link).toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser); ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser.getUser());
Utils.sendMail(emailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser); Utils.sendMail(emailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser);
...@@ -463,7 +463,7 @@ public class Utils ...@@ -463,7 +463,7 @@ public class Utils
+ "?id=" + companyUser.getID() + "?id=" + companyUser.getID()
+ "&key=" + companyUser.getVerificationKey(); + "&key=" + companyUser.getVerificationKey();
Map defaultParams = CollectionUtils.mapEntry("link", link).toMap(); Map defaultParams = CollectionUtils.mapEntry("link", link).toMap();
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser); ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser.getUser());
Utils.sendMail(emailer, transform, new String[]{companyUser.getUser().getEmail()}, null, companyUser); Utils.sendMail(emailer, transform, new String[]{companyUser.getUser().getEmail()}, null, companyUser);
......
...@@ -849,6 +849,13 @@ span.checkbox.checked + .slider:before {-webkit-transform: translateX(18px);-ms- ...@@ -849,6 +849,13 @@ span.checkbox.checked + .slider:before {-webkit-transform: translateX(18px);-ms-
margin-top: 10px; margin-top: 10px;
font-weight: 500; font-weight: 500;
} }
.btn.btn-primary.largeBtn.greyBtn, .btn.btn-primary.largeBtn.greyBtn:hover
{
background-color: rgba(255, 255, 255, 0.5);
border: solid 1px #dfdfdf;
color: #9b9b9b;
width: 200px;
}
.btn.btn-primary.largeBtn.grey{ .btn.btn-primary.largeBtn.grey{
background-color: #667281; background-color: #667281;
border-color: #667281; border-color: #667281;
...@@ -3353,7 +3360,7 @@ input.add-note-btn:hover{ ...@@ -3353,7 +3360,7 @@ input.add-note-btn:hover{
text-align: center; text-align: center;
font-family: "Usual-Medium"; font-family: "Usual-Medium";
} }
.int-timeline li a:hover { .int-timeline li.has-applicant.inactive a:hover {
color: #ffffff; color: #ffffff;
font-size: 11px; font-size: 11px;
background-color: #4e5964; background-color: #4e5964;
...@@ -3438,7 +3445,7 @@ input.add-note-btn:hover{ ...@@ -3438,7 +3445,7 @@ input.add-note-btn:hover{
width: 96px; width: 96px;
font-family: "Usual-Medium"; font-family: "Usual-Medium";
} }
.unsutable a:hover,.unsutable a:hover span{ .unsutable.has-applicant.inactive a:hover,.unsutable.has-applicant.inactive a:hover span{
color: #ffffff; color: #ffffff;
} }
.unsutable.active a:hover{ .unsutable.active a:hover{
......
...@@ -37,11 +37,11 @@ ...@@ -37,11 +37,11 @@
<FORM name="*.bulkupdate" factory="Participant" class="performa.form.BulkUpdateFP"/> <FORM name="*.bulkupdate" factory="Participant" class="performa.form.BulkUpdateFP"/>
<FORM name="*.navigateBetweenStatus" factory="Participant" class="performa.form.NavigateBetweenStatusFP"/> <FORM name="*.navigateBetweenStatus" factory="Participant" class="performa.form.NavigateBetweenStatusFP"/>
<FORM name="*.sendCompanyUserInvites" factory="Participant" class="performa.form.SendCompanyUserInvitesFP"> <FORM name="*.sendCompanyUserInvites" factory="Participant" class="performa.form.SendCompanyUserInvitesFP">
<OwnerAccountCreatedEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="OwnerAccountCreatedMail"/>
<AccountCreatedEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="AccountCreatedMail"/> <AccountCreatedEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="AccountCreatedMail"/>
<InvitationEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="InvitationMail"/> <InvitationEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="InvitationMail"/>
</FORM> </FORM>
<FORM name="*.sendUserInvites" factory="Participant" class="performa.form.SendUserInvitationFP"> <FORM name="*.sendUserInvites" factory="Participant" class="performa.form.SendUserInvitationFP">
<AccountCreatedEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="AccountCreatedMail"/>
<InvitationEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="InvitationMail"/> <InvitationEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="InvitationMail"/>
</FORM> </FORM>
<FORM name="*.saveUserDetails" factory="Participant" class="performa.form.SaveUserDetailsFP"> <FORM name="*.saveUserDetails" factory="Participant" class="performa.form.SaveUserDetailsFP">
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
String samePage = WebUtils.getSamePageInRenderMode(request, WebUtils.ASSESSMENT_CRITERIA); String samePage = WebUtils.getSamePageInRenderMode(request, WebUtils.ASSESSMENT_CRITERIA);
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.JOB_REVIEW); String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.JOB_REVIEW);
String jobPage = WebUtils.getSamePageInRenderMode(request, "Page");
Debug.assertion(job != null, "Job is null in admin portal create job"); Debug.assertion(job != null, "Job is null in admin portal create job");
...@@ -184,6 +185,10 @@ ...@@ -184,6 +185,10 @@
</oneit:recalcClass> </oneit:recalcClass>
</div> </div>
<div class="text-center"> <div class="text-center">
<oneit:button value="Save as draft" name="saveJob" cssClass="btn btn-primary top-margin-25 largeBtn greyBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", jobPage)
.mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE)
.toMap() %>"/>
<oneit:button value="Review Details" name="gotoPage" cssClass="btn btn-primary top-margin-25 largeBtn" <oneit:button value="Review Details" name="gotoPage" cssClass="btn btn-primary top-margin-25 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
......
...@@ -10,8 +10,10 @@ ...@@ -10,8 +10,10 @@
String firstTab = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String firstTab = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST); String secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST);
String thirdTab = WebUtils.getSamePageInRenderMode(request, WebUtils.UNSUITABLE_APPS); String thirdTab = WebUtils.getSamePageInRenderMode(request, WebUtils.UNSUITABLE_APPS);
int noOfShortlisted = job.getNoOfCandidatesShortlisted();
int noOfUnsuitable = job.getNoOfCandidatesUnsuitable();
int totalCandidates = job.getNoOfCandidatesApplied();
%> %>
<oneit:dynIncluded> <oneit:dynIncluded>
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/> <oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
...@@ -22,21 +24,18 @@ ...@@ -22,21 +24,18 @@
<div class="int-timeline"> <div class="int-timeline">
<ul> <ul>
<li class="<%= tabNumber == "1" ? "active" : "" %>"> <li class="<%= totalCandidates > 0 ? "has-applicant" : "" %> <%= tabNumber == "1" ? "active" : "inactive" %>">
<oneit:button value=" " name="gotoPage" skin="link" <oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", firstTab) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", firstTab)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= job.getNoOfCandidatesApplied() %>" mode="Integer" /> <oneit:toString value="<%= totalCandidates %>" mode="Integer" />
</span> </span>
Applicants Applicants
</oneit:button> </oneit:button>
</li> </li>
<li class="<%= tabNumber == "2" ? "active" : "" %>"> <li class="<%= noOfShortlisted > 0 ? "has-applicant" : "" %> <%= tabNumber == "2" ? "active" : "inactive" %>">
<%
int noOfShortlisted = job.getNoOfCandidatesShortlisted();
%>
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfShortlisted > 0 ? "false" : "true" %>" <oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfShortlisted > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondTab) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondTab)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
...@@ -49,11 +48,8 @@ ...@@ -49,11 +48,8 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="unsutable <%= tabNumber == "3" ? "active" : "" %>"> <div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "" %> <%= tabNumber == "3" ? "active" : "inactive" %>">
<% <oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>"
int noOfUnsuitable = job.getNoOfCandidatesUnsuitable();
%>
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", thirdTab) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", thirdTab)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"> .toMap() %>">
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
.mapEntry("procParams", CollectionUtils.mapEntry("Company", company).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Company", company).toMap())
.toMap() %>"> .toMap() %>">
<span><%= CollectionUtils.equals(company.getCompletedProfile(), Boolean.TRUE) ? "<img src=\"images/right-mark.png\" />" : "1"%></span> <span><%= CollectionUtils.equals(company.getCompletedProfile(), Boolean.TRUE) ? "<img src=\"images/right-mark.png\" />" : "1"%></span>
<div>Company Profile</div> <div>Team Profile</div>
</oneit:button> </oneit:button>
</li> </li>
<li class="<%= tabNumber == "2" ? "active" : ""%>"> <li class="<%= tabNumber == "2" ? "active" : ""%>">
......
...@@ -41,16 +41,15 @@ ...@@ -41,16 +41,15 @@
<% <%
for(Job job: jobs) for(Job job: jobs)
{ {
int shortlisted = job.getNoOfCandidatesShortlisted(); int shortlisted = job.getNoOfCandidatesShortlisted();
int maxShortlist = job.getMaxShortlistApplicants(); int maxShortlist = job.getMaxShortlistApplicants();
String goToPage = shortlisted > 0 ? shortlistPage : nextPage;
nextPage = shortlisted > 0 ? shortlistPage : nextPage;
%> %>
<div class="job-list" id="<%= job.getID() %>"> <div class="job-list" id="<%= job.getID() %>">
<div class="job-row" > <div class="job-row" >
<div class="job-post jl-c eq-second-height" style="height: 107px;"> <div class="job-post jl-c eq-second-height" style="height: 107px;">
<div class="job-post-name"> <div class="job-post-name">
<a href="<%= nextPage+"&JobID="+job.getObjectID() %>"> <a href="<%= goToPage+"&JobID="+job.getObjectID() %>">
<oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML" /> <oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML" />
</a> </a>
</div> </div>
...@@ -92,9 +91,9 @@ ...@@ -92,9 +91,9 @@
<div class="ja-icon"><img src="images/job-list-user.svg"></div> <div class="ja-icon"><img src="images/job-list-user.svg"></div>
<div class="ja-count"> <div class="ja-count">
<oneit:button value=" " name="gotoPage" skin="link" <oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", goToPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"> .toMap() %>" disabled="<%= job.getJobStatus() == JobStatus.DRAFT ? "true" : "false" %>">
<oneit:toString value="<%= job.getNoOfCandidatesApplied() %>" mode="EscapeHTML" nullValue="0"/> <oneit:toString value="<%= job.getNoOfCandidatesApplied() %>" mode="EscapeHTML" nullValue="0"/>
</oneit:button> </oneit:button>
<span class="grey-span">Applicants</span> <span class="grey-span">Applicants</span>
...@@ -117,10 +116,10 @@ ...@@ -117,10 +116,10 @@
</div> </div>
</div> </div>
<div class="ja-count"> <div class="ja-count">
<oneit:button value=" " name="gotoPage" skin="link" <oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", shortlistPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", shortlistPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"> .toMap() %>" disabled="<%= job.getJobStatus() == JobStatus.DRAFT ? "true" : "false" %>">
<oneit:toString value="<%= shortlisted %>" mode="Integer" nullValue="0"/> <oneit:toString value="<%= shortlisted %>" mode="Integer" nullValue="0"/>
</oneit:button> </oneit:button>
/ /
......
...@@ -8,14 +8,14 @@ ...@@ -8,14 +8,14 @@
<% <%
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication"); JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
List<JobApplication> applications = (List<JobApplication>) process.getAttribute("Applications"); List<JobApplication> applications = (List<JobApplication>) process.getAttribute("Applications");
Long prevAppID = (Long) getData(request, "prevAppID"); JobApplication prevApp = (JobApplication) getData(request, "prevApp");
Long nextAppID = (Long) getData(request, "nextAppID"); JobApplication nextApp = (JobApplication) getData(request, "nextApp");
Job job = jobApplication.getJob(); Job job = jobApplication.getJob();
Candidate candidate = jobApplication.getCandidate(); Candidate candidate = jobApplication.getCandidate();
String tabText = candidate.getToString(); String tabText = candidate.getToString();
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
Map<FactorClass, Tuple.T2<Double, ColorCode>> roleScoreMap = (Map<FactorClass, Tuple.T2<Double, ColorCode>>)jobApplication.getRoleFit(); Map<FactorClass, Tuple.T3<Double, ColorCode, Double>> roleScoreMap = (Map<FactorClass, Tuple.T3<Double, ColorCode, Double>>)jobApplication.getRoleFit();
%> %>
<script> <script>
function tabToggle(tab, selectDiv) { function tabToggle(tab, selectDiv) {
...@@ -78,9 +78,9 @@ ...@@ -78,9 +78,9 @@
</script> </script>
<div class="main-applicant-content dashboard-content-area v-applicant-area "> <div class="main-applicant-content dashboard-content-area v-applicant-area ">
<div class="applicant-header"> <div class="applicant-header">
<oneit:button name="gotoPage" value=" " cssClass="prev-btn" skin="link" <oneit:button name="gotoPage" value=" " cssClass="prev-btn" skin="link" disabled="<%= prevApp == null ? "true" : "false"%>"
requestAttribs="<%= CollectionUtils.mapEntry("procParams", CollectionUtils.mapEntry("Applications", applications).toMap()) requestAttribs="<%= CollectionUtils.mapEntry("procParams", CollectionUtils.mapEntry("Applications", applications).toMap())
.mapEntry("nextPage", currentPage+"&JobApplicationID="+prevAppID ).toMap() %>" > .mapEntry("nextPage", currentPage+"&JobApplicationID="+ (prevApp != null ? prevApp.getID().toString() : "") ).toMap() %>" >
<img src="images/arrow-left-prev.svg" /> <img src="images/arrow-left-prev.svg" />
</oneit:button> </oneit:button>
<div class="main-appli-name"> <div class="main-appli-name">
...@@ -107,9 +107,9 @@ ...@@ -107,9 +107,9 @@
.mapEntry ("restartProcess", Boolean.TRUE).toMap() %>" /> .mapEntry ("restartProcess", Boolean.TRUE).toMap() %>" />
</span> </span>
</div> </div>
<oneit:button name="gotoPage" value=" " cssClass="next-btn" skin="link" <oneit:button name="gotoPage" value=" " cssClass="next-btn" skin="link" disabled="<%= nextApp == null ? "true" : "false"%>"
requestAttribs="<%= CollectionUtils.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", applications).toMap()) requestAttribs="<%= CollectionUtils.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", applications).toMap())
.mapEntry("nextPage", currentPage+"&JobApplicationID="+nextAppID ).toMap() %>" > .mapEntry("nextPage", currentPage+"&JobApplicationID="+ (nextApp != null ? nextApp.getID().toString() : "") ).toMap() %>" >
<img src="images/arrow-right-next.svg" /> <img src="images/arrow-right-next.svg" />
</oneit:button> </oneit:button>
</div> </div>
...@@ -117,16 +117,16 @@ ...@@ -117,16 +117,16 @@
<div class="applicant-sub-part"> <div class="applicant-sub-part">
<div class="applicant-left"> <div class="applicant-left">
<% <%
Tuple.T2<Double, ColorCode> roleFitData = (jobApplication.getRoleFit()!=null && jobApplication.getRoleFit().get(null)!=null) ? (Tuple.T2<Double, ColorCode>) jobApplication.getRoleFit().get(null) : null; Tuple.T3<Double, ColorCode, Double> roleFitData = (jobApplication.getRoleFit()!=null && jobApplication.getRoleFit().get(null)!=null) ? (Tuple.T3<Double, ColorCode, Double>) jobApplication.getRoleFit().get(null) : null;
String colorClass = "percent-" +(roleFitData!=null ? roleFitData.get1().getCSSClass() : "green"); String colorClass = "percent-" +(roleFitData!=null ? roleFitData.get1().getCSSClass() : "green");
List<FactorScore> factorScores = jobApplication.getRoleAreaOfConcerns(); List<FactorScore> factorScores = jobApplication.getRoleAreaOfConcerns();
List<Tuple.T2> cultureConcerns = jobApplication.getCultureAreaOfConcerns(); List<Tuple.T2> cultureConcerns = jobApplication.getCultureAreaOfConcerns();
%> %>
<div class="applicant-progress"> <div class="applicant-progress">
<div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-6" %> col-xs-12 text-center thr-block role-fit" href="#1a" data-toggle="tab" id="progress1" onClick="tabToggle('#tab1', '.role-fit')"> <div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-6" %> col-xs-12 text-center thr-block role-fit" href="#1a" data-toggle="tab" id="progress1" onClick="tabToggle('#tab1', '.role-fit')">
<label class="progress-label">role fit</label> <label class="progress-label">role fit</label>
<div class="<%= colorClass %> fixed-width"> <div class="<%= colorClass %> fixed-width">
<p style="display:none;"><oneit:toString value="<%= jobApplication.getRoleFitPercentage() %>" mode="TwoDPDouble" nullValue="0"/></p> <p style="display:none;"><oneit:toString value="<%= roleFitData!=null ? roleFitData.get2() : 0d %>" mode="TwoDPDouble" nullValue="0"/></p>
</div> </div>
<div class="row four-label"> <div class="row four-label">
<% <%
...@@ -280,14 +280,14 @@ ...@@ -280,14 +280,14 @@
for(FactorClass factorClass : factorClassDtls.keySet()) for(FactorClass factorClass : factorClassDtls.keySet())
{ {
Map<FactorLevelLink, Map> factorDetails = factorClassDtls.get(factorClass); Map<FactorLevelLink, Map> factorDetails = factorClassDtls.get(factorClass);
Double rating = roleScoreMap.get(factorClass).get0(); Double rating = roleScoreMap.get(factorClass).get2();
ColorCode colorCode = roleScoreMap.get(factorClass).get1(); ColorCode colorCode = roleScoreMap.get(factorClass).get1();
String cssClass = colorCode.getCSSClass(); String cssClass = colorCode.getCSSClass();
%> %>
<div class="main-pro-bar"> <div class="main-pro-bar">
<div class="pro-bar"> <div class="pro-bar">
<span class="appli-label"><oneit:toString value="<%= factorClass %>" mode="EscapeHTML"/></span> <span class="appli-label"><oneit:toString value="<%= factorClass %>" mode="EscapeHTML"/></span>
<span class="appli-percen gray"><oneit:toString value="<%= rating %>" mode="WholeNumber"/></span> <span class="appli-percen gray"><oneit:toString value="<%= rating %>" mode="PercentageWholeNumber"/></span>
<span class="appli-progress-bar"> <span class="appli-progress-bar">
<div class="progress"> <div class="progress">
<div class="progress-bar <%= cssClass %>" role="progressbar" aria-valuenow="<%= rating %>" aria-valuemin="0" aria-valuemax="100" style="width:<%= rating %>%"></div> <div class="progress-bar <%= cssClass %>" role="progressbar" aria-valuenow="<%= rating %>" aria-valuemin="0" aria-valuemax="100" style="width:<%= rating %>%"></div>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
String nextPage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request) + "?showModal=true"; String nextPage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request);
Company company = (Company) process.getAttribute("Company"); Company company = (Company) process.getAttribute("Company");
Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE); Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE);
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<% <%
boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Job", Job.REFERENCE_Job); boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Job", Job.REFERENCE_Job);
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
String jobPage = WebUtils.getSamePageInRenderMode(request, "Page");
Debug.assertion(job != null, "Job is null in admin portal create job"); Debug.assertion(job != null, "Job is null in admin portal create job");
...@@ -101,6 +102,10 @@ ...@@ -101,6 +102,10 @@
</div> </div>
</div> </div>
<div class="text-center"> <div class="text-center">
<oneit:button value="Save as draft" name="saveJob" cssClass="btn btn-primary largeBtn greyBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", jobPage)
.mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE)
.toMap() %>"/>
<oneit:button value="Proceed to Role" name="gotoPage" cssClass="btn btn-primary largeBtn" <oneit:button value="Proceed to Role" name="gotoPage" cssClass="btn btn-primary largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
......
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.WORKPLACE_CULTURE); String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.WORKPLACE_CULTURE);
String jobPage = WebUtils.getSamePageInRenderMode(request, "Page");
Debug.assertion(job != null, "Job is null in admin portal create job"); Debug.assertion(job != null, "Job is null in admin portal create job");
%> %>
<script> <script>
...@@ -53,11 +54,6 @@ ...@@ -53,11 +54,6 @@
for(AssessmentType assessmentType : AssessmentType.getAssessmentTypeArray()) for(AssessmentType assessmentType : AssessmentType.getAssessmentTypeArray())
{ {
if(assessmentType.getDisabled() == Boolean.TRUE)
{
continue;
}
String assessmentTypeId = assessmentType.getName(); String assessmentTypeId = assessmentType.getName();
String selectedStr = CollectionUtils.equals(assessmentTypeValue, assessmentTypeId) ? "checked" : ""; String selectedStr = CollectionUtils.equals(assessmentTypeValue, assessmentTypeId) ? "checked" : "";
%> %>
...@@ -108,6 +104,10 @@ ...@@ -108,6 +104,10 @@
} }
%> %>
<div class="text-center"> <div class="text-center">
<oneit:button value="Save as draft" name="saveJob" cssClass="btn btn-primary top-margin-37 largeBtn greyBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", jobPage)
.mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE)
.toMap() %>"/>
<oneit:button value="Proceed to Culture" name="gotoPage" cssClass="btn btn-primary top-margin-37 largeBtn" <oneit:button value="Proceed to Culture" name="gotoPage" cssClass="btn btn-primary top-margin-37 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
......
...@@ -29,11 +29,11 @@ ...@@ -29,11 +29,11 @@
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/> <oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<h1 class="page-title review-title">Review Job</h1> <h1 class="page-title">Review Job</h1>
<div class="page-subtitle-"> <!-- <div class="page-subtitle-">
<span class="pull-right plan-link"> Post multiple jobs per month? <a href="#">See our plans</a></span> <span class="pull-right plan-link"> Post multiple jobs per month? <a href="#">See our plans</a></span>
</div> </div>-->
<oneit:dynInclude page="/extensions/adminportal/inc/job_main_tabs.jsp" PageNumber="5" data="<%= CollectionUtils.EMPTY_MAP%>"/> <oneit:dynInclude page="/extensions/adminportal/inc/job_main_tabs.jsp" PageNumber="5" data="<%= CollectionUtils.EMPTY_MAP%>"/>
...@@ -206,7 +206,7 @@ ...@@ -206,7 +206,7 @@
<% } %> <% } %>
<div class="text-center"> <div class="text-center">
<oneit:button value="Save as Draft and go to your jobs" name="save" cssClass="btn btn-primary btn-gray largeBtn" <oneit:button value="Save as Draft and go to your jobs" name="saveJob" cssClass="btn btn-primary btn-gray largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", jobsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", jobsPage)
.mapEntry ("restartProcess", Boolean.TRUE) .mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job")) .mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
......
...@@ -10,9 +10,14 @@ ...@@ -10,9 +10,14 @@
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String shortlistPage = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST); String shortlistPage = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST);
String homePage = WebUtils.getSamePageInRenderMode(request, "Page"); String homePage = WebUtils.getSamePageInRenderMode(request, "Page");
JobStatus jobStatus = (JobStatus) session.getAttribute("JobStatus"); JobStatus jobStatus = process.getAttribute("JobStatus") != null ? (JobStatus) process.getAttribute("JobStatus") : (JobStatus) session.getAttribute("JobStatus");
JobSortOption jobSortOpt = (JobSortOption) process.getAttribute("JobSortOption"); JobSortOption jobSortOpt = (JobSortOption) process.getAttribute("JobSortOption");
if(process.getAttribute("JobStatus") != null)
{
session.setAttribute("JobStatus", jobStatus);
}
if( request.getParameter("JobSortOption") != null) if( request.getParameter("JobSortOption") != null)
{ {
jobSortOpt = JobSortOption.forName((String) request.getParameter("JobSortOption")); jobSortOpt = JobSortOption.forName((String) request.getParameter("JobSortOption"));
...@@ -75,22 +80,29 @@ ...@@ -75,22 +80,29 @@
%> %>
</ul> </ul>
</div> </div>
<div class="shorting-dropdown"> <%
<span class="order-label">order by</span> if(jobs.length > 1)
<select class="form-control" onChange="location=this.value"> {
<% %>
for (JobSortOption sortOption : JobSortOption.getJobSortOptionArray()) <div class="shorting-dropdown">
{ <span class="order-label">order by</span>
String optionLink = homePage + "&JobSortOption=" + sortOption.getName() ; <select class="form-control" onChange="location=this.value">
%> <%
<option <%= (jobSortOpt != null && jobSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>"> for (JobSortOption sortOption : JobSortOption.getJobSortOptionArray())
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/> {
</option> String optionLink = homePage + "&JobSortOption=" + sortOption.getName() ;
<% %>
} <option <%= (jobSortOpt != null && jobSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
%> <oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
</select> </option>
</div> <%
}
%>
</select>
</div>
<%
}
%>
</div> </div>
<oneit:dynInclude page="/extensions/adminportal/inc/job_list.jsp" data="<%= CollectionUtils.EMPTY_MAP%>" ShortlistPage="<%= shortlistPage %>" <oneit:dynInclude page="/extensions/adminportal/inc/job_list.jsp" data="<%= CollectionUtils.EMPTY_MAP%>" ShortlistPage="<%= shortlistPage %>"
......
...@@ -208,7 +208,7 @@ ...@@ -208,7 +208,7 @@
<label><oneit:label GUIName="Role" /></label> <label><oneit:label GUIName="Role" /></label>
<oneit:ormEnum obj="<%= company %>" attributeName="RoleType" cssClass="form-control"/> <oneit:ormEnum obj="<%= company %>" attributeName="RoleType" cssClass="form-control"/>
</div> </div>
<oneit:recalcClass htmlTag="div" classScript="company.getUserEmail()== null? 'invite-btn disabled': 'invite-btn enabled'" company="<%= company %>"> <oneit:recalcClass htmlTag="div" classScript="company.isEmailCorrect() ? 'invite-btn enabled': 'invite-btn disabled'" company="<%= company %>">
<oneit:button value="Invite" name="sendUserInvites" cssClass="btn btn-invite" <oneit:button value="Invite" name="sendUserInvites" cssClass="btn btn-invite"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry ("restartProcess", Boolean.TRUE) .mapEntry ("restartProcess", Boolean.TRUE)
......
...@@ -8,6 +8,7 @@ Job.AssessmentTemplateName = Template Name ...@@ -8,6 +8,7 @@ Job.AssessmentTemplateName = Template Name
Job.CultureTemplateName = Template Name Job.CultureTemplateName = Template Name
Job.JobType = Job Type Job.JobType = Job Type
Job.ReferenceNumber = Reference Number Job.ReferenceNumber = Reference Number
Job.State = State or Province
CultureCriteria.Importance = Rate Importance CultureCriteria.Importance = Rate Importance
CultureCriteria.CultureElementRating = Rating CultureCriteria.CultureElementRating = Rating
......
...@@ -53,25 +53,14 @@ ...@@ -53,25 +53,14 @@
String shortlistPage = jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", WebUtils.APPLICANTS_SHORTLIST).toMap()); String shortlistPage = jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", WebUtils.APPLICANTS_SHORTLIST).toMap());
String homePage = WebUtils.getSamePageInRenderMode(request, "Page"); String homePage = WebUtils.getSamePageInRenderMode(request, "Page");
String jobsPage = jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "Page").toMap()); String jobsPage = jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "Page").toMap());
boolean showModal = request.getParameter("showModal") != null ? Boolean.parseBoolean(request.getParameter("showModal")) : false; boolean firstTime = request.getParameter("firstTime") != null ? Boolean.parseBoolean(request.getParameter("firstTime")) : false;
if(showModal)
{
%>
<script>
$(document).ready(function(){
$('#welcomepopup').modal('show');
});
</script>
<%
}
%> %>
<oneit:form name="editJob" method="post" enctype="multipart/form-data"> <oneit:form name="editJob" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area"> <div class="dashboard-content-area">
<div class="dashboard-first-part"> <div class="dashboard-first-part">
<div class="welcome-box"> <div class="welcome-box">
<div class="dashboard-welcome"> <div class="dashboard-welcome">
<div class="welcome-text"> Welcome <br/> back <oneit:toString value="<%= secUser.getFirstName()!=null ? secUser.getFirstName() : secUser.getUserName()%>" mode="EscapeHTML"/>!</div> <div class="welcome-text"> Welcome <br/> <%= firstTime ? "" : "back"%> <oneit:toString value="<%= secUser.getFirstName()!=null ? secUser.getFirstName() : secUser.getUserName()%>" mode="EscapeHTML"/>!</div>
<a class="d-create-job-btn" href="<%= jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", WebUtils.CREATE_JOB).toMap()) %>">Create a Job</a> <a class="d-create-job-btn" href="<%= jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", WebUtils.CREATE_JOB).toMap()) %>">Create a Job</a>
</div> </div>
<div class="col-sm-3 col-xs-12 d-three-box green-light"> <div class="col-sm-3 col-xs-12 d-three-box green-light">
...@@ -149,7 +138,8 @@ ...@@ -149,7 +138,8 @@
</div> </div>
</div> </div>
</oneit:form> </oneit:form>
<!-- not using -->
<div class="modal fade" id="welcomepopup" role="dialog"> <div class="modal fade" id="welcomepopup" role="dialog">
<div class="modal-dialog welcome-pop-top"> <div class="modal-dialog welcome-pop-top">
<div class="modal-body main-welcome-popup"> <div class="modal-body main-welcome-popup">
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Owner Account Created Mail">
<createSpecificIdentifier factory='String' value='GKHZ94OVGDV0PK8GFPTFKCDUAPBRU3'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="GKHZ94OVGDV0PK8GFPTFKCDUAPBRU3"/>
</articleIdentifiers>
<createdLabel factory="String" value="GKHZ94OVGDV0PK8GFPTFKCDUAPBRU3"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="On Left Menu" factory="Boolean" value="false"/>
<NODE name="On Top Menu" factory="Boolean" value="false"/>
<NODE name="On Footer Left" factory="Boolean" value="false"/>
<NODE name="EmailFrom" factory="String" value="help@talentology.com"/>
<NODE name="EmailSubject" factory="String" value="Welcome to Talentology, ${Company:CompanyName}!"/>
<NODE name="Shortcuts" factory="String" value="OwnerAccountCreatedMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
<NODE name="On Footer Menu" factory="Boolean" value="false"/>
<NODE name="On Footer Right" factory="Boolean" value="false"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Owner Account Created Mail"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>Hi&nbsp;${SecUser:FirstName},</p>
<p>Welcome to Talentology!</p>
<p>Your account&rsquo;s been set up and you&rsquo;re all ready to go. Whenever you sign in to Talentology, be sure to use <strong>${SecUser:UserName}</strong>&nbsp;along with the password that you just created.</p>
<p>And don&rsquo;t worry: If you ever forget your password, you can <a href="${link}">reset it</a> anytime.</p>
<p>Now, let&rsquo;s get going and <a href="${create_job_link}">set up a job</a>!</p>
<p>Thanks,</p>
<p>The Talentology Team</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>Hi&nbsp;${SecUser:FirstName},</p><p>Welcome to Talentology!</p><p>Your account&rsquo;s been set up and you&rsquo;re all ready to go. Whenever you sign in to Talentology, be sure to use <strong>${SecUser:UserName}</strong>&nbsp;along with the password that you just created.</p><p>And don&rsquo;t worry: If you ever forget your password, you can <a href="${link}">reset it</a> anytime.</p><p>Now, let&rsquo;s get going and <a href="${create_job_link}">set up a job</a>!</p><p>Thanks,</p><p>The Talentology Team</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Account Created Mail">
<createSpecificIdentifier factory='String' value='JMZDIPT76HCPJ5FDHSTH0G95R5BZX4'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="JMZDIPT76HCPJ5FDHSTH0G95R5BZX4"/>
</articleIdentifiers>
<createdLabel factory="String" value="JMZDIPT76HCPJ5FDHSTH0G95R5BZX4"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="On Left Menu" factory="Boolean" value="false"/>
<NODE name="On Top Menu" factory="Boolean" value="false"/>
<NODE name="On Footer Left" factory="Boolean" value="false"/>
<NODE name="EmailFrom" factory="String" value="help@talentology.com"/>
<NODE name="EmailSubject" factory="String" value="You've joined ${Company:CompanyName} on Talentology!"/>
<NODE name="Shortcuts" factory="String" value="AccountCreatedMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
<NODE name="On Footer Menu" factory="Boolean" value="false"/>
<NODE name="On Footer Right" factory="Boolean" value="false"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Account Created Mail"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>Hi ${SecUser:FirstName},</p>
<p>Welcome! You&rsquo;re now a full member of the ${Company:CompanyName} team on Talentology!</p>
<p>Your account&rsquo;s been set up and you&rsquo;re all ready to go. Whenever you sign in to Talentology, be sure to use ${SecUser:UserName}&nbsp;along with the password that you just created.</p>
<p>And don&rsquo;t worry: If you ever forget your password, you can <a href="${link}">reset it</a> anytime.</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>Hi ${SecUser:FirstName},</p><p>Welcome! You&rsquo;re now a full member of the ${Company:CompanyName} team on Talentology!</p><p>Your account&rsquo;s been set up and you&rsquo;re all ready to go. Whenever you sign in to Talentology, be sure to use ${SecUser:UserName}&nbsp;along with the password that you just created.</p><p>And don&rsquo;t worry: If you ever forget your password, you can <a href="${link}">reset it</a> anytime.</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Invitation Mail">
<createSpecificIdentifier factory='String' value='UDQKBSOIBW9O2ET72SI93FJJ6SUWF3'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="UDQKBSOIBW9O2ET72SI93FJJ6SUWF3"/>
</articleIdentifiers>
<createdLabel factory="String" value="UDQKBSOIBW9O2ET72SI93FJJ6SUWF3"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="EmailFrom" factory="String" value="help@talentology.com"/>
<NODE name="EmailSubject" factory="String" value="You?ve been invited to join ${Company:CompanyName} on Talentology"/>
<NODE name="Shortcuts" factory="String" value="InvitationMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Invitation Mail"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>${SecUser:FirstName}&nbsp;${SecUser:LastName}&nbsp;has invited you to join the ${Company:CompanyName} team on Talentology.</p>
<p>
<a href="${link}">Click here</a>&nbsp;to accept ${SecUser:FirstName}&rsquo;s invitation.</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>${SecUser:FirstName}&nbsp;${SecUser:LastName}&nbsp;has invited you to join the ${Company:CompanyName} team on Talentology.</p><p>
<a href="${link}">Click here</a>&nbsp;to accept ${SecUser:FirstName}&rsquo;s invitation.</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Reset Code Email">
<createSpecificIdentifier factory='String' value='WFDXIOQKNEMOGB6ZGPF8XV08WZZAHO'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="WFDXIOQKNEMOGB6ZGPF8XV08WZZAHO"/>
</articleIdentifiers>
<createdLabel factory="String" value="WFDXIOQKNEMOGB6ZGPF8XV08WZZAHO"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="EmailFrom" factory="String" value="help@talentology.com"/>
<NODE name="EmailSubject" factory="String" value="Reset your password"/>
<NODE name="Shortcuts" factory="String" value="ResetCodeEmail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Reset Code Email"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>Hi ${SecUser:FirstName},</p>
<p>We&rsquo;ve received a request to reset your password.</p>
<p>If you didn&rsquo;t make the request, just ignore this message. Otherwise, you can reset your password using this link:</p>
<p>
<a href="${url}">Reset your password</a>
</p>
<p>Thanks,</p>
<p>The Talentology Team</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>Hi ${SecUser:FirstName},</p><p>We&rsquo;ve received a request to reset your password.</p><p>If you didn&rsquo;t make the request, just ignore this message. Otherwise, you can reset your password using this link:</p><p>
<a href="${url}">Reset your password</a>
</p><p>Thanks,</p><p>The Talentology Team</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Company Account Verification Mail">
<createSpecificIdentifier factory='String' value='P1U6WNGWG39B7X9W9Q7MX0Q8YAZGOB'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="P1U6WNGWG39B7X9W9Q7MX0Q8YAZGOB"/>
</articleIdentifiers>
<createdLabel factory="String" value="P1U6WNGWG39B7X9W9Q7MX0Q8YAZGOB"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="EmailFrom" factory="String" value="help@talentology.com"/>
<NODE name="EmailSubject" factory="String" value="Please verify your email address"/>
<NODE name="Shortcuts" factory="String" value="CompanyAccountVerificationMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Company Account Verification Mail"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>Hi ${SecUser:FirstName},</p>
<p>Thank you for choosing Talentology! &nbsp;</p>
<p>You entered <strong>${SecUser:UserName}</strong> as your email address for your Talentology account. Please verify this email address by clicking this link:</p>
<p>
<a href="${link}">Verify now</a>
</p>
<p>Thanks,</p>
<p>The Talentology Team</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>Hi ${SecUser:FirstName},</p><p>Thank you for choosing Talentology! &nbsp;</p><p>You entered <strong>${SecUser:UserName}</strong> as your email address for your Talentology account. Please verify this email address by clicking this link:</p><p>
<a href="${link}">Verify now</a>
</p><p>Thanks,</p><p>The Talentology Team</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Email Changed Mail">
<createSpecificIdentifier factory='String' value='180CNU1NHZCIJRIAM7PWFGKDEHD5QQ'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="180CNU1NHZCIJRIAM7PWFGKDEHD5QQ"/>
</articleIdentifiers>
<createdLabel factory="String" value="180CNU1NHZCIJRIAM7PWFGKDEHD5QQ"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="EmailFrom" factory="String" value="help@talentology.com"/>
<NODE name="EmailSubject" factory="String" value="Please verify your email address (change)"/>
<NODE name="Shortcuts" factory="String" value="EmailChangedMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Email Changed Mail"/>
<NODE name="ShortTitle" factory="String" value="Email Changed Mail"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>Hi&nbsp;${SecUser:FirstName},</p>
<p>You entered <strong>${SecUser:Email}</strong> as your new email address for your Talentology account.</p>
<p>If you didn&rsquo;t make the request, just ignore this message. Otherwise, you can verify this new email address using this link:</p>
<p>
<a href="${link}">Verify now</a>
</p>
<p>Thanks,</p>
<p>The Talentology Team</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>Hi&nbsp;${SecUser:FirstName},</p><p>You entered <strong>${SecUser:Email}</strong> as your new email address for your Talentology account.</p><p>If you didn&rsquo;t make the request, just ignore this message. Otherwise, you can verify this new email address using this link:</p><p>
<a href="${link}">Verify now</a>
</p><p>Thanks,</p><p>The Talentology Team</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Invitation Mail">
<createSpecificIdentifier factory='String' value='UDQKBSOIBW9O2ET72SI93FJJ6SUWF3'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="UDQKBSOIBW9O2ET72SI93FJJ6SUWF3"/>
</articleIdentifiers>
<createdLabel factory="String" value="UDQKBSOIBW9O2ET72SI93FJJ6SUWF3"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="EmailFrom" factory="String" value="help@talentology.com"/>
<NODE name="EmailSubject" factory="String" value="You've been invited to join ${Company:CompanyName} on Talentology"/>
<NODE name="Shortcuts" factory="String" value="InvitationMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Invitation Mail"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>${SecUser:FirstName}&nbsp;${SecUser:LastName}&nbsp;has invited you to join the ${Company:CompanyName} team on Talentology.</p>
<p>
<a href="${link}">Click here</a>&nbsp;to accept ${SecUser:FirstName}&rsquo;s invitation.</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>${SecUser:FirstName}&nbsp;${SecUser:LastName}&nbsp;has invited you to join the ${Company:CompanyName} team on Talentology.</p><p>
<a href="${link}">Click here</a>&nbsp;to accept ${SecUser:FirstName}&rsquo;s invitation.</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
String nextPage = WebUtils.getSamePageInRenderMode(request, "CompanyProfile"); String nextPage = WebUtils.getSamePageInRenderMode(request, "CompanyProfile");
String homePage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request); String homePage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request) + "?firstTime=true"; ;
CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser"); CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser");
SecUser secUser = null; SecUser secUser = null;
Boolean socialLogin = Boolean.FALSE; Boolean socialLogin = Boolean.FALSE;
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
tabNumber="1" tabNumber="1"
sortOption="<%= appSortOpt %>" sortOption="<%= appSortOpt %>"
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
showOrderBy="<%= sortedApplications.size() > 0 %>" showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp"
......
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
tabNumber="1" tabNumber="1"
isShortList="<%= Boolean.TRUE %>" isShortList="<%= Boolean.TRUE %>"
showOrderBy="<%= sortedApplications.size() > 0 %>" showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp"
......
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
tabNumber="2" tabNumber="2"
isShortList="<%= Boolean.TRUE %>" isShortList="<%= Boolean.TRUE %>"
showOrderBy="<%= sortedApplications.size() > 0 %>" showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
Integer overallRank = jobApplication.getOverallRank(); Integer overallRank = jobApplication.getOverallRank();
Boolean isTopRank = CollectionUtils.equals(overallRank, 1); Boolean isTopRank = CollectionUtils.equals(overallRank, 1);
Map<FactorClass, Tuple.T2<Double, ColorCode>> roleScoreMap = (Map<FactorClass, Tuple.T2<Double, ColorCode>>)jobApplication.getRoleFit(); Map<FactorClass, Tuple.T3<Double, ColorCode, Double>> roleScoreMap = (Map<FactorClass, Tuple.T3<Double, ColorCode, Double>>)jobApplication.getRoleFit();
%> %>
<div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> "> <div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> ">
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this--> <!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
...@@ -157,7 +157,7 @@ ...@@ -157,7 +157,7 @@
<oneit:toString value="<%= factorClass %>" mode="EscapeHTML"/> <oneit:toString value="<%= factorClass %>" mode="EscapeHTML"/>
</div> </div>
<div class="detail-no green"> <div class="detail-no green">
<oneit:toString value="<%= roleScoreMap.get(factorClass).get0() %>" mode="PercentageWholeNumber"/> <oneit:toString value="<%= roleScoreMap.get(factorClass).get2() %>" mode="PercentageWholeNumber"/>
</div> </div>
</div> </div>
<% <%
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
<oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp"
sortOption="<%= appSortOpt %>" sortOption="<%= appSortOpt %>"
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
showOrderBy="<%= sortedApplications.size() > 0 %>" showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp"
......
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
sortOption="<%= appSortOpt %>" sortOption="<%= appSortOpt %>"
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
tabNumber="2" tabNumber="2"
showOrderBy="<%= sortedApplications.size() > 0 %>" showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
......
...@@ -34,8 +34,8 @@ ...@@ -34,8 +34,8 @@
int appPosition = applications.indexOf(jobApplication); int appPosition = applications.indexOf(jobApplication);
int prevNo = appPosition - 1; int prevNo = appPosition - 1;
int nextNo = appPosition + 1; int nextNo = appPosition + 1;
JobApplication prevApp = prevNo<0 ? applications.get(applications.size()-1) : applications.get(prevNo); JobApplication prevApp = prevNo<0 ? null : applications.get(prevNo);
JobApplication nextApp = nextNo>=applications.size() ? applications.get(0) : applications.get(nextNo); JobApplication nextApp = nextNo>=applications.size() ? null : applications.get(nextNo);
%> %>
<script type="text/javascript"> <script type="text/javascript">
...@@ -104,8 +104,8 @@ ...@@ -104,8 +104,8 @@
</div> </div>
<div class="second-part v-applicant-area"> <div class="second-part v-applicant-area">
<oneit:dynInclude page="/extensions/adminportal/inc/view_application_tab_applicant.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/view_application_tab_applicant.jsp"
data="<%= CollectionUtils.mapEntry("prevAppID", prevApp.getObjectID()) data="<%= CollectionUtils.mapEntry("prevApp", prevApp)
.mapEntry("nextAppID", nextApp.getObjectID()).toMap() %>"/> .mapEntry("nextApp", nextApp).toMap() %>"/>
</div> </div>
</div> </div>
</oneit:form> </oneit:form>
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.ASSESSMENT_CRITERIA); String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.ASSESSMENT_CRITERIA);
String jobPage = WebUtils.getSamePageInRenderMode(request, "Page");
Debug.assertion(job != null, "Job is null in admin portal create job"); Debug.assertion(job != null, "Job is null in admin portal create job");
...@@ -241,6 +242,10 @@ ...@@ -241,6 +242,10 @@
</div> </div>
</oneit:recalcClass> </oneit:recalcClass>
<div class="text-center"> <div class="text-center">
<oneit:button value="Save as draft" name="saveJob" cssClass="btn btn-primary top-margin-25 largeBtn greyBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", jobPage)
.mapEntry(UpdateMappedObjFP.FAIL_VALIDATION_ERRORS, Boolean.FALSE)
.toMap() %>"/>
<oneit:button value="Proceed to Requirements" name="processCulture" cssClass="btn btn-primary top-margin-25 largeBtn" <oneit:button value="Proceed to Requirements" name="processCulture" cssClass="btn btn-primary top-margin-25 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("Job", job) .mapEntry("Job", job)
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<span><%= isCultureComplete ? "<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 Preferences</div>
</oneit:button> </oneit:button>
</li> </li>
<li class="<%= pageNumber == "3" ? "active" : isAssesmentComplete ? "complate" : ""%>"> <li class="<%= pageNumber == "3" ? "active" : isAssesmentComplete ? "complate" : ""%>">
......
...@@ -83,13 +83,13 @@ ...@@ -83,13 +83,13 @@
<div class="clearfix no-height"></div> <div class="clearfix no-height"></div>
</div> </div>
<div class="show-mobile-title"> <div class="show-mobile-title">
<div class="mobile-title-page">Workplace Preference</div> <div class="mobile-title-page">Workplace Preferences</div>
<div class="mobile-estimated">Estimated time to complete: <div class="mobile-estimated">Estimated time to complete:
<span class="estimated-time-20">&nbsp;5 mins</span> <span class="estimated-time-20">&nbsp;5 mins</span>
</div> </div>
</div> </div>
<div class="section-c-title m-hide"> <div class="section-c-title m-hide">
Workplace Preference Workplace Preferences
<span class="estimated-time">Estimated time to complete: <span class="estimated-time">Estimated time to complete:
<span class="estimated-time-20">&nbsp;5 mins</span> <span class="estimated-time-20">&nbsp;5 mins</span>
</span> </span>
......
<%@ page import="performa.orm.*, performa.orm.types.*, performa.form.*, performa.utils.*"%> <%@ page import="performa.orm.*, performa.orm.types.*, performa.form.*, performa.utils.*"%>
<%@ page import="performa.intercom.utils.*, performa.intercom.resources.User"%>
<%@ page import="oneit.objstore.rdbms.filters.*, oneit.security.jsp.SecUserToNameTransform, oneit.servlets.utils.*, oneit.utils.image.* "%> <%@ page import="oneit.objstore.rdbms.filters.*, oneit.security.jsp.SecUserToNameTransform, oneit.servlets.utils.*, oneit.utils.image.* "%>
-- @AutoRun
ALTER TABLE tl_job ALTER COLUMN level_id DROP NOT NULL;
<?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">tl_job</tableName>
<column name="manually_closed" type="Boolean" nullable="true"/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
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