Commit 873012d0 by Harsh Shah

Finish Release-20170929

parents 3531e085 2104a1a4
......@@ -9,7 +9,7 @@
<column name="object_last_updated_date" type="Date" nullable="false" length="22"/>
<column name="object_created_date" type="Date" nullable="false" length="22"/>
<column name="score_number" type="Long" nullable="true"/>
<column name="color_rank" type="Long" nullable="true"/>
<column name="color_code" type="String" nullable="true" length="200"/>
<column name="wghtd_score" type="Long" nullable="true"/>
<column name="test_analysis_id" type="Long" length="11" nullable="true"/>
<column name="factor_number" type="Long" length="11" nullable="true"/>
......
......@@ -9,7 +9,7 @@ CREATE TABLE tl_score (
object_created_date datetime DEFAULT getdate() NOT NULL
,
score_number numeric(12) NULL,
color_rank numeric(12) NULL,
color_code varchar(200) NULL,
wghtd_score numeric(12) NULL,
test_analysis_id numeric(12) NULL,
factor_number numeric(12) NULL,
......
......@@ -10,7 +10,7 @@ CREATE TABLE tl_score (
object_created_date date DEFAULT SYSDATE NOT NULL
,
score_number number(12) NULL,
color_rank number(12) NULL,
color_code varchar2(200) NULL,
wghtd_score number(12) NULL,
test_analysis_id number(12) NULL,
factor_number number(12) NULL,
......
......@@ -10,7 +10,7 @@ CREATE TABLE tl_score (
object_created_date timestamp DEFAULT NOW() NOT NULL
,
score_number numeric(12) NULL,
color_rank numeric(12) NULL,
color_code varchar(200) NULL,
wghtd_score numeric(12) NULL,
test_analysis_id numeric(12) NULL,
factor_number numeric(12) NULL,
......
......@@ -11,6 +11,7 @@ import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException;
import oneit.utils.CollectionUtils;
import performa.intercom.utils.IntercomUtils;
import performa.orm.Company;
......@@ -20,7 +21,7 @@ public class SaveCompanyFP extends SaveFP
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
Company company = process.getAttribute("Company") != null ? (Company) process.getAttribute("Company") : (Company) request.getAttribute("Company");
Company company = process.getAttribute("Company") != null ? (Company) process.getAttribute("Company") : (Company) request.getAttribute("Company");
LogMgr.log(Company.LOG, LogLevel.PROCESSING1,"In SaveCompanyFP saving company : ", company );
......@@ -31,6 +32,9 @@ public class SaveCompanyFP extends SaveFP
LogMgr.log(Company.LOG, LogLevel.PROCESSING1,"In SaveCompanyFP setting comany logo to null of company : ", company );
}
// Update company in intercom
IntercomUtils.updateCompany(company);
return super.processForm(process, submission, params);
}
}
\ No newline at end of file
......@@ -6,7 +6,6 @@ import oneit.components.ParticipantInitialisationContext;
import oneit.email.ConfigurableArticleTemplateEmailer;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.objstore.ObjectTransaction;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.SecUser;
......@@ -20,6 +19,8 @@ import oneit.utils.CollectionUtils;
import oneit.utils.InitialisationException;
import oneit.utils.MultiException;
import oneit.utils.StringUtils;
import performa.intercom.resources.User;
import performa.intercom.utils.IntercomUtils;
import performa.orm.CompanyUser;
import performa.utils.Utils;
......@@ -41,42 +42,56 @@ public class SaveUserDetailsFP extends SaveFP
if(oldSecUser != null)
{
if(!companyUser.isLoggedViaSocial() && !CollectionUtils.equals(oldSecUser.getUserName(), secUser.getUserName()))
if( !CollectionUtils.equals(oldSecUser.getEmail(), secUser.getEmail()))
{
if(companyUser.getConfirmPassword() == null)
if(!companyUser.isLoggedViaSocial()) //email changed for normal user
{
submission.getRequest().setAttribute("EmailChanged", true);
return RedisplayResult.getInstance();
}
else
{
boolean validPassword = secUser.checkPassword(companyUser.getConfirmPassword());
if(!validPassword)
if(companyUser.getConfirmPassword() == null)
{
submission.getRequest().setAttribute("EmailChanged", false);
companyUser.setConfirmPassword(null);
submission.getRequest().setAttribute("EmailChanged", true);
return RedisplayResult.getInstance();
}
else
{
boolean validPassword = secUser.checkPassword(companyUser.getConfirmPassword());
BusinessObjectParser.assertFieldCondition(validPassword, companyUser, CompanyUser.FIELD_ConfirmPassword, "passwordNotMatch");
if(!validPassword)
{
submission.getRequest().setAttribute("EmailChanged", false);
companyUser.setConfirmPassword(null);
}
if(validPassword)
{
companyUser.setIsAccountVerified(Boolean.FALSE);
companyUser.setIsEmailChanged(Boolean.TRUE);
Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName());
BusinessObjectParser.assertFieldCondition(validPassword, companyUser, CompanyUser.FIELD_ConfirmPassword, "passwordNotMatch");
if(validPassword)
{
// companyUser.setIsAccountVerified(Boolean.FALSE);
companyUser.setIsEmailChanged(Boolean.TRUE);
Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName());
}
}
// secUser.setEmail(secUser.getUserName());
}
else //email changed for social login
{
//send email verification mail
LogMgr.log(CompanyUser.LOG, LogLevel.PROCESSING1,"Sending email resetted mail", companyUser );
companyUser.setIsEmailChanged(Boolean.TRUE);
Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName());
}
}
else if (companyUser.isLoggedViaSocial() && !CollectionUtils.equals(oldSecUser.getEmail(), secUser.getEmail()))
User intercomUser = IntercomUtils.updateIntercomUser(secUser);
if(intercomUser == null)
{
//send email verification mail
LogMgr.log(CompanyUser.LOG, LogLevel.PROCESSING1,"Sending email resetted mail", companyUser );
companyUser.setIsEmailChanged(Boolean.TRUE);
Utils.sendEmailChangedMail(companyUser, request, emailer, SaveUserDetailsFP.class.getName());
performa.intercom.resources.Company intercomCompany = IntercomUtils.findOrCreateCompany(companyUser.getCompany());
IntercomUtils.createIntercomUser(secUser, "Hiring Team", intercomCompany);
}
}
......
......@@ -19,11 +19,12 @@ import oneit.servlets.security.SessionSecUserDecorator;
import oneit.utils.*;
import performa.intercom.utils.IntercomUtils;
import performa.orm.*;
import performa.orm.types.RoleType;
import performa.utils.Utils;
import performa.utils.WebUtils;
public class SendCompanyUserInvitesFP extends ORMProcessFormProcessor
public class SendCompanyUserInvitesFP extends SaveFP
{
private static final LoggingArea LOG = LoggingArea.createLoggingArea("SendCompanyUserInvites");
......@@ -36,16 +37,25 @@ public class SendCompanyUserInvitesFP extends ORMProcessFormProcessor
{
HttpServletRequest request = submission.getRequest();
Company company = (Company) process.getAttribute("Company");
CompanyUser companyUser = (CompanyUser) request.getAttribute("CompanyUser");
for(CompanyUser cUser : company.getUsersSet())
if(companyUser != null && companyUser == company.getAddedByUser())
{
if(!CollectionUtils.equals(cUser, company.getAddedByUser()))
for(CompanyUser cUser : company.getUsersSet())
{
SecUser secUser = cUser.getUser();
if(!CollectionUtils.equals(cUser, company.getAddedByUser()))
{
SecUser secUser = cUser.getUser();
BusinessObjectParser.assertFieldCondition(secUser.getEmail()!=null, secUser, SecUser.FIELD_Email, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(!Utils.isCompanyUserEmailFound(process.getTransaction(), secUser.getEmail()), secUser, SecUser.FIELD_Email, "emailExists", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(secUser.getEmail()!= null, secUser, SecUser.FIELD_Email, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(!Utils.isCompanyUserEmailFound(process.getTransaction(), secUser.getEmail()), secUser, SecUser.FIELD_Email, "emailExists", exceptions, true, request);
}
}
if(!company.isTrue(company.getIsVerified()))
{
BusinessObjectParser.assertFieldCondition(company.getCompanyName()!=null, company, Company.FIELD_CompanyName, "mandatory", exceptions, true, request);
}
}
......@@ -59,21 +69,19 @@ public class SendCompanyUserInvitesFP extends ORMProcessFormProcessor
HttpServletRequest request = submission.getRequest();
ObjectTransaction objTran = process.getTransaction();
Company company = (Company) process.getAttribute("Company");
CompanyUser companyUser = company.getAddedByUser();
CompanyUser companyUser = (CompanyUser) request.getAttribute("CompanyUser");
SecUser secUser = companyUser.getUser();
String nextPage = (String) request.getAttribute("nextPage");
Boolean socialLogin = CollectionUtils.equals(process.getAttribute("socialLogin"), Boolean.TRUE);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User", companyUser, secUser);
companyUser.setIsAccountVerified(Boolean.TRUE);
company.setIsVerified(Boolean.TRUE);
sendAccountCreatedMail(companyUser, request);
if(!socialLogin)
{
secUser.setAttribute("md5:" + SecUser.FIELD_Password, companyUser.getPassword());
request.getSession().setAttribute (SecUser.SEC_USER_ID, secUser);
request.getSession().setAttribute (SessionSecUserDecorator.REFRESH_SECURITY, Boolean.TRUE);
......@@ -83,42 +91,38 @@ public class SendCompanyUserInvitesFP extends ORMProcessFormProcessor
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing Company User finished", companyUser, secUser);
//process user invitations
for(CompanyUser cUser : company.getUsersSet())
if(companyUser == company.getAddedByUser())
{
if(!CollectionUtils.equals(cUser, companyUser))
//process user invitations
for(CompanyUser cUser : company.getUsersSet())
{
Tuple.T2<SecUser, Boolean> userdata = Utils.getSecUserForCompanyIfAvailable(cUser);
SecUser sUser = userdata.get0();
if(!CollectionUtils.equals(cUser, companyUser))
{
SecUser sUser = cUser.getUser();
LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to send invitaion email.", cUser);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Started to send invitaion email.", cUser);
if(!userdata.get1()) //check user availablility
{
sUser.setUserName(sUser.getEmail().toLowerCase());
}
sUser.setAttribute("md5:" + SecUser.FIELD_Password, CompanyUser.DEFAULT_PASSWORD);
sUser.addRole(Utils.getRole(Utils.ROLE_CLIENT, objTran));
companyUser.setRole(RoleType.STANDARD);
sUser.setAttribute("md5:" + SecUser.FIELD_Password, CompanyUser.DEFAULT_PASSWORD);
sUser.addRole(Utils.getRole(Utils.ROLE_CLIENT, objTran));
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", sUser);
LogMgr.log(LOG, LogLevel.PROCESSING1, "New user created :: ", sUser);
sendInvitationMail(cUser, request);
sendInvitationMail(cUser, request);
LogMgr.log(LOG, LogLevel.PROCESSING1, "End of sending invitation email.", cUser);
LogMgr.log(LOG, LogLevel.PROCESSING1, "End of sending invitation email.", cUser);
}
}
}
// Create company and the first user of it in intercom
performa.intercom.resources.Company intercomCompany = IntercomUtils.createIntercomCompany(company);
performa.intercom.resources.Company intercomCompany = IntercomUtils.findOrCreateCompany(company);
IntercomUtils.createIntercomUser(secUser, "Hiring Team", intercomCompany);
process.completeAndRestart();
return new ProcessRedirectResult(nextPage, new String[0]);
return super.processForm(process, submission, params);
}
......
......@@ -42,11 +42,11 @@ public class SendVerificationMailFP extends SaveFP
CompanyUser companyUser = company.getAddedByUser();
SecUser secUser = companyUser.getUser();
BusinessObjectParser.assertFieldCondition(!Utils.isCompanyUserEmailFound(process.getTransaction(), secUser.getEmail()), secUser, SecUser.FIELD_Email, "emailExists", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(!Utils.emailExists(process.getTransaction(), secUser.getEmail()), secUser, SecUser.FIELD_Email, "emailExists", exceptions, true, request);
}
else
{
BusinessObjectParser.assertFieldCondition(!job.isEmailFound(), job, Job.FIELD_Email, "emailExists", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(!Utils.emailExists(process.getTransaction(), job.getEmail()), job, Job.FIELD_Email, "emailExists", exceptions, true, request);
}
super.validate(process, submission, exceptions, params);
......
......@@ -57,6 +57,7 @@ public class SignInCandidateFP extends LoginProcessor
BusinessObjectParser.assertFieldCondition(job.getEmail()!= null, job, Job.FIELD_Email, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(job.getPassword()!= null, job, Job.FIELD_Password, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(!Utils.emailExists(job.getTransaction(), job.getEmail()), job, Job.FIELD_Email, "emailExists", exceptions, true, request);
return super.validate(submission, exceptions);
}
......
package performa.form;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import oneit.appservices.config.ConfigMgr;
import oneit.components.ParticipantInitialisationContext;
import oneit.email.ConfigurableArticleTemplateEmailer;
import oneit.email.ConfigurableEmailerException;
import oneit.logging.*;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.objstore.validator.AttributeValidator;
import oneit.security.SecUser;
import oneit.servlets.forms.*;
import oneit.servlets.process.*;
import oneit.servlets.security.SessionSecUserDecorator;
import oneit.utils.*;
import oneit.utils.parsers.FieldException;
import performa.intercom.utils.IntercomUtils;
import performa.orm.*;
import performa.utils.Utils;
import performa.utils.WebUtils;
public class VerifyCompanyUserFP extends ORMProcessFormProcessor
{
private static final LoggingArea LOG = LoggingArea.createLoggingArea("VerifyCompanyUser");
protected ConfigurableArticleTemplateEmailer emailer;
@Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
{
HttpServletRequest request = submission.getRequest();
CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser");
Boolean socialLogin = (Boolean) request.getAttribute("socialLogin");
SecUser secUser = companyUser.getUser();
Company company = companyUser.getCompany();
if(socialLogin)
{
BusinessObjectParser.assertFieldCondition(secUser.getEmail()!=null, secUser, SecUser.FIELD_Email, "invalid", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(!Utils.isCompanyUserEmailFound(secUser.getTransaction(), secUser.getEmail()), secUser, SecUser.FIELD_Email, "emailExists", exceptions, true, request);
}
else
{
BusinessObjectParser.assertFieldCondition(StringUtils.isEmailAddress(secUser.getUserName()), secUser, SecUser.FIELD_Email, "invalid", exceptions, true, request);
}
BusinessObjectParser.assertFieldCondition(secUser.getFirstName()!=null, secUser, SecUser.FIELD_FirstName, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(secUser.getLastName()!=null, secUser, SecUser.FIELD_LastName, "mandatory", exceptions, true, request);
if(!company.isTrue(company.getIsVerified()))
{
BusinessObjectParser.assertFieldCondition(company.getCompanyName()!=null, company, Company.FIELD_CompanyName, "mandatory", exceptions, true, request);
}
if(!socialLogin)
{
BusinessObjectParser.assertFieldCondition(companyUser.getPassword()!= null, companyUser, CompanyUser.FIELD_Password, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(companyUser.getConfirmPassword()!= null, companyUser, CompanyUser.FIELD_ConfirmPassword, "mandatory", exceptions, true, request);
BusinessObjectParser.assertFieldCondition(CollectionUtils.equals(companyUser.getPassword(), companyUser.getConfirmPassword()), companyUser, CompanyUser.FIELD_ConfirmPassword, "passwordNotMatch", exceptions, true, request);
//to validate password
AttributeValidator passwordValidator = (AttributeValidator)(ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "PasswordValidator", null));
try
{
//execute if not null
if (passwordValidator != null)
{
passwordValidator.validate (null, secUser, "Password", companyUser.getPassword());
}
}
catch (FieldException e)
{
exceptions.addException(new FieldException(e, CompanyUser.FIELD_Password));
}
catch (Exception e)
{
throw NestedException.wrap(e);
}
}
super.validate(process, submission, exceptions, params);
}
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser");
SecUser secUser = companyUser.getUser();
Company company = companyUser.getCompany();
String nextPage = (String) request.getAttribute("nextPage");
Boolean socialLogin = (Boolean) request.getAttribute("socialLogin");
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing User", companyUser, secUser);
if(CollectionUtils.equals(companyUser.getPassword(), companyUser.getConfirmPassword()))
{
if(!company.isTrue(company.getIsVerified()) && CollectionUtils.equals(company.getAddedByUser(), companyUser))
{
process.setAttribute("Company", company);
process.setAttribute("socialLogin", socialLogin);
return new ProcessRedirectResult(nextPage, new String[0]);
}
else
{
nextPage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request);
// Create company user in intercom
performa.intercom.resources.Company intercomCompany = IntercomUtils.findCompanyByID(company);
IntercomUtils.createIntercomUser(secUser, "Hiring Team", intercomCompany);
}
if(!socialLogin)
{
secUser.setAttribute("md5:" + SecUser.FIELD_Password, companyUser.getPassword());
}
companyUser.setIsAccountVerified(Boolean.TRUE);
sendMail(companyUser, request);
request.getSession().setAttribute (SecUser.SEC_USER_ID, secUser);
request.getSession().setAttribute (SessionSecUserDecorator.REFRESH_SECURITY, Boolean.TRUE);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Password resetted", companyUser, secUser);
}
LogMgr.log(LOG, LogLevel.PROCESSING1, "Verifing User finished", companyUser, secUser);
process.completeAndRestart();
return new ProcessRedirectResult(nextPage, new String[0]);
}
@Override
public void init(ParticipantInitialisationContext context) throws InitialisationException
{
super.init(context);
emailer = (ConfigurableArticleTemplateEmailer) (context.getSingleChild("AccountCreatedEmailer"));
}
protected void sendMail(CompanyUser companyUser, HttpServletRequest request) throws BusinessException
{
try
{
LogMgr.log(LOG, LogLevel.PROCESSING1, "Sending Account Created mail from VerifyCompanyUserFP to :: ", companyUser);
Map defaultParams = CollectionUtils.EMPTY_MAP;
ObjectTransform transform = Utils.createCompoundTransform(defaultParams, companyUser);
Utils.sendMail(emailer, transform, new String[]{companyUser.getEmailAddressFromUser()}, null, companyUser);
LogMgr.log(LOG, LogLevel.PROCESSING1, "Sent Account Created mail successfully from " + VerifyCompanyUserFP.class + " to :: ", companyUser);
}
catch (ConfigurableEmailerException ex)
{
LogMgr.log(LOG, LogLevel.SYSTEMERROR1, ex, "Error occured while sending mail for CompanyUser :: " + companyUser);
throw new BusinessException("We are unable to send mail. Please try again or contact Talentology for more details.");
}
}
}
\ No newline at end of file
......@@ -24,13 +24,13 @@ public class IntercomUtils
public static User createIntercomUser(SecUser secUser, String role, Company company)
{
try
{
{
User user = new User();
user.setUserId(secUser.getIdentification());
user.setEmail(secUser.getUserName());
user.setEmail(secUser.getEmail());
user.setName(secUser.getName());
user.addCustomAttribute(CustomAttribute.newStringAttribute("role", role));
user.addCustomAttribute(CustomAttribute.newStringAttribute("role", role));
if(company != null)
{
......@@ -48,6 +48,48 @@ public class IntercomUtils
}
public static User findUserByID(SecUser secUser)
{
try
{
Map<String, String> map = new HashMap<>();
map.put("user_id", secUser.getIdentification());
return User.find(map);
}
catch (Exception e)
{
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while fetching a user by id from intercom");
return null;
}
}
public static User updateIntercomUser(SecUser secUser)
{
try
{
User user = findUserByID(secUser);
if(user != null)
{
user.setEmail(secUser.getEmail());
user.setName(secUser.getName());
User.update(user);
}
return user;
}
catch (Exception e)
{
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while updating a user in intercom");
return null;
}
}
public static Company createIntercomCompany(performa.orm.Company company)
{
try
......@@ -76,20 +118,50 @@ public class IntercomUtils
map.put("company_id", company.getID().toString());
Company intercomCompany = Company.find(map);
return Company.find(map);
}
catch (Exception e)
{
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while fetching a company by id from intercom");
return null;
}
}
public static void updateCompany(performa.orm.Company company)
{
try
{
Company intercomCompany = findCompanyByID(company);
if(intercomCompany == null)
{
intercomCompany = createIntercomCompany(company);
createIntercomCompany(company);
}
return intercomCompany;
}
else
{
intercomCompany.setName(company.getCompanyName());
Company.update(intercomCompany);
}
}
catch (Exception e)
{
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while fetching a company by id from intercom");
LogMgr.log(LoggingArea.ALL, LogLevel.PROCESSING1, e, "Error while updating company in intercom");
return null;
}
}
public static Company findOrCreateCompany(performa.orm.Company company)
{
Company intercomCompany = findCompanyByID(company);
if(intercomCompany == null)
{
intercomCompany = createIntercomCompany(company);
}
return intercomCompany;
}
}
......@@ -19,11 +19,11 @@ public class Client extends BaseClient
// Do not add any code to this, always put it in initialiseNewObject
}
public int getApplicationCountByStatus(JobStatus jobStatus)
public int getJobCountByStatus(JobStatus jobStatus)
{
Filter<Job> filter = Job.SearchByAll().andJobStatus(new EqualsFilter<>(jobStatus));
return pipelineClient().toJobs(filter).toJobApplications().uniqueVals().size();
return pipelineClient().toJobs(filter).uniqueVals().size();
}
......
package performa.orm;
import oneit.logging.LoggingArea;
import oneit.objstore.ObjectStatus;
import oneit.objstore.ValidationContext;
import oneit.security.SecUser;
import oneit.utils.CollectionUtils;
import oneit.utils.parsers.FieldException;
......@@ -45,4 +47,16 @@ public class Company extends BaseCompany
}
return addUser;
}
@Override
public void validate(ValidationContext context)
{
if(getStatus() != ObjectStatus.NEW)
{
context.check(getHiringTeamType() != null , this, FIELD_HiringTeamType, "mandatory");
}
super.validate(context);
}
}
\ No newline at end of file
......@@ -16,6 +16,7 @@
<TRANSIENT name="LastName" type="String"/>
<TRANSIENT name="RoleType" type="RoleType" defaultValue="RoleType.STANDARD" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="IsLogoDeleted" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="CompletedProfile" type="Boolean" defaultValue="Boolean.FALSE"/>
<TABLE name="tl_company" tablePrefix="object">
......
......@@ -16,4 +16,9 @@ public class FactorScore extends BaseFactorScore
{
return "FactorScore";
}
public Integer getColorRank()
{
return getColorCode() != null ? getColorCode().getColorRank() : 0;
}
}
\ No newline at end of file
......@@ -6,13 +6,11 @@
<IMPORT value="performa.orm.types.*"/>
<TRANSIENT name="ColorCode" type="ColorCode" attribHelper="EnumeratedAttributeHelper"/>
<TABLE name="tl_score" tablePrefix="object" polymorphic="FALSE">
<ATTRIB name="Score" type="Integer" dbcol="score_number"/>
<ATTRIB name="ColorRank" type="Integer" dbcol="color_rank" />
<ATTRIB name="WghtdScore" type="Integer" dbcol="wghtd_score" />
<ATTRIB name="Score" type="Integer" dbcol="score_number"/>
<ATTRIB name="ColorCode" type="ColorCode" dbcol="color_code" attribHelper="EnumeratedAttributeHelper"/>
<ATTRIB name="WghtdScore" type="Integer" dbcol="wghtd_score" />
<SINGLEREFERENCE name="TestAnalysis" type="TestAnalysis" dbcol="test_analysis_id" backreferenceName="FactorScores"/>
<SINGLEREFERENCE name="Factor" type="Factor" dbcol="factor_number"/>
......
......@@ -28,13 +28,13 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
// Private attributes corresponding to business object data
private Integer dummyScore;
private Integer dummyColorRank;
private ColorCode dummyColorCode;
private Integer dummyWghtdScore;
// Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper HELPER_Score = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_ColorRank = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper HELPER_ColorCode = new EnumeratedAttributeHelper (ColorCode.FACTORY_ColorCode);
private static final DefaultAttributeHelper HELPER_WghtdScore = DefaultAttributeHelper.INSTANCE;
......@@ -43,12 +43,12 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
public FactorScorePersistenceMgr ()
{
dummyScore = (Integer)(HELPER_Score.initialise (dummyScore));
dummyColorRank = (Integer)(HELPER_ColorRank.initialise (dummyColorRank));
dummyColorCode = (ColorCode)(HELPER_ColorCode.initialise (dummyColorCode));
dummyWghtdScore = (Integer)(HELPER_WghtdScore.initialise (dummyWghtdScore));
}
private String SELECT_COLUMNS = "{PREFIX}tl_score.object_id as id, {PREFIX}tl_score.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_score.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_score.score_number, {PREFIX}tl_score.color_rank, {PREFIX}tl_score.wghtd_score, {PREFIX}tl_score.test_analysis_id, {PREFIX}tl_score.factor_number, {PREFIX}tl_score.level_number, {PREFIX}tl_score.narrative_id, 1 AS commasafe ";
private String SELECT_COLUMNS = "{PREFIX}tl_score.object_id as id, {PREFIX}tl_score.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_score.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_score.score_number, {PREFIX}tl_score.color_code, {PREFIX}tl_score.wghtd_score, {PREFIX}tl_score.test_analysis_id, {PREFIX}tl_score.factor_number, {PREFIX}tl_score.level_number, {PREFIX}tl_score.narrative_id, 1 AS commasafe ";
private String SELECT_JOINS = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
......@@ -100,7 +100,7 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
// Check for persistent sets already prefetched
if (false || !tl_scorePSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!tl_scorePSet.containsAttrib(FactorScore.FIELD_Score)||
!tl_scorePSet.containsAttrib(FactorScore.FIELD_ColorRank)||
!tl_scorePSet.containsAttrib(FactorScore.FIELD_ColorCode)||
!tl_scorePSet.containsAttrib(FactorScore.FIELD_WghtdScore)||
!tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_TestAnalysis)||
!tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Factor)||
......@@ -195,10 +195,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
{
int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_score " +
"SET score_number = ?, color_rank = ?, wghtd_score = ?, test_analysis_id = ? , factor_number = ? , level_number = ? , narrative_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"SET score_number = ?, color_code = ?, wghtd_score = ?, test_analysis_id = ? , factor_number = ? , level_number = ? , narrative_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_score.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, tl_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorRank.getForSQL(dummyColorRank, tl_scorePSet.getAttrib (FactorScore.FIELD_ColorRank))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, tl_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, tl_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorCode.getForSQL(dummyColorCode, tl_scorePSet.getAttrib (FactorScore.FIELD_ColorCode))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, tl_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1)
{
......@@ -455,7 +455,7 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
tl_scorePSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));
tl_scorePSet.setAttrib(FactorScore.FIELD_Score, HELPER_Score.getFromRS(dummyScore, r, "score_number"));
tl_scorePSet.setAttrib(FactorScore.FIELD_ColorRank, HELPER_ColorRank.getFromRS(dummyColorRank, r, "color_rank"));
tl_scorePSet.setAttrib(FactorScore.FIELD_ColorCode, HELPER_ColorCode.getFromRS(dummyColorCode, r, "color_code"));
tl_scorePSet.setAttrib(FactorScore.FIELD_WghtdScore, HELPER_WghtdScore.getFromRS(dummyWghtdScore, r, "wghtd_score"));
tl_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_TestAnalysis, r.getObject ("test_analysis_id"));
......@@ -478,10 +478,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
{
executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_score " +
" (score_number, color_rank, wghtd_score, test_analysis_id, factor_number, level_number, narrative_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
" (score_number, color_code, wghtd_score, test_analysis_id, factor_number, level_number, narrative_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
"VALUES " +
" (?, ?, ?, ?, ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, tl_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorRank.getForSQL(dummyColorRank, tl_scorePSet.getAttrib (FactorScore.FIELD_ColorRank))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, tl_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))) .listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))) .listEntry (objectID.longID ()).toList().toArray());
CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, tl_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorCode.getForSQL(dummyColorCode, tl_scorePSet.getAttrib (FactorScore.FIELD_ColorCode))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, tl_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))) .listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))) .listEntry (objectID.longID ()).toList().toArray());
tl_scorePSet.setStatus (PersistentSetStatus.PROCESSED);
}
......
......@@ -6,6 +6,7 @@ import oneit.objstore.*;
import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.objstore.rdbms.filters.IsNotNullFilter;
import oneit.objstore.rdbms.filters.NotEqualsFilter;
import oneit.objstore.utils.ObjstoreUtils;
import oneit.utils.*;
import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter;
......@@ -304,6 +305,33 @@ public class JobApplication extends BaseJobApplication
}
return super.getOverallRank();
}
@Override
public Map getFactorScoreDetails()
{
if(super.getFactorScoreDetails() == null && getCandidate() != null && getJob() != null && getJob().getLevel() != null)
{
try
{
Map<FactorClass, Map<FactorLevelLink, Map>> factorScoreDetails = new LinkedHashMap();
Map<FactorClass, Tuple.T2<Double, ColorCode>> roleScoreMap = (Map<FactorClass, Tuple.T2<Double, ColorCode>>) getRoleFit();
for(FactorClass factorClass : getSortedFactorClasses())
{
if(roleScoreMap.get(factorClass) != null && roleScoreMap.get(factorClass).get0() > 0d)
{
factorScoreDetails.put(factorClass, AnalysisEngine.getFactorScoreDetails(getCandidate(), getJob().getLevel(), factorClass));
}
}
setFactorScoreDetails(factorScoreDetails);
}
catch (FieldException ex)
{
LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting FactorScoreDetails for " + this);
}
}
return super.getFactorScoreDetails();
}
public Double getRoleFitScore()
{
......@@ -484,4 +512,86 @@ public class JobApplication extends BaseJobApplication
return answersByImportance;
}
public List<FactorScore> getRoleAreaOfConcerns()
{
Map<FactorClass, Map<FactorLevelLink, Map>> factorScoreDetails = getFactorScoreDetails();
List<FactorScore> factorScores = new ArrayList();
if(factorScoreDetails != null)
{
for(FactorClass factorClass : factorScoreDetails.keySet())
{
Map<FactorLevelLink, Map> factorDetails = factorScoreDetails.get(factorClass);
Collection<FactorLevelLink> sortedLinks = ObjstoreUtils.sort(factorDetails.keySet(),
new ObjectTransform[]{FactorLevelLink.pipesFactorLevelLink().toFactor().toObjectID()},
new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR});
for(FactorLevelLink factorLevelLink : sortedLinks)
{
Map factorLinkDetails = factorDetails.get(factorLevelLink);
if(!factorLinkDetails.isEmpty())
{
FactorScore factorScore = (FactorScore) factorLinkDetails.get("factorScore");
if(factorScore != null && factorScore.getFactor() != null && factorScore.getColorCode() != null && factorScore.getColorCode() != ColorCode.GREEN) //SCORE.COLOR_RANK > 1 as per apollo
{
LevelFactorType levelFactorType = factorLevelLink.getLevel().getLevelFactorType(factorScore.getFactor());
if(levelFactorType != null && levelFactorType.getTypeFlag() == TypeFlag.PRIMARY)
{
factorScores.add(factorScore);
}
}
}
}
}
}
return factorScores;
}
public List<Tuple.T2> getCultureAreaOfConcerns()
{
Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>> cultureFitData = (Map<CultureClass, Tuple.T2<Long, Set<Tuple.T3>>>) getCultureFit();
List<Tuple.T2> result = new ArrayList();
for(CultureClass cClass : cultureFitData.keySet())
{
if(cClass == null || cultureFitData.get(cClass) == null)
{
continue;
}
for(Tuple.T3 tuple : cultureFitData.get(cClass).get1())
{
CultureNarrative cultureNarrative = (CultureNarrative) tuple.get2();
Integer weightingScore = (Integer) tuple.get0();
if(cultureNarrative != null && cultureNarrative.getColorCode() != null && cultureNarrative.getColorCode() != ColorCode.GREEN && weightingScore == 10) //i.e. Importance = ESSENTIAL
{
result.add(new Tuple.T2(tuple.get1(), cultureNarrative.getColorCode()));
}
}
}
return result;
}
public MultiHashtable<Importance, AssessmentCriteriaAnswer> getNegativeACByImportance(CriteriaType criteriaType)
{
MultiHashtable<Importance, AssessmentCriteriaAnswer> answerCountByImportance = new MultiHashtable<>();
answerCountByImportance.groupValues(getNegativeACAnswersByType(criteriaType), AssessmentCriteriaAnswer.pipesAssessmentCriteriaAnswer().toAssessmentCriteria().toImportance());
return answerCountByImportance;
}
public Collection<AssessmentCriteriaAnswer> getNegativeACAnswersByType(CriteriaType criteriaType)
{
Filter filter = AssessmentCriteriaAnswer.SearchByCriteriaType().byCriteriaType(criteriaType).andAnswer(new EqualsFilter<>(Boolean.FALSE));
return CollectionFilter.filter(getAssessmentCriteriaAnswersSet(), filter);
}
}
\ No newline at end of file
......@@ -7,11 +7,12 @@
<MULTIPLEREFERENCE name="AssessmentCriteriaAnswers" type="AssessmentCriteriaAnswer" backreferenceName="JobApplication" />
<TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="OverallRank" type="Integer" />
<TRANSIENT name="RoleFit" 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="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="OverallRank" type="Integer" />
<TRANSIENT name="RoleFit" 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="FactorScoreDetails" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE">
......
......@@ -37,10 +37,17 @@ public class JobStatus extends AbstractEnumerated
return allJobStatuss;
}
private transient Integer ClientSortOrder;
private JobStatus (String name, String value, String description, boolean disabled)
{
super (name, value, description, disabled);
}
public Integer getClientSortOrder()
{
return ClientSortOrder;
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allJobStatuss);
......@@ -109,6 +116,10 @@ public class JobStatus extends AbstractEnumerated
public static void defineAdditionalData ()
{
OPEN.ClientSortOrder = 1;
COMPLETE.ClientSortOrder = 2;
DRAFT.ClientSortOrder = 4;
FILLED.ClientSortOrder = 3;
}
......@@ -136,6 +147,7 @@ public class JobStatus extends AbstractEnumerated
{
Map attribs = new HashMap ();
attribs.put ("ClientSortOrder", ArrayFormatter.toObject(getClientSortOrder()));
return attribs;
}
......
......@@ -2,11 +2,13 @@
<ROOT>
<CONSTANT package="performa.orm.types" name="JobStatus">
<VALUE name="OPEN" value="OPEN" description="Open"/>
<VALUE name="COMPLETE" value="COMPLETE" description="Closed"/>
<VALUE name="DRAFT" value="DRAFT" description="Draft"/>
<VALUE name="FILLED" value="FILLED" description="Filled"/>
<DATA name="ClientSortOrder" type="Integer"/>
<VALUE name="OPEN" value="OPEN" description="Open" ClientSortOrder="1"/>
<VALUE name="COMPLETE" value="COMPLETE" description="Closed" ClientSortOrder="2"/>
<VALUE name="DRAFT" value="DRAFT" description="Draft" ClientSortOrder="4"/>
<VALUE name="FILLED" value="FILLED" description="Filled" ClientSortOrder="3"/>
</CONSTANT>
</ROOT>
\ No newline at end of file
......@@ -122,7 +122,6 @@ public class AnalysisEngine
factorScore.setLevel(level);
factorScore.setScore(score);
factorScore.setColorCode(factorScoreResult.getColorCode());
factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getColorRank() : 0);
factorScore.setNarrative(factorScoreResult.getNarrative());
/**
......
......@@ -82,6 +82,9 @@ public class Utils
importances.add(importance);
}
}
Collections.sort(importances, (a, b) -> b.getWeightingScore().compareTo(a.getWeightingScore()));
return importances.toArray(new Importance[0]);
}
......@@ -103,7 +106,7 @@ public class Utils
public static List<Job> getJobsSorted(Job[] jobs, JobSortOption jobSortOption, JobStatus jobStatus)
{
ObjectTransform transform = Job.pipesJob().toObjectCreated();
Comparator comparator = CollectionUtils.DEFAULT_COMPARATOR;
Comparator comparator = CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST;
if(jobSortOption == JobSortOption.OLDEST || jobSortOption == JobSortOption.NEWEST)
{
......@@ -121,8 +124,8 @@ public class Utils
}
comparator = jobSortOption == JobSortOption.OLDEST ?
CollectionUtils.DEFAULT_COMPARATOR :
CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR);
CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST :
CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST);
}
else if(jobSortOption == JobSortOption.CLOSING_SOON)
{
......@@ -132,12 +135,12 @@ public class Utils
else if(jobSortOption == JobSortOption.ALPHA_A_Z)
{
transform = Job.pipesJob().toJobTitle();
comparator = CollectionUtils.CASE_INSENSITIVE_COMPARATOR;
comparator = CollectionUtils.CASE_INSENSITIVE_COMPARATOR_NULLS_FIRST;
}
else if(jobSortOption == JobSortOption.ALPHA_Z_A)
{
transform = Job.pipesJob().toJobTitle();
comparator = CollectionUtils.reverse(CollectionUtils.CASE_INSENSITIVE_COMPARATOR);
comparator = CollectionUtils.reverse(CollectionUtils.CASE_INSENSITIVE_COMPARATOR_NULLS_FIRST);
}
return ObjstoreUtils.sort( Arrays.asList(jobs),
......@@ -149,27 +152,27 @@ public class Utils
public static List<Client> getClientsSorted(Client[] clients, ClientSortOption clientSortOption)
{
ObjectTransform transform = Client.pipesClient().toObjectCreated();
Comparator comparator = CollectionUtils.DEFAULT_COMPARATOR;
Comparator comparator = CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST;
if(clientSortOption == ClientSortOption.ALPHA_A_Z)
{
transform = Client.pipesClient().toClientName();
comparator = CollectionUtils.CASE_INSENSITIVE_COMPARATOR;
comparator = CollectionUtils.CASE_INSENSITIVE_COMPARATOR_NULLS_FIRST;
}
else if(clientSortOption == ClientSortOption.ALPHA_Z_A)
{
transform = Client.pipesClient().toClientName();
comparator = CollectionUtils.reverse(CollectionUtils.CASE_INSENSITIVE_COMPARATOR);
comparator = CollectionUtils.reverse(CollectionUtils.CASE_INSENSITIVE_COMPARATOR_NULLS_FIRST);
}
else if(clientSortOption == ClientSortOption.OPEN_JOBS)
{
transform = new ClientJobCountTransform(JobStatus.OPEN);
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR);
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST);
}
else if(clientSortOption == ClientSortOption.FILLED_JOBS)
{
transform = new ClientJobCountTransform(JobStatus.FILLED);
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR);
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST);
}
return ObjstoreUtils.sort( Arrays.asList(clients), new ObjectTransform[]{transform}, new Comparator[]{comparator});
......@@ -197,7 +200,7 @@ public class Utils
@Override
public Integer transform(Client client)
{
return client.getApplicationCountByStatus(jobStatus);
return client.getJobCountByStatus(jobStatus);
}
}
......@@ -216,7 +219,7 @@ public class Utils
public static List<JobApplication> getApplicationsSorted(JobApplication[] applications, AppSortOption appSortOption)
{
ObjectTransform transform = JobApplication.pipesJobApplication().toObjectCreated();
Comparator comparator = CollectionUtils.DEFAULT_COMPARATOR;
Comparator comparator = CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST;
if(appSortOption==AppSortOption.OLDEST)
{
......@@ -236,12 +239,12 @@ public class Utils
else if(appSortOption==AppSortOption.ALPHA_A_Z)
{
transform = JobApplication.pipesJobApplication().toCandidate().toUser().toFirstName();
comparator = CollectionUtils.CASE_INSENSITIVE_COMPARATOR;
comparator = CollectionUtils.CASE_INSENSITIVE_COMPARATOR_NULLS_FIRST;
}
else if(appSortOption==AppSortOption.ALPHA_Z_A)
{
transform = JobApplication.pipesJobApplication().toCandidate().toUser().toFirstName();
comparator = CollectionUtils.reverse(CollectionUtils.CASE_INSENSITIVE_COMPARATOR);
comparator = CollectionUtils.reverse(CollectionUtils.CASE_INSENSITIVE_COMPARATOR_NULLS_FIRST);
}
return ObjstoreUtils.sort( Arrays.asList(applications),
......@@ -328,6 +331,17 @@ public class Utils
}
public static Boolean emailExists(ObjectTransaction objTran, String email)
{
if(email!= null)
{
return SecUser.searchNAME(objTran, email.toLowerCase()) != null;
}
return Boolean.FALSE;
}
public static Boolean isCompanyUserEmailFound(ObjectTransaction objTran, String email)
{
if(email!=null)
......@@ -484,7 +498,21 @@ public class Utils
{
return ConfigMgr.getKeyfileString(GoogleOAuthLoginFP.GOOGLE_CLIENTID_ATTR_NAME) != null
&& ConfigMgr.getKeyfileString(GoogleOAuthLoginFP.GOOGLE_CLIENTSECRET_ATTR_NAME) != null;
}
}
//to get Job status list sorted for client
public static Collection<JobStatus> getJobStatusesForClient()
{
return CollectionUtils.sort(Arrays.asList(JobStatus.getJobStatusArray()),
new Comparator<JobStatus> () {
@Override
public int compare(JobStatus o1, JobStatus o2)
{
return o1.getClientSortOrder().compareTo(o2.getClientSortOrder());
}
});
}
private static class CompanyUserTransform implements ObjectTransform<CompanyUser, String>
{
......
......@@ -45,6 +45,8 @@ public class WebUtils
public static final String COMPANY_ACCOUNT_VERIFICATION = "CompanyAccountVerification";
public static final String MY_DETAILS = "MyDetails";
public static final String RESET_PASSWORD = "ResetPassword";
public static final String COMPANY_PROFILE = "CompanyProfile";
public static final String INVITE_USERS = "InviteUsers";
public static String getArticleLink(HttpServletRequest request, ObjectTransaction objTran, String articleShortcut, String renderMode)
......@@ -103,6 +105,11 @@ public class WebUtils
public static String getPortalName(ObjectTransaction objTran, Article article)
{
if(article != null && article.isHomePage())
{
return ADMIN_PORTAL; //Because default home page is Admin Portal Home
}
Article applicantArticle = getArticleByShortCut(objTran, APPLICANT_PORTAL);
Article adminArticle = getArticleByShortCut(objTran, ADMIN_PORTAL);
......
......@@ -2893,6 +2893,9 @@ span.export-candidate,span.appli-status-short{
padding-left: 6px;
vertical-align: middle;
}
.pre-dot{
padding-left: 0;
}
.a-label-row {
margin-bottom: 6px;
}
......@@ -2937,8 +2940,12 @@ span.export-candidate,span.appli-status-short{
.appli-label{
float: left;
font-size: 12px;
font-weight: 500;
text-align: left;
color: #4e5258;
line-height: 28px;
width: 25%;
font-family: "Usual-Bold";
}
.pro-bar {
padding: 28px 38px 22px 62px;
......@@ -2964,7 +2971,7 @@ span.appli-percen {
}
span.appli-progress-bar {
display: inline-block;
width: 48.47%;
width: 47.47%;
}
.appli-progress-bar .progress {
margin-bottom: 0;
......@@ -3146,7 +3153,7 @@ input.add-note-btn:hover{
margin-top: 24px;
}
.applicant-progress {
display: inline-block;
display: flex;
width: 100%;
float: left;
}
......@@ -3749,13 +3756,12 @@ input.add-note-btn:hover{
font-weight: 300;
float: right;
}
.appli-percent-no first span
{
font-family: "Usual-Regular";
}
.appli-percent-no span{
font-family: "Usual-Light";
}
.appli-percent-no.first span{
font-family: "Usual-Regular";
}
.appli-status {
border: medium none;
padding: 15px 23px 0;
......@@ -4202,7 +4208,7 @@ img.alert-icon {float: left;}
.applicant-sidebar .gray,.applicant-sidebar .green,.applicant-sidebar .blue {font-size: 14px;}
.applicant-sidebar li {line-height: 46px;}
span.appli-percen{top: -4px;font-size: 20px;margin-right: 5px;}
.appli-label {font-size: 13px;line-height: 24px;}
.appli-label {font-size: 12px; line-height: 24px; }
.expand-box{margin-left: 15px;}
.big-percentage{font-size: 58px;}
.appli-percent-no{font-size: 28px; line-height: 1.8em;}
......@@ -4284,7 +4290,7 @@ img.alert-icon {float: left;}
@media screen and (max-width: 1350px){
.create-job-btn a{min-width: 150px;}
.work-rating{padding: 15px;}
.rate-toggle {width: 80%;}
.rate-toggle {width: 100%;}
.work-rating {font-size: 12px;}
.make-payment-tab li a{width: 300px;}
.appli-jcs {font-size: 9px;padding: 26px 10px 0; width: 12%;}
......@@ -4299,6 +4305,7 @@ img.alert-icon {float: left;}
.text-dot-dot{width: 75%;}
.admin-br-line{margin: 18px 0 17px;}
.appli-overall{width: 19%;}
.main-pack-type {padding-left: 0px};
}
@media screen and (max-width: 1280px){
......@@ -4312,7 +4319,7 @@ img.alert-icon {float: left;}
.appli-name {font-size: 24px;}
.main-applicant-content {width: 100%;}
.applicant-sidebar{width: 20.65%;}
.tabing-sidebar .nav-tabs > li > a {padding-left: 15px;}
}
@media screen and (max-width: 1278px){
......
......@@ -32,9 +32,6 @@
<FORM name="*.changeApplicationStatus" factory="Participant" class="performa.form.ChangeApplicationStatusFP"/>
<FORM name="*.bulkupdate" factory="Participant" class="performa.form.BulkUpdateFP"/>
<FORM name="*.navigateBetweenStatus" factory="Participant" class="performa.form.NavigateBetweenStatusFP"/>
<FORM name="*.verifyCompanyUser" factory="Participant" class="performa.form.VerifyCompanyUserFP">
<AccountCreatedEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="AccountCreatedMail"/>
</FORM>
<FORM name="*.sendCompanyUserInvites" factory="Participant" class="performa.form.SendCompanyUserInvitesFP">
<AccountCreatedEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="AccountCreatedMail"/>
<InvitationEmailer factory="Participant" class="oneit.email.ConfigurableArticleTemplateEmailer" templateShortcut="InvitationMail"/>
......
......@@ -20,20 +20,20 @@
process.setAttribute("Company", company);
process.setAttribute("socialLogin", socialLogin);
company.setCompletedProfile(Boolean.TRUE);
%>
<div class="hello-company-name">Hello, <%= secUser.getFirstName() %></div>
<div class="section-tab-view">
<div class="main-tab-form">
<ul class="nav nav-pills nav-justified">
<li class="active"><a href="#"><span>1</span><div>Company Profile</div></a></li>
<li><a href="#"><span>2</span><div>Invite Users</div></a></li>
<li><a href="#"><span>3</span><div>Create a Job</div></a></li>
</ul>
</div>
<oneit:form name="companyProfile" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/adminportal/inc/company_profile_tabs.jsp" TabNumber="1" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="section-page-area" style="text-align: left">
<div class="main-sc-section">
<div class="form-group">
......
......@@ -33,6 +33,8 @@
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);
%>
<div class="appli-row" id="<%= jobApplication.getID() %>">
<div class="appli-checkbox appli-l eq-second-height">
......@@ -57,7 +59,7 @@
Overall rank
</div>
<!--TODO: logic needed to be worked out. Added to note that there are three colors-->
<div class="<%= "appli-percent-no " + (j == 0 ? "first green" : (j < 3 ? "blue" : "grey" ))%>">
<div class="<%= "appli-percent-no blue " + (isTopRank ? "first" : "")%>">
<oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</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" %>
<%
Company company = (Company) process.getAttribute("Company");
String tabNumber = (String) getData(request, "TabNumber");
String firstTab = WebUtils.getSamePageInRenderMode(request, WebUtils.COMPANY_PROFILE);
String secondTab = WebUtils.getSamePageInRenderMode(request, WebUtils.INVITE_USERS);
%>
<oneit:dynIncluded>
<div class="main-tab-form">
<ul class="nav nav-pills nav-justified">
<li class="<%= tabNumber == "1" ? "active" : ""%>">
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", firstTab)
.mapEntry("procParams", CollectionUtils.mapEntry("Company", company).toMap())
.toMap() %>">
<span><%= CollectionUtils.equals(company.getCompletedProfile(), Boolean.TRUE) ? "<img src=\"images/right-mark.png\" />" : "1"%></span>
<div>Company Profile</div>
</oneit:button>
</li>
<li class="<%= tabNumber == "2" ? "active" : ""%>">
<oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondTab)
.mapEntry("procParams", CollectionUtils.mapEntry("Company", company).toMap())
.toMap() %>">
<span>2</span>
<div>Invite Users</div>
</oneit:button>
</li>
<li><a href="#"><span>3</span><div>Create a Job</div></a></li>
</ul>
</div>
</oneit:dynIncluded>
......@@ -54,11 +54,11 @@
%>
<header>
<div class="container-fluid">
<div class="row">
<div class="row" style="background-color: #ffffff;">
<div class="site-logo">
<a href="#"><img src="images/logo.svg"></a>
<a href="<%= homeUrl %>"><img src="images/logo.svg"></a>
</div>
<div class="search-bar">
<div class="search-bar" style="display: none;">
<div class="inset-shadow"></div>
<img src="images/search-icon.svg"/>
<input type="text" class="form-control" placeholder="<%= company.showHasClientSupport() ? "Search for job, candidate or client" : "Search for a job or candidate"%>"/>
......
......@@ -41,18 +41,12 @@
</script>
<div class="hire-the-right-candi" style="">You're nearly there...</div>
<oneit:form name="companyProfile" method="post" enctype="multipart/form-data">
<div class="section-tab-view">
<oneit:form name="companyProfile" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="section-tab-view">
<div class="main-tab-form">
<ul class="nav nav-pills nav-justified">
<li class="complate"><a href="#"><span><img src="images/right-mark.svg"/></span><div>Company Profile</div></a></li>
<li class="active"><a href="#"><span>2</span><div>Invite Users</div></a></li>
<li><a href="#"><span>3</span><div>Create a Job</div></a></li>
</ul>
</div>
<oneit:dynInclude page="/extensions/adminportal/inc/company_profile_tabs.jsp" TabNumber="2" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="section-page-area" style="text-align: left">
<div class="main-sc-section">
......@@ -84,12 +78,13 @@
<div class="main-sc-section text-center company-profile-btn">
<oneit:button value="Send invites & proceed" name="sendCompanyUserInvites" cssClass="btn btn-primary box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("CompanyUser", companyUser)
.mapEntry("procParams", CollectionUtils.mapEntry("socialLogin", socialLogin).mapEntry("Company", company).toMap())
.toMap() %>"/>
</div>
</div>
</div>
</oneit:form>
</oneit:form>
</div>
</oneit:dynIncluded>
<%@ include file="inc/htmlfooter_nopriv.jsp" %>
\ No newline at end of file
......@@ -73,9 +73,9 @@
</div>
</div>
<%
for (JobStatus jobStatus : JobStatus.getJobStatusArray())
for (JobStatus jobStatus : Utils.getJobStatusesForClient())
{
int jobCount = client.getApplicationCountByStatus(jobStatus);
int jobCount = client.getJobCountByStatus(jobStatus);
%>
<div class="<%= "application-count jl-c " + (jobCount == 0 ? "opaque-jobcount" : "")%>">
<oneit:toString value="<%= jobCount %>" mode="EscapeHTML" nullValue="0"/>
......
......@@ -33,3 +33,4 @@ Company.FirstName = First Name
Company.LastName = Last Name
Company.RoleType = Role
Company.CompanyLogo = Company Logo
Company.HiringTeamType = Hiring Team
......@@ -53,21 +53,9 @@
</div>
<div class="form-group">
<label><oneit:label GUIName="Email Address" /></label>
<%
if(companyUser.isLoggedViaSocial())
{
%>
<oneit:ormInput obj="<%= loggedInUser %>" type="text" attributeName="Email" cssClass="form-control" />
<%
}
else
{
%>
<oneit:ormInput obj="<%= loggedInUser %>" type="text" attributeName="UserName" cssClass="form-control" />
<% }
if(companyUser.getIsAccountVerified()!=Boolean.TRUE || companyUser.getIsEmailChanged()==Boolean.TRUE)
<oneit:ormInput obj="<%= loggedInUser %>" type="text" attributeName="Email" cssClass="form-control" />
<%
if(companyUser.getIsEmailChanged()==Boolean.TRUE)
{
%>
<div class="email-verify">Email address not yet verified.
......
......@@ -7,19 +7,20 @@
<oneit:dynIncluded>
<%
String nextPage = WebUtils.getSamePageInRenderMode(request, "CompanyProfile");
String nextPage = WebUtils.getSamePageInRenderMode(request, "CompanyProfile");
String homePage = WebUtils.getArticleByShortCut(process.getTransaction(), WebUtils.ADMIN_HOME).getLink(request);
CompanyUser companyUser = (CompanyUser) process.getAttribute("CompanyUser");
SecUser secUser = null;
Boolean socialLogin = Boolean.FALSE;
//to process company user verification
String id = request.getParameter("id");
String key = request.getParameter("key");
String verifyKey = request.getParameter("key");
Boolean invalid = Boolean.TRUE;
if(id!=null && key!=null)
if(id!=null && verifyKey !=null)
{
companyUser = CompanyUser.searchIdPin(transaction, Long.parseLong(id), key);
companyUser = CompanyUser.searchIdPin(transaction, Long.parseLong(id), verifyKey);
if(companyUser!=null && companyUser.getIsAccountVerified()!=Boolean.TRUE)
{
......@@ -49,6 +50,8 @@
}
}
process.setAttribute("Company", companyUser.getCompany());
Debug.assertion(companyUser != null, "Invalid CompanyUser in admin portal");
%>
<script type="text/javascript">
......@@ -96,22 +99,39 @@
<%
if(!socialLogin)
{
String key = Utils.getPwdKeyOfSecUser(request, secUser, true);
%>
<div class="form-group text-left">
<label>Password</label>
<oneit:ormInput obj="<%= companyUser %>" type="password" attributeName="Password" cssClass="form-control second-style reset-pw" required="true"/>
<oneit:input type="password" name="<%= key %>" class="form-control second-style reset-pw"/>
</div>
<div class="form-group text-left">
<label>Confirm password</label>
<oneit:ormInput obj="<%= companyUser %>" type="password" attributeName="ConfirmPassword" cssClass="form-control second-style reset-pw " required="true"/>
<oneit:input type="password" name="<%= key + 2 %>" class="form-control second-style reset-pw"/>
</div>
<%
}
if(companyUser.getCompany().getAddedByUser() == companyUser)
{
%>
<oneit:button value="Verify and login" name="gotoPage" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("socialLogin", socialLogin)
.mapEntry("procParams", CollectionUtils.mapEntry("Company", companyUser.getCompany()).toMap())
.mapEntry("nextPage", nextPage).toMap() %>"/>
<%
}
else
{
%>
<oneit:button value="Verify and login" name="sendCompanyUserInvites" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("socialLogin", socialLogin)
.mapEntry("CompanyUser", companyUser)
.mapEntry("nextPage", homePage)
.toMap() %>"/>
<%
}
%>
<oneit:button value="Verify and login" name="verifyCompanyUser" cssClass="box-btn verify-btn"
requestAttribs="<%= CollectionUtils.mapEntry("socialLogin", socialLogin)
.mapEntry("nextPage", nextPage).toMap() %>"/>
</div>
</oneit:form>
</oneit:dynIncluded>
......
......@@ -113,12 +113,14 @@
{
Candidate candidate = jobApplication.getCandidate();
String appID = "app-id-" + jobApplication.getID().toString();
Integer overallRank = jobApplication.getOverallRank();
Boolean isTopRank = CollectionUtils.equals(overallRank, 1);
Map<FactorClass, Tuple.T2<Double, ColorCode>> roleScoreMap = (Map<FactorClass, Tuple.T2<Double, ColorCode>>)jobApplication.getRoleFit();
%>
<div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> ">
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
<div class="<%= "cb-title " + (i == 0 ? "green-back" : (i < 3 ? "blue-back" : "dark-back" ))%> ">
<div class="cb-title dark-back ">
<div class="checkbox-list grid-checkbox">
<div class="checkbox-list">
<input type="checkbox" name="IsSelected" value="<%= jobApplication.getObjectID().toString() %>" id="<%= appID %>" class="applicant" >
......@@ -133,11 +135,10 @@
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", sortedApplications).toMap())
.toMap() %>">
<div class="overall-suitablity grid-suitability">
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
<div class="<%= "over-all " + (i == 0 ? "f-60 green" : (i < 3 ? "blue" : "gray"))%>">
<oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
<div class="<%= "over-all blue " + (isTopRank ? "f-60" : "")%>">
<oneit:toString value="<%= overallRank %>" mode="Integer" />
</div>
<div class="<%= "overall " + (i == 0 ? "f-60" : "")%>">overall rank</div>
<div class="<%= "overall " + (isTopRank ? "f-60" : "")%>">overall rank</div>
</div>
<div class="jcc-box">
<div class="job-match jcc">
......@@ -213,12 +214,8 @@
<%
Map<Importance, Long> requirementFitData = (Map<Importance, Long>)jobApplication.getRequirementFit();
for(Importance importance: requirementFitData.keySet())
for(Importance importance: Utils.getImportancesForAssessment())
{
if(importance==null)
{
continue;
}
%>
<div class="detail-row">
<div class="detail-label"><oneit:toString value="<%= importance %>" mode="EscapeHTML"/></div>
......
......@@ -113,11 +113,13 @@
for(JobApplication jobApplication : sortedApplications)
{
String appID = "app-id-" + jobApplication.getID().toString();
String appID = "app-id-" + jobApplication.getID().toString();
Integer overallRank = jobApplication.getOverallRank();
Boolean isTopRank = CollectionUtils.equals(overallRank, 1);
%>
<div class="appl-c-box application-row">
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
<div class="<%= "cb-title " + (index == 0 ? "green-back" : (index < 3 ? "blue-back" : "dark-back" ))%> ">
<div class="cb-title dark-back">
<div class="checkbox-list grid-checkbox">
<div class="checkbox-list">
<input type="checkbox" name="IsSelected" value="<%= jobApplication.getObjectID().toString() %>" id="<%= appID %>" class="applicant" >
......@@ -132,9 +134,9 @@
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).mapEntry("Applications", sortedApplications).toMap())
.toMap() %>">
<div class="overall-suitablity">
<div class="<%= "overall " + (index == 0 ? "f-60" : "")%>">overall rank</div>
<div class="<%= "over-all " + (index == 0 ? "f-60 green" : (index < 3 ? "blue" : "gray"))%> ">
<oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
<div class="<%= "overall " + (isTopRank ? "f-60" : "")%>">overall rank</div>
<div class="<%= "over-all blue " + (isTopRank ? "f-60" : "")%> ">
<oneit:toString value="<%= overallRank %>" mode="Integer" />
</div>
</div>
<div class="jcc-box">
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS name="" xmlns:oneit="http://www.1iT.com.au">
<NODE name="Script" factory="Vector">
<NODE name="DDL" factory="Participant" class="oneit.sql.transfer.RedefineTableOperation">
<tableName factory="String">tl_score</tableName>
<column name="color_code" type="String" nullable="true" length="200"/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
update tl_score set color_code = CASE WHEN color_rank = 1 THEN 'GREEN' WHEN color_rank = 2 THEN 'AMBER' WHEN color_rank = 3 THEN 'RED' ELSE null END;
......@@ -10,9 +10,9 @@ $(document).ready(function () {
$('.navbar-toggle').click(function () {
$('.main-menu ul').slideToggle();
});
$('.expand-box span').click(function () {
$('.pro-bar').click(function () {
var $el = $(this);
$el.parent().parent().next().slideToggle();
$el.next().slideToggle();
});
if ($(window).width() <= '767') {
......
......@@ -4,7 +4,7 @@
<SYSTEM name="PerformaInvestments" targetDir="C:/build/PerformaInvestments" executor="testMainApp">
<WEBAPP name="cmsWebApp" relative-path="cmsWebApp" deployment="cms">
<OVERLAY system="CougarCMS8.2" subsystem="cmsWebApp" pin="3c1d38dc38c69786b3a4a45553f309aa57cd2836"/>
<OVERLAY system="CougarCMS8.2" subsystem="cmsWebApp" pin="2bb1972b665029a5167e3d25f5197c79c206a899"/>
</WEBAPP>
<PARAMETER name="key.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