Commit bea59561 by Nilu

fix issues with application filter by status

parent d372c95c
...@@ -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("ApplicationStatus", ApplicationStatus.DRAFT).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", 1).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("ApplicationStatus", workflow.getApplicationStatus()).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", workflow.getSortOrder()).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("ApplicationStatus", ApplicationStatus.UNSUITABLE).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", 9).toMap())
.toMap() %>"> .toMap() %>">
<span> <span>
<oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" /> <oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" />
......
...@@ -9,11 +9,11 @@ ...@@ -9,11 +9,11 @@
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");
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); String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS) + "&JobID=" + job.getID();
%> %>
<oneit:dynIncluded> <oneit:dynIncluded>
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
<% <%
for (AppSortOption sortOption : AppSortOption.getAppSortOptionArray()) for (AppSortOption sortOption : AppSortOption.getAppSortOptionArray())
{ {
String optionLink = applicantsPage + "&JobID=" + job.getID() + "&AppSortOption=" + sortOption.getName(); String optionLink = applicantsPage + "&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"/>
...@@ -108,22 +108,33 @@ ...@@ -108,22 +108,33 @@
<% <%
} }
%> %>
<div class="shorting-dropdown"> <%
<span class="appli-order-label">Showing</span> if(workflowStatus == ApplicationStatus.SUBMITTED)
<select class="form-control" onChange="location=this.value"> {
<% %>
for (AppSortOption sortOption : AppSortOption.getAppSortOptionArray()) <div class="shorting-dropdown">
{ <span class="appli-order-label">Showing</span>
String optionLink = applicantsPage + "&JobID=" + job.getID() + "&AppSortOption=" + sortOption.getName(); <select class="form-control" onChange="location=this.value">
%> <option <%= (appStatus == null ? "selected" : "" )%> value="<%= applicantsPage + "&ApplicationStatus" %>">
<option <%= (appSortOpt != null && appSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>"> <oneit:toString value="All Applicants" mode="EscapeHTML"/>
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/> </option>
</option> <%
<% for (WorkFlow workflow : job.getSortedWorkFlows())
} {
%> ApplicationStatus status = workflow.getApplicationStatus();
</select> String optionLink = applicantsPage + "&ApplicationStatus=" + status.getName();
</div> %>
<option <%= (appStatus != null && appStatus == status ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= workflow.getName() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
<%
}
%>
</div> </div>
</div> </div>
......
...@@ -19,15 +19,16 @@ ...@@ -19,15 +19,16 @@
Debug.assertion(job != null, "Job is null in admin portal view applicants"); Debug.assertion(job != null, "Job is null in admin portal view applicants");
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 = null;
ApplicationStatus appStatus = process.getAttribute("ApplicationStatus") != null ? (ApplicationStatus) process.getAttribute("ApplicationStatus") : ApplicationStatus.SUBMITTED; ApplicationStatus appStatus = null;
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; 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 = null;
WorkFlow workflow = job.getWorkFlowByStatus(appStatus); Map<String, String[]> parameterMap = request.getParameterMap();
boolean isApplicantPage = tabNumber == 2;
searchApplicant.setJob(job); searchApplicant.setJob(job);
...@@ -43,24 +44,42 @@ ...@@ -43,24 +44,42 @@
process.setAttribute("JobApplications", applications); process.setAttribute("JobApplications", applications);
if(request.getParameter("AppSortOption") != null) // handle application sort option
if( request.getParameter("AppSortOption") != null)
{ {
appSortOpt = AppSortOption.forName((String) request.getParameter("AppSortOption")); appSortOpt = AppSortOption.forName((String) request.getParameter("AppSortOption"));
} }
else if(process.getAttribute("AppSortOption") != null)
if(appSortOpt == null) {
appSortOpt = (AppSortOption) process.getAttribute("AppSortOption");
}
else
{
appSortOpt = AppSortOption.RANK;
}
// handle application status
if(isApplicantPage && parameterMap.containsKey("ApplicationStatus"))
{
if(!request.getParameter("ApplicationStatus").isEmpty())
{
appStatus = ApplicationStatus.forName((String) request.getParameter("ApplicationStatus"));
}
}
else if(process.getAttribute("ApplicationStatus") != null)
{ {
appSortOpt = AppSortOption.RANK; appStatus = (ApplicationStatus) process.getAttribute("ApplicationStatus");
} }
List<JobApplication> applicantList = Arrays.asList(applications); List<JobApplication> applicantList = Arrays.asList(applications);
WorkFlow workflow = job.getWorkFlowBySortOrder(tabNumber);
// filter applicants by workflow // filter applicants by status
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(workflow.getApplicationStatus())); oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(isApplicantPage ? appStatus : workflow.getApplicationStatus()));
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
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, appStatus == ApplicationStatus.SUBMITTED ? applicantFilter : filter)); applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, appStatus == null && isApplicantPage ? applicantFilter : filter));
List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt); List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt);
...@@ -74,7 +93,7 @@ ...@@ -74,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="<%= appStatus %>" ApplicationStatus="<%= workflow.getApplicationStatus() %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
...@@ -83,6 +102,9 @@ ...@@ -83,6 +102,9 @@
ShowList="<%= showList %>" ShowList="<%= showList %>"
SearchApplicant="<%= searchApplicant %>" SearchApplicant="<%= searchApplicant %>"
showOrderBy="<%= sortedApplications.size() > 1 %>" showOrderBy="<%= sortedApplications.size() > 1 %>"
appStatus="<%= appStatus %>"
workflowStatus="<%= workflow.getApplicationStatus() %>"
sortOption="<%= appSortOpt %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<% <%
...@@ -92,13 +114,13 @@ ...@@ -92,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="<%= appStatus %>" ApplicationStatus="<%= workflow.getApplicationStatus() %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<% <%
} }
else else
{ {
if(appStatus == ApplicationStatus.SHORTLISTED) if(workflow.getApplicationStatus() == ApplicationStatus.SHORTLISTED)
{ {
%> %>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_shortlist_grid.jsp" <oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_shortlist_grid.jsp"
......
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