Commit 2e8441b7 by Nilu

bulk update functionality update in HT003

parent bea59561
...@@ -16,13 +16,13 @@ import oneit.servlets.forms.SuccessfulResult; ...@@ -16,13 +16,13 @@ import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState; import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP; import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException; import oneit.utils.BusinessException;
import oneit.utils.Debug;
import oneit.utils.filter.CollectionFilter; import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import performa.intercom.utils.IntercomUtils; import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser; import performa.orm.CompanyUser;
import performa.orm.Job; import performa.orm.Job;
import performa.orm.JobApplication; import performa.orm.JobApplication;
import performa.orm.types.AppProcessOption;
import performa.orm.types.ApplicationStatus; import performa.orm.types.ApplicationStatus;
...@@ -35,9 +35,12 @@ public class BulkUpdateFP extends SaveFP ...@@ -35,9 +35,12 @@ public class BulkUpdateFP extends SaveFP
List<JobApplication> applications = ObjstoreUtils.getActioned(request, "IsSelected", process.getTransaction(), JobApplication.REFERENCE_JobApplication); List<JobApplication> applications = ObjstoreUtils.getActioned(request, "IsSelected", process.getTransaction(), JobApplication.REFERENCE_JobApplication);
Job job = (Job) request.getAttribute("Job"); Job job = (Job) request.getAttribute("Job");
Debug.assertion(job != null, "No job found . Call from " + getClass().getName());
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In BulkUpdateFP selected application count : ", applications != null ? applications.size() : 0 , " of job ", job); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In BulkUpdateFP selected application count : ", applications != null ? applications.size() : 0 , " of job ", job);
if(job.getAppProcessOption() == AppProcessOption.TO_SHORTLIST && job.getNoOfCandidatesApplied() > job.getMaxShortlistApplicants() && applications != null) if(job.getAppStatusWorkFlow() != null && job.getAppStatusWorkFlow().getApplicationStatus() == ApplicationStatus.SHORTLISTED
&& job.getNoOfCandidatesApplied() > job.getMaxShortlistApplicants() && applications != null)
{ {
Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(ApplicationStatus.SHORTLISTED)); Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(ApplicationStatus.SHORTLISTED));
Collection alreadyShortlisted = CollectionFilter.filter(applications, filter); Collection alreadyShortlisted = CollectionFilter.filter(applications, filter);
...@@ -46,28 +49,15 @@ public class BulkUpdateFP extends SaveFP ...@@ -46,28 +49,15 @@ public class BulkUpdateFP extends SaveFP
BusinessObjectParser.assertFieldCondition(totalShortlisted <= job.getMaxShortlistApplicants() , job , Job.MULTIPLEREFERENCE_JobApplications, "exceedMaxShortlisted"); BusinessObjectParser.assertFieldCondition(totalShortlisted <= job.getMaxShortlistApplicants() , job , Job.MULTIPLEREFERENCE_JobApplications, "exceedMaxShortlisted");
} }
for(JobApplication application : applications) if(job.getAppStatusWorkFlow() != null)
{
if(job.getAppProcessOption() == AppProcessOption.TO_SHORTLIST)
{
application.setApplicationStatus(ApplicationStatus.SHORTLISTED);
}
else if(job.getAppProcessOption() == AppProcessOption.REMOVE_FROM_SHORTLIST)
{
application.setApplicationStatus(ApplicationStatus.SUBMITTED);
}
else if(job.getAppProcessOption() == AppProcessOption.TO_UNSUITABLE)
{ {
application.setApplicationStatus(ApplicationStatus.UNSUITABLE); for(JobApplication application : applications)
}
else if(job.getAppProcessOption() == AppProcessOption.REMOVE_FROM_UNSUITABLE)
{ {
application.setApplicationStatus(ApplicationStatus.SUBMITTED); application.setApplicationStatus(job.getAppStatusWorkFlow().getApplicationStatus());
}
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In BulkUpdateFP Job Application Status successfully changed : ", application ); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In BulkUpdateFP Job Application Status successfully changed : ", application );
} }
}
// restarting process as custom attributes needs to be updated to intercom // restarting process as custom attributes needs to be updated to intercom
completeProcessRestartAndRestoreAttribs(process, request); completeProcessRestartAndRestoreAttribs(process, request);
......
...@@ -85,6 +85,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -85,6 +85,7 @@ public abstract class BaseJob extends BaseBusinessClass
public static final String SINGLEREFERENCE_AssessmentTemplate = "AssessmentTemplate"; public static final String SINGLEREFERENCE_AssessmentTemplate = "AssessmentTemplate";
public static final String SINGLEREFERENCE_CultureTemplate = "CultureTemplate"; public static final String SINGLEREFERENCE_CultureTemplate = "CultureTemplate";
public static final String SINGLEREFERENCE_JobTemplate = "JobTemplate"; public static final String SINGLEREFERENCE_JobTemplate = "JobTemplate";
public static final String SINGLEREFERENCE_AppStatusWorkFlow = "AppStatusWorkFlow";
public static final String SINGLEREFERENCE_Level = "Level"; public static final String SINGLEREFERENCE_Level = "Level";
public static final String SINGLEREFERENCE_Client = "Client"; public static final String SINGLEREFERENCE_Client = "Client";
public static final String BACKREF_Client = ""; public static final String BACKREF_Client = "";
...@@ -195,6 +196,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -195,6 +196,7 @@ public abstract class BaseJob extends BaseBusinessClass
private SingleAssociation<Job, AssessmentCriteriaTemplate> _AssessmentTemplate; private SingleAssociation<Job, AssessmentCriteriaTemplate> _AssessmentTemplate;
private SingleAssociation<Job, CultureCriteriaTemplate> _CultureTemplate; private SingleAssociation<Job, CultureCriteriaTemplate> _CultureTemplate;
private SingleAssociation<Job, Job> _JobTemplate; private SingleAssociation<Job, Job> _JobTemplate;
private SingleAssociation<Job, WorkFlow> _AppStatusWorkFlow;
private SingleAssociation<Job, Level> _Level; private SingleAssociation<Job, Level> _Level;
private SingleAssociation<Job, Client> _Client; private SingleAssociation<Job, Client> _Client;
private SingleAssociation<Job, CompanyUser> _JobOwner; private SingleAssociation<Job, CompanyUser> _JobOwner;
...@@ -278,6 +280,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -278,6 +280,7 @@ public abstract class BaseJob extends BaseBusinessClass
setupAssocMetaData_AssessmentTemplate(); setupAssocMetaData_AssessmentTemplate();
setupAssocMetaData_CultureTemplate(); setupAssocMetaData_CultureTemplate();
setupAssocMetaData_JobTemplate(); setupAssocMetaData_JobTemplate();
setupAssocMetaData_AppStatusWorkFlow();
setupAssocMetaData_Level(); setupAssocMetaData_Level();
setupAssocMetaData_Client(); setupAssocMetaData_Client();
setupAssocMetaData_JobOwner(); setupAssocMetaData_JobOwner();
...@@ -433,6 +436,19 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -433,6 +436,19 @@ public abstract class BaseJob extends BaseBusinessClass
// Meta Info setup // Meta Info setup
private static void setupAssocMetaData_AppStatusWorkFlow()
{
Map metaInfo = new HashMap ();
metaInfo.put ("name", "AppStatusWorkFlow");
metaInfo.put ("type", "WorkFlow");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Job.AppStatusWorkFlow:", metaInfo);
ATTRIBUTES_METADATA_Job.put (SINGLEREFERENCE_AppStatusWorkFlow, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static void setupAssocMetaData_Level() private static void setupAssocMetaData_Level()
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -1316,6 +1332,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -1316,6 +1332,7 @@ public abstract class BaseJob extends BaseBusinessClass
_AssessmentTemplate = new SingleAssociation<Job, AssessmentCriteriaTemplate> (this, SINGLEREFERENCE_AssessmentTemplate, null, AssessmentCriteriaTemplate.REFERENCE_AssessmentCriteriaTemplate, ""); _AssessmentTemplate = new SingleAssociation<Job, AssessmentCriteriaTemplate> (this, SINGLEREFERENCE_AssessmentTemplate, null, AssessmentCriteriaTemplate.REFERENCE_AssessmentCriteriaTemplate, "");
_CultureTemplate = new SingleAssociation<Job, CultureCriteriaTemplate> (this, SINGLEREFERENCE_CultureTemplate, null, CultureCriteriaTemplate.REFERENCE_CultureCriteriaTemplate, ""); _CultureTemplate = new SingleAssociation<Job, CultureCriteriaTemplate> (this, SINGLEREFERENCE_CultureTemplate, null, CultureCriteriaTemplate.REFERENCE_CultureCriteriaTemplate, "");
_JobTemplate = new SingleAssociation<Job, Job> (this, SINGLEREFERENCE_JobTemplate, null, Job.REFERENCE_Job, ""); _JobTemplate = new SingleAssociation<Job, Job> (this, SINGLEREFERENCE_JobTemplate, null, Job.REFERENCE_Job, "");
_AppStatusWorkFlow = new SingleAssociation<Job, WorkFlow> (this, SINGLEREFERENCE_AppStatusWorkFlow, null, WorkFlow.REFERENCE_WorkFlow, "");
_Level = new SingleAssociation<Job, Level> (this, SINGLEREFERENCE_Level, null, Level.REFERENCE_Level, "tl_job"); _Level = new SingleAssociation<Job, Level> (this, SINGLEREFERENCE_Level, null, Level.REFERENCE_Level, "tl_job");
_Client = new SingleAssociation<Job, Client> (this, SINGLEREFERENCE_Client, Client.MULTIPLEREFERENCE_Jobs, Client.REFERENCE_Client, "tl_job"); _Client = new SingleAssociation<Job, Client> (this, SINGLEREFERENCE_Client, Client.MULTIPLEREFERENCE_Jobs, Client.REFERENCE_Client, "tl_job");
_JobOwner = new SingleAssociation<Job, CompanyUser> (this, SINGLEREFERENCE_JobOwner, null, CompanyUser.REFERENCE_CompanyUser, "tl_job"); _JobOwner = new SingleAssociation<Job, CompanyUser> (this, SINGLEREFERENCE_JobOwner, null, CompanyUser.REFERENCE_CompanyUser, "tl_job");
...@@ -1339,6 +1356,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -1339,6 +1356,7 @@ public abstract class BaseJob extends BaseBusinessClass
_AssessmentTemplate = new SingleAssociation<Job, AssessmentCriteriaTemplate> (this, SINGLEREFERENCE_AssessmentTemplate, null, AssessmentCriteriaTemplate.REFERENCE_AssessmentCriteriaTemplate, ""); _AssessmentTemplate = new SingleAssociation<Job, AssessmentCriteriaTemplate> (this, SINGLEREFERENCE_AssessmentTemplate, null, AssessmentCriteriaTemplate.REFERENCE_AssessmentCriteriaTemplate, "");
_CultureTemplate = new SingleAssociation<Job, CultureCriteriaTemplate> (this, SINGLEREFERENCE_CultureTemplate, null, CultureCriteriaTemplate.REFERENCE_CultureCriteriaTemplate, ""); _CultureTemplate = new SingleAssociation<Job, CultureCriteriaTemplate> (this, SINGLEREFERENCE_CultureTemplate, null, CultureCriteriaTemplate.REFERENCE_CultureCriteriaTemplate, "");
_JobTemplate = new SingleAssociation<Job, Job> (this, SINGLEREFERENCE_JobTemplate, null, Job.REFERENCE_Job, ""); _JobTemplate = new SingleAssociation<Job, Job> (this, SINGLEREFERENCE_JobTemplate, null, Job.REFERENCE_Job, "");
_AppStatusWorkFlow = new SingleAssociation<Job, WorkFlow> (this, SINGLEREFERENCE_AppStatusWorkFlow, null, WorkFlow.REFERENCE_WorkFlow, "");
_Level = new SingleAssociation<Job, Level> (this, SINGLEREFERENCE_Level, null, Level.REFERENCE_Level, "tl_job"); _Level = new SingleAssociation<Job, Level> (this, SINGLEREFERENCE_Level, null, Level.REFERENCE_Level, "tl_job");
_Client = new SingleAssociation<Job, Client> (this, SINGLEREFERENCE_Client, Client.MULTIPLEREFERENCE_Jobs, Client.REFERENCE_Client, "tl_job"); _Client = new SingleAssociation<Job, Client> (this, SINGLEREFERENCE_Client, Client.MULTIPLEREFERENCE_Jobs, Client.REFERENCE_Client, "tl_job");
_JobOwner = new SingleAssociation<Job, CompanyUser> (this, SINGLEREFERENCE_JobOwner, null, CompanyUser.REFERENCE_CompanyUser, "tl_job"); _JobOwner = new SingleAssociation<Job, CompanyUser> (this, SINGLEREFERENCE_JobOwner, null, CompanyUser.REFERENCE_CompanyUser, "tl_job");
...@@ -5103,6 +5121,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5103,6 +5121,8 @@ public abstract class BaseJob extends BaseBusinessClass
result.add("JobTemplate"); result.add("JobTemplate");
result.add("AppStatusWorkFlow");
result.add("Level"); result.add("Level");
result.add("Client"); result.add("Client");
...@@ -5137,6 +5157,9 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5137,6 +5157,9 @@ public abstract class BaseJob extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_JobTemplate)) }else if (assocName.equals (SINGLEREFERENCE_JobTemplate))
{ {
return _JobTemplate.getReferencedType (); return _JobTemplate.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_AppStatusWorkFlow))
{
return _AppStatusWorkFlow.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Level)) }else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return _Level.getReferencedType (); return _Level.getReferencedType ();
...@@ -5216,6 +5239,9 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5216,6 +5239,9 @@ public abstract class BaseJob extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_JobTemplate)) }else if (assocName.equals (SINGLEREFERENCE_JobTemplate))
{ {
return getJobTemplate (); return getJobTemplate ();
}else if (assocName.equals (SINGLEREFERENCE_AppStatusWorkFlow))
{
return getAppStatusWorkFlow ();
}else if (assocName.equals (SINGLEREFERENCE_Level)) }else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return getLevel (); return getLevel ();
...@@ -5260,6 +5286,9 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5260,6 +5286,9 @@ public abstract class BaseJob extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_JobTemplate)) }else if (assocName.equals (SINGLEREFERENCE_JobTemplate))
{ {
return getJobTemplate (getType); return getJobTemplate (getType);
}else if (assocName.equals (SINGLEREFERENCE_AppStatusWorkFlow))
{
return getAppStatusWorkFlow (getType);
}else if (assocName.equals (SINGLEREFERENCE_Level)) }else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return getLevel (getType); return getLevel (getType);
...@@ -5304,6 +5333,9 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5304,6 +5333,9 @@ public abstract class BaseJob extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_JobTemplate)) }else if (assocName.equals (SINGLEREFERENCE_JobTemplate))
{ {
return getJobTemplateID (); return getJobTemplateID ();
}else if (assocName.equals (SINGLEREFERENCE_AppStatusWorkFlow))
{
return getAppStatusWorkFlowID ();
}else if (assocName.equals (SINGLEREFERENCE_Level)) }else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return getLevelID (); return getLevelID ();
...@@ -5348,6 +5380,9 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5348,6 +5380,9 @@ public abstract class BaseJob extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_JobTemplate)) }else if (assocName.equals (SINGLEREFERENCE_JobTemplate))
{ {
setJobTemplate ((Job)(newValue)); setJobTemplate ((Job)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_AppStatusWorkFlow))
{
setAppStatusWorkFlow ((WorkFlow)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Level)) }else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
setLevel ((Level)(newValue)); setLevel ((Level)(newValue));
...@@ -5661,6 +5696,100 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5661,6 +5696,100 @@ public abstract class BaseJob extends BaseBusinessClass
} }
/** /**
* Get the reference AppStatusWorkFlow
*/
public WorkFlow getAppStatusWorkFlow () throws StorageException
{
assertValid();
try
{
return (WorkFlow)(_AppStatusWorkFlow.get ());
}
catch (ClassCastException e)
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Cache collision in Job:", this.getObjectID (), ", was trying to get WorkFlow:", getAppStatusWorkFlowID ());
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Instead I got:", _AppStatusWorkFlow.get ().getClass ());
throw e;
}
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public WorkFlow getAppStatusWorkFlow (Get getType) throws StorageException
{
assertValid();
return _AppStatusWorkFlow.get(getType);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getAppStatusWorkFlowID ()
{
assertValid();
if (_AppStatusWorkFlow == null)
{
return null;
}
else
{
return _AppStatusWorkFlow.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 preAppStatusWorkFlowChange (WorkFlow newAppStatusWorkFlow) 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 postAppStatusWorkFlowChange () throws FieldException
{
}
public FieldWriteability getWriteability_AppStatusWorkFlow ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the reference AppStatusWorkFlow. Checks to ensure a new value
* has been supplied. If so, marks the reference as altered and sets it.
*/
public void setAppStatusWorkFlow (WorkFlow newAppStatusWorkFlow) throws StorageException, FieldException
{
if (_AppStatusWorkFlow.wouldReferencedChange (newAppStatusWorkFlow))
{
assertValid();
Debug.assertion (getWriteability_AppStatusWorkFlow () != FieldWriteability.FALSE, "Assoc AppStatusWorkFlow is not writeable");
preAppStatusWorkFlowChange (newAppStatusWorkFlow);
_AppStatusWorkFlow.set (newAppStatusWorkFlow);
postAppStatusWorkFlowChange ();
}
}
/**
* Get the reference Level * Get the reference Level
*/ */
public Level getLevel () throws StorageException public Level getLevel () throws StorageException
...@@ -7370,6 +7499,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7370,6 +7499,7 @@ public abstract class BaseJob extends BaseBusinessClass
_AssessmentTemplate.copyFrom (sourceJob._AssessmentTemplate, linkToGhosts); _AssessmentTemplate.copyFrom (sourceJob._AssessmentTemplate, linkToGhosts);
_CultureTemplate.copyFrom (sourceJob._CultureTemplate, linkToGhosts); _CultureTemplate.copyFrom (sourceJob._CultureTemplate, linkToGhosts);
_JobTemplate.copyFrom (sourceJob._JobTemplate, linkToGhosts); _JobTemplate.copyFrom (sourceJob._JobTemplate, linkToGhosts);
_AppStatusWorkFlow.copyFrom (sourceJob._AppStatusWorkFlow, linkToGhosts);
_Level.copyFrom (sourceJob._Level, linkToGhosts); _Level.copyFrom (sourceJob._Level, linkToGhosts);
_Client.copyFrom (sourceJob._Client, linkToGhosts); _Client.copyFrom (sourceJob._Client, linkToGhosts);
_JobOwner.copyFrom (sourceJob._JobOwner, linkToGhosts); _JobOwner.copyFrom (sourceJob._JobOwner, linkToGhosts);
...@@ -7458,6 +7588,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7458,6 +7588,7 @@ public abstract class BaseJob extends BaseBusinessClass
_AssessmentTemplate.readExternalData(vals.get(SINGLEREFERENCE_AssessmentTemplate)); _AssessmentTemplate.readExternalData(vals.get(SINGLEREFERENCE_AssessmentTemplate));
_CultureTemplate.readExternalData(vals.get(SINGLEREFERENCE_CultureTemplate)); _CultureTemplate.readExternalData(vals.get(SINGLEREFERENCE_CultureTemplate));
_JobTemplate.readExternalData(vals.get(SINGLEREFERENCE_JobTemplate)); _JobTemplate.readExternalData(vals.get(SINGLEREFERENCE_JobTemplate));
_AppStatusWorkFlow.readExternalData(vals.get(SINGLEREFERENCE_AppStatusWorkFlow));
_Level.readExternalData(vals.get(SINGLEREFERENCE_Level)); _Level.readExternalData(vals.get(SINGLEREFERENCE_Level));
_Client.readExternalData(vals.get(SINGLEREFERENCE_Client)); _Client.readExternalData(vals.get(SINGLEREFERENCE_Client));
_JobOwner.readExternalData(vals.get(SINGLEREFERENCE_JobOwner)); _JobOwner.readExternalData(vals.get(SINGLEREFERENCE_JobOwner));
...@@ -7521,6 +7652,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7521,6 +7652,7 @@ public abstract class BaseJob extends BaseBusinessClass
vals.put (SINGLEREFERENCE_AssessmentTemplate, _AssessmentTemplate.writeExternalData()); vals.put (SINGLEREFERENCE_AssessmentTemplate, _AssessmentTemplate.writeExternalData());
vals.put (SINGLEREFERENCE_CultureTemplate, _CultureTemplate.writeExternalData()); vals.put (SINGLEREFERENCE_CultureTemplate, _CultureTemplate.writeExternalData());
vals.put (SINGLEREFERENCE_JobTemplate, _JobTemplate.writeExternalData()); vals.put (SINGLEREFERENCE_JobTemplate, _JobTemplate.writeExternalData());
vals.put (SINGLEREFERENCE_AppStatusWorkFlow, _AppStatusWorkFlow.writeExternalData());
vals.put (SINGLEREFERENCE_Level, _Level.writeExternalData()); vals.put (SINGLEREFERENCE_Level, _Level.writeExternalData());
vals.put (SINGLEREFERENCE_Client, _Client.writeExternalData()); vals.put (SINGLEREFERENCE_Client, _Client.writeExternalData());
vals.put (SINGLEREFERENCE_JobOwner, _JobOwner.writeExternalData()); vals.put (SINGLEREFERENCE_JobOwner, _JobOwner.writeExternalData());
...@@ -7646,6 +7778,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7646,6 +7778,7 @@ public abstract class BaseJob extends BaseBusinessClass
_AssessmentTemplate.compare (otherJob._AssessmentTemplate, listener); _AssessmentTemplate.compare (otherJob._AssessmentTemplate, listener);
_CultureTemplate.compare (otherJob._CultureTemplate, listener); _CultureTemplate.compare (otherJob._CultureTemplate, listener);
_JobTemplate.compare (otherJob._JobTemplate, listener); _JobTemplate.compare (otherJob._JobTemplate, listener);
_AppStatusWorkFlow.compare (otherJob._AppStatusWorkFlow, listener);
_Level.compare (otherJob._Level, listener); _Level.compare (otherJob._Level, listener);
_Client.compare (otherJob._Client, listener); _Client.compare (otherJob._Client, listener);
_JobOwner.compare (otherJob._JobOwner, listener); _JobOwner.compare (otherJob._JobOwner, listener);
...@@ -7718,6 +7851,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7718,6 +7851,7 @@ public abstract class BaseJob extends BaseBusinessClass
visitor.visitAssociation (_AssessmentTemplate); visitor.visitAssociation (_AssessmentTemplate);
visitor.visitAssociation (_CultureTemplate); visitor.visitAssociation (_CultureTemplate);
visitor.visitAssociation (_JobTemplate); visitor.visitAssociation (_JobTemplate);
visitor.visitAssociation (_AppStatusWorkFlow);
visitor.visitAssociation (_Level); visitor.visitAssociation (_Level);
visitor.visitAssociation (_Client); visitor.visitAssociation (_Client);
visitor.visitAssociation (_JobOwner); visitor.visitAssociation (_JobOwner);
...@@ -7749,6 +7883,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7749,6 +7883,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
visitor.visit (_JobTemplate); visitor.visit (_JobTemplate);
} }
if (scope.includes (_AppStatusWorkFlow))
{
visitor.visit (_AppStatusWorkFlow);
}
if (scope.includes (_Level)) if (scope.includes (_Level))
{ {
visitor.visit (_Level); visitor.visit (_Level);
...@@ -9641,6 +9779,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -9641,6 +9779,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return getWriteability_JobTemplate (); return getWriteability_JobTemplate ();
} }
else if (fieldName.equals (SINGLEREFERENCE_AppStatusWorkFlow))
{
return getWriteability_AppStatusWorkFlow ();
}
else else
{ {
return super.getWriteable (fieldName); return super.getWriteable (fieldName);
...@@ -10758,6 +10900,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -10758,6 +10900,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return toJobTemplate (); return toJobTemplate ();
} }
if (name.equals ("AppStatusWorkFlow"))
{
return toAppStatusWorkFlow ();
}
if (name.equals ("JobTitle")) if (name.equals ("JobTitle"))
{ {
return toJobTitle (); return toJobTitle ();
...@@ -10981,6 +11127,12 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -10981,6 +11127,12 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return Job.REFERENCE_Job.new JobPipeLineFactory<From, Job> (this, new ORMSingleAssocPipe<Me, Job>(SINGLEREFERENCE_JobTemplate, filter)); return Job.REFERENCE_Job.new JobPipeLineFactory<From, Job> (this, new ORMSingleAssocPipe<Me, Job>(SINGLEREFERENCE_JobTemplate, filter));
} }
public WorkFlow.WorkFlowPipeLineFactory<From, WorkFlow> toAppStatusWorkFlow () { return toAppStatusWorkFlow (Filter.ALL); }
public WorkFlow.WorkFlowPipeLineFactory<From, WorkFlow> toAppStatusWorkFlow (Filter<WorkFlow> filter)
{
return WorkFlow.REFERENCE_WorkFlow.new WorkFlowPipeLineFactory<From, WorkFlow> (this, new ORMSingleAssocPipe<Me, WorkFlow>(SINGLEREFERENCE_AppStatusWorkFlow, filter));
}
public Level.LevelPipeLineFactory<From, Level> toLevel () { return toLevel (Filter.ALL); } public Level.LevelPipeLineFactory<From, Level> toLevel () { return toLevel (Filter.ALL); }
public Level.LevelPipeLineFactory<From, Level> toLevel (Filter<Level> filter) public Level.LevelPipeLineFactory<From, Level> toLevel (Filter<Level> filter)
...@@ -11145,6 +11297,11 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -11145,6 +11297,11 @@ public abstract class BaseJob extends BaseBusinessClass
return true; return true;
} }
if(CollectionUtils.equals(assocName, "AppStatusWorkFlow"))
{
return true;
}
return super.isTransientSingleReference(assocName); return super.isTransientSingleReference(assocName);
} }
...@@ -11205,6 +11362,20 @@ class DummyJob extends Job ...@@ -11205,6 +11362,20 @@ class DummyJob extends Job
return Job.DUMMY_Job.getObjectID(); return Job.DUMMY_Job.getObjectID();
} }
public WorkFlow getAppStatusWorkFlow () throws StorageException
{
return (WorkFlow)(WorkFlow.DUMMY_WorkFlow);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getAppStatusWorkFlowID ()
{
return WorkFlow.DUMMY_WorkFlow.getObjectID();
}
public Level getLevel () throws StorageException public Level getLevel () throws StorageException
{ {
return (Level)(Level.DUMMY_Level); return (Level)(Level.DUMMY_Level);
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
<TRANSIENTSINGLE name="AssessmentTemplate" type="AssessmentCriteriaTemplate" /> <TRANSIENTSINGLE name="AssessmentTemplate" type="AssessmentCriteriaTemplate" />
<TRANSIENTSINGLE name="CultureTemplate" type="CultureCriteriaTemplate" /> <TRANSIENTSINGLE name="CultureTemplate" type="CultureCriteriaTemplate" />
<TRANSIENTSINGLE name="JobTemplate" type="Job" /> <TRANSIENTSINGLE name="JobTemplate" type="Job" />
<TRANSIENTSINGLE name="AppStatusWorkFlow" type="WorkFlow" />
<TABLE name="tl_job" tablePrefix="object" polymorphic="FALSE"> <TABLE name="tl_job" tablePrefix="object" polymorphic="FALSE">
......
...@@ -3801,7 +3801,7 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{ ...@@ -3801,7 +3801,7 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{
.main-applicants-filter{ .main-applicants-filter{
float: left; float: left;
width: 100%; width: 100%;
margin-bottom: 50px; /*margin-bottom: 50px;*/
} }
.appli-list-shorting{ .appli-list-shorting{
display: inline-block; display: inline-block;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "ApplicationStatus"); ApplicationStatus appStatus = (ApplicationStatus) getData(request, "WorkFlowStatus");
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);
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<li class="<%= "incomplete " + (noOfIncomplete > 0 ? "has-applicant" : "no-applicant") %> <%= appStatus == ApplicationStatus.DRAFT ? "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="<%= noOfIncomplete > 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("WorkFlowStatus", ApplicationStatus.DRAFT).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfIncomplete %>" mode="Integer" /> <oneit:toString value="<%= noOfIncomplete %>" mode="Integer" />
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
<li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= (appStatus == workflow.getApplicationStatus()) ? "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("WorkFlowStatus", workflow.getApplicationStatus()).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfCandidates %>" mode="Integer" /> <oneit:toString value="<%= noOfCandidates %>" mode="Integer" />
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
<div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= appStatus == ApplicationStatus.UNSUITABLE ? "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("WorkFlowStatus", ApplicationStatus.UNSUITABLE).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" /> <oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" />
......
...@@ -7,10 +7,10 @@ ...@@ -7,10 +7,10 @@
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
AppSortOption appSortOpt = (AppSortOption) getData(request, "sortOption"); AppSortOption appSortOpt = (AppSortOption) getData(request, "SortOption");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "appStatus"); ApplicationStatus appStatus = (ApplicationStatus) getData(request, "AppStatus");
ApplicationStatus workflowStatus = (ApplicationStatus) getData(request, "workflowStatus"); ApplicationStatus workflowStatus = (ApplicationStatus) getData(request, "WorkFlowStatus");
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"); boolean showList = (boolean) getData(request, "ShowList");
SearchApplicant searchApplicant = (SearchApplicant) getData(request, "SearchApplicant"); SearchApplicant searchApplicant = (SearchApplicant) getData(request, "SearchApplicant");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS) + "&JobID=" + job.getID(); String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS) + "&JobID=" + job.getID();
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() $(document).ready(function()
{ {
$(".bullk-app-process").change(function() $("[name$='AppStatusWorkFlow']").change(function()
{ {
$('.bulk-update').click(); $('.bulk-update').click();
}); });
...@@ -30,15 +30,10 @@ ...@@ -30,15 +30,10 @@
$(".applicant").change(function() { $(".applicant").change(function() {
enableBulkEdit(); enableBulkEdit();
}); });
$('#AppProcessOption option:selected').removeAttr('selected');
$('#AppProcessOption option:nth-child(1)').attr('selected','selected');
$('#select2-AppProcessOption-container').empty();
$('#select2-AppProcessOption-container').data("title", $('#select2-AppProcessOption-container').attr("title")).removeAttr("title");
}); });
function enableBulkEdit() { function enableBulkEdit() {
$(".bullk-app-process").prop("disabled",$('input[class=applicant]:checked').length===0); $("[name$='AppStatusWorkFlow']").prop("disabled",$('input[class=applicant]:checked').length===0);
} }
$('#searchText').keypress(function (e) { $('#searchText').keypress(function (e) {
...@@ -52,17 +47,18 @@ ...@@ -52,17 +47,18 @@
<div class="appli-list-shorting"> <div class="appli-list-shorting">
<div class="appli-shorting-dropdown appli-left"> <div class="appli-shorting-dropdown appli-left">
<span class="appli-order-label">Bulk Update</span> <span class="appli-order-label">Bulk Update</span>
<oneit:ormEnum obj="<%= job %>" attributeName="AppProcessOption" cssClass="form-control bullk-app-process" id="AppProcessOption" <div class="wider-select bullk-app-process">
enums="<%= job.getValidProcessOptions(appStatus) %>"/> <tagfile:ormsingleasso_select obj="<%= job %>" assocName="AppStatusWorkFlow" cssClass="form-control app-process" id="AppProcessOption"
options="<%= job.getWorkFlowsSet().toArray(new WorkFlow[0]) %>"/>
</div>
<oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link" <oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry ("restartProcess", Boolean.TRUE) .mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job")) .mapEntry("procParams", CollectionUtils.mapEntry("WorkFlowStatus", appStatus).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStatus"})))
.mapEntry("Job", job) .mapEntry("Job", job)
.toMap() %>" /> .toMap() %>" />
</div> </div>
<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>
...@@ -136,6 +132,10 @@ ...@@ -136,6 +132,10 @@
} }
%> %>
</div> </div>
<div class="checkbox-list">
<input type='checkbox' id='select_all' value='select_all' class='norecalc'>
<label>&nbsp;&nbsp;Select all applicants</label>
</div>
</div> </div>
</oneit:dynIncluded> </oneit:dynIncluded>
...@@ -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");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "ApplicationStatus"); ApplicationStatus appStatus = (ApplicationStatus) getData(request, "WorkFlowStatus");
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
%> %>
...@@ -126,8 +126,8 @@ ...@@ -126,8 +126,8 @@
<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("procParams", CollectionUtils.mapEntry("ApplicationStatus", appStatus).mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("WorkFlowStatus", appStatus).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "ApplicationStatus"}))) .mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStatus"})))
.mapEntry("JobApplication", jobApplication) .mapEntry("JobApplication", jobApplication)
.toMap() %>" /> .toMap() %>" />
</div> </div>
......
...@@ -23,12 +23,12 @@ ...@@ -23,12 +23,12 @@
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
AppSortOption appSortOpt = null; AppSortOption appSortOpt = null;
ApplicationStatus appStatus = null; ApplicationStatus appStatus = null;
int tabNumber = process.getAttribute("TabNumber") != null ? (int) process.getAttribute("TabNumber") : 2; ApplicationStatus workflowStatus = process.getAttribute("WorkFlowStatus") != null ? (ApplicationStatus) process.getAttribute("WorkFlowStatus") : ApplicationStatus.SUBMITTED;
boolean showList = process.getAttribute("ShowList") != null ? (boolean) process.getAttribute("ShowList") : true; 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 = null; JobApplication[] applications = null;
Map<String, String[]> parameterMap = request.getParameterMap(); Map<String, String[]> parameterMap = request.getParameterMap();
boolean isApplicantPage = tabNumber == 2; boolean isApplicantPage = workflowStatus == ApplicationStatus.SUBMITTED;
searchApplicant.setJob(job); searchApplicant.setJob(job);
...@@ -72,10 +72,10 @@ ...@@ -72,10 +72,10 @@
} }
List<JobApplication> applicantList = Arrays.asList(applications); List<JobApplication> applicantList = Arrays.asList(applications);
WorkFlow workflow = job.getWorkFlowBySortOrder(tabNumber); // WorkFlow workflow = job.getWorkFlowByStatus(workflowStatus);
// filter applicants by status // filter applicants by status
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(isApplicantPage ? appStatus : workflow.getApplicationStatus())); oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(isApplicantPage ? appStatus : workflowStatus));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT)); oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT));
// if Applicant Status, then show all application completed applicants // if Applicant Status, then show all application completed applicants
...@@ -85,7 +85,7 @@ ...@@ -85,7 +85,7 @@
process.setAttribute("AppSortOption", appSortOpt); process.setAttribute("AppSortOption", appSortOpt);
process.setAttribute("ApplicationStatus", appStatus); process.setAttribute("ApplicationStatus", appStatus);
process.setAttribute("TabNumber", tabNumber); process.setAttribute("WorkFlowStatus", workflowStatus);
process.setAttribute("ShowList", showList); process.setAttribute("ShowList", showList);
%> %>
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
<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"
ApplicationStatus="<%= workflow.getApplicationStatus() %>" WorkFlowStatus="<%= workflowStatus %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
...@@ -101,10 +101,10 @@ ...@@ -101,10 +101,10 @@
<oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp"
ShowList="<%= showList %>" ShowList="<%= showList %>"
SearchApplicant="<%= searchApplicant %>" SearchApplicant="<%= searchApplicant %>"
showOrderBy="<%= sortedApplications.size() > 1 %>" ShowOrderBy="<%= sortedApplications.size() > 1 %>"
appStatus="<%= appStatus %>" AppStatus="<%= appStatus %>"
workflowStatus="<%= workflow.getApplicationStatus() %>" WorkFlowStatus="<%= workflowStatus %>"
sortOption="<%= appSortOpt %>" SortOption="<%= appSortOpt %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<% <%
...@@ -114,13 +114,13 @@ ...@@ -114,13 +114,13 @@
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_list.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_list.jsp"
applications="<%= sortedApplications %>" applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
ApplicationStatus="<%= workflow.getApplicationStatus() %>" WorkFlowStatus="<%= workflowStatus %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<% <%
} }
else else
{ {
if(workflow.getApplicationStatus() == ApplicationStatus.SHORTLISTED) if(workflowStatus == ApplicationStatus.SHORTLISTED)
{ {
%> %>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_shortlist_grid.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_shortlist_grid.jsp"
......
<%@ 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");
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 currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST);
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("ShortListedApplications");
if(applications==null)
{
applications = job.getShortlistedApplications() != null ? job.getShortlistedApplications().toArray(new JobApplication[0]) : null;
process.setAttribute("ShortListedApplications", applications);
}
List<JobApplication> sortedApplications = applications!=null ? Utils.getApplicationsSorted(applications, appSortOpt) : new ArrayList<JobApplication>();
process.setAttribute("AppSortOption", appSortOpt);
%>
<script type="text/javascript">
$(document).ready(function()
{
recalcFunction = setupRecalc ($("form#viewApplicants"), {'recalcOnError':true});
});
</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="2" 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="1"
appStatus="<%= ApplicationStatus.SHORTLISTED %>"
showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp"
applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
</div>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
<%@ 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");
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 currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.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("ShortListedApplications");
if(applications==null)
{
applications = job.getShortlistedApplications() != null ? job.getShortlistedApplications().toArray(new JobApplication[0]) : null;
process.setAttribute("ShortListedApplications", applications);
}
List<JobApplication> sortedApplications = applications!=null ? Utils.getApplicationsSorted(applications, appSortOpt) : new ArrayList<JobApplication>();
process.setAttribute("AppSortOption", appSortOpt);
%>
<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>
<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="2" 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"
appStatus="<%= ApplicationStatus.SHORTLISTED %>"
showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="five-boxs grid-box-view" style="">
<%
int i = 0;
for(JobApplication jobApplication : sortedApplications)
{
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", sortedApplications).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>
</div>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
<%@ 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>
<%
Job job = (Job) process.getAttribute("Job");
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 currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.UNSUITABLE_APPS);
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
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("UnsuitableApplications");
if(applications==null)
{
applications = JobApplication.SearchByAll()
.andJob(new EqualsFilter<>(job))
.andApplicationStatus(new EqualsFilter<>(ApplicationStatus.UNSUITABLE))
.search(transaction);
process.setAttribute("UnsuitableApplications", applications);
}
List<JobApplication> sortedApplications = applications!=null ? Utils.getApplicationsSorted(applications, appSortOpt) : new ArrayList<JobApplication>();
process.setAttribute("AppSortOption", appSortOpt);
%>
<script type="text/javascript">
$(document).ready(function()
{
recalcFunction = setupRecalc ($("form#viewApplicants"), {'recalcOnError':true});
});
</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="3"
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 %>"
appStatus="<%= ApplicationStatus.UNSUITABLE %>"
showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp"
applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
</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