Commit 37ade20a by Nilu

S12519869 # Client - Incoming Issues (raised by Client) #The Showing filter does…

S12519869 # Client - Incoming Issues (raised by Client) #The Showing filter does not use correct values
parent e68f73e6
......@@ -649,4 +649,20 @@ public class Job extends BaseJob
return pipelineJob().toWorkFlows(filter).uniqueVals();
}
public List<JobApplication> filterEssentialRequirements(boolean meetsRequirements, List<JobApplication> applicantList)
{
List<JobApplication> filteredList = new ArrayList();
for (JobApplication application : applicantList)
{
boolean failed = application.hasFailedEssentialRequirements();
if((meetsRequirements && !failed) || (!meetsRequirements && failed))
{
filteredList.add(application);
}
}
return filteredList;
}
}
\ No newline at end of file
package performa.orm.types;
import java.util.*;
import oneit.utils.*;
/**
* This class was generated using constGen.bat.
* DO NOT MODIFY THIS CODE.
* Edit the associated .xml file, and regenerate this file
* constGen (directory) (file minus extension)
* e.g. constGen C:\...\sql FieldType
*/
public class ApplicationFilter extends AbstractEnumerated
{
public static final EnumeratedFactory FACTORY_ApplicationFilter = new ApplicationFilterFactory();
public static final ApplicationFilter ALL_APPLICATIONS = new ApplicationFilter ("ALL_APPLICATIONS", "ALL_APPLICATIONS", "All Applicants", false);
public static final ApplicationFilter HAS_REQ = new ApplicationFilter ("HAS_REQ", "HAS_REQ", "Requirements", false);
public static final ApplicationFilter NO_REQ = new ApplicationFilter ("NO_REQ", "NO_REQ", "Requirements", false);
private static final ApplicationFilter[] allApplicationFilters =
new ApplicationFilter[] { ALL_APPLICATIONS,HAS_REQ,NO_REQ};
private static ApplicationFilter[] getAllApplicationFilters ()
{
return allApplicationFilters;
}
private ApplicationFilter (String name, String value, String description, boolean disabled)
{
super (name, value, description, disabled);
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allApplicationFilters);
static
{
defineAdditionalData ();
}
public boolean isEqual (ApplicationFilter other)
{
return this.name.equals (other.name);
}
public Enumeration getAllInstances ()
{
return ApplicationFilter.getAll ();
}
private Object readResolve() throws java.io.ObjectStreamException
{
return ApplicationFilter.forName (this.name);
}
public EnumeratedFactory getFactory ()
{
return FACTORY_ApplicationFilter;
}
public static ApplicationFilter forName (String name)
{
if (name == null) { return null; }
ApplicationFilter[] all = getAllApplicationFilters();
int enumIndex = AbstractEnumerated.getIndexForName (all, name);
return all[enumIndex];
}
public static ApplicationFilter forValue (String value)
{
if (value == null) { return null; }
ApplicationFilter[] all = getAllApplicationFilters();
int enumIndex = AbstractEnumerated.getIndexForValue (getAllApplicationFilters (), value);
return all[enumIndex];
}
public static java.util.Enumeration getAll ()
{
return AbstractEnumerated.getAll (getAllApplicationFilters());
}
public static ApplicationFilter[] getApplicationFilterArray ()
{
return (ApplicationFilter[])getAllApplicationFilters().clone ();
}
public static void defineAdditionalData ()
{
}
static class ApplicationFilterFactory implements EnumeratedFactory
{
public AbstractEnumerated getForName (String name)
{
return ApplicationFilter.forName (name);
}
public AbstractEnumerated getForValue (String name)
{
return ApplicationFilter.forValue (name);
}
public Enumeration getAll ()
{
return ApplicationFilter.getAll ();
}
}
public Map getAdditionalAttributes ()
{
Map attribs = new HashMap ();
return attribs;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CONSTANT package="performa.orm.types" name="ApplicationFilter">
<VALUE name="ALL_APPLICATIONS" description="All Applicants"/>
<VALUE name="HAS_REQ" description="Requirements"/>
<VALUE name="NO_REQ" description="Requirements"/>
</CONSTANT>
</ROOT>
\ No newline at end of file
......@@ -8,12 +8,15 @@
<%
Job job = (Job) process.getAttribute("Job");
AppSortOption appSortOpt = (AppSortOption) getData(request, "SortOption");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "AppStatus");
ApplicationStatus workflowStatus = (ApplicationStatus) getData(request, "WorkFlowStatus");
ApplicationFilter appFilter = (ApplicationFilter) getData(request, "ApplicationFilter");
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) + "&JobID=" + job.getID();
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS) + "&JobID=" + job.getID() + "&WorkFlowStatus=" + workflowStatus.getName();
List<WorkFlow> sortedWorkFlows = ObjstoreUtils.sort(job.getApplicantWFs(),
new ObjectTransform[]{WorkFlow.pipesWorkFlow().toSortOrder()},
new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST});
%>
<oneit:dynIncluded>
......@@ -55,12 +58,12 @@
<span class="appli-order-label">Bulk Update</span>
<div class="wider-select bullk-app-process">
<tagfile:ormsingleasso_select obj="<%= job %>" assocName="AppStatusWorkFlow" cssClass="form-control app-process" id="AppProcessOption"
options="<%= job.getWorkFlowsSet().toArray(new WorkFlow[0]) %>"/>
options="<%= sortedWorkFlows.toArray(new WorkFlow[0]) %>"/>
</div>
<oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry("procParams", CollectionUtils.mapEntry("WorkFlowStatus", appStatus).mapEntry("Job", job).toMap())
.mapEntry("procParams", CollectionUtils.mapEntry("WorkFlowStatus", workflowStatus).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStatus"})))
.mapEntry("Job", job)
.toMap() %>" />
......@@ -110,33 +113,22 @@
<%
}
%>
<%
if(workflowStatus == ApplicationStatus.SUBMITTED)
{
%>
<div class="shorting-dropdown">
<span class="appli-order-label">Showing</span>
<select class="form-control" onChange="location=this.value">
<option <%= (appStatus == null ? "selected" : "" )%> value="<%= applicantsPage + "&ApplicationStatus" %>">
<oneit:toString value="All Applicants" mode="EscapeHTML"/>
</option>
<%
for (WorkFlow workflow : job.getSortedWorkFlows())
{
ApplicationStatus status = workflow.getApplicationStatus();
String optionLink = applicantsPage + "&ApplicationStatus=" + status.getName();
%>
<option <%= (appStatus != null && appStatus == status ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= workflow.getName() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
<%
}
%>
<div class="shorting-dropdown">
<span class="appli-order-label">Showing</span>
<select class="form-control" onChange="location=this.value">
<%
for (ApplicationFilter applicationFilter : ApplicationFilter.getApplicationFilterArray())
{
String optionLink = applicantsPage + "&ApplicationFilter=" + applicationFilter.getName();
%>
<option <%= (appFilter != null && appFilter == applicationFilter ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= applicationFilter.getName() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
</div>
<div class="checkbox-list select-all">
<input type='checkbox' id='select_all' value='select_all' class='norecalc'>
......
......@@ -22,13 +22,12 @@
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
AppSortOption appSortOpt = null;
ApplicationStatus appStatus = null;
ApplicationStatus workflowStatus = process.getAttribute("WorkFlowStatus") != null ? (ApplicationStatus) process.getAttribute("WorkFlowStatus") : ApplicationStatus.SUBMITTED;
ApplicationFilter appFilter = null;
ApplicationStatus workflowStatus = null;
boolean showList = process.getAttribute("ShowList") != null ? (boolean) process.getAttribute("ShowList") : true;
SearchApplicant searchApplicant = (SearchApplicant) RunSearchExecutorFP.setupExecutor(request, SearchApplicant.REFERENCE_SearchApplicant, true);
JobApplication[] applications = null;
Map<String, String[]> parameterMap = request.getParameterMap();
boolean isApplicantPage = workflowStatus == ApplicationStatus.SUBMITTED;
searchApplicant.setJob(job);
......@@ -58,33 +57,55 @@
appSortOpt = AppSortOption.RANK;
}
// handle application status
if(isApplicantPage && parameterMap.containsKey("ApplicationStatus"))
// handle workflow status
if(parameterMap.containsKey("WorkFlowStatus") && !request.getParameter("WorkFlowStatus").isEmpty())
{
if(!request.getParameter("ApplicationStatus").isEmpty())
{
appStatus = ApplicationStatus.forName((String) request.getParameter("ApplicationStatus"));
}
workflowStatus = ApplicationStatus.forName((String) request.getParameter("WorkFlowStatus"));
}
else if(process.getAttribute("ApplicationStatus") != null)
else if(process.getAttribute("WorkFlowStatus") != null)
{
appStatus = (ApplicationStatus) process.getAttribute("ApplicationStatus");
workflowStatus = (ApplicationStatus) process.getAttribute("WorkFlowStatus");
}
else
{
workflowStatus = ApplicationStatus.SUBMITTED;
}
boolean isApplicantPage = workflowStatus == ApplicationStatus.SUBMITTED;
// handle application filter (showing dropdown)
if(parameterMap.containsKey("ApplicationFilter") && !request.getParameter("ApplicationFilter").isEmpty())
{
appFilter = ApplicationFilter.forName((String) request.getParameter("ApplicationFilter"));
}
else if(process.getAttribute("ApplicationFilter") != null)
{
appFilter = (ApplicationFilter) process.getAttribute("ApplicationFilter");
}
else
{
appFilter = ApplicationFilter.ALL_APPLICATIONS;
}
List<JobApplication> applicantList = Arrays.asList(applications);
WorkFlow workflow = job.getWorkFlowByStatus(workflowStatus);
// filter applicants by status
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(isApplicantPage ? appStatus : workflowStatus));
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(workflowStatus));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT));
// if Applicant Status, then show all application completed applicants
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, appStatus == null && isApplicantPage ? applicantFilter : filter));
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, isApplicantPage ? applicantFilter : filter));
if(appFilter != ApplicationFilter.ALL_APPLICATIONS)
{
applicantList = job.filterEssentialRequirements(appFilter == ApplicationFilter.HAS_REQ , applicantList);
}
List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt);
process.setAttribute("AppSortOption", appSortOpt);
process.setAttribute("ApplicationStatus", appStatus);
process.setAttribute("ApplicationFilter", appFilter);
process.setAttribute("WorkFlowStatus", workflowStatus);
process.setAttribute("ShowList", showList);
%>
......@@ -105,7 +126,7 @@
ShowList="<%= showList %>"
SearchApplicant="<%= searchApplicant %>"
ShowOrderBy="<%= sortedApplications.size() > 1 %>"
AppStatus="<%= appStatus %>"
ApplicationFilter="<%= appFilter %>"
WorkFlowStatus="<%= workflowStatus %>"
SortOption="<%= appSortOpt %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment