Commit 76f004ae by Nilu

added cv and cover letter to applicant portal

parent 0aac5f21
......@@ -9,6 +9,7 @@
<column name="object_last_updated_date" type="Date" nullable="false" length="22"/>
<column name="object_created_date" type="Date" nullable="false" length="22"/>
<column name="cv" type="BLOB" nullable="true"/>
<column name="cover_letter" type="BLOB" nullable="true"/>
<column name="application_status" type="String" nullable="false" length="200"/>
<column name="submitted_date" type="Date" nullable="true"/>
<column name="candidate_id" type="Long" length="11" nullable="false"/>
......
......@@ -9,6 +9,7 @@ CREATE TABLE tl_job_application (
object_created_date datetime DEFAULT getdate() NOT NULL
,
cv image NULL,
cover_letter image NULL,
application_status varchar(200) NOT NULL,
submitted_date datetime NULL,
candidate_id numeric(12) NOT NULL,
......
......@@ -10,6 +10,7 @@ CREATE TABLE tl_job_application (
object_created_date date DEFAULT SYSDATE NOT NULL
,
cv blob NULL,
cover_letter blob NULL,
application_status varchar2(200) NOT NULL,
submitted_date date NULL,
candidate_id number(12) NOT NULL,
......
......@@ -10,6 +10,7 @@ CREATE TABLE tl_job_application (
object_created_date timestamp DEFAULT NOW() NOT NULL
,
cv bytea NULL,
cover_letter bytea NULL,
application_status varchar(200) NOT NULL,
submitted_date timestamp NULL,
candidate_id numeric(12) NOT NULL,
......
......@@ -35,6 +35,7 @@ public class ValidateApplicationFP extends SaveFP
ObjectTransaction objTran = ObjectTransaction.getTransaction();
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
boolean fromRequirements = request.getAttribute("fromRequirements") != null ? (boolean) request.getAttribute("fromRequirements"): false;
boolean fromCoverLetter = request.getAttribute("fromCoverLetter") != null ? (boolean) request.getAttribute("fromCoverLetter"): false;
Debug.assertion(jobApplication != null, "No jobApplication found . Call from " + getClass().getName());
......@@ -44,5 +45,11 @@ public class ValidateApplicationFP extends SaveFP
BusinessObjectParser.assertFieldCondition(jobApplication.getJob().getAssessmentCriteriasCount() == application.getAssessmentCriteriaAnswersCount(), jobApplication, JobApplication.FIELD_ObjectID, "completeAssessment", exceptions, true, request);
}
if(fromCoverLetter)
{
BusinessObjectParser.assertFieldCondition(jobApplication.getCV() != null , jobApplication, JobApplication.FIELD_CV, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(jobApplication.getCoverLetter() != null , jobApplication, JobApplication.FIELD_CoverLetter, "mandatory", exceptions, true, request);
}
}
}
\ No newline at end of file
......@@ -156,7 +156,7 @@ public class JobApplication extends BaseJobApplication
public boolean selectionCompleted() //req
{
if(getJob()!=null && getJob().getIncludeAssessmentCriteria()!=Boolean.TRUE)
if(getJob()!= null && getJob().getIncludeAssessmentCriteria() != Boolean.TRUE)
{
return Boolean.TRUE;
}
......
......@@ -19,6 +19,7 @@
<TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE">
<ATTRIB name="CV" type="BinaryContent" dbcol="cv" binaryHandler="loggedin" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE" mandatory="false"/>
<ATTRIB name="CoverLetter" type="BinaryContent" dbcol="cover_letter" binaryHandler="loggedin" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE" mandatory="false"/>
<ATTRIB name="ApplicationStatus" type="ApplicationStatus" dbcol="application_status" attribHelper="EnumeratedAttributeHelper" defaultValue="ApplicationStatus.DRAFT" mandatory="true"/>
<ATTRIB name="SubmittedDate" type="Date" dbcol="submitted_date"/>
......
......@@ -28,12 +28,14 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
// Private attributes corresponding to business object data
private BinaryContent dummyCV;
private BinaryContent dummyCoverLetter;
private ApplicationStatus dummyApplicationStatus;
private Date dummySubmittedDate;
// Static constants corresponding to attribute helpers
private static final BLOBAttributeHelper HELPER_CV = BLOBAttributeHelper.INSTANCE;
private static final BLOBAttributeHelper HELPER_CoverLetter = BLOBAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper HELPER_ApplicationStatus = new EnumeratedAttributeHelper (ApplicationStatus.FACTORY_ApplicationStatus);
private static final DefaultAttributeHelper HELPER_SubmittedDate = DefaultAttributeHelper.INSTANCE;
......@@ -43,12 +45,13 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
public JobApplicationPersistenceMgr ()
{
dummyCV = (BinaryContent)(HELPER_CV.initialise (dummyCV));
dummyCoverLetter = (BinaryContent)(HELPER_CoverLetter.initialise (dummyCoverLetter));
dummyApplicationStatus = (ApplicationStatus)(HELPER_ApplicationStatus.initialise (dummyApplicationStatus));
dummySubmittedDate = (Date)(HELPER_SubmittedDate.initialise (dummySubmittedDate));
}
private String SELECT_COLUMNS = "{PREFIX}tl_job_application.object_id as id, {PREFIX}tl_job_application.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_job_application.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_job_application.cv, {PREFIX}tl_job_application.application_status, {PREFIX}tl_job_application.submitted_date, {PREFIX}tl_job_application.candidate_id, {PREFIX}tl_job_application.job_id, 1 AS commasafe ";
private String SELECT_COLUMNS = "{PREFIX}tl_job_application.object_id as id, {PREFIX}tl_job_application.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_job_application.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_job_application.cv, {PREFIX}tl_job_application.cover_letter, {PREFIX}tl_job_application.application_status, {PREFIX}tl_job_application.submitted_date, {PREFIX}tl_job_application.candidate_id, {PREFIX}tl_job_application.job_id, 1 AS commasafe ";
private String SELECT_JOINS = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
......@@ -100,6 +103,7 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
// Check for persistent sets already prefetched
if (false || !tl_job_applicationPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!tl_job_applicationPSet.containsAttrib(JobApplication.FIELD_CV)||
!tl_job_applicationPSet.containsAttrib(JobApplication.FIELD_CoverLetter)||
!tl_job_applicationPSet.containsAttrib(JobApplication.FIELD_ApplicationStatus)||
!tl_job_applicationPSet.containsAttrib(JobApplication.FIELD_SubmittedDate)||
!tl_job_applicationPSet.containsAttrib(JobApplication.SINGLEREFERENCE_Candidate)||
......@@ -193,10 +197,10 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
{
int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_job_application " +
"SET cv = ?, application_status = ?, submitted_date = ?, candidate_id = ? , job_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"SET cv = ?, cover_letter = ?, application_status = ?, submitted_date = ?, candidate_id = ? , job_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_job_application.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_CV.getForSQL(dummyCV, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_CV))).listEntry (HELPER_ApplicationStatus.getForSQL(dummyApplicationStatus, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_ApplicationStatus))).listEntry (HELPER_SubmittedDate.getForSQL(dummySubmittedDate, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_SubmittedDate))).listEntry (SQLManager.CheckNull((Long)(tl_job_applicationPSet.getAttrib (JobApplication.SINGLEREFERENCE_Candidate)))).listEntry (SQLManager.CheckNull((Long)(tl_job_applicationPSet.getAttrib (JobApplication.SINGLEREFERENCE_Job)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
CollectionUtils.listEntry (HELPER_CV.getForSQL(dummyCV, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_CV))).listEntry (HELPER_CoverLetter.getForSQL(dummyCoverLetter, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_CoverLetter))).listEntry (HELPER_ApplicationStatus.getForSQL(dummyApplicationStatus, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_ApplicationStatus))).listEntry (HELPER_SubmittedDate.getForSQL(dummySubmittedDate, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_SubmittedDate))).listEntry (SQLManager.CheckNull((Long)(tl_job_applicationPSet.getAttrib (JobApplication.SINGLEREFERENCE_Candidate)))).listEntry (SQLManager.CheckNull((Long)(tl_job_applicationPSet.getAttrib (JobApplication.SINGLEREFERENCE_Job)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1)
{
......@@ -573,6 +577,7 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
tl_job_applicationPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));
tl_job_applicationPSet.setAttrib(JobApplication.FIELD_CV, HELPER_CV.getFromRS(dummyCV, r, "cv"));
tl_job_applicationPSet.setAttrib(JobApplication.FIELD_CoverLetter, HELPER_CoverLetter.getFromRS(dummyCoverLetter, r, "cover_letter"));
tl_job_applicationPSet.setAttrib(JobApplication.FIELD_ApplicationStatus, HELPER_ApplicationStatus.getFromRS(dummyApplicationStatus, r, "application_status"));
tl_job_applicationPSet.setAttrib(JobApplication.FIELD_SubmittedDate, HELPER_SubmittedDate.getFromRS(dummySubmittedDate, r, "submitted_date"));
......@@ -594,10 +599,10 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
{
executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_job_application " +
" (cv, application_status, submitted_date, candidate_id, job_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
" (cv, cover_letter, application_status, submitted_date, candidate_id, job_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
"VALUES " +
" (?, ?, ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_CV.getForSQL(dummyCV, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_CV))).listEntry (HELPER_ApplicationStatus.getForSQL(dummyApplicationStatus, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_ApplicationStatus))).listEntry (HELPER_SubmittedDate.getForSQL(dummySubmittedDate, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_SubmittedDate))) .listEntry (SQLManager.CheckNull((Long)(tl_job_applicationPSet.getAttrib (JobApplication.SINGLEREFERENCE_Candidate)))).listEntry (SQLManager.CheckNull((Long)(tl_job_applicationPSet.getAttrib (JobApplication.SINGLEREFERENCE_Job)))) .listEntry (objectID.longID ()).toList().toArray());
" (?, ?, ?, ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_CV.getForSQL(dummyCV, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_CV))).listEntry (HELPER_CoverLetter.getForSQL(dummyCoverLetter, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_CoverLetter))).listEntry (HELPER_ApplicationStatus.getForSQL(dummyApplicationStatus, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_ApplicationStatus))).listEntry (HELPER_SubmittedDate.getForSQL(dummySubmittedDate, tl_job_applicationPSet.getAttrib (JobApplication.FIELD_SubmittedDate))) .listEntry (SQLManager.CheckNull((Long)(tl_job_applicationPSet.getAttrib (JobApplication.SINGLEREFERENCE_Candidate)))).listEntry (SQLManager.CheckNull((Long)(tl_job_applicationPSet.getAttrib (JobApplication.SINGLEREFERENCE_Job)))) .listEntry (objectID.longID ()).toList().toArray());
tl_job_applicationPSet.setStatus (PersistentSetStatus.PROCESSED);
}
......
<?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_application</tableName>
<column name="cover_letter" type="BLOB" nullable="true"/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
......@@ -52,6 +52,7 @@
<INHERITS nodename="StandardJSP"/>
<RenderMode name="Page" preIncludeJSP="extensions/applicantportal/application_outline.jsp"/>
<RenderMode name="CoverLetter" preIncludeJSP="extensions/applicantportal/cv_cover_letter.jsp"/>
<RenderMode name="SelectionCriteria" preIncludeJSP="extensions/applicantportal/selection_criteria.jsp"/>
<RenderMode name="WorkplaceCulture" preIncludeJSP="extensions/applicantportal/workplace_culture.jsp"/>
<RenderMode name="JobMatchAssessment" preIncludeJSP="extensions/applicantportal/job_match_assessment.jsp"/>
......
......@@ -42,26 +42,17 @@
// alreadyCompletedRole = jobApplication.getAlreadyCompletedApplicationForRole()!=null;
// process.setAttribute("AlreadyCompletedRole", alreadyCompletedRole);
// }
Boolean cvCompleted = jobApplication.getCV() != null && jobApplication.getCoverLetter() != null;
Boolean isSelectionComplete = jobApplication.selectionCompleted();
Boolean isCultureComplete = jobApplication.cultureCompleted();
Boolean isAssesmentComplete = jobApplication.assessmentCompleted();
if(!jobApplication.isIncludeAssessmentCriteria())
{
if(!isCultureComplete)
if(!cvCompleted)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
nextPage = WebUtils.getSamePageInRenderMode(request, "CoverLetter");
}
else if(!isAssesmentComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
}
}
else
{
if(!isSelectionComplete)
else if(!isSelectionComplete)
{
nextPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria");
}
......@@ -73,7 +64,6 @@
{
nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
}
}
process.setAttribute("JobApplication", jobApplication);
process.setAttribute("JobApplicationID", jobApplication.getID().longID());
......
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<oneit:dynIncluded>
<%
String currentPage = WebUtils.getSamePageInRenderMode(request, "CoverLetter");
String nextPage = WebUtils.getSamePageInRenderMode(request, "SubmitApplication");
ObjectTransaction objTran = ObjectTransaction.getTransaction();
Long jobAppId = process.getAttribute("JobApplicationID") != null ?
(Long) process.getAttribute("JobApplicationID") :
((JobApplication) process.getAttribute("JobApplication")).getID().longValue();
JobApplication jobApplication = null;
if(jobAppId != null)
{
jobApplication = JobApplication.getJobApplicationByID(objTran, jobAppId);
}
if(jobApplication == null)
{
jobApplication = (JobApplication) process.getAttribute("JobApplication");
}
Debug.assertion(jobApplication != null, "Job Application cannot be null in applicant portal - cv and cover letter ");
Job job = jobApplication.getJob();
if(process.getAttribute("JobApplicationID") == null)
{
process.setAttribute("JobApplicationID" , jobApplication.getID().longValue());
}
if(!jobApplication.selectionCompleted())
{
nextPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria");
}
else if(!jobApplication.cultureCompleted())
{
nextPage = WebUtils.getSamePageInRenderMode(request, "WorkplaceCulture");
}
else if(!jobApplication.assessmentCompleted())
{
nextPage = WebUtils.getSamePageInRenderMode(request, "JobMatchAssessment");
}
%>
<div class="apply-job-logo-header signinpage">
<div>
<div class="logo-img">
<%
BinaryContent logo = job.getLogo();
if(logo != null)
{
int logoHeight = 45;
%>
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(logo), "KEEP", new ScaleWithin (0, logoHeight)) %>" />
<%
}
%>
</div>
<div class="header-title">
<%= job.getTeamName() %>
</div>
</div>
</div>
<oneit:form name="editApplication" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="main-verify-identity">
<div class="pl-confirm text-center">Great! Now let's attach your CV and Cover Letter</div>
<div class="main-box-layout main-verify-step-2">
<div class="form-group text-left">
<label>Upload your CV</label>
<oneit:ormInput obj="<%= jobApplication %>" type="file" attributeName="CV" cssClass="form-control second-style"/>
</div>
<div class="form-group text-left">
<label>Upload your Cover Letter</label>
<oneit:ormInput obj="<%= jobApplication %>" type="file" attributeName="CoverLetter" cssClass="form-control second-style"/>
</div>
<div class="text-center">
<oneit:button value="Attach and proceed" name="validateApplication" cssClass="box-btn show-mobile"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("fromCoverLetter", true)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
</div>
</div>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
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