Commit d19c0a79 by Nilu

HT003 refactoring and essential requirements missing sections

parent de861b68
......@@ -14,8 +14,6 @@ import oneit.utils.BusinessException;
import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser;
import performa.orm.JobApplication;
import performa.orm.types.AppProcessOption;
import performa.orm.types.ApplicationStatus;
public class ChangeApplicationStatusFP extends SaveFP
{
......@@ -27,22 +25,7 @@ public class ChangeApplicationStatusFP extends SaveFP
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In ChangeApplicationStatusFP changing status of Job Application : ", jobApplication );
if(jobApplication.getAppProcessOption() == AppProcessOption.TO_SHORTLIST)
{
jobApplication.setApplicationStatus(ApplicationStatus.SHORTLISTED);
}
else if(jobApplication.getAppProcessOption() == AppProcessOption.REMOVE_FROM_SHORTLIST)
{
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
}
else if(jobApplication.getAppProcessOption() == AppProcessOption.TO_UNSUITABLE)
{
jobApplication.setApplicationStatus(ApplicationStatus.UNSUITABLE);
}
else if(jobApplication.getAppProcessOption() == AppProcessOption.REMOVE_FROM_UNSUITABLE)
{
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
}
jobApplication.setApplicationStatus(jobApplication.getWorkFlow().getApplicationStatus());
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In ChangeApplicationStatusFP Job Application Status successfully changed : ", jobApplication );
......
......@@ -52,7 +52,7 @@ public class Job extends BaseJob
createWorkFlow(ApplicationStatus.DRAFT, 1);
createWorkFlow(ApplicationStatus.SUBMITTED, 2);
createWorkFlow(ApplicationStatus.SHORTLISTED, 3);
createWorkFlow(ApplicationStatus.UNSUITABLE, 4);
createWorkFlow(ApplicationStatus.UNSUITABLE, 9);
}
public WorkFlow createWorkFlow(ApplicationStatus status, int sortOrder) throws FieldException
......@@ -419,6 +419,11 @@ public class Job extends BaseJob
return options;
}
public List<ApplicationStatus> getValidApplicationStatuses()
{
return new ArrayList<>(pipelineJob().toWorkFlows().toApplicationStatus().uniqueVals());
}
public String getPageTitle()
{
......@@ -611,4 +616,11 @@ public class Job extends BaseJob
return pipelineJob().toWorkFlows(filter).val();
}
public WorkFlow getWorkFlowByStatus(ApplicationStatus appStatus)
{
Filter<WorkFlow> filter = WorkFlow.SearchByAll().andApplicationStatus(new EqualsFilter<>(appStatus));
return pipelineJob().toWorkFlows(filter).val();
}
}
\ No newline at end of file
......@@ -14,6 +14,8 @@
<TRANSIENT name="CultureFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TRANSIENT name="FactorScoreDetails" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TRANSIENTSINGLE name="WorkFlow" type="WorkFlow" />
<TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE">
<ATTRIB name="CV" type="BinaryContent" dbcol="cv" binaryHandler="loggedin" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE" mandatory="false"/>
......
package performa.orm;
import java.io.*;
import java.util.*;
import oneit.appservices.config.*;
import oneit.logging.*;
import oneit.objstore.*;
import oneit.utils.*;
import performa.orm.types.*;
public class WorkFlow extends BaseWorkFlow
{
......@@ -24,6 +10,10 @@ public class WorkFlow extends BaseWorkFlow
{
// Do not add any code to this, always put it in initialiseNewObject
}
}
@Override
public String getToString()
{
return getName();
}
}
\ No newline at end of file
......@@ -363,7 +363,9 @@ public class AnalysisEngine
for(AssessmentCriteriaAnswer answer : assessmentCriteriaAnswers)
{
if(answer.getAssessmentCriteria() != null && answer.getAssessmentCriteria().getImportance() != null)
// only desirable and highly desirable requirements should be calculated for score
if(answer.getAssessmentCriteria() != null && answer.getAssessmentCriteria().getImportance() != null
&& answer.getAssessmentCriteria().getImportance() != Importance.ESSENTIAL)
{
Importance importance = answer.getAssessmentCriteria().getImportance();
int maxScore = importance.getWeightingScore();
......
......@@ -3943,6 +3943,9 @@ no-applicant.inactive a:hover,no-applicant.inactive a:hover span{
.appli-view-bar .progress-bar{
background: #667281;
}
.appli-view-bar .progress-bar.green{
background: #67B413;
}
.appli-percent-no{
font-size: 36px;
font-weight: 300;
......@@ -6468,3 +6471,5 @@ input{
.job-edit-pop .jBox-content {padding: 0}
.job-edit-pop .jBox-container{border-radius: 2px !important; width: 240px;box-shadow: 0 3px 9px 0 rgba(0,0,0,0.35);background-color: #FFFFFF;}
.job-edit-menu .job-edit-menu-item {display: block; font-weight: 500; height:45px; padding: 24px;border-bottom: 1px solid #DBDBDF;font-size:11px;line-height:1px;letter-spacing: 1px; color: #03A0E7;}
.red-requirements {color: #F9623D;}
\ No newline at end of file
......@@ -30,7 +30,7 @@
<RenderMode name="Page" preIncludeJSP="extensions/adminportal/list_jobs.jsp"/>
<RenderMode name="EditJob" preIncludeJSP="extensions/adminportal/edit_job.jsp"/>
<RenderMode name="ViewApplicants" preIncludeJSP="extensions/adminportal/view_applicants.jsp"/>
<RenderMode name="ViewApplicantsGrid" preIncludeJSP="extensions/adminportal/view_applicantss_grid.jsp"/>
<RenderMode name="ViewApplicantsGrid" preIncludeJSP="extensions/adminportal/view_applicants_grid.jsp"/>
<RenderMode name="ApplicantsShortlist" preIncludeJSP="extensions/adminportal/view_applicants_shortlist.jsp"/>
<RenderMode name="ApplicantsGrid" preIncludeJSP="extensions/adminportal/view_applicants_shortlist_grid.jsp"/>
<RenderMode name="UnsuitableApps" preIncludeJSP="extensions/adminportal/view_applicants_unsuitable.jsp"/>
......
......@@ -6,7 +6,7 @@
<%
Job job = (Job) process.getAttribute("Job");
int tabNumber = (int) getData(request, "TabNumber");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "ApplicationStatus");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
// String secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST);
// String thirdTab = WebUtils.getSamePageInRenderMode(request, WebUtils.UNSUITABLE_APPS);
......@@ -20,16 +20,17 @@
<div class="first-part">
<oneit:dynInclude page="/extensions/adminportal/inc/job_title_bar.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="int-timeline">
<ul>
<li class="<%= "incomplete " + (noOfIncomplete > 0 ? "has-applicant" : "no-applicant") %> <%= tabNumber == 1 ? "active" : "inactive" %>">
<oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>"
<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" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", 1).toMap())
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", ApplicationStatus.DRAFT).toMap())
.toMap() %>">
<span>
<oneit:toString value="<%= noOfIncomplete %>" mode="Integer" />
</span>
<%= job.getWorkFlowBySortOrder(1).getName() %>
<%= job.getWorkFlowBySortOrder(1) %>
</oneit:button>
</li>
<%
......@@ -37,10 +38,10 @@
{
int noOfCandidates = workflow.getSortOrder() == 2 ? job.getNoOfCandidatesApplied() : job.getNoOfCandidatesFor(workflow.getApplicationStatus());
%>
<li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= (tabNumber == workflow.getSortOrder()) ? "active" : "inactive" %>">
<li class="<%= noOfCandidates > 0 ? "has-applicant" : "" %> <%= (appStatus == workflow.getApplicationStatus()) ? "active" : "inactive" %>">
<oneit:button value=" " name="gotoPage" skin="link" disabled="<%= noOfCandidates > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", workflow.getSortOrder()).toMap())
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", workflow.getApplicationStatus()).toMap())
.toMap() %>">
<span>
<oneit:toString value="<%= noOfCandidates %>" mode="Integer" />
......@@ -53,15 +54,15 @@
%>
</ul>
</div>
<div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= tabNumber == 9 ? "active" : "inactive" %>">
<div class="unsutable <%= noOfUnsuitable > 0 ? "has-applicant" : "no-applicant" %> <%= appStatus == ApplicationStatus.UNSUITABLE ? "active" : "inactive" %>">
<oneit:button id="unsuitableBtn" value=" " name="gotoPage" skin="link" disabled="<%= noOfUnsuitable > 0 ? "false" : "true" %>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("TabNumber", 9).toMap())
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", ApplicationStatus.UNSUITABLE).toMap())
.toMap() %>">
<span>
<oneit:toString value="<%= noOfUnsuitable %>" mode="Integer" />
</span>
<%= job.getWorkFlowBySortOrder(9).getName() %>
<%= job.getWorkFlowBySortOrder(9)%>
</oneit:button>
</div>
</div>
......
......@@ -7,11 +7,13 @@
<%
Job job = (Job) process.getAttribute("Job");
String currentPage = (String) getData(request, "currentPage");
AppSortOption appSortOpt = (AppSortOption) getData(request, "sortOption");
String tabNumber = (String) getData(request, "tabNumber");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "appStatus");
Boolean showOrderBy = getData(request, "showOrderBy")!= null ? (Boolean) getData(request, "showOrderBy") : Boolean.FALSE;
boolean showList = (boolean) getData(request, "ShowList");
SearchApplicant searchApplicant = (SearchApplicant) getData(request, "SearchApplicant");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
%>
<oneit:dynIncluded>
......@@ -54,68 +56,46 @@
enums="<%= job.getValidProcessOptions(appStatus) %>"/>
<oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.mapEntry("Job", job)
.toMap() %>" />
</div>
<%
if(tabNumber != null)
{
String firstTab = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS_GRID);
if(appStatus != null && appStatus == ApplicationStatus.SHORTLISTED)
{
firstTab = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_SHORTLIST);
secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.APPLICANTS_GRID);
}
%>
<div class="appli-filter">
<ul class="">
<li class="lable-appli-shorting">View</li>
<li class="<%= (tabNumber == "1" ? "active" : "" ) + " short-list"%>">
<li class="<%= (showList ? "active" : "" ) + " short-list"%>">
<oneit:button value="List" name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", firstTab)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ShowList", true).toMap())
.toMap() %>"/>
</li>
<li class="<%= (tabNumber == "2" ? "active" : "" ) + " grid-list"%>">
<li class="<%= (!showList ? "active" : "" ) + " grid-list"%>">
<oneit:button value="Grid" name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondTab)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ShowList", false).toMap())
.toMap() %>"/>
</li>
</ul>
</div>
<%--
<div class="appli-shorting-dropdown">
<span class="appli-order-label">Export</span>
<select class="form-control">
<option>PDF</option>
<option>CSV</option>
</select>
</div>
--%>
<%
}
%>
<div class="shorting-dropdown">
<div class="order-label">Search Applicants</div>
<oneit:ormInput obj="<%= searchApplicant %>" type="text" attributeName="Details" cssClass="form-control search-input" id="searchText" />
</div>
<oneit:button value="Search" name="search" cssClass="btn btn-primary" style="display:none;"/>
<%
if(showOrderBy)
{
%>
<div class="appli-shorting-dropdown">
<div class="shorting-dropdown">
<span class="appli-order-label">order by</span>
<select class="form-control" onChange="location=this.value">
<%
for (AppSortOption sortOption : AppSortOption.getAppSortOptionArray())
{
String optionLink = currentPage + "&JobID=" + job.getID() + "&AppSortOption=" + sortOption.getName();
String optionLink = applicantsPage + "&JobID=" + job.getID() + "&AppSortOption=" + sortOption.getName();
%>
<option <%= (appSortOpt != null && appSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
......@@ -128,6 +108,22 @@
<%
}
%>
<div class="shorting-dropdown">
<span class="appli-order-label">Showing</span>
<select class="form-control" onChange="location=this.value">
<%
for (AppSortOption sortOption : AppSortOption.getAppSortOptionArray())
{
String optionLink = applicantsPage + "&JobID=" + job.getID() + "&AppSortOption=" + sortOption.getName();
%>
<option <%= (appSortOpt != null && appSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
</div>
</div>
......
......@@ -43,15 +43,16 @@
{
int shortlisted = job.getNoOfCandidatesFor(ApplicationStatus.SHORTLISTED);
int maxShortlist = job.getMaxShortlistApplicants();
String goToPage = shortlisted > 0 ? shortlistPage : nextPage;
%>
<div class="job-list" id="<%= job.getID() %>">
<div class="job-row" >
<div class="job-post jl-c eq-second-height" style="height: 107px;">
<div class="job-post-name">
<a href="<%= goToPage+"&JobID="+job.getObjectID() %>">
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>">
<oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML" />
</a>
<%
if(job.getReferenceNumber() != null)
{
......@@ -60,6 +61,7 @@
<%
}
%>
</oneit:button>
</div>
<div class="job-company-name">
<span class="superlaw">
......@@ -99,7 +101,7 @@
<div class="ja-icon"><img src="images/job-list-user.svg"></div>
<div class="ja-count">
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", goToPage)
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>" disabled="<%= job.getJobStatus() == JobStatus.DRAFT ? "true" : "false" %>">
<oneit:toString value="<%= job.getNoOfCandidatesApplied() %>" mode="EscapeHTML" nullValue="0"/>
......@@ -125,8 +127,8 @@
</div>
<div class="ja-count">
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", shortlistPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).mapEntry("ApplicationStatus", ApplicationStatus.SHORTLISTED).toMap())
.toMap() %>" disabled="<%= job.getJobStatus() == JobStatus.DRAFT ? "true" : "false" %>">
<oneit:toString value="<%= shortlisted %>" mode="Integer" nullValue="0"/>
</oneit:button>
......
......@@ -8,47 +8,14 @@
<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");
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS_GRID);
AppSortOption appSortOpt = (AppSortOption) process.getAttribute("AppSortOption");
if(request.getParameter("AppSortOption") != null)
{
appSortOpt = AppSortOption.forName((String) request.getParameter("AppSortOption"));
}
if(appSortOpt == null)
{
appSortOpt = AppSortOption.RANK;
}
JobApplication[] applications = (JobApplication[]) process.getAttribute("JobApplications");
if(applications==null)
{
applications = JobApplication.SearchByAll()
.andJob(new EqualsFilter<>(job))
.andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT))
.search(transaction);
process.setAttribute("JobApplications", applications);
}
List<JobApplication> sortedApplications = applications!=null ? Utils.getApplicationsSorted(applications, appSortOpt) : new ArrayList<JobApplication>();
process.setAttribute("AppSortOption", appSortOpt);
%>
<script type="text/javascript">
$(document).ready(function()
{
......@@ -91,27 +58,12 @@
});
</script>
<oneit:form name="viewApplicants" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area">
<oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp" TabNumber="1" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="second-part view-app-area">
<oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp"
sortOption="<%= appSortOpt %>"
currentPage="<%= currentPage %>"
tabNumber="2"
showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="five-boxs">
<%
int index = 0;
for(JobApplication jobApplication : sortedApplications)
for(JobApplication jobApplication : applications)
{
String appID = "app-id-" + jobApplication.getID().toString();
Integer overallRank = jobApplication.getOverallRank();
......@@ -131,7 +83,7 @@
</div>
<oneit:button value=" " name="gotoPage" cssClass="<%= jobApplication.getID() + ""%>" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", sortedApplications).toMap())
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", applications).toMap())
.toMap() %>">
<div class="overall-suitablity">
<div class="<%= "overall " + (isTopRank ? "f-60" : "")%>">overall rank</div>
......@@ -188,7 +140,4 @@
}
%>
</div>
</div>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
......@@ -9,7 +9,7 @@
Job job = (Job) process.getAttribute("Job");
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
String currentPage = (String) getData(request, "currentPage");
int tabNumber = (int) getData(request, "TabNumber");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "ApplicationStatus");
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
%>
......@@ -17,7 +17,7 @@
<script type="text/javascript">
$(document).ready(function()
{
$(".app-process").change(function()
$("[name$='WorkFlow']").change(function()
{
var id = $(this).closest('.appli-row').attr('id');
$('.save-application' + id).click();
......@@ -30,12 +30,17 @@
for(JobApplication jobApplication : applications)
{
long criteriaVal = jobApplication.getRequirementFitScore();
String roleFit = FormatUtils.stringify(jobApplication.getRoleFitPercentage(), "PercentageTwoDP", "0");
String culture = FormatUtils.stringify(jobApplication.getCultureFitScore(), "PercentageWholeNumber", "0");
String criteria = FormatUtils.stringify(jobApplication.getRequirementFitScore(), "PercentageWholeNumber", "0");
String appID = "app-id-" + jobApplication.getID().toString();
Integer overallRank = jobApplication.getOverallRank();
Boolean isTopRank = CollectionUtils.equals(overallRank, 1);
WorkFlow workflow = job.getWorkFlowByStatus(jobApplication.getApplicationStatus());
boolean missingReq = jobApplication.hasFailedEssentialRequirements();
jobApplication.setWorkFlow(workflow);
%>
<div class="appli-row" id="<%= jobApplication.getID() %>">
<div class="appli-checkbox appli-l eq-second-height">
......@@ -67,7 +72,7 @@
<%
String widthClass = "appli-jcs2";
if(job.getIncludeAssessmentCriteria()==Boolean.TRUE)
if(job.getIncludeAssessmentCriteria() == Boolean.TRUE)
{
widthClass = "appli-jcs";
}
......@@ -99,26 +104,29 @@
<div class="<%= widthClass %> appli-l eq-second-height">
<span class="appli-view-bar">
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= criteria %>" aria-valuemin="0" aria-valuemax="100"
<div class="progress-bar <%= (criteriaVal == 100 ? " green" : "")%>" role="progressbar" aria-valuenow="<%= criteria %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + criteria %>">
</div>
</div>
</span>
<span class="<%= missingReq ? "red-requirements" : "" %>">
requirements
</span>
</div>
<%
}
%>
<div class="appli-status appli-l eq-second-height">
<div class="appli-list-drop">
<oneit:ormEnum obj="<%= jobApplication %>" attributeName="AppProcessOption" cssClass="form-control app-process"
enums="<%= jobApplication.getValidProcessOptions() %>"/>
<tagfile:ormsingleasso_select obj="<%= jobApplication %>" assocName="WorkFlow" cssClass="form-control app-process"
options="<%= job.getWorkFlowsSet().toArray(new WorkFlow[0]) %>"/>
</div>
</div>
<oneit:button name="changeApplicationStatus" value=" " cssClass="<%= "save-application" + jobApplication.getID().toString() + " hidden"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.mapEntry("procParams", CollectionUtils.mapEntry("ApplicationStatus", appStatus).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "ApplicationStatus"})))
.mapEntry("JobApplication", jobApplication)
.toMap() %>" />
</div>
......
......@@ -22,10 +22,12 @@
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
AppSortOption appSortOpt = (AppSortOption) process.getAttribute("AppSortOption");
ApplicationStatus appStatus = process.getAttribute("ApplicationStatus") != null ? (ApplicationStatus) process.getAttribute("ApplicationStatus") : ApplicationStatus.SUBMITTED;
int tabNumber = process.getAttribute("TabNumber") != null ? (int) process.getAttribute("TabNumber") : 2;
boolean showList = process.getAttribute("ShowList") != null ? (boolean) process.getAttribute("ShowList") : true;
SearchApplicant searchApplicant = (SearchApplicant) RunSearchExecutorFP.setupExecutor(request, SearchApplicant.REFERENCE_SearchApplicant, true);
JobApplication[] applications = (JobApplication[]) process.getAttribute("JobApplications");
WorkFlow workflow = job.getWorkFlowBySortOrder(tabNumber);
WorkFlow workflow = job.getWorkFlowByStatus(appStatus);
searchApplicant.setJob(job);
......@@ -55,36 +57,68 @@
// filter applicants by workflow
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(workflow.getApplicationStatus()));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT));
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, filter));
// if Applicant Status, then show all application completed applicants
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, appStatus == ApplicationStatus.SUBMITTED ? applicantFilter : filter));
List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt);
process.setAttribute("AppSortOption", appSortOpt);
process.setAttribute("ApplicationStatus", appStatus);
process.setAttribute("TabNumber", tabNumber);
process.setAttribute("ShowList", showList);
%>
<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="<%= tabNumber %>"
ApplicationStatus="<%= appStatus %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="second-part view-app-area">
<oneit:dynInclude page="/extensions/adminportal/inc/application_sorting_bar.jsp"
tabNumber="1"
sortOption="<%= appSortOpt %>"
currentPage="<%= currentPage %>"
ShowList="<%= showList %>"
SearchApplicant="<%= searchApplicant %>"
showOrderBy="<%= sortedApplications.size() > 1 %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp"
<%
if(showList)
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_list.jsp"
applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>"
ApplicationStatus="<%= appStatus %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
else
{
if(appStatus == ApplicationStatus.SHORTLISTED)
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_shortlist_grid.jsp"
applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>"
TabNumber="<%= tabNumber %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
else
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/view_applicants_grid.jsp"
applications="<%= sortedApplications %>"
currentPage="<%= currentPage %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
}
%>
</div>
</div>
</oneit:form>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment