Commit 140a8678 by nilu

S42972327 # Matchd / Talentology - No Plan [Enhancement] #Allow Backend User to…

S42972327 # Matchd / Talentology - No Plan [Enhancement] #Allow Backend User to Move Hiring Teams between Customers
parent f04825cc
package performa.form;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.logging.LoggingArea;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException;
import oneit.utils.MultiException;
import performa.orm.Company;
import performa.orm.HiringTeam;
public class ChangeCompanyFP extends SaveFP
{
private static final LoggingArea LOG = LoggingArea.createLoggingArea("ChangeCompanyFP");
@Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
{
HttpServletRequest request = submission.getRequest();
HiringTeam hiringTeam = (HiringTeam) request.getAttribute("HiringTeam");
if(hiringTeam.isFalse(hiringTeam.getExistingCustomer()))
{
BusinessObjectParser.assertFieldCondition(hiringTeam.getCompanyName() != null, hiringTeam, HiringTeam.FIELD_CompanyName, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(hiringTeam.getCompanyTimeZone() != null, hiringTeam, HiringTeam.FIELD_CompanyTimeZone, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(hiringTeam.getCompanyType() != null, hiringTeam, HiringTeam.FIELD_CompanyType, "mandatory", exceptions, true, request);
}
super.validate(process, submission, exceptions, params);
}
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
ObjectTransaction objTran = process.getTransaction();
HttpServletRequest request = submission.getRequest();
HiringTeam hiringTeam = (HiringTeam) request.getAttribute("HiringTeam");
LogMgr.log(LOG, LogLevel.PROCESSING1, "Changing company of hiring team : ", hiringTeam);
if(hiringTeam.isFalse(hiringTeam.getExistingCustomer()))
{
Company company = Company.createCompany(objTran);
company.setCompanyName(hiringTeam.getCompanyName());
company.setHiringTeamType(hiringTeam.getCompanyType());
company.setTimeZone(hiringTeam.getCompanyTimeZone());
company.setAddedByUser(hiringTeam.getAddedByUser());
hiringTeam.setCompany(company);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Added new company : ", company);
}
return super.processForm(process, submission, params);
}
}
\ No newline at end of file
......@@ -32,8 +32,6 @@ public class Company extends BaseCompany
@Override
protected void postInitNewObj() throws BusinessException
{
addToHiringTeams(HiringTeam.createHiringTeam(getTransaction()));
super.postInitNewObj();
}
......
......@@ -12,10 +12,14 @@
<MULTIPLEREFERENCE name="BillingTeams" type="HiringTeam" backreferenceName="BilledByTeam" />
<MULTIPLEREFERENCE name="DiversityQuestions" type="HTDiversityQuestion" backreferenceName="HiringTeam" />
<TRANSIENT name="ExistingCustomer" type="Boolean" defaultValue="Boolean.TRUE"/>
<TRANSIENT name="IsLogoDeleted" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="CouponCode" type="String" length="20"/>
<TRANSIENT name="StripeBrand" type="String" />
<TRANSIENT name="StripeLast4" type="String" />
<TRANSIENT name="CompanyName" type="String" />
<TRANSIENT name="CompanyType" type="HiringTeamType" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="CompanyTimeZone" type="TimeZone" attribHelper="EnumeratedAttributeHelper"/>
<TABLE name="tl_hiring_team" tablePrefix="object">
......
package performa.search;
import oneit.objstore.BaseBusinessClass;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.rdbms.filters.ILikeFilter;
import oneit.servlets.jsp.ORMTextSearcher;
import performa.orm.Company;
public class CompanySearcher implements ORMTextSearcher
{
public static CompanySearcher INSTANCE = new CompanySearcher();
@Override
public BaseBusinessClass[] search(ObjectTransaction ot, String searchTerm)
{
return Company.SearchByAll().andCompanyName(new ILikeFilter(searchTerm, "%", "%")).search(ot);
}
}
\ No newline at end of file
......@@ -104,9 +104,11 @@ public class PerformaOAuthCallbackDecorator implements ServletDecorator, Initial
company.setAddedByUser(companyUser);
companyUser.setCompany(company);
HiringTeam hiringTeam = company.getHiringTeamsAt(0);
HiringTeam hiringTeam = HiringTeam.createHiringTeam(transaction);
hiringTeam.setAddedByUser(companyUser);
hiringTeam.setHiringTeamName("");
company.addToHiringTeams(hiringTeam);
companyUser.setDefaultHiringTeam(hiringTeam);
CompanyUserHiringTeamLink link = CompanyUserHiringTeamLink.createCompanyUserHiringTeamLink(transaction);
......
......@@ -14,6 +14,11 @@
Boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Company", Company.REFERENCE_Company);
Company company = (Company) process.getAttribute("Company");
if(toRedirect)
{
company.addToHiringTeams(HiringTeam.createHiringTeam(objTran));
}
SecUser secUser = null;
CompanyUser companyUser = company.getAddedByUser();
......
......@@ -13,7 +13,12 @@
ObjectTransaction objTran = process.getTransaction ();
Boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Company", Company.REFERENCE_Company);
Company company = (Company) process.getAttribute("Company");
if(toRedirect)
{
company.addToHiringTeams(HiringTeam.createHiringTeam(objTran));
}
SecUser secUser = null;
CompanyUser companyUser = company.getAddedByUser();
......
......@@ -12,12 +12,16 @@
<FORM name="*.createPlan" factory="Participant" class="performa.form.CreatePlanFP"/>
</NODE>
<NODE name="createArticle_jsp::TL" factory="Participant">
<NODE name="customers_jsp" factory="Participant">
<INHERITS factory="Named" nodename="CoreORMAdmin"/>
<FORM name="*.assume" factory="Participant" class="performa.form.AssumeHTAdminFP">
<NODE name="loginFP" factory="Named" nodename="CMSLoginFP"/>
</FORM>
<FORM name="*.search" factory="Participant" class="oneit.servlets.orm.RunSearchExecutorFP"/>
<DATA class="oneit.servlets.orm.RunSearchExecutorDF"/>
</NODE>
<NODE name="changeCompanyPopup_jsp" factory="Participant">
<INHERITS factory="Named" nodename="CoreORMAdmin"/>
<FORM name="*.changeCompany" factory="Participant" class="performa.form.ChangeCompanyFP"/>
</NODE>
<NODE name="editMessageTemplate_jsp" factory="Participant">
......
......@@ -8,6 +8,7 @@
<!-- <TOPMENU name="MENU.TEST_ANALYSIS" desc="Test Analysis" sortOrder="100" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element"
link="/extensions/performa/testAnalysis.jsp"/> -->
<CHILD name="Performa.Customers" desc="Customers" sortOrder="10" toplevel="ADMIN" priv="admin" link="/extensions/performa/customers.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" />
<CHILD name="Performa.SetupPlans" desc="Setup Plans" sortOrder="10" toplevel="ADMIN" priv="admin" link="/extensions/performa/setupPlans.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" />
<CHILD name="Performa.MessageTemplate" desc="Message Template" sortOrder="20" toplevel="ADMIN" priv="admin" link="/extensions/performa/listMessageTemplate.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" />
<CHILD name="Performa.NotificationTemplate" desc="Notification Template" sortOrder="30" toplevel="ADMIN" priv="admin" link="/extensions/performa/listNotificationTemplates.jsp" factory="Participant" class="oneit.servlets.jsp.ui.DefaultUICustomiser$Element" />
......
<%@ page extends="oneit.servlets.jsp.JSPInclude"%>
<%@ page extends="oneit.servlets.jsp.FormJSP"%>
<%@ include file="/setuprequest.jsp"%>
<%@ include file="inc/stdimports.jsp"%>
<%@ include file="/editor/stdimports.jsp"%>
<%@ page import="oneit.security.jsp.*" %>
<%@ page import="oneit.servlets.jsp.ormtable.*" %>
<oneit:dynIncluded>
<%! protected String getName (ServletConfig config) { return "customers_jsp"; } %>
<%
ORMProcessState process = (ORMProcessState) ProcessDecorator.getDefaultProcess(request);
ObjectTransaction objTran = process.getTransaction ();
String currentPage = request.getContextPath() + "/editor/home.jsp";
String currentPage = request.getContextPath() + "/extensions/performa/customers.jsp";
SecUser secUser = SecUser.getTXUser(objTran);
UserSortOption userSortOpt = (UserSortOption) process.getAttribute("UserSortOption");
SearchHiringTeam searchHT = (SearchHiringTeam) RunSearchExecutorFP.setupExecutor(request, SearchHiringTeam.REFERENCE_SearchHiringTeam, true);
......@@ -45,22 +45,42 @@
request.setAttribute("oneit.pageFormDetails", CollectionUtils.mapEntry("name", "Customers").mapEntry("enctype", "multipart/form-data").toMap());
request.setAttribute("oneit.pageHeaderTitle", "Customers");
%>
<%@include file="/editor/header.jsp"%>
<oneit:css>
<oneit:css href="/css/common.css" />
<oneit:css href="/css/jBox.css" />
</oneit:css>
<oneit:script>
<oneit:script src="/scripts/jBox.js"/>
</oneit:script>
<style>
.dashboard-content-area {
margin-top: 0px ;
width: 100%;
}
.change-company-btn{
border: none;
background: none;
color: #4e5258;
}
</style>
<script type="text/javascript">
$(function(){
var Popup = null;
$(document).ready(function(){
setupRecalc ($("form"), {'recalcOnError':true});
$(".change-company-btn").prop('title', 'Change Customer');
});
$(function(){
$('.search-icon-btn').click(function () {
$('.search-real-btn').click();
});
});
</script>
<div class="dashboard-content-area second-part">
<div class="jobs-list-shorting">
......@@ -71,6 +91,7 @@
<span class="search-icon-btn"></span>
</div>
<oneit:button value="Search" name="search" cssClass="btn btn-primary search-real-btn hidden" />
<oneit:button value=" " name="save" cssClass="btn" requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage).toMap() %>" id="save"/>
<div class="shorting-dropdown">
<span class="order-label">order by</span>
<select class="form-control" onChange="location=this.value">
......@@ -104,14 +125,24 @@
int openCount = openJobs != null ? openJobs.length : 0;
int clientCount = hiringTeam.pipelineHiringTeam().toClients().uniqueVals().size();
%>
<div class="client-list" id="<%= hiringTeam.getID() %>">
<div class="client-list">
<div class="client-row" >
<div class="client-name-cell jl-c" style="width:50%;">
<div class="client-name-cell jl-c" style="width:30%;">
<div class="client-name">
<oneit:toString value="<%= hiringTeam.getHiringTeamName() %>" mode="EscapeHTML" />
</div>
</div>
</div>
<div class="client-row company-details" >
<div class="client-name-cell jl-c" style="width:20%;">
<div class="client-name">
<%= hiringTeam.getCompany().getCompanyName() %>
<tagfile:popup actualJSP="<%= contextPath + "/extensions/performa/inc/changeCompanyPopup.jsp" %>" id="<%= hiringTeam.getID().toString() %>"
displayValue="..." cssClass="change-company-btn" bypassValidate="false"
procVars="<%= CollectionUtils.mapEntry("HiringTeam", hiringTeam).toMap() %>" width="800" height="450" popupAction="#save"/>
</div>
</div>
</div>
<div class="<%= "application-count jl-c " + (clientCount == 0 ? "opaque-jobcount" : "")%>">
<oneit:toString value="<%= clientCount %>" mode="EscapeHTML" nullValue="0"/>
<span class="grey-span">Clients</span>
......@@ -130,11 +161,9 @@
.toMap()%>"/>
</div>
</div>
<%
}
%>
</div>
</div>
</oneit:dynIncluded>
\ No newline at end of file
<%@include file="/editor/footer.jsp"%>
\ No newline at end of file
......@@ -6,7 +6,8 @@
<oneit:dynIncluded>
<oneit:dynInclude page="/extensions/performa/customers.jsp" data="<%= CollectionUtils.EMPTY_MAP %>"/>
<%
response.sendRedirect(request.getContextPath() + "/extensions/performa/customers.jsp");
%>
</oneit:dynIncluded>
\ No newline at end of file
<%@ page extends="oneit.servlets.jsp.FormJSP" %>
<%@ include file="/setuprequest.jsp" %>
<%@ include file="stdimports.jsp" %>
<%@ include file="/editor/stdimports.jsp" %>
<%! protected String getName (ServletConfig config) { return "changeCompanyPopup_jsp"; } %>
<%
ORMProcessState process = (ORMProcessState) ProcessDecorator.getDefaultProcess(request);
ObjectTransaction objTran = process.getTransaction ();
HiringTeam hiringTeam = (HiringTeam) process.getAttribute("HiringTeam");
request.setAttribute("oneit.pageFormDetails", CollectionUtils.mapEntry("name", "changeCompanyPopup").mapEntry("enctype", "multipart/form-data").toMap());
request.setAttribute("oneit.pageHeaderTitle", "Change Customer Popup");
%>
<%@include file="/editor/header.jsp" %>
<script type="text/javascript">
$(document).ready(function(){
setupRecalc ($("form"), {'recalcOnError':true});
});
</script>
<oneit:layout_total widths="<%= new double[] {4, 8} %>" skin="bootstrap">
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1"><oneit:label GUIName="Hiring Team" /></oneit:layout_label>
<oneit:layout_field width="1"><oneit:toString value="<%= hiringTeam.getHiringTeamName() %>" mode="EscapeHTML"/></oneit:layout_field>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1">
<oneit:ormInput obj="<%= hiringTeam %>" type="radio" attributeName="ExistingCustomer" value="true"/> Existing Customer
</oneit:layout_label>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:recalcClass htmlTag="span" classScript="hiringTeam.isTrue(hiringTeam.getExistingCustomer()) ? 'show col-xs-offset-1' : 'hide'" hiringTeam="<%= hiringTeam %>">
<oneit:layout_label width="1"><oneit:label GUIName="Customer" /></oneit:layout_label>
<oneit:layout_field width="1">
<tagfile:ormsingleasso_autocomplete obj="<%= hiringTeam %>" assocName="Company" cssClass="form-control" searcher="<%= CompanySearcher.INSTANCE %>" />
</oneit:layout_field>
</oneit:recalcClass>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1">
<oneit:ormInput obj="<%= hiringTeam %>" type="radio" attributeName="ExistingCustomer" value="false"/> New Customer
</oneit:layout_label>
</oneit:skin>
<oneit:recalcClass htmlTag="span" classScript="hiringTeam.isFalse(hiringTeam.getExistingCustomer()) ? 'show col-xs-offset-1' : 'hide'" hiringTeam="<%= hiringTeam %>">
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1"><oneit:label GUIName="Customer Name" /></oneit:layout_label>
<oneit:layout_field width="1">
<oneit:ormInput obj="<%= hiringTeam %>" type="text" attributeName="CompanyName" cssClass="form-control" />
</oneit:layout_field>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1"><oneit:label GUIName="Time Zone" /></oneit:layout_label>
<oneit:layout_field width="1">
<oneit:ormEnum obj="<%= hiringTeam %>" attributeName="CompanyTimeZone" cssClass="form-control"/>
</oneit:layout_field>
</oneit:skin>
<oneit:skin tagName="layout_row">
<oneit:layout_label width="1"><oneit:label GUIName="What type of hiring team are you?" /></oneit:layout_label>
</oneit:skin>
<%
FormTag jobForm = FormTag.getActiveFormTag(request);
FormBuilder formBuilder = jobForm.getFormBuilder();
String optionKey = WebUtils.getInputKey(request, hiringTeam, HiringTeam.FIELD_CompanyType);
String formValue = formBuilder.fieldValue (optionKey, hiringTeam.getCompanyType() == null ? "" : hiringTeam.getCompanyType().getName());
for(HiringTeamType hiringTeamType : HiringTeamType.getHiringTeamTypeArray())
{
boolean isSelected = CollectionUtils.equals(formValue, hiringTeamType.getName());
String hiringTeamTypeId = String.valueOf(hiringTeam.getID().longID()) + "_hiringteamtype_" + hiringTeamType.getName();
String selected = isSelected ? "checked" : "";
String activeClass = isSelected ? "active" : "";
%>
<oneit:skin tagName="layout_row">
<oneit:layout_field width="2">
<input type="radio" name="<%= optionKey %>" id="<%= hiringTeamTypeId %>" class="element_rating_radio" value="<%= hiringTeamType.getName() %>" <%= selected%>>
<label for="<%= hiringTeamTypeId %>">
<oneit:toString value="<%= hiringTeamType %>" mode="EscapeHTML"/>
</label>
</oneit:layout_field>
</oneit:skin>
<%
}
%>
</oneit:recalcClass>
<oneit:skin tagName="layout_row">
<oneit:layout_field width="2">
<oneit:button value="Save" cssClass="btn btn-primary pull-right" name="changeCompany"
requestAttribs="<%= CollectionUtils.mapEntry("HiringTeam", hiringTeam)
.toMap() %>"/>
</oneit:layout_field>
</oneit:skin>
</oneit:layout_total>
<%@include file="/editor/footer.jsp" %>
\ 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