Commit d19c0a79 by Nilu

HT003 refactoring and essential requirements missing sections

parent de861b68
...@@ -14,8 +14,6 @@ import oneit.utils.BusinessException; ...@@ -14,8 +14,6 @@ import oneit.utils.BusinessException;
import performa.intercom.utils.IntercomUtils; import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser; import performa.orm.CompanyUser;
import performa.orm.JobApplication; import performa.orm.JobApplication;
import performa.orm.types.AppProcessOption;
import performa.orm.types.ApplicationStatus;
public class ChangeApplicationStatusFP extends SaveFP public class ChangeApplicationStatusFP extends SaveFP
{ {
...@@ -27,22 +25,7 @@ public class ChangeApplicationStatusFP extends SaveFP ...@@ -27,22 +25,7 @@ public class ChangeApplicationStatusFP extends SaveFP
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In ChangeApplicationStatusFP changing status of Job Application : ", jobApplication ); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In ChangeApplicationStatusFP changing status of Job Application : ", jobApplication );
if(jobApplication.getAppProcessOption() == AppProcessOption.TO_SHORTLIST) jobApplication.setApplicationStatus(jobApplication.getWorkFlow().getApplicationStatus());
{
jobApplication.setApplicationStatus(ApplicationStatus.SHORTLISTED);
}
else if(jobApplication.getAppProcessOption() == AppProcessOption.REMOVE_FROM_SHORTLIST)
{
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
}
else if(jobApplication.getAppProcessOption() == AppProcessOption.TO_UNSUITABLE)
{
jobApplication.setApplicationStatus(ApplicationStatus.UNSUITABLE);
}
else if(jobApplication.getAppProcessOption() == AppProcessOption.REMOVE_FROM_UNSUITABLE)
{
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
}
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 );
......
...@@ -49,6 +49,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -49,6 +49,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
public static final String FIELD_RequirementFit = "RequirementFit"; public static final String FIELD_RequirementFit = "RequirementFit";
public static final String FIELD_CultureFit = "CultureFit"; public static final String FIELD_CultureFit = "CultureFit";
public static final String FIELD_FactorScoreDetails = "FactorScoreDetails"; public static final String FIELD_FactorScoreDetails = "FactorScoreDetails";
public static final String SINGLEREFERENCE_WorkFlow = "WorkFlow";
public static final String SINGLEREFERENCE_Candidate = "Candidate"; public static final String SINGLEREFERENCE_Candidate = "Candidate";
public static final String BACKREF_Candidate = ""; public static final String BACKREF_Candidate = "";
public static final String SINGLEREFERENCE_Job = "Job"; public static final String SINGLEREFERENCE_Job = "Job";
...@@ -87,6 +88,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -87,6 +88,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
// Private attributes corresponding to single references // Private attributes corresponding to single references
private SingleAssociation<JobApplication, WorkFlow> _WorkFlow;
private SingleAssociation<JobApplication, Candidate> _Candidate; private SingleAssociation<JobApplication, Candidate> _Candidate;
private SingleAssociation<JobApplication, Job> _Job; private SingleAssociation<JobApplication, Job> _Job;
...@@ -125,6 +127,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -125,6 +127,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping")); Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_AssessmentCriteriaAnswers(); setupAssocMetaData_AssessmentCriteriaAnswers();
setupAssocMetaData_WorkFlow();
setupAssocMetaData_Candidate(); setupAssocMetaData_Candidate();
setupAssocMetaData_Job(); setupAssocMetaData_Job();
FIELD_AppProcessOption_Validators = (AttributeValidator[])setupAttribMetaData_AppProcessOption(validatorMapping).toArray (new AttributeValidator[0]); FIELD_AppProcessOption_Validators = (AttributeValidator[])setupAttribMetaData_AppProcessOption(validatorMapping).toArray (new AttributeValidator[0]);
...@@ -165,6 +168,19 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -165,6 +168,19 @@ public abstract class BaseJobApplication extends BaseBusinessClass
// Meta Info setup // Meta Info setup
private static void setupAssocMetaData_WorkFlow()
{
Map metaInfo = new HashMap ();
metaInfo.put ("name", "WorkFlow");
metaInfo.put ("type", "WorkFlow");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for JobApplication.WorkFlow:", metaInfo);
ATTRIBUTES_METADATA_JobApplication.put (SINGLEREFERENCE_WorkFlow, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static void setupAssocMetaData_Candidate() private static void setupAssocMetaData_Candidate()
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -412,6 +428,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -412,6 +428,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
super._initialiseAssociations (); super._initialiseAssociations ();
_WorkFlow = new SingleAssociation<JobApplication, WorkFlow> (this, SINGLEREFERENCE_WorkFlow, null, WorkFlow.REFERENCE_WorkFlow, "");
_Candidate = new SingleAssociation<JobApplication, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_JobApplications, Candidate.REFERENCE_Candidate, "tl_job_application"); _Candidate = new SingleAssociation<JobApplication, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_JobApplications, Candidate.REFERENCE_Candidate, "tl_job_application");
_Job = new SingleAssociation<JobApplication, Job> (this, SINGLEREFERENCE_Job, Job.MULTIPLEREFERENCE_JobApplications, Job.REFERENCE_Job, "tl_job_application"); _Job = new SingleAssociation<JobApplication, Job> (this, SINGLEREFERENCE_Job, Job.MULTIPLEREFERENCE_JobApplications, Job.REFERENCE_Job, "tl_job_application");
_AssessmentCriteriaAnswers = new MultipleAssociation<JobApplication, AssessmentCriteriaAnswer> (this, MULTIPLEREFERENCE_AssessmentCriteriaAnswers, AssessmentCriteriaAnswer.SINGLEREFERENCE_JobApplication, AssessmentCriteriaAnswer.REFERENCE_AssessmentCriteriaAnswer); _AssessmentCriteriaAnswers = new MultipleAssociation<JobApplication, AssessmentCriteriaAnswer> (this, MULTIPLEREFERENCE_AssessmentCriteriaAnswers, AssessmentCriteriaAnswer.SINGLEREFERENCE_JobApplication, AssessmentCriteriaAnswer.REFERENCE_AssessmentCriteriaAnswer);
...@@ -424,6 +441,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -424,6 +441,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
super.initialiseReference (); super.initialiseReference ();
_WorkFlow = new SingleAssociation<JobApplication, WorkFlow> (this, SINGLEREFERENCE_WorkFlow, null, WorkFlow.REFERENCE_WorkFlow, "");
_Candidate = new SingleAssociation<JobApplication, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_JobApplications, Candidate.REFERENCE_Candidate, "tl_job_application"); _Candidate = new SingleAssociation<JobApplication, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_JobApplications, Candidate.REFERENCE_Candidate, "tl_job_application");
_Job = new SingleAssociation<JobApplication, Job> (this, SINGLEREFERENCE_Job, Job.MULTIPLEREFERENCE_JobApplications, Job.REFERENCE_Job, "tl_job_application"); _Job = new SingleAssociation<JobApplication, Job> (this, SINGLEREFERENCE_Job, Job.MULTIPLEREFERENCE_JobApplications, Job.REFERENCE_Job, "tl_job_application");
_AssessmentCriteriaAnswers = new MultipleAssociation<JobApplication, AssessmentCriteriaAnswer> (this, MULTIPLEREFERENCE_AssessmentCriteriaAnswers, AssessmentCriteriaAnswer.SINGLEREFERENCE_JobApplication, AssessmentCriteriaAnswer.REFERENCE_AssessmentCriteriaAnswer); _AssessmentCriteriaAnswers = new MultipleAssociation<JobApplication, AssessmentCriteriaAnswer> (this, MULTIPLEREFERENCE_AssessmentCriteriaAnswers, AssessmentCriteriaAnswer.SINGLEREFERENCE_JobApplication, AssessmentCriteriaAnswer.REFERENCE_AssessmentCriteriaAnswer);
...@@ -1327,6 +1345,8 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1327,6 +1345,8 @@ public abstract class BaseJobApplication extends BaseBusinessClass
List result = super.getSingleAssocs (); List result = super.getSingleAssocs ();
result.add("WorkFlow");
result.add("Candidate"); result.add("Candidate");
result.add("Job"); result.add("Job");
...@@ -1342,7 +1362,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1342,7 +1362,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Candidate)) else if (assocName.equals (SINGLEREFERENCE_WorkFlow))
{
return _WorkFlow.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{ {
return _Candidate.getReferencedType (); return _Candidate.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Job)) }else if (assocName.equals (SINGLEREFERENCE_Job))
...@@ -1382,7 +1405,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1382,7 +1405,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Candidate)) else if (assocName.equals (SINGLEREFERENCE_WorkFlow))
{
return getWorkFlow ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{ {
return getCandidate (); return getCandidate ();
}else if (assocName.equals (SINGLEREFERENCE_Job)) }else if (assocName.equals (SINGLEREFERENCE_Job))
...@@ -1402,7 +1428,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1402,7 +1428,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Candidate)) else if (assocName.equals (SINGLEREFERENCE_WorkFlow))
{
return getWorkFlow (getType);
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{ {
return getCandidate (getType); return getCandidate (getType);
}else if (assocName.equals (SINGLEREFERENCE_Job)) }else if (assocName.equals (SINGLEREFERENCE_Job))
...@@ -1422,7 +1451,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1422,7 +1451,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Candidate)) else if (assocName.equals (SINGLEREFERENCE_WorkFlow))
{
return getWorkFlowID ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{ {
return getCandidateID (); return getCandidateID ();
}else if (assocName.equals (SINGLEREFERENCE_Job)) }else if (assocName.equals (SINGLEREFERENCE_Job))
...@@ -1442,7 +1474,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1442,7 +1474,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Candidate)) else if (assocName.equals (SINGLEREFERENCE_WorkFlow))
{
setWorkFlow ((WorkFlow)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{ {
setCandidate ((Candidate)(newValue)); setCandidate ((Candidate)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Job)) }else if (assocName.equals (SINGLEREFERENCE_Job))
...@@ -1458,6 +1493,100 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1458,6 +1493,100 @@ public abstract class BaseJobApplication extends BaseBusinessClass
/** /**
* Get the reference WorkFlow
*/
public WorkFlow getWorkFlow () throws StorageException
{
assertValid();
try
{
return (WorkFlow)(_WorkFlow.get ());
}
catch (ClassCastException e)
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Cache collision in JobApplication:", this.getObjectID (), ", was trying to get WorkFlow:", getWorkFlowID ());
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Instead I got:", _WorkFlow.get ().getClass ());
throw e;
}
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public WorkFlow getWorkFlow (Get getType) throws StorageException
{
assertValid();
return _WorkFlow.get(getType);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getWorkFlowID ()
{
assertValid();
if (_WorkFlow == null)
{
return null;
}
else
{
return _WorkFlow.getID ();
}
}
/**
* Called prior to the assoc 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 preWorkFlowChange (WorkFlow newWorkFlow) throws FieldException
{
}
/**
* Called after the assoc changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postWorkFlowChange () throws FieldException
{
}
public FieldWriteability getWriteability_WorkFlow ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the reference WorkFlow. Checks to ensure a new value
* has been supplied. If so, marks the reference as altered and sets it.
*/
public void setWorkFlow (WorkFlow newWorkFlow) throws StorageException, FieldException
{
if (_WorkFlow.wouldReferencedChange (newWorkFlow))
{
assertValid();
Debug.assertion (getWriteability_WorkFlow () != FieldWriteability.FALSE, "Assoc WorkFlow is not writeable");
preWorkFlowChange (newWorkFlow);
_WorkFlow.set (newWorkFlow);
postWorkFlowChange ();
}
}
/**
* Get the reference Candidate * Get the reference Candidate
*/ */
public Candidate getCandidate () throws StorageException public Candidate getCandidate () throws StorageException
...@@ -2087,6 +2216,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2087,6 +2216,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
BaseJobApplication sourceJobApplication = (BaseJobApplication)(source); BaseJobApplication sourceJobApplication = (BaseJobApplication)(source);
_WorkFlow.copyFrom (sourceJobApplication._WorkFlow, linkToGhosts);
_Candidate.copyFrom (sourceJobApplication._Candidate, linkToGhosts); _Candidate.copyFrom (sourceJobApplication._Candidate, linkToGhosts);
_Job.copyFrom (sourceJobApplication._Job, linkToGhosts); _Job.copyFrom (sourceJobApplication._Job, linkToGhosts);
...@@ -2139,6 +2269,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2139,6 +2269,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
_RequirementFit = (Map)(HELPER_RequirementFit.readExternal (_RequirementFit, vals.get(FIELD_RequirementFit))); // _RequirementFit = (Map)(HELPER_RequirementFit.readExternal (_RequirementFit, vals.get(FIELD_RequirementFit))); //
_CultureFit = (Map)(HELPER_CultureFit.readExternal (_CultureFit, vals.get(FIELD_CultureFit))); // _CultureFit = (Map)(HELPER_CultureFit.readExternal (_CultureFit, vals.get(FIELD_CultureFit))); //
_FactorScoreDetails = (Map)(HELPER_FactorScoreDetails.readExternal (_FactorScoreDetails, vals.get(FIELD_FactorScoreDetails))); // _FactorScoreDetails = (Map)(HELPER_FactorScoreDetails.readExternal (_FactorScoreDetails, vals.get(FIELD_FactorScoreDetails))); //
_WorkFlow.readExternalData(vals.get(SINGLEREFERENCE_WorkFlow));
_Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate)); _Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate));
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job)); _Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
_AssessmentCriteriaAnswers.readExternalData(vals.get(MULTIPLEREFERENCE_AssessmentCriteriaAnswers)); _AssessmentCriteriaAnswers.readExternalData(vals.get(MULTIPLEREFERENCE_AssessmentCriteriaAnswers));
...@@ -2162,6 +2293,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2162,6 +2293,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
vals.put (FIELD_RequirementFit, HELPER_RequirementFit.writeExternal (_RequirementFit)); vals.put (FIELD_RequirementFit, HELPER_RequirementFit.writeExternal (_RequirementFit));
vals.put (FIELD_CultureFit, HELPER_CultureFit.writeExternal (_CultureFit)); vals.put (FIELD_CultureFit, HELPER_CultureFit.writeExternal (_CultureFit));
vals.put (FIELD_FactorScoreDetails, HELPER_FactorScoreDetails.writeExternal (_FactorScoreDetails)); vals.put (FIELD_FactorScoreDetails, HELPER_FactorScoreDetails.writeExternal (_FactorScoreDetails));
vals.put (SINGLEREFERENCE_WorkFlow, _WorkFlow.writeExternalData());
vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData()); vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData());
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData()); vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
vals.put (MULTIPLEREFERENCE_AssessmentCriteriaAnswers, _AssessmentCriteriaAnswers.writeExternalData()); vals.put (MULTIPLEREFERENCE_AssessmentCriteriaAnswers, _AssessmentCriteriaAnswers.writeExternalData());
...@@ -2192,6 +2324,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2192,6 +2324,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
} }
// Compare single assocs // Compare single assocs
_WorkFlow.compare (otherJobApplication._WorkFlow, listener);
_Candidate.compare (otherJobApplication._Candidate, listener); _Candidate.compare (otherJobApplication._Candidate, listener);
_Job.compare (otherJobApplication._Job, listener); _Job.compare (otherJobApplication._Job, listener);
...@@ -2224,6 +2357,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2224,6 +2357,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
visitor.visitField(this, FIELD_CV, HELPER_CV.toObject(getCV())); visitor.visitField(this, FIELD_CV, HELPER_CV.toObject(getCV()));
visitor.visitField(this, FIELD_ApplicationStatus, HELPER_ApplicationStatus.toObject(getApplicationStatus())); visitor.visitField(this, FIELD_ApplicationStatus, HELPER_ApplicationStatus.toObject(getApplicationStatus()));
visitor.visitField(this, FIELD_SubmittedDate, HELPER_SubmittedDate.toObject(getSubmittedDate())); visitor.visitField(this, FIELD_SubmittedDate, HELPER_SubmittedDate.toObject(getSubmittedDate()));
visitor.visitAssociation (_WorkFlow);
visitor.visitAssociation (_Candidate); visitor.visitAssociation (_Candidate);
visitor.visitAssociation (_Job); visitor.visitAssociation (_Job);
visitor.visitAssociation (_AssessmentCriteriaAnswers); visitor.visitAssociation (_AssessmentCriteriaAnswers);
...@@ -2235,6 +2369,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2235,6 +2369,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
super.visitAssociations (visitor, scope); super.visitAssociations (visitor, scope);
if (scope.includes (_WorkFlow))
{
visitor.visit (_WorkFlow);
}
if (scope.includes (_Candidate)) if (scope.includes (_Candidate))
{ {
visitor.visit (_Candidate); visitor.visit (_Candidate);
...@@ -2797,6 +2935,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2797,6 +2935,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
return getWriteability_FactorScoreDetails (); return getWriteability_FactorScoreDetails ();
} }
else if (fieldName.equals (SINGLEREFERENCE_WorkFlow))
{
return getWriteability_WorkFlow ();
}
else else
{ {
return super.getWriteable (fieldName); return super.getWriteable (fieldName);
...@@ -3180,6 +3322,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -3180,6 +3322,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
return toFactorScoreDetails (); return toFactorScoreDetails ();
} }
if (name.equals ("WorkFlow"))
{
return toWorkFlow ();
}
if (name.equals ("CV")) if (name.equals ("CV"))
{ {
return toCV (); return toCV ();
...@@ -3223,6 +3369,12 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -3223,6 +3369,12 @@ public abstract class BaseJobApplication extends BaseBusinessClass
public PipeLine<From, ApplicationStatus> toApplicationStatus () { return pipe(new ORMAttributePipe<Me, ApplicationStatus>(FIELD_ApplicationStatus)); } public PipeLine<From, ApplicationStatus> toApplicationStatus () { return pipe(new ORMAttributePipe<Me, ApplicationStatus>(FIELD_ApplicationStatus)); }
public PipeLine<From, Date> toSubmittedDate () { return pipe(new ORMAttributePipe<Me, Date>(FIELD_SubmittedDate)); } public PipeLine<From, Date> toSubmittedDate () { return pipe(new ORMAttributePipe<Me, Date>(FIELD_SubmittedDate)); }
public WorkFlow.WorkFlowPipeLineFactory<From, WorkFlow> toWorkFlow () { return toWorkFlow (Filter.ALL); }
public WorkFlow.WorkFlowPipeLineFactory<From, WorkFlow> toWorkFlow (Filter<WorkFlow> filter)
{
return WorkFlow.REFERENCE_WorkFlow.new WorkFlowPipeLineFactory<From, WorkFlow> (this, new ORMSingleAssocPipe<Me, WorkFlow>(SINGLEREFERENCE_WorkFlow, filter));
}
public Candidate.CandidatePipeLineFactory<From, Candidate> toCandidate () { return toCandidate (Filter.ALL); } public Candidate.CandidatePipeLineFactory<From, Candidate> toCandidate () { return toCandidate (Filter.ALL); }
public Candidate.CandidatePipeLineFactory<From, Candidate> toCandidate (Filter<Candidate> filter) public Candidate.CandidatePipeLineFactory<From, Candidate> toCandidate (Filter<Candidate> filter)
...@@ -3284,6 +3436,11 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -3284,6 +3436,11 @@ public abstract class BaseJobApplication extends BaseBusinessClass
public boolean isTransientSingleReference(String assocName) public boolean isTransientSingleReference(String assocName)
{ {
if(CollectionUtils.equals(assocName, "WorkFlow"))
{
return true;
}
return super.isTransientSingleReference(assocName); return super.isTransientSingleReference(assocName);
} }
...@@ -3302,6 +3459,20 @@ class DummyJobApplication extends JobApplication ...@@ -3302,6 +3459,20 @@ class DummyJobApplication extends JobApplication
} }
public WorkFlow getWorkFlow () throws StorageException
{
return (WorkFlow)(WorkFlow.DUMMY_WorkFlow);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getWorkFlowID ()
{
return WorkFlow.DUMMY_WorkFlow.getObjectID();
}
public Candidate getCandidate () throws StorageException public Candidate getCandidate () throws StorageException
{ {
return (Candidate)(Candidate.DUMMY_Candidate); return (Candidate)(Candidate.DUMMY_Candidate);
......
...@@ -52,7 +52,7 @@ public class Job extends BaseJob ...@@ -52,7 +52,7 @@ public class Job extends BaseJob
createWorkFlow(ApplicationStatus.DRAFT, 1); createWorkFlow(ApplicationStatus.DRAFT, 1);
createWorkFlow(ApplicationStatus.SUBMITTED, 2); createWorkFlow(ApplicationStatus.SUBMITTED, 2);
createWorkFlow(ApplicationStatus.SHORTLISTED, 3); createWorkFlow(ApplicationStatus.SHORTLISTED, 3);
createWorkFlow(ApplicationStatus.UNSUITABLE, 4); createWorkFlow(ApplicationStatus.UNSUITABLE, 9);
} }
public WorkFlow createWorkFlow(ApplicationStatus status, int sortOrder) throws FieldException public WorkFlow createWorkFlow(ApplicationStatus status, int sortOrder) throws FieldException
...@@ -419,6 +419,11 @@ public class Job extends BaseJob ...@@ -419,6 +419,11 @@ public class Job extends BaseJob
return options; return options;
} }
public List<ApplicationStatus> getValidApplicationStatuses()
{
return new ArrayList<>(pipelineJob().toWorkFlows().toApplicationStatus().uniqueVals());
}
public String getPageTitle() public String getPageTitle()
{ {
...@@ -611,4 +616,11 @@ public class Job extends BaseJob ...@@ -611,4 +616,11 @@ public class Job extends BaseJob
return pipelineJob().toWorkFlows(filter).val(); return pipelineJob().toWorkFlows(filter).val();
} }
public WorkFlow getWorkFlowByStatus(ApplicationStatus appStatus)
{
Filter<WorkFlow> filter = WorkFlow.SearchByAll().andApplicationStatus(new EqualsFilter<>(appStatus));
return pipelineJob().toWorkFlows(filter).val();
}
} }
\ No newline at end of file
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
<TRANSIENT name="CultureFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/> <TRANSIENT name="CultureFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TRANSIENT name="FactorScoreDetails" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/> <TRANSIENT name="FactorScoreDetails" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TRANSIENTSINGLE name="WorkFlow" type="WorkFlow" />
<TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE"> <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="CV" type="BinaryContent" dbcol="cv" binaryHandler="loggedin" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE" mandatory="false"/>
......
package performa.orm; package performa.orm;
import java.io.*;
import java.util.*;
import oneit.appservices.config.*;
import oneit.logging.*;
import oneit.objstore.*;
import oneit.utils.*;
import performa.orm.types.*;
public class WorkFlow extends BaseWorkFlow public class WorkFlow extends BaseWorkFlow
{ {
...@@ -24,6 +10,10 @@ public class WorkFlow extends BaseWorkFlow ...@@ -24,6 +10,10 @@ public class WorkFlow extends BaseWorkFlow
{ {
// Do not add any code to this, always put it in initialiseNewObject // Do not add any code to this, always put it in initialiseNewObject
} }
}
@Override
public String getToString()
{
return getName();
}
}
\ No newline at end of file
...@@ -363,7 +363,9 @@ public class AnalysisEngine ...@@ -363,7 +363,9 @@ public class AnalysisEngine
for(AssessmentCriteriaAnswer answer : assessmentCriteriaAnswers) for(AssessmentCriteriaAnswer answer : assessmentCriteriaAnswers)
{ {
if(answer.getAssessmentCriteria() != null && answer.getAssessmentCriteria().getImportance() != null) // only desirable and highly desirable requirements should be calculated for score
if(answer.getAssessmentCriteria() != null && answer.getAssessmentCriteria().getImportance() != null
&& answer.getAssessmentCriteria().getImportance() != Importance.ESSENTIAL)
{ {
Importance importance = answer.getAssessmentCriteria().getImportance(); Importance importance = answer.getAssessmentCriteria().getImportance();
int maxScore = importance.getWeightingScore(); int maxScore = importance.getWeightingScore();
......
...@@ -3943,6 +3943,9 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{ ...@@ -3943,6 +3943,9 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{
.appli-view-bar .progress-bar{ .appli-view-bar .progress-bar{
background: #667281; background: #667281;
} }
.appli-view-bar .progress-bar.green{
background: #67B413;
}
.appli-percent-no{ .appli-percent-no{
font-size: 36px; font-size: 36px;
font-weight: 300; font-weight: 300;
...@@ -6468,3 +6471,5 @@ input{ ...@@ -6468,3 +6471,5 @@ input{
.job-edit-pop .jBox-content {padding: 0} .job-edit-pop .jBox-content {padding: 0}
.job-edit-pop .jBox-container{border-radius: 2px !important; width: 240px;box-shadow: 0 3px 9px 0 rgba(0,0,0,0.35);background-color: #FFFFFF;} .job-edit-pop .jBox-container{border-radius: 2px !important; width: 240px;box-shadow: 0 3px 9px 0 rgba(0,0,0,0.35);background-color: #FFFFFF;}
.job-edit-menu .job-edit-menu-item {display: block; font-weight: 500; height:45px; padding: 24px;border-bottom: 1px solid #DBDBDF;font-size:11px;line-height:1px;letter-spacing: 1px; color: #03A0E7;} .job-edit-menu .job-edit-menu-item {display: block; font-weight: 500; height:45px; padding: 24px;border-bottom: 1px solid #DBDBDF;font-size:11px;line-height:1px;letter-spacing: 1px; color: #03A0E7;}
.red-requirements {color: #F9623D;}
\ No newline at end of file
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<RenderMode name="Page" preIncludeJSP="extensions/adminportal/list_jobs.jsp"/> <RenderMode name="Page" preIncludeJSP="extensions/adminportal/list_jobs.jsp"/>
<RenderMode name="EditJob" preIncludeJSP="extensions/adminportal/edit_job.jsp"/> <RenderMode name="EditJob" preIncludeJSP="extensions/adminportal/edit_job.jsp"/>
<RenderMode name="ViewApplicants" preIncludeJSP="extensions/adminportal/view_applicants.jsp"/> <RenderMode name="ViewApplicants" preIncludeJSP="extensions/adminportal/view_applicants.jsp"/>
<RenderMode name="ViewApplicantsGrid" preIncludeJSP="extensions/adminportal/view_applicantss_grid.jsp"/> <RenderMode name="ViewApplicantsGrid" preIncludeJSP="extensions/adminportal/view_applicants_grid.jsp"/>
<RenderMode name="ApplicantsShortlist" preIncludeJSP="extensions/adminportal/view_applicants_shortlist.jsp"/> <RenderMode name="ApplicantsShortlist" preIncludeJSP="extensions/adminportal/view_applicants_shortlist.jsp"/>
<RenderMode name="ApplicantsGrid" preIncludeJSP="extensions/adminportal/view_applicants_shortlist_grid.jsp"/> <RenderMode name="ApplicantsGrid" preIncludeJSP="extensions/adminportal/view_applicants_shortlist_grid.jsp"/>
<RenderMode name="UnsuitableApps" preIncludeJSP="extensions/adminportal/view_applicants_unsuitable.jsp"/> <RenderMode name="UnsuitableApps" preIncludeJSP="extensions/adminportal/view_applicants_unsuitable.jsp"/>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
int tabNumber = (int) getData(request, "TabNumber"); ApplicationStatus appStatus = (ApplicationStatus) getData(request, "ApplicationStatus");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String applicantsPage = 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);
...@@ -20,16 +20,17 @@ ...@@ -20,16 +20,17 @@
<div class="first-part"> <div class="first-part">
<oneit:dynInclude page="/extensions/adminportal/inc/job_title_bar.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/> <oneit:dynInclude page="/extensions/adminportal/inc/job_title_bar.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="int-timeline">
<ul> <ul>
<li class="<%= "incomplete " + (noOfIncomplete > 0 ? "has-applicant" : "no-applicant") %> <%= tabNumber == 1 ? "active" : "inactive" %>"> <li class="<%= "incomplete " + (noOfIncomplete > 0 ? "has-applicant" : "no-applicant") %> <%= appStatus == ApplicationStatus.DRAFT ? "active" : "inactive" %>">
<oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>" <oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfIncomplete > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", 1).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", ApplicationStatus.DRAFT).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfIncomplete %>" mode="Integer" /> <oneit:toString value="<%= noOfIncomplete %>" mode="Integer" />
</span> </span>
<%= job.getWorkFlowBySortOrder(1).getName() %> <%= job.getWorkFlowBySortOrder(1) %>
</oneit:button> </oneit:button>
</li> </li>
<% <%
...@@ -37,10 +38,10 @@ ...@@ -37,10 +38,10 @@
{ {
int noOfCandidates = workflow.getSortOrder() == 2 ? job.getNoOfCandidatesApplied() : job.getNoOfCandidatesFor(workflow.getApplicationStatus()); int noOfCandidates = workflow.getSortOrder() == 2 ? job.getNoOfCandidatesApplied() : job.getNoOfCandidatesFor(workflow.getApplicationStatus());
%> %>
<li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= (tabNumber == workflow.getSortOrder()) ? "active" : "inactive" %>"> <li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= (appStatus == workflow.getApplicationStatus()) ? "active" : "inactive" %>">
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfCandidates > 0 ? "false" : "true" %>" <oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfCandidates > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", workflow.getSortOrder()).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", workflow.getApplicationStatus()).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfCandidates %>" mode="Integer" /> <oneit:toString value="<%= noOfCandidates %>" mode="Integer" />
...@@ -53,15 +54,15 @@ ...@@ -53,15 +54,15 @@
%> %>
</ul> </ul>
</div> </div>
<div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= tabNumber == 9 ? "active" : "inactive" %>"> <div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= appStatus == ApplicationStatus.UNSUITABLE ? "active" : "inactive" %>">
<oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>" <oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", 9).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", ApplicationStatus.UNSUITABLE).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" /> <oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" />
</span> </span>
<%= job.getWorkFlowBySortOrder(9).getName() %> <%= job.getWorkFlowBySortOrder(9)%>
</oneit:button> </oneit:button>
</div> </div>
</div> </div>
......
...@@ -7,11 +7,13 @@ ...@@ -7,11 +7,13 @@
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
String currentPage = (String) getData(request, "currentPage");
AppSortOption appSortOpt = (AppSortOption) getData(request, "sortOption"); AppSortOption appSortOpt = (AppSortOption) getData(request, "sortOption");
String tabNumber = (String) getData(request, "tabNumber");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "appStatus"); ApplicationStatus appStatus = (ApplicationStatus) getData(request, "appStatus");
Boolean showOrderBy = getData(request, "showOrderBy")!= null ? (Boolean) getData(request, "showOrderBy") : Boolean.FALSE; Boolean showOrderBy = getData(request, "showOrderBy")!= null ? (Boolean) getData(request, "showOrderBy") : Boolean.FALSE;
boolean showList = (boolean) getData(request, "ShowList");
SearchApplicant searchApplicant = (SearchApplicant) getData(request, "SearchApplicant");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
%> %>
<oneit:dynIncluded> <oneit:dynIncluded>
...@@ -54,68 +56,46 @@ ...@@ -54,68 +56,46 @@
enums="<%= job.getValidProcessOptions(appStatus) %>"/> enums="<%= job.getValidProcessOptions(appStatus) %>"/>
<oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link" <oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry ("restartProcess", Boolean.TRUE) .mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job")) .mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.mapEntry("Job", job) .mapEntry("Job", job)
.toMap() %>" /> .toMap() %>" />
</div> </div>
<%
if(tabNumber != null)
{
String firstTab = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS_GRID);
if(appStatus != null && appStatus == ApplicationStatus.SHORTLISTED)
{
firstTab = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST);
secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_GRID);
}
%>
<div class="appli-filter"> <div class="appli-filter">
<ul class=""> <ul class="">
<li class="lable-appli-shorting">View</li> <li class="lable-appli-shorting">View</li>
<li class="<%= (tabNumber == "1" ? "active" : "" ) + " short-list"%>"> <li class="<%= (showList ? "active" : "" ) + " short-list"%>">
<oneit:button value="List" name="gotoPage" skin="link" <oneit:button value="List" name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", firstTab) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ShowList", true).toMap())
.toMap() %>"/> .toMap() %>"/>
</li> </li>
<li class="<%= (tabNumber == "2" ? "active" : "" ) + " grid-list"%>"> <li class="<%= (!showList ? "active" : "" ) + " grid-list"%>">
<oneit:button value="Grid" name="gotoPage" skin="link" <oneit:button value="Grid" name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondTab) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ShowList", false).toMap())
.toMap() %>"/> .toMap() %>"/>
</li> </li>
</ul> </ul>
</div> </div>
<%--
<div class="appli-shorting-dropdown">
<span class="appli-order-label">Export</span>
<select class="form-control">
<option>PDF</option>
<option>CSV</option>
</select>
</div>
--%>
<%
}
%>
<div class="shorting-dropdown"> <div class="shorting-dropdown">
<div class="order-label">Search Applicants</div> <div class="order-label">Search Applicants</div>
<oneit:ormInput obj="<%= searchApplicant %>" type="text" attributeName="Details" cssClass="form-control search-input" id="searchText" />
</div> </div>
<oneit:button value="Search" name="search" cssClass="btn btn-primary" style="display:none;"/> <oneit:button value="Search" name="search" cssClass="btn btn-primary" style="display:none;"/>
<% <%
if(showOrderBy) if(showOrderBy)
{ {
%> %>
<div class="appli-shorting-dropdown"> <div class="shorting-dropdown">
<span class="appli-order-label">order by</span> <span class="appli-order-label">order by</span>
<select class="form-control" onChange="location=this.value"> <select class="form-control" onChange="location=this.value">
<% <%
for (AppSortOption sortOption : AppSortOption.getAppSortOptionArray()) for (AppSortOption sortOption : AppSortOption.getAppSortOptionArray())
{ {
String optionLink = currentPage + "&JobID=" + job.getID() + "&AppSortOption=" + sortOption.getName(); String optionLink = applicantsPage + "&JobID=" + job.getID() + "&AppSortOption=" + sortOption.getName();
%> %>
<option <%= (appSortOpt != null && appSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>"> <option <%= (appSortOpt != null && appSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/> <oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
...@@ -128,6 +108,22 @@ ...@@ -128,6 +108,22 @@
<% <%
} }
%> %>
<div class="shorting-dropdown">
<span class="appli-order-label">Showing</span>
<select class="form-control" onChange="location=this.value">
<%
for (AppSortOption sortOption : AppSortOption.getAppSortOptionArray())
{
String optionLink = applicantsPage + "&JobID=" + job.getID() + "&AppSortOption=" + sortOption.getName();
%>
<option <%= (appSortOpt != null && appSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
</div> </div>
</div> </div>
......
...@@ -43,15 +43,16 @@ ...@@ -43,15 +43,16 @@
{ {
int shortlisted = job.getNoOfCandidatesFor(ApplicationStatus.SHORTLISTED); int shortlisted = job.getNoOfCandidatesFor(ApplicationStatus.SHORTLISTED);
int maxShortlist = job.getMaxShortlistApplicants(); int maxShortlist = job.getMaxShortlistApplicants();
String goToPage = 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="<%= goToPage+"&JobID="+job.getObjectID() %>"> <oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>">
<oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML" /> <oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML" />
</a>
<% <%
if(job.getReferenceNumber() != null) if(job.getReferenceNumber() != null)
{ {
...@@ -60,6 +61,7 @@ ...@@ -60,6 +61,7 @@
<% <%
} }
%> %>
</oneit:button>
</div> </div>
<div class="job-company-name"> <div class="job-company-name">
<span class="superlaw"> <span class="superlaw">
...@@ -99,7 +101,7 @@ ...@@ -99,7 +101,7 @@
<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", goToPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>" disabled="<%= job.getJobStatus() == JobStatus.DRAFT ? "true" : "false" %>"> .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"/>
...@@ -125,8 +127,8 @@ ...@@ -125,8 +127,8 @@
</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", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", ApplicationStatus.SHORTLISTED).toMap())
.toMap() %>" disabled="<%= job.getJobStatus() == JobStatus.DRAFT ? "true" : "false" %>"> .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,47 +8,14 @@ ...@@ -8,47 +8,14 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
if(job==null && request.getParameter("JobID")!=null)
{
job = Job.getJobByID(transaction, Long.parseLong(request.getParameter("JobID")));
process.setAttribute("Job", job);
}
Debug.assertion(job != null, "Job is null in admin portal view applicants");
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS_GRID); String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS_GRID);
AppSortOption appSortOpt = (AppSortOption) process.getAttribute("AppSortOption");
if(request.getParameter("AppSortOption") != null)
{
appSortOpt = AppSortOption.forName((String) request.getParameter("AppSortOption"));
}
if(appSortOpt == null)
{
appSortOpt = AppSortOption.RANK;
}
JobApplication[] applications = (JobApplication[]) process.getAttribute("JobApplications");
if(applications==null)
{
applications = JobApplication.SearchByAll()
.andJob(new EqualsFilter<>(job))
.andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT))
.search(transaction);
process.setAttribute("JobApplications", applications);
}
List<JobApplication> sortedApplications = applications!=null ? Utils.getApplicationsSorted(applications, appSortOpt) : new ArrayList<JobApplication>();
process.setAttribute("AppSortOption", appSortOpt);
%> %>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() $(document).ready(function()
{ {
...@@ -91,27 +58,12 @@ ...@@ -91,27 +58,12 @@
}); });
</script> </script>
<oneit:form name="viewApplicants" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area">
<oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp" TabNumber="1" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="second-part view-app-area">
<oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp"
sortOption="<%= appSortOpt %>"
currentPage="<%= currentPage %>"
tabNumber="2"
showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="five-boxs"> <div class="five-boxs">
<% <%
int index = 0; int index = 0;
for(JobApplication jobApplication : sortedApplications) for(JobApplication jobApplication : applications)
{ {
String appID = "app-id-" + jobApplication.getID().toString(); String appID = "app-id-" + jobApplication.getID().toString();
Integer overallRank = jobApplication.getOverallRank(); Integer overallRank = jobApplication.getOverallRank();
...@@ -131,7 +83,7 @@ ...@@ -131,7 +83,7 @@
</div> </div>
<oneit:button value=" " name="gotoPage" cssClass="<%= jobApplication.getID() + ""%>" skin="link" <oneit:button value=" " name="gotoPage" cssClass="<%= jobApplication.getID() + ""%>" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", sortedApplications).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", applications).toMap())
.toMap() %>"> .toMap() %>">
<div class="overall-suitablity"> <div class="overall-suitablity">
<div class="<%= "overall " + (isTopRank ? "f-60" : "")%>">overall rank</div> <div class="<%= "overall " + (isTopRank ? "f-60" : "")%>">overall rank</div>
...@@ -188,7 +140,4 @@ ...@@ -188,7 +140,4 @@
} }
%> %>
</div> </div>
</div>
</div>
</oneit:form>
</oneit:dynIncluded> </oneit:dynIncluded>
\ No newline at end of file
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications"); List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
String currentPage = (String) getData(request, "currentPage"); String currentPage = (String) getData(request, "currentPage");
int tabNumber = (int) getData(request, "TabNumber"); ApplicationStatus appStatus = (ApplicationStatus) getData(request, "ApplicationStatus");
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
%> %>
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() $(document).ready(function()
{ {
$(".app-process").change(function() $("[name$='WorkFlow']").change(function()
{ {
var id = $(this).closest('.appli-row').attr('id'); var id = $(this).closest('.appli-row').attr('id');
$('.save-application' + id).click(); $('.save-application' + id).click();
...@@ -30,12 +30,17 @@ ...@@ -30,12 +30,17 @@
for(JobApplication jobApplication : applications) for(JobApplication jobApplication : applications)
{ {
long criteriaVal = jobApplication.getRequirementFitScore();
String roleFit = FormatUtils.stringify(jobApplication.getRoleFitPercentage(), "PercentageTwoDP", "0"); String roleFit = FormatUtils.stringify(jobApplication.getRoleFitPercentage(), "PercentageTwoDP", "0");
String culture = FormatUtils.stringify(jobApplication.getCultureFitScore(), "PercentageWholeNumber", "0"); String culture = FormatUtils.stringify(jobApplication.getCultureFitScore(), "PercentageWholeNumber", "0");
String criteria = FormatUtils.stringify(jobApplication.getRequirementFitScore(), "PercentageWholeNumber", "0"); String criteria = FormatUtils.stringify(jobApplication.getRequirementFitScore(), "PercentageWholeNumber", "0");
String appID = "app-id-" + jobApplication.getID().toString(); String appID = "app-id-" + jobApplication.getID().toString();
Integer overallRank = jobApplication.getOverallRank(); Integer overallRank = jobApplication.getOverallRank();
Boolean isTopRank = CollectionUtils.equals(overallRank, 1); Boolean isTopRank = CollectionUtils.equals(overallRank, 1);
WorkFlow workflow = job.getWorkFlowByStatus(jobApplication.getApplicationStatus());
boolean missingReq = jobApplication.hasFailedEssentialRequirements();
jobApplication.setWorkFlow(workflow);
%> %>
<div class="appli-row" id="<%= jobApplication.getID() %>"> <div class="appli-row" id="<%= jobApplication.getID() %>">
<div class="appli-checkbox appli-l eq-second-height"> <div class="appli-checkbox appli-l eq-second-height">
...@@ -67,7 +72,7 @@ ...@@ -67,7 +72,7 @@
<% <%
String widthClass = "appli-jcs2"; String widthClass = "appli-jcs2";
if(job.getIncludeAssessmentCriteria()==Boolean.TRUE) if(job.getIncludeAssessmentCriteria() == Boolean.TRUE)
{ {
widthClass = "appli-jcs"; widthClass = "appli-jcs";
} }
...@@ -99,26 +104,29 @@ ...@@ -99,26 +104,29 @@
<div class="<%= widthClass %> appli-l eq-second-height"> <div class="<%= widthClass %> appli-l eq-second-height">
<span class="appli-view-bar"> <span class="appli-view-bar">
<div class="progress"> <div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= criteria %>" aria-valuemin="0" aria-valuemax="100" <div class="progress-bar <%= (criteriaVal == 100 ? " green" : "")%>" role="progressbar" aria-valuenow="<%= criteria %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + criteria %>"> style="<%= "width: " + criteria %>">
</div> </div>
</div> </div>
</span> </span>
<span class="<%= missingReq ? "red-requirements" : "" %>">
requirements requirements
</span>
</div> </div>
<% <%
} }
%> %>
<div class="appli-status appli-l eq-second-height"> <div class="appli-status appli-l eq-second-height">
<div class="appli-list-drop"> <div class="appli-list-drop">
<oneit:ormEnum obj="<%= jobApplication %>" attributeName="AppProcessOption" cssClass="form-control app-process" <tagfile:ormsingleasso_select obj="<%= jobApplication %>" assocName="WorkFlow" cssClass="form-control app-process"
enums="<%= jobApplication.getValidProcessOptions() %>"/> options="<%= job.getWorkFlowsSet().toArray(new WorkFlow[0]) %>"/>
</div> </div>
</div> </div>
<oneit:button name="changeApplicationStatus" value=" " cssClass="<%= "save-application" + jobApplication.getID().toString() + " hidden"%>" <oneit:button name="changeApplicationStatus" value=" " cssClass="<%= "save-application" + jobApplication.getID().toString() + " hidden"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry ("restartProcess", Boolean.TRUE) .mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job")) .mapEntry("procParams", CollectionUtils.mapEntry("ApplicationStatus", appStatus).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "ApplicationStatus"})))
.mapEntry("JobApplication", jobApplication) .mapEntry("JobApplication", jobApplication)
.toMap() %>" /> .toMap() %>" />
</div> </div>
......
<%@ 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" %>
<%@page import="oneit.utils.text.FormatUtils"%>
<oneit:dynIncluded>
<%
Job job = (Job) process.getAttribute("Job");
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS_GRID);
%>
<script type="text/javascript">
$(document).ready(function()
{
$('.grid-box-view').slick({
dots: false,
infinite: false,
speed: 300,
slidesToShow: 5,
nextArrow: "<div class='sl_width slider-next'><span><img src='images/slider-arrow.png' /></span></div>",
prevArrow: "<div class='sl_width slider-prev'><span><img src='images/slider-arrow-left.png' /></span></div>",
responsive: [
{
breakpoint: 1280,
settings: {
slidesToShow: 4
}
},
{
breakpoint: 1024,
settings: {
slidesToShow: 3
}
},
{
breakpoint: 600,
settings: {
slidesToShow: 2
}
},
{
breakpoint: 480,
settings: {
slidesToShow: 1
}
}
]
});
recalcFunction = setupRecalc ($("form#viewApplicants"), {'recalcOnError':true});
});
</script>
<div class="five-boxs grid-box-view" style="">
<%
int i = 0;
for(JobApplication jobApplication : applications)
{
Candidate candidate = jobApplication.getCandidate();
String appID = "app-id-" + jobApplication.getID().toString();
Integer overallRank = jobApplication.getOverallRank();
Boolean isTopRank = CollectionUtils.equals(overallRank, 1);
%>
<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-->
<div class="cb-title dark-back ">
<div class="checkbox-list grid-checkbox">
<div class="checkbox-list">
<input type="checkbox" name="IsSelected" value="<%= jobApplication.getObjectID().toString() %>" id="<%= appID %>" class="applicant" >
<label for="<%= appID %>">
<oneit:toString value="<%= candidate %>" mode="EscapeHTML" />
</label>
</div>
</div>
</div>
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", applications).toMap())
.toMap() %>">
<div class="overall-suitablity grid-suitability">
<div class="<%= "over-all blue " + (isTopRank ? "f-60" : "")%>">
<oneit:toString value="<%= overallRank %>" mode="Integer" />
</div>
<div class="<%= "overall " + (isTopRank ? "f-60" : "")%>">overall rank</div>
</div>
<div class="jcc-box">
<div class="job-match jcc">
<img src="images/app-job-match-icon.svg"> Role fit
<%
if(!job.isExpressJob())
{
%>
<span><oneit:toString value="<%= jobApplication.getRoleFitPercentage() %>" mode="PercentageTwoDP" /></span>
<%
}
%>
</div>
<%
if(job.isExpressJob())
{
Map<FactorClass, Map<FactorLevelLink, Map>> factorClassDtls = (Map<FactorClass, Map<FactorLevelLink, Map>>) jobApplication.getFactorScoreDetails();
for(FactorClass factorClass : factorClassDtls.keySet())
{
if(factorClass != null)
{
%>
<div class="detail-box ja-exp-b-p">
<div class="detail-row">
<div class="detail-label ja-exp-fact-c">
<oneit:toString value="<%= factorClass %>" mode="EscapeHTML"/>
</div>
</div>
</div>
<%
Map<FactorLevelLink, Map> factorDetails = factorClassDtls.get(factorClass);
for(FactorLevelLink factorLevelLink : factorDetails.keySet())
{
Map factorLinkDetails = factorDetails.get(factorLevelLink);
if(!factorLinkDetails.isEmpty())
{
FactorScore factorScore = (FactorScore) factorLinkDetails.get("factorScore");
%>
<div class="detail-box ja-exp-f-box">
<div class="detail-row">
<div class="detail-label">
<oneit:toString value="<%= factorLevelLink.getFactor() %>" mode="EscapeHTML"/>
</div>
<div class="detail-no">
<oneit:toString value="<%= factorScore.getScore() %>" mode="WholeNumber"/>
</div>
</div>
</div>
<div class="detail-box ja-exp-f-b-b">
</div>
<%
}
}
%>
<div class="detail-box ja-exp-f-c-b-b">
</div>
<%
}
}
}
else
{
%>
<div class="detail-box">
<%
Map<FactorClass, Tuple.T3<Double, ColorCode, Double>> roleScoreMap = (Map<FactorClass, Tuple.T3<Double, ColorCode, Double>>)jobApplication.getRoleFit();
for(FactorClass factorClass : jobApplication.getSortedFactorClasses())
{
if(factorClass != null && roleScoreMap.get(factorClass) != null)
{
%>
<div class="detail-row">
<div class="detail-label">
<oneit:toString value="<%= factorClass %>" mode="EscapeHTML"/>
</div>
<div class="detail-no">
<oneit:toString value="<%= roleScoreMap.get(factorClass).get2() %>" mode="PercentageWholeNumber"/>
</div>
</div>
<%
}
}
%>
</div>
<%
}
%>
<div class="culture jcc">
<img src="images/culture-icon.svg"> culture fit
<span>
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>">
<oneit:toString value="<%= jobApplication.getCultureFitScore() %>" mode="PercentageWholeNumber" />
</oneit:button>
</span>
</div>
<div class="detail-box">
<%
Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>> cultureFitData = (Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>>)jobApplication.getCultureFit();
for(CultureClass cClass: cultureFitData.keySet())
{
if(cClass==null)
{
continue;
}
%>
<div class="detail-row">
<div class="detail-label"><oneit:toString value="<%= cClass %>" mode="EscapeHTML"/></div>
<div class="detail-no"><oneit:toString value="<%= cultureFitData.get(cClass) != null ? cultureFitData.get(cClass).get0() : 0 %>" mode="PercentageWholeNumber" /></div>
</div>
<%
}
%>
</div>
<%
if(job.getIncludeAssessmentCriteria()==Boolean.TRUE)
{
%>
<div class="jcc">
<img src="images/criteria-icon.svg"> Requirements
<span>
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>">
<oneit:toString value="<%= jobApplication.getRequirementFitScore() %>" mode="PercentageWholeNumber" />
</oneit:button>
</span>
</div>
<div class="detail-box">
<%
Map<Importance, Long> requirementFitData = (Map<Importance, Long>)jobApplication.getRequirementFit();
for(Importance importance: Utils.getImportancesForAssessment())
{
%>
<div class="detail-row">
<div class="detail-label"><oneit:toString value="<%= importance %>" mode="EscapeHTML"/></div>
<div class="detail-no"><oneit:toString value="<%= requirementFitData.get(importance) %>" mode="PercentageWholeNumber" /></div>
</div>
<%
}
%>
</div>
<%
}
%>
</div>
</oneit:button>
</div>
<%
i++;
}
%>
</div>
</oneit:dynIncluded>
\ No newline at end of file
...@@ -22,10 +22,12 @@ ...@@ -22,10 +22,12 @@
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
AppSortOption appSortOpt = (AppSortOption) process.getAttribute("AppSortOption"); AppSortOption appSortOpt = (AppSortOption) process.getAttribute("AppSortOption");
ApplicationStatus appStatus = process.getAttribute("ApplicationStatus") != null ? (ApplicationStatus) process.getAttribute("ApplicationStatus") : ApplicationStatus.SUBMITTED;
int tabNumber = process.getAttribute("TabNumber") != null ? (int) process.getAttribute("TabNumber") : 2; int tabNumber = process.getAttribute("TabNumber") != null ? (int) process.getAttribute("TabNumber") : 2;
boolean showList = process.getAttribute("ShowList") != null ? (boolean) process.getAttribute("ShowList") : true;
SearchApplicant searchApplicant = (SearchApplicant) RunSearchExecutorFP.setupExecutor(request, SearchApplicant.REFERENCE_SearchApplicant, true); SearchApplicant searchApplicant = (SearchApplicant) RunSearchExecutorFP.setupExecutor(request, SearchApplicant.REFERENCE_SearchApplicant, true);
JobApplication[] applications = (JobApplication[]) process.getAttribute("JobApplications"); JobApplication[] applications = (JobApplication[]) process.getAttribute("JobApplications");
WorkFlow workflow = job.getWorkFlowBySortOrder(tabNumber); WorkFlow workflow = job.getWorkFlowByStatus(appStatus);
searchApplicant.setJob(job); searchApplicant.setJob(job);
...@@ -55,36 +57,68 @@ ...@@ -55,36 +57,68 @@
// filter applicants by workflow // filter applicants by workflow
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(workflow.getApplicationStatus())); oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(workflow.getApplicationStatus()));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT));
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, filter)); // if Applicant Status, then show all application completed applicants
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, appStatus == ApplicationStatus.SUBMITTED ? applicantFilter : filter));
List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt); List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt);
process.setAttribute("AppSortOption", appSortOpt); process.setAttribute("AppSortOption", appSortOpt);
process.setAttribute("ApplicationStatus", appStatus);
process.setAttribute("TabNumber", tabNumber); process.setAttribute("TabNumber", tabNumber);
process.setAttribute("ShowList", showList);
%> %>
<oneit:form name="viewApplicants" method="post" enctype="multipart/form-data"> <oneit:form name="viewApplicants" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area"> <div class="dashboard-content-area">
<oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp"
TabNumber="<%= tabNumber %>" ApplicationStatus="<%= appStatus %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="second-part view-app-area"> <div class="second-part view-app-area">
<oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp"
tabNumber="1" ShowList="<%= showList %>"
sortOption="<%= appSortOpt %>" SearchApplicant="<%= searchApplicant %>"
currentPage="<%= currentPage %>"
showOrderBy="<%= sortedApplications.size() > 1 %>" showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp" <%
if(showList)
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_list.jsp"
applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>"
ApplicationStatus="<%= appStatus %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
else
{
if(appStatus == ApplicationStatus.SHORTLISTED)
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_shortlist_grid.jsp"
applications="<%= sortedApplications %>" applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
TabNumber="<%= tabNumber %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
else
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_grid.jsp"
applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
}
%>
</div> </div>
</div> </div>
</oneit:form> </oneit:form>
......
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