Commit e71941a8 by chenith Committed by Harsh Shah

Added field to JobApplication to keep completed date. Conditional application…

Added field to JobApplication to keep completed date. Conditional application process and modification in C004.
parent 429564d6
......@@ -10,6 +10,7 @@
<column name="object_created_date" type="Date" nullable="false" length="22"/>
<column name="cv" type="BLOB" nullable="true"/>
<column name="application_status" type="String" nullable="true" length="200"/>
<column name="submitted_date" type="Date" nullable="true"/>
<column name="candidate_id" type="Long" length="11" nullable="false"/>
<column name="job_id" type="Long" length="11" nullable="false"/>
</NODE>
......
......@@ -10,6 +10,7 @@ CREATE TABLE tl_job_application (
,
cv image NULL,
application_status varchar(200) NULL,
submitted_date datetime NULL,
candidate_id numeric(12) NOT NULL,
job_id numeric(12) NOT NULL
);
......
......@@ -11,6 +11,7 @@ CREATE TABLE tl_job_application (
,
cv blob NULL,
application_status varchar2(200) NULL,
submitted_date date NULL,
candidate_id number(12) NOT NULL,
job_id number(12) NOT NULL
);
......
......@@ -11,6 +11,7 @@ CREATE TABLE tl_job_application (
,
cv bytea NULL,
application_status varchar(200) NULL,
submitted_date timestamp NULL,
candidate_id numeric(12) NOT NULL,
job_id numeric(12) NOT NULL
);
......
package performa.form;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import oneit.logging.*;
......@@ -21,7 +22,8 @@ public class CompleteApplicationFP extends SaveFP
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
jobApplication.setSubmittedDate(new Date());
AnalysisEngine.analyseAnswers(jobApplication);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication);
......
......@@ -304,4 +304,9 @@ public class Job extends BaseJob
{
return 25;
}
public Boolean isClosed()
{
return getApplyBy() != null && DateDiff.endOfDay(getApplyBy()).before(DateDiff.getToday());
}
}
\ No newline at end of file
......@@ -15,7 +15,8 @@
<ATTRIB name="CV" type="BinaryContent" dbcol="cv" binaryHandler="loggedin" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE" mandatory="false"/>
<ATTRIB name="ApplicationStatus" type="ApplicationStatus" dbcol="application_status" attribHelper="EnumeratedAttributeHelper" defaultValue="ApplicationStatus.DRAFT"/>
<ATTRIB name="SubmittedDate" type="Date" dbcol="submitted_date"/>
<SINGLEREFERENCE name="Candidate" type="Candidate" dbcol="candidate_id" backreferenceName="JobApplications" mandatory="true"/>
<SINGLEREFERENCE name="Job" type="Job" dbcol="job_id" backreferenceName="JobApplications" mandatory="true"/>
......
......@@ -29,11 +29,13 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
// Private attributes corresponding to business object data
private BinaryContent dummyCV;
private ApplicationStatus dummyApplicationStatus;
private Date dummySubmittedDate;
// Static constants corresponding to attribute helpers
private static final BLOBAttributeHelper HELPER_CV = BLOBAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper HELPER_ApplicationStatus = new EnumeratedAttributeHelper (ApplicationStatus.FACTORY_ApplicationStatus);
private static final DefaultAttributeHelper HELPER_SubmittedDate = DefaultAttributeHelper.INSTANCE;
......@@ -42,10 +44,11 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
{
dummyCV = (BinaryContent)(HELPER_CV.initialise (dummyCV));
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.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.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
......@@ -98,6 +101,7 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
if (false || !tl_job_applicationPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!tl_job_applicationPSet.containsAttrib(JobApplication.FIELD_CV)||
!tl_job_applicationPSet.containsAttrib(JobApplication.FIELD_ApplicationStatus)||
!tl_job_applicationPSet.containsAttrib(JobApplication.FIELD_SubmittedDate)||
!tl_job_applicationPSet.containsAttrib(JobApplication.SINGLEREFERENCE_Candidate)||
!tl_job_applicationPSet.containsAttrib(JobApplication.SINGLEREFERENCE_Job))
{
......@@ -189,10 +193,10 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
{
int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_job_application " +
"SET cv = ?, application_status = ?, candidate_id = ? , job_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"SET cv = ?, 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 (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_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)
{
......@@ -516,6 +520,7 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
tl_job_applicationPSet.setAttrib(JobApplication.FIELD_CV, HELPER_CV.getFromRS(dummyCV, r, "cv"));
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"));
tl_job_applicationPSet.setAttrib(JobApplication.SINGLEREFERENCE_Candidate, r.getObject ("candidate_id"));
tl_job_applicationPSet.setAttrib(JobApplication.SINGLEREFERENCE_Job, r.getObject ("job_id"));
......@@ -535,10 +540,10 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
{
executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_job_application " +
" (cv, application_status, candidate_id, job_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
" (cv, 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 (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_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);
}
......
......@@ -2,6 +2,7 @@
<%@ 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" %>
<%@ page import="oneit.utils.text.FormatUtils"%>
<oneit:dynIncluded>
<div class="main-application-outline">
......@@ -24,16 +25,6 @@
process.setAttribute("JobApplication", jobApplication);
if(jobApplication.getApplicationStatus()==ApplicationStatus.SUBMITTED)
{
%>
<div class="welcome-aust-logo">
<p class="overview-title" align="center">You have already applied to this job.</p>
</div>
<%
}
else
{
%>
<div class="welcome-aust-logo"><img src="images/australia-post.png" /></div>
<div class="welcome-title">Welcome <oneit:toString value="<%= candidate.getFirstName() %>"/>, here's your application outline</div>
......@@ -79,18 +70,43 @@
</p>
</div>
</div>
<oneit:form name="applyJob" method="post" enctype="multipart/form-data">
<%
if(!job.isClosed() && jobApplication.getApplicationStatus()!=ApplicationStatus.SUBMITTED)
{
String btnText = "Resume the application";
if(jobApplication.getStatus()==ObjectStatus.NEW)
{
btnText = "Begin the application";
}
%>
<oneit:form name="applyJob" method="post" enctype="multipart/form-data">
<div class="app-out-btn">
<span>Total time to complete: Approximately 40 minutes</span>
<oneit:button value="<%= btnText %>" name="gotoPage" skin="link" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
</div>
</oneit:form>
<%
}
else
{
String infoStr = "Job is no longer accepting applications.";
if(jobApplication.getApplicationStatus() == ApplicationStatus.SUBMITTED)
{
infoStr = "Completed on " + FormatUtils.stringify(jobApplication.getSubmittedDate(), "MidDate", "") ;
}
%>
<div class="app-out-btn">
<span>Total time to complete: Approximately 40 minutes</span>
<oneit:button value="Begin the application" name="gotoPage" skin="link" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
<span></span>
<span style="float: right"><oneit:toString value="<%= infoStr %>" mode="EscapeHTML"/></span>
</div>
</oneit:form>
<%
}
%>
<%
}
%>
<style>
.power-footer {
......
<?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="submitted_date" type="Date" 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