Commit d19c0a79 by Nilu

HT003 refactoring and essential requirements missing sections

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