Commit f85fc2a8 by nilu

data migration fixes for applicant view screen

parent 1cf9d52e
...@@ -28,12 +28,12 @@ public class BulkUpdateFP extends SaveFP ...@@ -28,12 +28,12 @@ public class BulkUpdateFP extends SaveFP
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.getAppWorkFlowStage()!= null && job.getAppWorkFlowStage().getStageType()== StageType.INTERVIEW if(job.getAppWorkFlowStage()!= null && job.getAppWorkFlowStage().getStageType()== StageType.SUCCESSFUL
&& job.getNoOfCandidatesApplied() > job.getMaxShortlistApplicants() && applications != null) && job.getNoOfCandidatesApplied() > job.getMaxShortlistApplicants() && applications != null)
{ {
Filter<JobApplication> filter = JobApplication.SearchByStageType().byStageTypesIn(CollectionUtils.createSet(StageType.INTERVIEW)); Filter<JobApplication> filter = JobApplication.SearchByStageType().byStageTypesIn(CollectionUtils.createSet(StageType.INTERVIEW));
Collection alreadyShortlisted = CollectionFilter.filter(applications, filter); Collection alreadyShortlisted = CollectionFilter.filter(applications, filter);
int totalShortlisted = applications.size() - alreadyShortlisted.size() + job.getNoOfCandidatesFor(StageType.INTERVIEW); int totalShortlisted = applications.size() - alreadyShortlisted.size() + job.getNoOfCandidatesFor(job.getWorkFlowByStageType(StageType.SUCCESSFUL));
BusinessObjectParser.assertFieldCondition(totalShortlisted <= job.getMaxShortlistApplicants() , job , Job.MULTIPLEREFERENCE_JobApplications, "exceedMaxShortlisted"); BusinessObjectParser.assertFieldCondition(totalShortlisted <= job.getMaxShortlistApplicants() , job , Job.MULTIPLEREFERENCE_JobApplications, "exceedMaxShortlisted");
} }
......
...@@ -48,25 +48,9 @@ public class Job extends BaseJob ...@@ -48,25 +48,9 @@ public class Job extends BaseJob
cultureCriteria.setCultureElement(cultureElement); cultureCriteria.setCultureElement(cultureElement);
addToCultureCriterias(cultureCriteria); addToCultureCriterias(cultureCriteria);
} }
createWorkFlow(ApplicationStatus.DRAFT, 1);
createWorkFlow(ApplicationStatus.SUBMITTED, 2);
createWorkFlow(ApplicationStatus.SHORTLISTED, 3);
createWorkFlow(ApplicationStatus.UNSUITABLE, 9);
}
public WorkFlow createWorkFlow(ApplicationStatus status, int sortOrder) throws FieldException
{
WorkFlow workFlow = WorkFlow.createWorkFlow(getTransaction());
workFlow.setName(status.getDescription());
workFlow.setApplicationStatus(status);
workFlow.setSortOrder(sortOrder);
addToWorkFlows(workFlow);
return workFlow;
} }
public void initAttribs() throws BusinessException public void initAttribs() throws BusinessException
{ {
setRandomKey(RandomStringGen.getRandomStringGen().generateAlphaNum(4)); setRandomKey(RandomStringGen.getRandomStringGen().generateAlphaNum(4));
...@@ -245,15 +229,15 @@ public class Job extends BaseJob ...@@ -245,15 +229,15 @@ public class Job extends BaseJob
public int getNoOfCandidatesApplied() public int getNoOfCandidatesApplied()
{ {
Filter<JobApplication> filter = JobApplication.SearchByStageType().byStageTypesNotIn(CollectionUtils.createSet(StageType.INCOMPLETE, StageType.POST_INGEST)); Filter<JobApplication> filter = JobApplication.SearchByAll().andWorkFlowStage(new NotInFilter<>(pipelineJob().toWorkFlowTemplate().toWorkFlowStages(WorkFlowStage.SearchByAll().andStageType(new InFilter<>(StageType.INCOMPLETE, StageType.POST_INGEST))).uniqueVals()));
return pipelineJob().toJobApplications(filter).toCandidate().vals().size(); return pipelineJob().toJobApplications(filter).toCandidate().vals().size();
} }
public int getNoOfCandidatesFor(StageType... status) public int getNoOfCandidatesFor(WorkFlowStage... workFlowStages)
{ {
Filter<JobApplication> filter = JobApplication.SearchByStageType().byStageTypesIn(CollectionUtils.createSet(status)); Filter<JobApplication> filter = JobApplication.SearchByAll().andWorkFlowStage(new InFilter<>(workFlowStages));
return pipelineJob().toJobApplications(filter).toCandidate().vals().size(); return pipelineJob().toJobApplications(filter).toCandidate().vals().size();
} }
...@@ -680,7 +664,7 @@ public class Job extends BaseJob ...@@ -680,7 +664,7 @@ public class Job extends BaseJob
public List<WorkFlowStage> getSortedMiddleStages() public List<WorkFlowStage> getSortedMiddleStages()
{ {
Filter<WorkFlowStage> filter = WorkFlowStage.SearchByAll().andSortOrder(new LessThanFilter<>(9)).andSortOrder(new GreaterThanFilter<>(1)); Filter<WorkFlowStage> filter = WorkFlowStage.SearchByAll().andStageType(new NotInFilter<>(StageType.POST_INGEST, StageType.INCOMPLETE, StageType.UNSUITABLE, StageType.WITHDREW));
return ObjstoreUtils.sort(pipelineJob().toWorkFlowTemplate().toWorkFlowStages(filter).uniqueVals(), return ObjstoreUtils.sort(pipelineJob().toWorkFlowTemplate().toWorkFlowStages(filter).uniqueVals(),
new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()}, new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()},
...@@ -701,6 +685,13 @@ public class Job extends BaseJob ...@@ -701,6 +685,13 @@ public class Job extends BaseJob
return pipelineJob().toWorkFlows(filter).val(); return pipelineJob().toWorkFlows(filter).val();
} }
public WorkFlowStage getWorkFlowByStageType(StageType stageType)
{
Filter<WorkFlowStage> filter = WorkFlowStage.SearchByAll().andStageType(new EqualsFilter<>(stageType));
return pipelineJob().toWorkFlowTemplate().toWorkFlowStages(filter).val();
}
public Set<WorkFlowStage> getIncompleteApplicantStages() public Set<WorkFlowStage> getIncompleteApplicantStages()
{ {
Filter<WorkFlowStage> filter = WorkFlowStage.SearchByAll().andStageType(new InFilter<>(StageType.INCOMPLETE, StageType.POST_INGEST, StageType.UNSUITABLE)); Filter<WorkFlowStage> filter = WorkFlowStage.SearchByAll().andStageType(new InFilter<>(StageType.INCOMPLETE, StageType.POST_INGEST, StageType.UNSUITABLE));
......
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 WorkFlowStage extends BaseWorkFlowStage public class WorkFlowStage extends BaseWorkFlowStage
{ {
...@@ -24,6 +10,12 @@ public class WorkFlowStage extends BaseWorkFlowStage ...@@ -24,6 +10,12 @@ public class WorkFlowStage extends BaseWorkFlowStage
{ {
// 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
...@@ -8,14 +8,15 @@ ...@@ -8,14 +8,15 @@
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
StageType appStatus = (StageType) getData(request, "WorkFlowStatus"); WorkFlowStage workFlowStage = (WorkFlowStage) getData(request, "WorkFlowStage");
WorkFlowStage workFlow = (WorkFlowStage) getData(request, "WorkFlow"); StageType stageType = workFlowStage != null ? workFlowStage.getStageType() : null;
AppView appView = (AppView) getData(request, "AppView"); AppView appView = (AppView) getData(request, "AppView");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications"); List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
int noOfIncomplete = job.getNoOfCandidatesFor(StageType.INCOMPLETE, StageType.POST_INGEST); int noOfIncomplete = job.getNoOfCandidatesFor(job.getWorkFlowByStageType(StageType.INCOMPLETE), job.getWorkFlowByStageType(StageType.POST_INGEST));
int noOfUnsuitable = job.getNoOfCandidatesFor(StageType.UNSUITABLE); int noOfUnsuitable = job.getNoOfCandidatesFor(job.getWorkFlowByStageType(StageType.UNSUITABLE));
int allCandidates = job.getNoOfCandidatesApplied();
%> %>
<oneit:dynIncluded> <oneit:dynIncluded>
...@@ -26,14 +27,14 @@ ...@@ -26,14 +27,14 @@
<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%>"
applicantPage="<%= false %>" applicantPage="<%= false %>"
applications="<%= applications %>" applications="<%= applications %>"
WorkFlow="<%= workFlow %>" WorkFlow="<%= workFlowStage %>"
AppView="<%= appView %>"/> AppView="<%= appView %>"/>
<div class="int-timeline"> <div class="int-timeline">
<ul> <ul>
<li class="<%= "incomplete " + (noOfIncomplete > 0 ? "has-applicant" : "no-applicant") %> <%= appStatus == StageType.INCOMPLETE || appStatus == StageType.POST_INGEST ? "active" : "inactive" %>"> <li class="<%= "incomplete " + (noOfIncomplete > 0 ? "has-applicant" : "no-applicant") %> <%= stageType == StageType.INCOMPLETE || stageType == StageType.POST_INGEST ? "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("WorkFlowStatus", StageType.INCOMPLETE).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", job.getWorkFlowByStageType(StageType.INCOMPLETE)).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfIncomplete %>" mode="Integer" /> <oneit:toString value="<%= noOfIncomplete %>" mode="Integer" />
...@@ -43,15 +44,26 @@ ...@@ -43,15 +44,26 @@
</div> </div>
</oneit:button> </oneit:button>
</li> </li>
<li class="<%= allCandidates > 0 ? "has-applicant" : "" %> <%= (workFlowStage == null) ? "active" : "inactive" %>">
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= allCandidates > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", null).toMap())
.toMap() %>">
<span>
<oneit:toString value="<%= allCandidates %>" mode="Integer" />
</span>
<div class="app-b-title">All Applicants</div>
</oneit:button>
</li>
<% <%
for (WorkFlowStage workflow : job.getSortedMiddleStages()) for (WorkFlowStage workflow : job.getSortedMiddleStages())
{ {
int noOfCandidates = workflow.getSortOrder() == 2 ? job.getNoOfCandidatesApplied() : job.getNoOfCandidatesFor(workflow.getStageType()); int noOfCandidates = job.getNoOfCandidatesFor(workflow);
%> %>
<li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= (appStatus == workflow.getStageType()) ? "active" : "inactive" %>"> <li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= workflow.equals(workFlowStage) ? "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("WorkFlowStatus", workflow.getStageType()).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", workflow).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfCandidates %>" mode="Integer" /> <oneit:toString value="<%= noOfCandidates %>" mode="Integer" />
...@@ -66,10 +78,10 @@ ...@@ -66,10 +78,10 @@
%> %>
</ul> </ul>
</div> </div>
<div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= appStatus == StageType.UNSUITABLE ? "active" : "inactive" %>"> <div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= stageType == StageType.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("WorkFlowStatus", StageType.UNSUITABLE).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("WorkFlowStage", job.getWorkFlowByStageType(StageType.UNSUITABLE)).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" /> <oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" />
......
...@@ -8,13 +8,14 @@ ...@@ -8,13 +8,14 @@
<% <%
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 workflowStatus = (ApplicationStatus) getData(request, "WorkFlowStatus"); WorkFlowStage workFlowStage = (WorkFlowStage) getData(request, "WorkFlowStage");
boolean isDraft = workflowStatus == ApplicationStatus.DRAFT; StageType stageType = (StageType) getData(request, "StageType");
boolean isDraft = stageType == StageType.INCOMPLETE;
ApplicationFilter appFilter = (ApplicationFilter) getData(request, "ApplicationFilter"); ApplicationFilter appFilter = (ApplicationFilter) getData(request, "ApplicationFilter");
Boolean showOrderBy = getData(request, "ShowOrderBy")!= null ? (Boolean) getData(request, "ShowOrderBy") : Boolean.FALSE; Boolean showOrderBy = getData(request, "ShowOrderBy")!= null ? (Boolean) getData(request, "ShowOrderBy") : Boolean.FALSE;
AppView appView = (AppView) getData(request,"AppView"); AppView appView = (AppView) getData(request,"AppView");
SearchApplicant searchApplicant = (SearchApplicant) getData(request, "SearchApplicant"); SearchApplicant searchApplicant = (SearchApplicant) getData(request, "SearchApplicant");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS) + "&JobID=" + job.getID() + "&WorkFlowStatus=" + workflowStatus.getName(); String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS) + "&JobID=" + job.getID();
List<WorkFlowStage> sortedWorkFlows = ObjstoreUtils.sort(job.getApplicantStages(), List<WorkFlowStage> sortedWorkFlows = ObjstoreUtils.sort(job.getApplicantStages(),
new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()}, new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()},
new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST}); new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST});
...@@ -26,7 +27,7 @@ ...@@ -26,7 +27,7 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() $(document).ready(function()
{ {
$("[name$='AppStatusWorkFlow']").change(function() $("[name$='AppWorkFlowStage']").change(function()
{ {
$('.bulk-update').click(); $('.bulk-update').click();
}); });
...@@ -76,18 +77,18 @@ ...@@ -76,18 +77,18 @@
<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("procParams", CollectionUtils.mapEntry("WorkFlowStatus", workflowStatus).mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("WorkFlowStage", workFlowStage).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStatus"}))) .mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStage"})))
.mapEntry("Job", job) .mapEntry("Job", job)
.toMap() %>" /> .toMap() %>" />
</div> </div>
<% <%
if(!(CollectionUtils.equals(workflowStatus,ApplicationStatus.DRAFT) && hiringTeam.isTrue(hiringTeam.getOnTrial()))) if(!(CollectionUtils.equals(stageType, StageType.INCOMPLETE) && hiringTeam.isTrue(hiringTeam.getOnTrial())))
{ {
%> %>
<div class="appli-filter"> <div class="appli-filter">
<% <%
if(!CollectionUtils.equals(workflowStatus,ApplicationStatus.DRAFT)) if(!CollectionUtils.equals(stageType, StageType.INCOMPLETE))
{ {
%> %>
<ul class=""> <ul class="">
......
...@@ -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, "WorkFlowStatus"); StageType stageType = (StageType) getData(request, "StageType");
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
List<WorkFlowStage> sortedWorkFlows = ObjstoreUtils.sort(job.getIncompleteApplicantStages(), List<WorkFlowStage> sortedWorkFlows = ObjstoreUtils.sort(job.getIncompleteApplicantStages(),
new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()}, new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()},
...@@ -235,8 +235,8 @@ ...@@ -235,8 +235,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("WorkFlowStatus", appStatus).mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("StageType", stageType).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStatus"}))) .mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "StageType"})))
.mapEntry("JobApplication", jobApplication) .mapEntry("JobApplication", jobApplication)
.toMap() %>" /> .toMap() %>" />
</div> </div>
......
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
for(Job job: jobs) for(Job job: jobs)
{ {
int shortlisted = job.getNoOfCandidatesFor(StageType.INTERVIEW); int shortlisted = job.getNoOfCandidatesFor(job.getWorkFlowByStageType(StageType.SUCCESSFUL));
int maxShortlist = job.getMaxShortlistApplicants(); int maxShortlist = job.getMaxShortlistApplicants();
String editJobPage = nextPage; String editJobPage = nextPage;
...@@ -288,7 +288,7 @@ ...@@ -288,7 +288,7 @@
</oneit:button> </oneit:button>
/ /
<oneit:toString value="<%= maxShortlist %>" mode="Integer" nullValue="0"/> <oneit:toString value="<%= maxShortlist %>" mode="Integer" nullValue="0"/>
<span class="grey-span">shortlisted</span> <span class="grey-span">successful</span>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -5,13 +5,13 @@ ...@@ -5,13 +5,13 @@
<%@ include file="/extensions/performa/inc/stdimports.jsp" %> <%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
boolean applicantPage = (boolean) getData(request, "applicantPage"); boolean applicantPage = (boolean) getData(request, "applicantPage");
AppView appView = (AppView) getData(request, "AppView"); AppView appView = (AppView) getData(request, "AppView");
WorkFlow workFlow = (WorkFlow) getData(request, "WorkFlow"); WorkFlowStage workFlow = (WorkFlowStage) getData(request, "WorkFlow");
String editJobPage = WebUtils.getSamePageInRenderMode(request, WebUtils.EDIT_JOB); String editJobPage = WebUtils.getSamePageInRenderMode(request, WebUtils.EDIT_JOB);
String sharePage = WebUtils.getSamePageInRenderMode(request, WebUtils.CREATED_JOB); String sharePage = WebUtils.getSamePageInRenderMode(request, WebUtils.CREATED_JOB);
String jobPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String jobPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications"); List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
%> %>
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
HiringTeam hiringTeam = job.getHiringTeam(); HiringTeam hiringTeam = job.getHiringTeam();
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, "WorkFlowStatus"); StageType stageType = (StageType) getData(request, "StageType");
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
List<WorkFlowStage> sortedWorkFlows = ObjstoreUtils.sort(job.getApplicantStages(), List<WorkFlowStage> sortedWorkFlows = ObjstoreUtils.sort(job.getApplicantStages(),
new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()}, new ObjectTransform[]{WorkFlowStage.pipesWorkFlowStage().toSortOrder()},
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() $(document).ready(function()
{ {
$("[name$='WorkFlow']").change(function() $("[name$='WorkFlowStage']").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();
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" /> <oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" />
<div class="appli-int-status"> <div class="appli-int-status">
<oneit:toString value="<%= jobApplication.getApplicantStatusStr() %>" mode="EscapeHTML" /> <oneit:toString value="<%= jobApplication.getWorkFlowStage() %>" mode="EscapeHTML" />
</div> </div>
</oneit:button> </oneit:button>
<% <%
...@@ -143,15 +143,15 @@ ...@@ -143,15 +143,15 @@
%> %>
<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">
<tagfile:ormsingleasso_select obj="<%= jobApplication %>" assocName="WorkFlow" cssClass="form-control app-process" <tagfile:ormsingleasso_select obj="<%= jobApplication %>" assocName="WorkFlowStage" cssClass="form-control app-process"
options="<%= sortedWorkFlows.toArray(new WorkFlowStage[0]) %>"/> options="<%= sortedWorkFlows.toArray(new WorkFlowStage[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("procParams", CollectionUtils.mapEntry("WorkFlowStatus", appStatus).mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("StageType", stageType).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStatus"}))) .mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "StageType"})))
.mapEntry("JobApplication", jobApplication) .mapEntry("JobApplication", jobApplication)
.toMap() %>" /> .toMap() %>" />
</div> </div>
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
AppSortOption appSortOpt = null; AppSortOption appSortOpt = null;
ApplicationFilter appFilter = null; ApplicationFilter appFilter = null;
ApplicationStatus workflowStatus = null; WorkFlowStage workFlowStage = null;
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;
...@@ -77,21 +77,14 @@ ...@@ -77,21 +77,14 @@
} }
// handle workflow status // handle workflow status
if(parameterMap.containsKey("WorkFlowStatus") && !request.getParameter("WorkFlowStatus").isEmpty()) if(process.getAttribute("WorkFlowStage") != null)
{ {
workflowStatus = ApplicationStatus.forName((String) request.getParameter("WorkFlowStatus")); workFlowStage = (WorkFlowStage) process.getAttribute("WorkFlowStage");
}
else if(process.getAttribute("WorkFlowStatus") != null)
{
workflowStatus = (ApplicationStatus) process.getAttribute("WorkFlowStatus");
}
else
{
workflowStatus = ApplicationStatus.SUBMITTED;
} }
boolean isApplicantPage = workflowStatus == ApplicationStatus.SUBMITTED; StageType stageType = workFlowStage != null ? workFlowStage.getStageType() : null;
boolean isDraftPage = workflowStatus == ApplicationStatus.DRAFT; boolean isApplicantPage = workFlowStage == null;
boolean isDraftPage = stageType == StageType.INCOMPLETE;
// handle application filter (showing dropdown) // handle application filter (showing dropdown)
if(parameterMap.containsKey("ApplicationFilter") && !request.getParameter("ApplicationFilter").isEmpty()) if(parameterMap.containsKey("ApplicationFilter") && !request.getParameter("ApplicationFilter").isEmpty())
...@@ -108,12 +101,12 @@ ...@@ -108,12 +101,12 @@
} }
List<JobApplication> applicantList = Arrays.asList(applications); List<JobApplication> applicantList = Arrays.asList(applications);
WorkFlow workflow = job.getWorkFlowByStatus(workflowStatus); // WorkFlowStage workflow = job.getWorkFlowByStageType(stageType);
// filter applicants by status // filter applicants by status
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(workflowStatus)); oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andWorkFlowStage(new EqualsFilter<>(workFlowStage));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotInFilter<>(ApplicationStatus.DRAFT, ApplicationStatus.POST_INGEST)); oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andWorkFlowStage(new NotInFilter<>(job.getIncompleteApplicantStages()));
oneit.utils.filter.Filter<JobApplication> draftFilter = JobApplication.SearchByAll().andApplicationStatus(new InFilter<>(ApplicationStatus.DRAFT, ApplicationStatus.POST_INGEST)); oneit.utils.filter.Filter<JobApplication> draftFilter = JobApplication.SearchByAll().andWorkFlowStage(new InFilter<>(job.getIncompleteApplicantStages()));
// if Applicant Status, then show all application completed applicants // if Applicant Status, then show all application completed applicants
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, isDraftPage ? draftFilter : (isApplicantPage ? applicantFilter : filter))); applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, isDraftPage ? draftFilter : (isApplicantPage ? applicantFilter : filter)));
...@@ -128,12 +121,12 @@ ...@@ -128,12 +121,12 @@
session.setAttribute("AppView", (AppView) process.getAttribute("AppView")); session.setAttribute("AppView", (AppView) process.getAttribute("AppView"));
} }
AppView appView = (session.getAttribute("AppView") != null && !CollectionUtils.equals(workflowStatus,ApplicationStatus.DRAFT))? (AppView) session.getAttribute("AppView") : AppView.LIST; AppView appView = (session.getAttribute("AppView") != null && !CollectionUtils.equals(stageType,StageType.INCOMPLETE))? (AppView) session.getAttribute("AppView") : AppView.LIST;
List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt); List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt);
process.setAttribute("AppSortOption", appSortOpt); process.setAttribute("AppSortOption", appSortOpt);
process.setAttribute("ApplicationFilter", appFilter); process.setAttribute("ApplicationFilter", appFilter);
process.setAttribute("WorkFlowStatus", workflowStatus); process.setAttribute("WorkFlowStage", workFlowStage);
process.setAttribute("AppView", appView); process.setAttribute("AppView", appView);
%> %>
...@@ -143,8 +136,7 @@ ...@@ -143,8 +136,7 @@
<oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp"
AppView="<%= appView %>" AppView="<%= appView %>"
applications="<%= sortedApplications %>" applications="<%= sortedApplications %>"
WorkFlowStatus="<%= workflowStatus %>" WorkFlowStage="<%= workFlowStage %>"
WorkFlow="<%= workflow %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
...@@ -154,20 +146,21 @@ ...@@ -154,20 +146,21 @@
SearchApplicant="<%= searchApplicant %>" SearchApplicant="<%= searchApplicant %>"
ShowOrderBy="<%= sortedApplications.size() > 1 %>" ShowOrderBy="<%= sortedApplications.size() > 1 %>"
ApplicationFilter="<%= appFilter %>" ApplicationFilter="<%= appFilter %>"
WorkFlowStatus="<%= workflowStatus %>" WorkFlowStage="<%= workFlowStage %>"
StageType="<%= stageType %>"
SortOption="<%= appSortOpt %>" SortOption="<%= appSortOpt %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<% <%
if(appView == AppView.LIST) if(appView == AppView.LIST)
{ {
if(workflowStatus == ApplicationStatus.DRAFT) if(stageType == StageType.INCOMPLETE)
{ {
%> %>
<oneit:dynInclude page="/extensions/adminportal/inc/incomplete_applicants_list.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/incomplete_applicants_list.jsp"
applications="<%= sortedApplications %>" applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>" currentPage="<%= currentPage %>"
WorkFlowStatus="<%= workflowStatus %>" StageType="<%= stageType %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<% <%
} }
...@@ -177,7 +170,7 @@ ...@@ -177,7 +170,7 @@
<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 %>"
WorkFlowStatus="<%= workflowStatus %>" StageType="<%= stageType %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<% <%
......
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