Commit 4c79f737 by chenith Committed by Harsh Shah

Added a new page for unsuitable applications.

parent 6692351f
...@@ -26,6 +26,13 @@ public class CompleteApplicationFP extends SaveFP ...@@ -26,6 +26,13 @@ public class CompleteApplicationFP extends SaveFP
AnalysisEngine.analyseAnswers(jobApplication); AnalysisEngine.analyseAnswers(jobApplication);
//TODO: set application status as UNSUITABLE if not scored
if(false)
{
jobApplication.setApplicationStatus(ApplicationStatus.UNSUITABLE);
}
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication);
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
......
...@@ -170,6 +170,12 @@ public class Job extends BaseJob ...@@ -170,6 +170,12 @@ public class Job extends BaseJob
} }
public int getNoOfCandidatesUnsuitable()
{
return getNoOfCandidatesFor(ApplicationStatus.UNSUITABLE);
}
public int getNoOfCandidatesFor(ApplicationStatus... status) public int getNoOfCandidatesFor(ApplicationStatus... status)
{ {
Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new InFilter<>(status)); Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new InFilter<>(status));
......
...@@ -26,8 +26,10 @@ public class ApplicationStatus extends AbstractEnumerated ...@@ -26,8 +26,10 @@ public class ApplicationStatus extends AbstractEnumerated
public static final ApplicationStatus SHORTLISTED = new ApplicationStatus ("SHORTLISTED", "SHORTLISTED", "Shortlisted", false); public static final ApplicationStatus SHORTLISTED = new ApplicationStatus ("SHORTLISTED", "SHORTLISTED", "Shortlisted", false);
public static final ApplicationStatus UNSUITABLE = new ApplicationStatus ("UNSUITABLE", "UNSUITABLE", "Unsuitable", false);
private static final ApplicationStatus[] allApplicationStatuss = private static final ApplicationStatus[] allApplicationStatuss =
new ApplicationStatus[] { DRAFT,SUBMITTED,SHORTLISTED}; new ApplicationStatus[] { DRAFT,SUBMITTED,SHORTLISTED,UNSUITABLE};
private static ApplicationStatus[] getAllApplicationStatuss () private static ApplicationStatus[] getAllApplicationStatuss ()
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
<VALUE name="DRAFT" value="DRAFT" description="Draft"/> <VALUE name="DRAFT" value="DRAFT" description="Draft"/>
<VALUE name="SUBMITTED" value="SUBMITTED" description="Submitted"/> <VALUE name="SUBMITTED" value="SUBMITTED" description="Submitted"/>
<VALUE name="SHORTLISTED" value="SHORTLISTED" description="Shortlisted"/> <VALUE name="SHORTLISTED" value="SHORTLISTED" description="Shortlisted"/>
<VALUE name="UNSUITABLE" value="UNSUITABLE" description="Unsuitable"/>
</CONSTANT> </CONSTANT>
</ROOT> </ROOT>
\ No newline at end of file
...@@ -37,6 +37,7 @@ public class WebUtils ...@@ -37,6 +37,7 @@ public class WebUtils
public static final String APPLICANTS_SHORTLIST = "ApplicantsShortlist"; public static final String APPLICANTS_SHORTLIST = "ApplicantsShortlist";
public static final String APPLICANTS_GRID = "ApplicantsGrid"; public static final String APPLICANTS_GRID = "ApplicantsGrid";
public static final String VIEW_APPLICATION = "ViewApplication"; public static final String VIEW_APPLICATION = "ViewApplication";
public static final String UNSUITABLE_APPS = "UnsuitableApps";
public static String getArticleLink(HttpServletRequest request, ObjectTransaction objTran, String articleShortcut, String renderMode) public static String getArticleLink(HttpServletRequest request, ObjectTransaction objTran, String articleShortcut, String renderMode)
......
...@@ -3193,6 +3193,20 @@ input.add-note-btn:hover{ ...@@ -3193,6 +3193,20 @@ input.add-note-btn:hover{
.unsutable a:hover,.unsutable a:hover span{ .unsutable a:hover,.unsutable a:hover span{
color: #ffffff; color: #ffffff;
} }
.unsutable.active a:hover{
background-color: #e9ecef;
color: #7b8da0;
}
.unsutable.active a:hover span{
background-color: #e9ecef;
color: #1a2531;
}
.unsutable.active{
background-color: #e9ecef;
}
.unsutable.active span {
color: #1a2531;
}
.interview-tran-btn span{ .interview-tran-btn span{
background-image: url('../images/add-icon.png'); background-image: url('../images/add-icon.png');
background-repeat: no-repeat; background-repeat: no-repeat;
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
<RenderMode name="ViewApplicants" preIncludeJSP="extensions/adminportal/view_applicants.jsp"/> <RenderMode name="ViewApplicants" preIncludeJSP="extensions/adminportal/view_applicants.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="ViewApplication" preIncludeJSP="extensions/adminportal/view_application.jsp"/> <RenderMode name="ViewApplication" preIncludeJSP="extensions/adminportal/view_application.jsp"/>
<RenderMode name="CreateJob" preIncludeJSP="extensions/adminportal/job_detail.jsp"/> <RenderMode name="CreateJob" preIncludeJSP="extensions/adminportal/job_detail.jsp"/>
<RenderMode name="AssessmentCriteria" preIncludeJSP="extensions/adminportal/assessment_criteria.jsp"/> <RenderMode name="AssessmentCriteria" preIncludeJSP="extensions/adminportal/assessment_criteria.jsp"/>
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
String tabNumber = (String) getData(request, "TabNumber"); String tabNumber = (String) getData(request, "TabNumber");
String firstTab = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String firstTab = 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);
int closingInDays = DateDiff.getDateDiff(Calendar.DATE, DateDiff.getToday(), job.getApplyBy()); int closingInDays = DateDiff.getDateDiff(Calendar.DATE, DateDiff.getToday(), job.getApplyBy());
%> %>
...@@ -47,10 +48,16 @@ ...@@ -47,10 +48,16 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="unsutable"> <div class="unsutable <%= tabNumber == "3" ? "active" : "" %>">
<a href="#"> <oneit:button value=" " name="gotoPage" skin="link"
<span>6</span>Unsuitable requestAttribs="<%= CollectionUtils.mapEntry("nextPage", thirdTab)
</a> .mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>">
<span>
<oneit:toString value="<%= job.getNoOfCandidatesUnsuitable() %>" mode="Integer" />
</span>
Unsuitable
</oneit:button>
</div> </div>
</div> </div>
......
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<%@ page import="oneit.utils.text.FormatUtils"%>
<%
Job job = (Job) process.getAttribute("Job");
List<JobApplication> applications = (List<JobApplication>) getData(request, "applications");
String currentPage = (String) getData(request, "currentPage");
AppSortOption appSortOpt = (AppSortOption) getData(request, "sortOption");
%>
<oneit:dynIncluded>
<div class="second-part view-app-area">
<div class="main-applicants-filter">
<div class="appli-list-shorting">
<div class="appli-shorting-dropdown appli-left">
<span class="appli-order-label">Bulk Update</span>
<select class="form-control">
<option>To Shortlist</option>
</select>
</div>
<div class="appli-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() ;
%>
<option <%= (appSortOpt != null && appSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
</div>
</div>
<div class="view-appli-list">
<%
int j = 0;
for(JobApplication jobApplication : applications)
{
String jobMatch = FormatUtils.stringify(jobApplication.getJobMatchPercentage(), "PercentageWholeNumber", "0");
String culture = FormatUtils.stringify(jobApplication.getCulturePercentage(), "PercentageWholeNumber", "0");
String criteria = FormatUtils.stringify(jobApplication.getCriteriaPercentage(), "PercentageWholeNumber", "0");
%>
<div class="appli-row">
<div class="appli-checkbox appli-l eq-second-height">
<div class="checkbox-list">
<oneit:ormInput obj="<%= jobApplication %>" id="<%= jobApplication.getID().toString()%>" attributeName="IsSelected" type="checkbox"/>
<oneit:recalcClass htmlTag="span" classScript="jobApplication.getIsSelected() != null && jobApplication.getIsSelected() ? 'checked': 'unchecked'" jobApplication="<%= jobApplication %>">
<label for="<%= jobApplication.getID().toString()%>"/>
</oneit:recalcClass>
</div>
</div>
<div class="appli-list-name appli-l eq-second-height">
<oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" />
<div class="appli-int-status">Shortlisted</div>
</div>
<div class="appli-jcs appli-l eq-second-height">
<span class="appli-view-bar">
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= jobMatch %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + jobMatch %>">
</div>
</div>
</span>
Job Match
</div>
<div class="appli-jcs appli-l eq-second-height">
<span class="appli-view-bar">
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= culture %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + culture %>">
</div>
</div>
</span>
culture
</div>
<div class="appli-jcs 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"
style="<%= "width: " + criteria %>">
</div>
</div>
</span>
selection criteria
</div>
<div class="appli-status appli-l eq-second-height">
<!--TODO: logic needed to be worked out. Added to note that there are three colors-->
<div class="<%= "appli-percent-no " + (j == 0 ? "green" : (j < 3 ? "blue" : "grey" ))%>">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" />
</div>
<div class="appli-list-drop">
<select class="form-control">
<option>Interview</option>
</select>
</div>
</div>
</div>
<%
j++;
}
%>
</div>
</div>
</oneit:dynIncluded>
...@@ -64,106 +64,15 @@ ...@@ -64,106 +64,15 @@
<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" TabNumber="1" data="<%= CollectionUtils.EMPTY_MAP%>"/> <oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp"
TabNumber="1"
<div class="second-part view-app-area"> data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="main-applicants-filter">
<div class="appli-list-shorting"> <oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp"
<div class="appli-shorting-dropdown appli-left"> applications="<%= sortedApplications %>"
<span class="appli-order-label">Bulk Update</span> sortOption="<%= appSortOpt %>"
<select class="form-control"> currentPage="<%= currentPage %>"
<option>To Shortlist</option> data="<%= CollectionUtils.EMPTY_MAP%>"/>
</select>
</div>
<div class="appli-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() ;
%>
<option <%= (appSortOpt != null && appSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
</div>
</div>
<div class="view-appli-list">
<%
int j = 0;
for(JobApplication jobApplication : sortedApplications)
{
String jobMatch = FormatUtils.stringify(jobApplication.getJobMatchPercentage(), "PercentageWholeNumber", "0");
String culture = FormatUtils.stringify(jobApplication.getCulturePercentage(), "PercentageWholeNumber", "0");
String criteria = FormatUtils.stringify(jobApplication.getCriteriaPercentage(), "PercentageWholeNumber", "0");
%>
<div class="appli-row">
<div class="appli-checkbox appli-l eq-second-height">
<div class="checkbox-list">
<oneit:ormInput obj="<%= jobApplication %>" id="<%= jobApplication.getID().toString()%>" attributeName="IsSelected" type="checkbox"/>
<oneit:recalcClass htmlTag="span" classScript="jobApplication.getIsSelected() != null && jobApplication.getIsSelected() ? 'checked': 'unchecked'" jobApplication="<%= jobApplication %>">
<label for="<%= jobApplication.getID().toString()%>"/>
</oneit:recalcClass>
</div>
</div>
<div class="appli-list-name appli-l eq-second-height">
<oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" />
<div class="appli-int-status">Shortlisted</div>
</div>
<div class="appli-jcs appli-l eq-second-height">
<span class="appli-view-bar">
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= jobMatch %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + jobMatch %>">
</div>
</div>
</span>
Job Match
</div>
<div class="appli-jcs appli-l eq-second-height">
<span class="appli-view-bar">
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= culture %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + culture %>">
</div>
</div>
</span>
culture
</div>
<div class="appli-jcs 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"
style="<%= "width: " + criteria %>">
</div>
</div>
</span>
selection criteria
</div>
<div class="appli-status appli-l eq-second-height">
<!--TODO: logic needed to be worked out. Added to note that there are three colors-->
<div class="<%= "appli-percent-no " + (j == 0 ? "green" : (j < 3 ? "blue" : "grey" ))%>">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" />
</div>
<div class="appli-list-drop">
<select class="form-control">
<option>Interview</option>
</select>
</div>
</div>
</div>
<%
j++;
}
%>
</div>
</div>
</div> </div>
</oneit:form> </oneit:form>
</oneit:dynIncluded> </oneit:dynIncluded>
\ No newline at end of file
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<oneit:dynIncluded>
<%
Job job = (Job) process.getAttribute("Job");
if(job==null && request.getParameter("JobID")!=null)
{
job = Job.getJobByID(transaction, Long.parseLong(request.getParameter("JobID")));
process.setAttribute("Job", job);
}
Debug.assertion(job != null, "Job is null in admin portal view applicants");
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.UNSUITABLE_APPS);
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
int closingInDays = DateDiff.getDateDiff(Calendar.DATE, DateDiff.getToday(), job.getApplyBy());
AppSortOption appSortOpt = (AppSortOption) process.getAttribute("AppSortOption");
if(request.getParameter("AppSortOption") != null)
{
appSortOpt = AppSortOption.forName((String) request.getParameter("AppSortOption"));
}
if(appSortOpt == null)
{
appSortOpt = AppSortOption.RANK;
}
JobApplication[] applications = (JobApplication[]) process.getAttribute("UnsuitableApplications");
if(applications==null)
{
applications = JobApplication.SearchByAll()
.andJob(new EqualsFilter<>(job))
.andApplicationStatus(new EqualsFilter<>(ApplicationStatus.UNSUITABLE))
.search(transaction);
process.setAttribute("UnsuitableApplications", applications);
}
List<JobApplication> sortedApplications = applications!=null ? Utils.getApplicationsSorted(applications, appSortOpt) : new ArrayList<JobApplication>();
process.setAttribute("AppSortOption", appSortOpt);
%>
<script type="text/javascript">
$(document).ready(function()
{
recalcFunction = setupRecalc ($("form"), {'recalcOnError':true});
});
function gotoEditApplication (id) {
$('.' + id).click();
}
</script>
<oneit:form name="viewApplicants" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area">
<oneit:dynInclude page="/extensions/adminportal/inc/applicant_view_tabs.jsp"
TabNumber="3"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/application_list_data.jsp"
applications="<%= sortedApplications %>"
sortOption="<%= appSortOpt %>"
currentPage="<%= currentPage %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
</div>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment