Commit ed157008 by nilu

S43014153 # Matchd / Talentology - No Plan [Enhancement] #Including diversity…

S43014153 # Matchd / Talentology - No Plan [Enhancement] #Including diversity questions in applicant process
parent b0989a5f
......@@ -8,6 +8,7 @@
<column name="object_id" type="Long" nullable="false" length="11"/>
<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="question_code" type="CLOB" nullable="false"/>
<column name="question_text" type="CLOB" nullable="false"/>
<column name="australia_only" type="Boolean" nullable="true"/>
</NODE>
......
......@@ -8,6 +8,7 @@ CREATE TABLE tl_diversity_question (
object_last_updated_date datetime DEFAULT getdate() NOT NULL ,
object_created_date datetime DEFAULT getdate() NOT NULL
,
question_code text NOT NULL,
question_text text NOT NULL,
australia_only char(1) NULL
);
......
......@@ -9,6 +9,7 @@ CREATE TABLE tl_diversity_question (
object_last_updated_date date DEFAULT SYSDATE NOT NULL ,
object_created_date date DEFAULT SYSDATE NOT NULL
,
question_code clob NOT NULL,
question_text clob NOT NULL,
australia_only char(1) NULL
);
......
......@@ -9,6 +9,7 @@ CREATE TABLE tl_diversity_question (
object_last_updated_date timestamp DEFAULT NOW() NOT NULL ,
object_created_date timestamp DEFAULT NOW() NOT NULL
,
question_code text NOT NULL,
question_text text NOT NULL,
australia_only char(1) NULL
);
......
......@@ -129,6 +129,11 @@ public class SendVerificationMailFP extends SaveFP
}
else
{
if(job.hasDiversityQuestions() && candidate.isFalse(candidate.getAnsweredDiversity()))
{
return super.processForm(process, submission, params);
}
if(candidate.isTrue(candidate.getIsEmailIngest()) || jobApplication.getApplicationStatus() == ApplicationStatus.POST_INGEST)
{
if(candidate.isFalse(candidate.getIsMaskedEmail()))
......
......@@ -54,6 +54,7 @@ public abstract class BaseCandidate extends SecUserExtension
public static final String FIELD_PrivacyPolicyAgreed = "PrivacyPolicyAgreed";
public static final String FIELD_ConditionsAgreed = "ConditionsAgreed";
public static final String FIELD_HasValidAddress = "HasValidAddress";
public static final String FIELD_AnsweredDiversity = "AnsweredDiversity";
public static final String SINGLEREFERENCE_TestInput = "TestInput";
public static final String BACKREF_TestInput = "";
public static final String MULTIPLEREFERENCE_TestAnalysises = "TestAnalysises";
......@@ -88,6 +89,7 @@ public abstract class BaseCandidate extends SecUserExtension
private static final DefaultAttributeHelper<Candidate> HELPER_PrivacyPolicyAgreed = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Candidate> HELPER_ConditionsAgreed = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Candidate> HELPER_HasValidAddress = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Candidate> HELPER_AnsweredDiversity = DefaultAttributeHelper.INSTANCE;
// Private attributes corresponding to business object data
......@@ -105,6 +107,7 @@ public abstract class BaseCandidate extends SecUserExtension
private Boolean _PrivacyPolicyAgreed;
private Boolean _ConditionsAgreed;
private Boolean _HasValidAddress;
private Boolean _AnsweredDiversity;
// Private attributes corresponding to single references
......@@ -126,6 +129,7 @@ public abstract class BaseCandidate extends SecUserExtension
private static final AttributeValidator[] FIELD_PrivacyPolicyAgreed_Validators;
private static final AttributeValidator[] FIELD_ConditionsAgreed_Validators;
private static final AttributeValidator[] FIELD_HasValidAddress_Validators;
private static final AttributeValidator[] FIELD_AnsweredDiversity_Validators;
private static final AttributeValidator[] FIELD_Phone_Validators;
private static final AttributeValidator[] FIELD_ForgotPasswordMailSendDate_Validators;
private static final AttributeValidator[] FIELD_ForgotPasswordKey_Validators;
......@@ -165,6 +169,7 @@ public abstract class BaseCandidate extends SecUserExtension
FIELD_PrivacyPolicyAgreed_Validators = (AttributeValidator[])setupAttribMetaData_PrivacyPolicyAgreed(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_ConditionsAgreed_Validators = (AttributeValidator[])setupAttribMetaData_ConditionsAgreed(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_HasValidAddress_Validators = (AttributeValidator[])setupAttribMetaData_HasValidAddress(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_AnsweredDiversity_Validators = (AttributeValidator[])setupAttribMetaData_AnsweredDiversity(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Phone_Validators = (AttributeValidator[])setupAttribMetaData_Phone(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_ForgotPasswordMailSendDate_Validators = (AttributeValidator[])setupAttribMetaData_ForgotPasswordMailSendDate(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_ForgotPasswordKey_Validators = (AttributeValidator[])setupAttribMetaData_ForgotPasswordKey(validatorMapping).toArray (new AttributeValidator[0]);
......@@ -330,6 +335,24 @@ public abstract class BaseCandidate extends SecUserExtension
}
// Meta Info setup
private static List setupAttribMetaData_AnsweredDiversity(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("defaultValue", "Boolean.FALSE");
metaInfo.put ("name", "AnsweredDiversity");
metaInfo.put ("type", "Boolean");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Candidate.AnsweredDiversity:", metaInfo);
ATTRIBUTES_METADATA_Candidate.put (FIELD_AnsweredDiversity, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Candidate.class, "AnsweredDiversity", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Candidate.AnsweredDiversity:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_Phone(Map validatorMapping)
{
Map metaInfo = new HashMap ();
......@@ -577,6 +600,7 @@ public abstract class BaseCandidate extends SecUserExtension
_PrivacyPolicyAgreed = (Boolean)(Boolean.FALSE);
_ConditionsAgreed = (Boolean)(Boolean.FALSE);
_HasValidAddress = (Boolean)(Boolean.FALSE);
_AnsweredDiversity = (Boolean)(Boolean.FALSE);
}
......@@ -1985,6 +2009,104 @@ public abstract class BaseCandidate extends SecUserExtension
}
}
/**
* Get the attribute AnsweredDiversity
*/
public Boolean getAnsweredDiversity ()
{
assertValid();
Boolean valToReturn = _AnsweredDiversity;
for (CandidateBehaviourDecorator bhd : Candidate_BehaviourDecorators)
{
valToReturn = bhd.getAnsweredDiversity ((Candidate)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preAnsweredDiversityChange (Boolean newAnsweredDiversity) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postAnsweredDiversityChange () throws FieldException
{
}
public FieldWriteability getWriteability_AnsweredDiversity ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute AnsweredDiversity. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setAnsweredDiversity (Boolean newAnsweredDiversity) throws FieldException
{
boolean oldAndNewIdentical = HELPER_AnsweredDiversity.compare (_AnsweredDiversity, newAnsweredDiversity);
try
{
for (CandidateBehaviourDecorator bhd : Candidate_BehaviourDecorators)
{
newAnsweredDiversity = bhd.setAnsweredDiversity ((Candidate)this, newAnsweredDiversity);
oldAndNewIdentical = HELPER_AnsweredDiversity.compare (_AnsweredDiversity, newAnsweredDiversity);
}
if (FIELD_AnsweredDiversity_Validators.length > 0)
{
Object newAnsweredDiversityObj = HELPER_AnsweredDiversity.toObject (newAnsweredDiversity);
if (newAnsweredDiversityObj != null)
{
int loopMax = FIELD_AnsweredDiversity_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Candidate.get (FIELD_AnsweredDiversity);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_AnsweredDiversity_Validators[v].checkAttribute (this, FIELD_AnsweredDiversity, metadata, newAnsweredDiversityObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_AnsweredDiversity () != FieldWriteability.FALSE, "Field AnsweredDiversity is not writeable");
preAnsweredDiversityChange (newAnsweredDiversity);
markFieldChange (FIELD_AnsweredDiversity);
_AnsweredDiversity = newAnsweredDiversity;
postFieldChange (FIELD_AnsweredDiversity);
postAnsweredDiversityChange ();
}
}
/**
......@@ -3175,6 +3297,7 @@ public abstract class BaseCandidate extends SecUserExtension
_PrivacyPolicyAgreed = sourceCandidate._PrivacyPolicyAgreed;
_ConditionsAgreed = sourceCandidate._ConditionsAgreed;
_HasValidAddress = sourceCandidate._HasValidAddress;
_AnsweredDiversity = sourceCandidate._AnsweredDiversity;
}
}
......@@ -3247,6 +3370,7 @@ public abstract class BaseCandidate extends SecUserExtension
_PrivacyPolicyAgreed = (Boolean)(HELPER_PrivacyPolicyAgreed.readExternal (_PrivacyPolicyAgreed, vals.get(FIELD_PrivacyPolicyAgreed))); //
_ConditionsAgreed = (Boolean)(HELPER_ConditionsAgreed.readExternal (_ConditionsAgreed, vals.get(FIELD_ConditionsAgreed))); //
_HasValidAddress = (Boolean)(HELPER_HasValidAddress.readExternal (_HasValidAddress, vals.get(FIELD_HasValidAddress))); //
_AnsweredDiversity = (Boolean)(HELPER_AnsweredDiversity.readExternal (_AnsweredDiversity, vals.get(FIELD_AnsweredDiversity))); //
_TestInput.readExternalData(vals.get(SINGLEREFERENCE_TestInput));
_TestAnalysises.readExternalData(vals.get(MULTIPLEREFERENCE_TestAnalysises));
_JobApplications.readExternalData(vals.get(MULTIPLEREFERENCE_JobApplications));
......@@ -3278,6 +3402,7 @@ public abstract class BaseCandidate extends SecUserExtension
vals.put (FIELD_PrivacyPolicyAgreed, HELPER_PrivacyPolicyAgreed.writeExternal (_PrivacyPolicyAgreed));
vals.put (FIELD_ConditionsAgreed, HELPER_ConditionsAgreed.writeExternal (_ConditionsAgreed));
vals.put (FIELD_HasValidAddress, HELPER_HasValidAddress.writeExternal (_HasValidAddress));
vals.put (FIELD_AnsweredDiversity, HELPER_AnsweredDiversity.writeExternal (_AnsweredDiversity));
vals.put (SINGLEREFERENCE_TestInput, _TestInput.writeExternalData());
vals.put (MULTIPLEREFERENCE_TestAnalysises, _TestAnalysises.writeExternalData());
vals.put (MULTIPLEREFERENCE_JobApplications, _JobApplications.writeExternalData());
......@@ -3364,6 +3489,7 @@ public abstract class BaseCandidate extends SecUserExtension
visitor.visitField(this, FIELD_PrivacyPolicyAgreed, HELPER_PrivacyPolicyAgreed.toObject(getPrivacyPolicyAgreed()));
visitor.visitField(this, FIELD_ConditionsAgreed, HELPER_ConditionsAgreed.toObject(getConditionsAgreed()));
visitor.visitField(this, FIELD_HasValidAddress, HELPER_HasValidAddress.toObject(getHasValidAddress()));
visitor.visitField(this, FIELD_AnsweredDiversity, HELPER_AnsweredDiversity.toObject(getAnsweredDiversity()));
}
......@@ -3872,6 +3998,10 @@ public abstract class BaseCandidate extends SecUserExtension
{
return HELPER_HasValidAddress.toObject (getHasValidAddress ());
}
else if (attribName.equals (FIELD_AnsweredDiversity))
{
return HELPER_AnsweredDiversity.toObject (getAnsweredDiversity ());
}
else
{
return super.getAttribute (attribName);
......@@ -3941,6 +4071,10 @@ public abstract class BaseCandidate extends SecUserExtension
{
return HELPER_HasValidAddress;
}
else if (attribName.equals (FIELD_AnsweredDiversity))
{
return HELPER_AnsweredDiversity;
}
else
{
return super.getAttributeHelper (attribName);
......@@ -4010,6 +4144,10 @@ public abstract class BaseCandidate extends SecUserExtension
{
setHasValidAddress ((Boolean)(HELPER_HasValidAddress.fromObject (_HasValidAddress, attribValue)));
}
else if (attribName.equals (FIELD_AnsweredDiversity))
{
setAnsweredDiversity ((Boolean)(HELPER_AnsweredDiversity.fromObject (_AnsweredDiversity, attribValue)));
}
else
{
super.setAttribute (attribName, attribValue);
......@@ -4110,6 +4248,10 @@ public abstract class BaseCandidate extends SecUserExtension
{
return getWriteability_HasValidAddress ();
}
else if (fieldName.equals (FIELD_AnsweredDiversity))
{
return getWriteability_AnsweredDiversity ();
}
else
{
return super.getWriteable (fieldName);
......@@ -4190,6 +4332,11 @@ public abstract class BaseCandidate extends SecUserExtension
fields.add (FIELD_HasValidAddress);
}
if (getWriteability_AnsweredDiversity () != FieldWriteability.TRUE)
{
fields.add (FIELD_AnsweredDiversity);
}
super.putUnwriteable (fields);
}
......@@ -4213,6 +4360,7 @@ public abstract class BaseCandidate extends SecUserExtension
result.add(HELPER_PrivacyPolicyAgreed.getAttribObject (getClass (), _PrivacyPolicyAgreed, false, FIELD_PrivacyPolicyAgreed));
result.add(HELPER_ConditionsAgreed.getAttribObject (getClass (), _ConditionsAgreed, false, FIELD_ConditionsAgreed));
result.add(HELPER_HasValidAddress.getAttribObject (getClass (), _HasValidAddress, false, FIELD_HasValidAddress));
result.add(HELPER_AnsweredDiversity.getAttribObject (getClass (), _AnsweredDiversity, false, FIELD_AnsweredDiversity));
return result;
}
......@@ -4515,6 +4663,24 @@ public abstract class BaseCandidate extends SecUserExtension
return newHasValidAddress;
}
/**
* Get the attribute AnsweredDiversity
*/
public Boolean getAnsweredDiversity (Candidate obj, Boolean original)
{
return original;
}
/**
* Change the value set for attribute AnsweredDiversity.
* May modify the field beforehand
* Occurs before validation.
*/
public Boolean setAnsweredDiversity (Candidate obj, Boolean newAnsweredDiversity) throws FieldException
{
return newAnsweredDiversity;
}
}
......@@ -4599,6 +4765,10 @@ public abstract class BaseCandidate extends SecUserExtension
{
return toHasValidAddress ();
}
if (name.equals ("AnsweredDiversity"))
{
return toAnsweredDiversity ();
}
if (name.equals ("Phone"))
{
return toPhone ();
......@@ -4659,6 +4829,8 @@ public abstract class BaseCandidate extends SecUserExtension
public PipeLine<From, Boolean> toHasValidAddress () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_HasValidAddress)); }
public PipeLine<From, Boolean> toAnsweredDiversity () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_AnsweredDiversity)); }
public PipeLine<From, String> toPhone () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Phone)); }
public PipeLine<From, Date> toForgotPasswordMailSendDate () { return pipe(new ORMAttributePipe<Me, Date>(FIELD_ForgotPasswordMailSendDate)); }
......@@ -4737,6 +4909,11 @@ public abstract class BaseCandidate extends SecUserExtension
return true;
}
if(CollectionUtils.equals(attribName, "AnsweredDiversity"))
{
return true;
}
return super.isTransientAttrib(attribName);
}
......
......@@ -38,6 +38,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
// Static constants corresponding to field names
public static final String FIELD_Code = "Code";
public static final String FIELD_QuestionText = "QuestionText";
public static final String FIELD_AustraliaOnly = "AustraliaOnly";
public static final String MULTIPLEREFERENCE_Answers = "Answers";
......@@ -48,11 +49,13 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
// Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper<DiversityQuestion> HELPER_Code = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<DiversityQuestion> HELPER_QuestionText = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<DiversityQuestion> HELPER_AustraliaOnly = DefaultAttributeHelper.INSTANCE;
// Private attributes corresponding to business object data
private String _Code;
private String _QuestionText;
private Boolean _AustraliaOnly;
......@@ -68,6 +71,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
private static final Map ATTRIBUTES_METADATA_DiversityQuestion = new HashMap ();
// Arrays of validators for each attribute
private static final AttributeValidator[] FIELD_Code_Validators;
private static final AttributeValidator[] FIELD_QuestionText_Validators;
private static final AttributeValidator[] FIELD_AustraliaOnly_Validators;
......@@ -85,6 +89,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_Answers();
FIELD_Code_Validators = (AttributeValidator[])setupAttribMetaData_Code(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_QuestionText_Validators = (AttributeValidator[])setupAttribMetaData_QuestionText(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_AustraliaOnly_Validators = (AttributeValidator[])setupAttribMetaData_AustraliaOnly(validatorMapping).toArray (new AttributeValidator[0]);
......@@ -116,6 +121,25 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
// Meta Info setup
private static List setupAttribMetaData_Code(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "question_code");
metaInfo.put ("mandatory", "true");
metaInfo.put ("name", "Code");
metaInfo.put ("type", "String");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for DiversityQuestion.Code:", metaInfo);
ATTRIBUTES_METADATA_DiversityQuestion.put (FIELD_Code, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(DiversityQuestion.class, "Code", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for DiversityQuestion.Code:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_QuestionText(Map validatorMapping)
{
Map metaInfo = new HashMap ();
......@@ -180,6 +204,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
super._initialiseNewObjAttributes (transaction);
_Code = (String)(HELPER_Code.initialise (_Code));
_QuestionText = (String)(HELPER_QuestionText.initialise (_QuestionText));
_AustraliaOnly = (Boolean)(Boolean.FALSE);
}
......@@ -209,6 +234,105 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
/**
* Get the attribute Code
*/
public String getCode ()
{
assertValid();
String valToReturn = _Code;
for (DiversityQuestionBehaviourDecorator bhd : DiversityQuestion_BehaviourDecorators)
{
valToReturn = bhd.getCode ((DiversityQuestion)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preCodeChange (String newCode) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postCodeChange () throws FieldException
{
}
public FieldWriteability getWriteability_Code ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute Code. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setCode (String newCode) throws FieldException
{
boolean oldAndNewIdentical = HELPER_Code.compare (_Code, newCode);
try
{
for (DiversityQuestionBehaviourDecorator bhd : DiversityQuestion_BehaviourDecorators)
{
newCode = bhd.setCode ((DiversityQuestion)this, newCode);
oldAndNewIdentical = HELPER_Code.compare (_Code, newCode);
}
BusinessObjectParser.assertFieldCondition (newCode != null, this, FIELD_Code, "mandatory");
if (FIELD_Code_Validators.length > 0)
{
Object newCodeObj = HELPER_Code.toObject (newCode);
if (newCodeObj != null)
{
int loopMax = FIELD_Code_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_DiversityQuestion.get (FIELD_Code);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_Code_Validators[v].checkAttribute (this, FIELD_Code, metadata, newCodeObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_Code () != FieldWriteability.FALSE, "Field Code is not writeable");
preCodeChange (newCode);
markFieldChange (FIELD_Code);
_Code = newCode;
postFieldChange (FIELD_Code);
postCodeChange ();
}
}
/**
* Get the attribute QuestionText
*/
public String getQuestionText ()
......@@ -785,6 +909,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
PersistentSet tl_diversity_questionPSet = allSets.getPersistentSet (myID, "tl_diversity_question", myPSetStatus);
tl_diversity_questionPSet.setAttrib (FIELD_ObjectID, myID);
tl_diversity_questionPSet.setAttrib (FIELD_Code, HELPER_Code.toObject (_Code)); //
tl_diversity_questionPSet.setAttrib (FIELD_QuestionText, HELPER_QuestionText.toObject (_QuestionText)); //
tl_diversity_questionPSet.setAttrib (FIELD_AustraliaOnly, HELPER_AustraliaOnly.toObject (_AustraliaOnly)); //
......@@ -801,6 +926,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
PersistentSet tl_diversity_questionPSet = allSets.getPersistentSet (objectID, "tl_diversity_question");
_Code = (String)(HELPER_Code.fromObject (_Code, tl_diversity_questionPSet.getAttrib (FIELD_Code))); //
_QuestionText = (String)(HELPER_QuestionText.fromObject (_QuestionText, tl_diversity_questionPSet.getAttrib (FIELD_QuestionText))); //
_AustraliaOnly = (Boolean)(HELPER_AustraliaOnly.fromObject (_AustraliaOnly, tl_diversity_questionPSet.getAttrib (FIELD_AustraliaOnly))); //
......@@ -820,6 +946,15 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
try
{
setCode (otherDiversityQuestion.getCode ());
}
catch (FieldException ex)
{
e.addException (ex);
}
try
{
setQuestionText (otherDiversityQuestion.getQuestionText ());
}
catch (FieldException ex)
......@@ -851,6 +986,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
BaseDiversityQuestion sourceDiversityQuestion = (BaseDiversityQuestion)(source);
_Code = sourceDiversityQuestion._Code;
_QuestionText = sourceDiversityQuestion._QuestionText;
_AustraliaOnly = sourceDiversityQuestion._AustraliaOnly;
......@@ -906,6 +1042,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
super.readExternalData(vals);
_Code = (String)(HELPER_Code.readExternal (_Code, vals.get(FIELD_Code))); //
_QuestionText = (String)(HELPER_QuestionText.readExternal (_QuestionText, vals.get(FIELD_QuestionText))); //
_AustraliaOnly = (Boolean)(HELPER_AustraliaOnly.readExternal (_AustraliaOnly, vals.get(FIELD_AustraliaOnly))); //
_Answers.readExternalData(vals.get(MULTIPLEREFERENCE_Answers));
......@@ -920,6 +1057,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
super.writeExternalData(vals);
vals.put (FIELD_Code, HELPER_Code.writeExternal (_Code));
vals.put (FIELD_QuestionText, HELPER_QuestionText.writeExternal (_QuestionText));
vals.put (FIELD_AustraliaOnly, HELPER_AustraliaOnly.writeExternal (_AustraliaOnly));
vals.put (MULTIPLEREFERENCE_Answers, _Answers.writeExternalData());
......@@ -936,6 +1074,10 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
BaseDiversityQuestion otherDiversityQuestion = (BaseDiversityQuestion)(other);
if (!HELPER_Code.compare(this._Code, otherDiversityQuestion._Code))
{
listener.notifyFieldChange(this, other, FIELD_Code, HELPER_Code.toObject(this._Code), HELPER_Code.toObject(otherDiversityQuestion._Code));
}
if (!HELPER_QuestionText.compare(this._QuestionText, otherDiversityQuestion._QuestionText))
{
listener.notifyFieldChange(this, other, FIELD_QuestionText, HELPER_QuestionText.toObject(this._QuestionText), HELPER_QuestionText.toObject(otherDiversityQuestion._QuestionText));
......@@ -967,6 +1109,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
super.visitAttributes (visitor);
visitor.visitField(this, FIELD_Code, HELPER_Code.toObject(getCode()));
visitor.visitField(this, FIELD_QuestionText, HELPER_QuestionText.toObject(getQuestionText()));
visitor.visitField(this, FIELD_AustraliaOnly, HELPER_AustraliaOnly.toObject(getAustraliaOnly()));
visitor.visitAssociation (_Answers);
......@@ -1007,6 +1150,10 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
throw new RuntimeException ("Game over man!!");
}
else if (attribName.equals (FIELD_Code))
{
return filter.matches (getCode ());
}
else if (attribName.equals (FIELD_QuestionText))
{
return filter.matches (getQuestionText ());
......@@ -1046,6 +1193,12 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
}
public SearchAll andCode (QueryFilter<String> filter)
{
filter.addFilter (context, "tl_diversity_question.question_code", "Code");
return this;
}
public SearchAll andQuestionText (QueryFilter<String> filter)
{
filter.addFilter (context, "tl_diversity_question.question_text", "QuestionText");
......@@ -1093,6 +1246,10 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
throw new RuntimeException ("Game over man!!");
}
else if (attribName.equals (FIELD_Code))
{
return HELPER_Code.toObject (getCode ());
}
else if (attribName.equals (FIELD_QuestionText))
{
return HELPER_QuestionText.toObject (getQuestionText ());
......@@ -1114,6 +1271,10 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
throw new RuntimeException ("Game over man!!");
}
else if (attribName.equals (FIELD_Code))
{
return HELPER_Code;
}
else if (attribName.equals (FIELD_QuestionText))
{
return HELPER_QuestionText;
......@@ -1135,6 +1296,10 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
throw new RuntimeException ("Game over man!!");
}
else if (attribName.equals (FIELD_Code))
{
setCode ((String)(HELPER_Code.fromObject (_Code, attribValue)));
}
else if (attribName.equals (FIELD_QuestionText))
{
setQuestionText ((String)(HELPER_QuestionText.fromObject (_QuestionText, attribValue)));
......@@ -1163,6 +1328,10 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
throw new RuntimeException ("Game over man!!");
}
else if (fieldName.equals (FIELD_Code))
{
return getWriteability_Code ();
}
else if (fieldName.equals (FIELD_QuestionText))
{
return getWriteability_QuestionText ();
......@@ -1185,6 +1354,11 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
public void putUnwriteable (Set<String> fields)
{
if (getWriteability_Code () != FieldWriteability.TRUE)
{
fields.add (FIELD_Code);
}
if (getWriteability_QuestionText () != FieldWriteability.TRUE)
{
fields.add (FIELD_QuestionText);
......@@ -1204,6 +1378,7 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
List result = super.getAttributes ();
result.add(HELPER_Code.getAttribObject (getClass (), _Code, true, FIELD_Code));
result.add(HELPER_QuestionText.getAttribObject (getClass (), _QuestionText, true, FIELD_QuestionText));
result.add(HELPER_AustraliaOnly.getAttribObject (getClass (), _AustraliaOnly, false, FIELD_AustraliaOnly));
......@@ -1257,6 +1432,24 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
/**
* Get the attribute Code
*/
public String getCode (DiversityQuestion obj, String original)
{
return original;
}
/**
* Change the value set for attribute Code.
* May modify the field beforehand
* Occurs before validation.
*/
public String setCode (DiversityQuestion obj, String newCode) throws FieldException
{
return newCode;
}
/**
* Get the attribute QuestionText
*/
public String getQuestionText (DiversityQuestion obj, String original)
......@@ -1348,6 +1541,10 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
{
return toAnswers ();
}
if (name.equals ("Code"))
{
return toCode ();
}
if (name.equals ("QuestionText"))
{
return toQuestionText ();
......@@ -1362,6 +1559,8 @@ public abstract class BaseDiversityQuestion extends BaseBusinessClass
}
public PipeLine<From, String> toCode () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Code)); }
public PipeLine<From, String> toQuestionText () { return pipe(new ORMAttributePipe<Me, String>(FIELD_QuestionText)); }
public PipeLine<From, Boolean> toAustraliaOnly () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_AustraliaOnly)); }
......
......@@ -15,6 +15,7 @@
<TRANSIENT name="PrivacyPolicyAgreed" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="ConditionsAgreed" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="HasValidAddress" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="AnsweredDiversity" type="Boolean" defaultValue="Boolean.FALSE"/>
<TABLE name="oneit_sec_user_extension" tablePrefix="object" polymorphic="TRUE">
......
......@@ -8,6 +8,7 @@
<TABLE name="tl_diversity_question" tablePrefix="object" polymorphic="FALSE">
<ATTRIB name="Code" type="String" dbcol="question_code" mandatory="true"/>
<ATTRIB name="QuestionText" type="String" dbcol="question_text" mandatory="true"/>
<ATTRIB name="AustraliaOnly" type="Boolean" dbcol="australia_only" defaultValue="Boolean.FALSE" />
......
......@@ -26,11 +26,13 @@ public class DiversityQuestionPersistenceMgr extends ObjectPersistenceMgr
private static final LoggingArea DiversityQuestionPersistence = LoggingArea.createLoggingArea(ObjectPersistenceMgr.OBJECT_PERSISTENCE, "DiversityQuestion");
// Private attributes corresponding to business object data
private String dummyCode;
private String dummyQuestionText;
private Boolean dummyAustraliaOnly;
// Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper HELPER_Code = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_QuestionText = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_AustraliaOnly = DefaultAttributeHelper.INSTANCE;
......@@ -39,12 +41,13 @@ public class DiversityQuestionPersistenceMgr extends ObjectPersistenceMgr
public DiversityQuestionPersistenceMgr ()
{
dummyCode = (String)(HELPER_Code.initialise (dummyCode));
dummyQuestionText = (String)(HELPER_QuestionText.initialise (dummyQuestionText));
dummyAustraliaOnly = (Boolean)(HELPER_AustraliaOnly.initialise (dummyAustraliaOnly));
}
private String SELECT_COLUMNS = "{PREFIX}tl_diversity_question.object_id as id, {PREFIX}tl_diversity_question.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_diversity_question.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_diversity_question.question_text, {PREFIX}tl_diversity_question.australia_only, 1 AS commasafe ";
private String SELECT_COLUMNS = "{PREFIX}tl_diversity_question.object_id as id, {PREFIX}tl_diversity_question.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_diversity_question.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_diversity_question.question_code, {PREFIX}tl_diversity_question.question_text, {PREFIX}tl_diversity_question.australia_only, 1 AS commasafe ";
private String SELECT_JOINS = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
......@@ -95,6 +98,7 @@ public class DiversityQuestionPersistenceMgr extends ObjectPersistenceMgr
// Check for persistent sets already prefetched
if (false || !tl_diversity_questionPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!tl_diversity_questionPSet.containsAttrib(DiversityQuestion.FIELD_Code)||
!tl_diversity_questionPSet.containsAttrib(DiversityQuestion.FIELD_QuestionText)||
!tl_diversity_questionPSet.containsAttrib(DiversityQuestion.FIELD_AustraliaOnly))
{
......@@ -166,10 +170,10 @@ public class DiversityQuestionPersistenceMgr extends ObjectPersistenceMgr
{
int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_diversity_question " +
"SET question_text = ?, australia_only = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"SET question_code = ?, question_text = ?, australia_only = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_diversity_question.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_QuestionText.getForSQL(dummyQuestionText, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_QuestionText))).listEntry (HELPER_AustraliaOnly.getForSQL(dummyAustraliaOnly, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_AustraliaOnly))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
CollectionUtils.listEntry (HELPER_Code.getForSQL(dummyCode, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_Code))).listEntry (HELPER_QuestionText.getForSQL(dummyQuestionText, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_QuestionText))).listEntry (HELPER_AustraliaOnly.getForSQL(dummyAustraliaOnly, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_AustraliaOnly))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1)
{
......@@ -425,6 +429,7 @@ public class DiversityQuestionPersistenceMgr extends ObjectPersistenceMgr
// Object Created
tl_diversity_questionPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));
tl_diversity_questionPSet.setAttrib(DiversityQuestion.FIELD_Code, HELPER_Code.getFromRS(dummyCode, r, "question_code"));
tl_diversity_questionPSet.setAttrib(DiversityQuestion.FIELD_QuestionText, HELPER_QuestionText.getFromRS(dummyQuestionText, r, "question_text"));
tl_diversity_questionPSet.setAttrib(DiversityQuestion.FIELD_AustraliaOnly, HELPER_AustraliaOnly.getFromRS(dummyAustraliaOnly, r, "australia_only"));
......@@ -444,10 +449,10 @@ public class DiversityQuestionPersistenceMgr extends ObjectPersistenceMgr
{
executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_diversity_question " +
" (question_text, australia_only, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
" (question_code, question_text, australia_only, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
"VALUES " +
" (?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_QuestionText.getForSQL(dummyQuestionText, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_QuestionText))).listEntry (HELPER_AustraliaOnly.getForSQL(dummyAustraliaOnly, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_AustraliaOnly))) .listEntry (objectID.longID ()).toList().toArray());
" (?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_Code.getForSQL(dummyCode, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_Code))).listEntry (HELPER_QuestionText.getForSQL(dummyQuestionText, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_QuestionText))).listEntry (HELPER_AustraliaOnly.getForSQL(dummyAustraliaOnly, tl_diversity_questionPSet.getAttrib (DiversityQuestion.FIELD_AustraliaOnly))) .listEntry (objectID.longID ()).toList().toArray());
tl_diversity_questionPSet.setStatus (PersistentSetStatus.PROCESSED);
}
......
......@@ -6,8 +6,6 @@ import java.util.Date;
import java.util.Set;
import oneit.logging.LoggingArea;
import oneit.objstore.FieldWriteability;
import oneit.objstore.StorageException;
import oneit.objstore.ValidationContext;
import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.security.SecUser;
import oneit.utils.BusinessException;
......@@ -39,7 +37,7 @@ public class HiringTeam extends BaseHiringTeam
return isTrue(getHasClientSupport());
}
public boolean showHasDiversity() throws StorageException, FieldException
public boolean showHasDiversity()
{
return isTrue(getHasDiversity());
}
......
......@@ -811,4 +811,11 @@ public class Job extends BaseJob
return getOccupation();
}
public boolean hasDiversityQuestions()
{
Filter<HTDiversityQuestion> filter = HTDiversityQuestion.SearchByAll().andIsApplicable(new EqualsFilter<>(Boolean.TRUE));
return getDiversityIncluded() && getHiringTeam().showHasDiversity() && pipelineJob().toHiringTeam().toDiversityQuestions(filter).uniqueVals().size() > 0;
}
}
\ No newline at end of file
......@@ -9,6 +9,7 @@
<column name="object_id" type="Long" nullable="false" length="11"/>
<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="question_code" type="CLOB" nullable="false"/>
<column name="question_text" type="CLOB" nullable="false"/>
<column name="australia_only" type="Boolean" nullable="true"/>
</NODE>
......
......@@ -10,6 +10,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='australia_only' factory='Boolean'>true</value>
<value name='question_text' factory='String'>Do you identify as a person of Aboriginal or Torres Strait Islander origin?</value>
<value name='question_code' factory='String'>ATSI</value>
</NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_question</tableName>
......@@ -18,6 +19,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='australia_only' factory='Boolean'>false</value>
<value name='question_text' factory='String'>Do you identify as a person living with a disability?</value>
<value name='question_code' factory='String'>DISABLED</value>
</NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_question</tableName>
......@@ -26,6 +28,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='australia_only' factory='Boolean'>false</value>
<value name='question_text' factory='String'>I identify by gender as</value>
<value name='question_code' factory='String'>GENDER</value>
</NODE>
......
UPDATE tl_job SET diversity_included = 'N';
\ No newline at end of file
......@@ -25,6 +25,7 @@
<RenderMode name="Page" preIncludeJSP="extensions/applicantportal/job_overview.jsp"/>
<RenderMode name="SignIn" preIncludeJSP="extensions/applicantportal/sign_in.jsp"/>
<RenderMode name="VerifyIdentity" preIncludeJSP="extensions/applicantportal/verify_identity.jsp"/>
<RenderMode name="DiversityQuestions" preIncludeJSP="extensions/applicantportal/diversity_questions.jsp"/>
<RenderMode name="MaskedIdentity" preIncludeJSP="extensions/applicantportal/masked_identity.jsp"/>
<RenderMode name="VerificationSent" preIncludeJSP="extensions/applicantportal/verification_sent.jsp"/>
<RenderMode name="ForgotPassword" preIncludeJSP="extensions/applicantportal/forgot_password.jsp"/>
......
<%@ page extends="oneit.servlets.jsp.JSPInclude" %>
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<oneit:dynIncluded>
<%
boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Job", Job.REFERENCE_Job);
Job job = (Job) process.getAttribute("Job");
Debug.assertion(job != null && !toRedirect, "Invalid job in applicant portal");
SecUser secUser = SecUser.getTXUser(transaction);
Debug.assertion(secUser != null, "Invalid candidate in applicant portal");
Candidate candidate = secUser.getExtension(Candidate.REFERENCE_Candidate);
Debug.assertion(candidate != null, "Invalid candidate in applicant portal");
String successPage = WebUtils.getSamePageInRenderMode(request, "VerificationSent") + "&JobID=" + job.getID();
JobApplication jobApplication = JobApplication.searchCandidateJob(transaction, candidate, job);
boolean redirectUser = jobApplication != null && jobApplication.getApplicationStatus() == ApplicationStatus.DRAFT;
if(jobApplication == null)
{
jobApplication = JobApplication.createNewApplication(candidate, job);
}
Boolean isSelectionComplete = jobApplication.selectionCompleted();
Boolean isCultureComplete = jobApplication.cultureCompleted();
Boolean isAssesmentComplete = jobApplication.assessmentCompleted();
Article jobApplicationArticle = WebUtils.getArticleByShortCut(transaction, WebUtils.JOB_APPLICATION);
String nextPage = jobApplicationArticle.getLink(request) + "?JobID="+ job.getID().toString();;
if(!jobApplication.hasStartedApplication())
{
nextPage = WebUtils.getArticleLink(request, transaction, WebUtils.JOB_APPLICATION, "Page") + "&JobID="+ job.getID().toString();
}
else if(!isSelectionComplete)
{
nextPage = LoopbackHTTP.getRemoteAccessURL(request)
+ jobApplicationArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "SelectionCriteria").toMap(), "/");
}
else if(!isCultureComplete)
{
nextPage = LoopbackHTTP.getRemoteAccessURL(request)
+ jobApplicationArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "WorkplaceCulture").toMap(), "/");
}
else if(!isAssesmentComplete)
{
nextPage = LoopbackHTTP.getRemoteAccessURL(request)
+ jobApplicationArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", "JobMatchAssessment").toMap(), "/");
}
if(redirectUser)
{
response.sendRedirect(candidate.isFalse(candidate.getIsAccountVerified()) ? successPage : nextPage +"&JobApplicationID="+ jobApplication.getID().toString());
}
candidate.setHasValidAddress(candidate.getGoogleAddressText() != null);
process.setAttribute("JobApplication", jobApplication);
%>
<oneit:script>
<oneit:script src="/scripts/password_strength_lightweight.js"/>
</oneit:script>
<style>
button[disabled] {
opacity: 0.6;
background-color: #0582ba;
}
.email input[name$="Email"] {
opacity: 0;
position: absolute;
}
</style>
<oneit:form name="signIn" method="post" enctype="multipart/form-data">
<script type="text/javascript">
$(document.body).addClass('bg-color');
var interval ;
$(document).ready(function() {
recalcFunction = setupRecalc ($("form#signIn"), {'recalcOnError':true});
$(".fileLink").hide();
interval = setInterval(function() { validate(); }, 500);
validate();
$('input').on('change keyup', function() { validate(); });
});
function validate() {
var empty = false;
$('input[required]').each(function() {
if ($( this ).val() == '') {
empty = true;
if ($( this ).css('background-color') == 'rgb(250, 255, 189)') {
empty = false;
}
}
});
if (empty) {
$('.verify-btn').attr('disabled', 'disabled');
} else {
$('.verify-btn').removeAttr('disabled');
clearInterval(interval);
}
}
</script>
<script type="text/javascript">
$(document.body).addClass('bg-color');
$(document).ready(function(){
$('.attach-icon-btn').click(function(){
$(this).parent().find("input").click();
});
$("input:file").change(function (){
var fullPath = $(this).val();
var filename = fullPath.replace(/^.*[\\\/]/, '');
if (filename)
{
$(this).parents(".fileInput").siblings(".new-file-link").text(filename);
$(this).parents(".fileInput").siblings(".new-file-link").removeAttr("href");
}
});
});
</script>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&key=AIzaSyCaBh-MsMb8BBYJD_NcFzoCmygQbt5-QSw"></script>
<oneit:script>
<oneit:script src="/scripts/google_address.js"/>
</oneit:script>
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="apply-job-logo-header signinpage">
<div class="box-sizing-border-box">
<div class="logo-img">
<%
BinaryContent logo = job.getLogo();
if(logo != null)
{
int logoHeight = 45;
%>
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(logo), "KEEP", new ScaleWithin (0, logoHeight)) %>" />
<%
}
%>
</div>
<div class="header-title">
<%= job.getTeamName() %>
</div>
</div>
</div>
<div class="main-verify-identity">
<div class="pl-confirm text-center">Please confirm your details to continue</div>
<div class="main-box-layout main-verify-step-2">
<div class="form-group text-left">
<label>Email Address</label>
<%
if(secUser.getEmail() == null)
{
%>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="Email" cssClass="form-control" style="text-transform: lowercase" required="true"/>
<%
}
else
{
%>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="Email" cssClass="form-control second-style" disabled="true" readonly="true"/>
<%
}
%>
</div>
<%
if(!candidate.isTrue(candidate.getIsPasswordChanged()))
{
String passkey = Utils.getPwdKeyOfSecUser(request, secUser, true);
%>
<script type="text/javascript">
$(document).ready(function() {
$('#myPassword').strength_meter({
"inputName" : "<%= passkey %>"
});
});
</script>
<div class="form-group text-left email">
<label style="display: none;"><oneit:ormlabel obj="<%= secUser %>" field="Email" /></label>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="Email" cssClass="form-control"/>
</div>
<div class="form-group text-left" id="myPassword">
<label>Password</label>
</div>
<div class="form-group text-left">
<label>Confirm password</label>
<oneit:input type="password" name="<%= passkey + 2 %>" class="form-control second-style reset-pw"/>
</div>
<%
}
%>
<div class="row">
<div class="form-group text-left col-sm-6 col-xs-12">
<label><oneit:ormlabel obj="<%= secUser %>" field="FirstName" /></label>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="FirstName" cssClass="form-control second-style" required="true"/>
</div>
<div class="form-group text-left col-sm-6 col-xs-12">
<label><oneit:ormlabel obj="<%= secUser %>" field="LastName" /></label>
<oneit:ormInput obj="<%= secUser %>" type="text" attributeName="LastName" cssClass="form-control second-style" required="true"/>
</div>
</div>
<div class="form-group text-left">
<label><oneit:ormlabel obj="<%= candidate %>" field="Phone" /></label>
<oneit:ormInput obj="<%= candidate %>" type="text" attributeName="Phone" cssClass="form-control second-style" required="true"/>
</div>
<%
if(job.getRequireCV())
{
%>
<div class="form-group text-left relative-parent ">
<label>Upload your CV, required (PDF preferred)</label>
<div class="form-control second-style">
<a target='blank' class="new-file-link" href='<%= request.getContextPath() + "/" + BinaryContentHandler.getRelativeURL(request, jobApplication, "CV", jobApplication.getCV(), true) %>'>
<%= jobApplication.getCV() != null ? "Click to View File" : "" %>
</a>
<oneit:ormInput obj="<%= jobApplication %>" type="file" attributeName="CV" cssClass="hide"/>
<div class="attach-icon-btn"></div>
</div>
</div>
<div class="form-group text-left relative-parent">
<label>Upload your Cover Letter, optional (PDF preferred)</label>
<div class="form-control second-style">
<a target='blank' class="new-file-link" href='<%= request.getContextPath() + "/" + BinaryContentHandler.getRelativeURL(request, jobApplication, "CoverLetter", jobApplication.getCoverLetter(), true) %>'>
<%= jobApplication.getCoverLetter() != null ? "Click to View File" : "" %>
</a>
<oneit:ormInput obj="<%= jobApplication %>" type="file" attributeName="CoverLetter" cssClass="hide"/>
<div class="attach-icon-btn"></div>
</div>
</div>
<%
}
%>
<hr class="seperate-line">
<div class="form-group text-left">
<label>Location</label>
<div class="googleAddress">
<oneit:ormInput obj="<%= candidate %>" class="has-valid-address" attributeName="HasValidAddress" type="checkbox"/>
<oneit:ormInput obj="<%= candidate %>" type="text" attributeName="GoogleAddressText" class="autoAddress" id="<%= "gAddress_"+candidate.getObjectID() %>" placeholder="Enter your address" cssClass="form-control" />
</div>
</div>
<div class="form-group text-left" style="margin-top: 30px;">
<div class="styled_checkboxes">
<div class="checkbox checkbox-primary">
<oneit:ormInput obj="<%= jobApplication %>" id="prefer-remote" attributeName="PreferRemote" type="checkbox"/>
<oneit:recalcClass htmlTag="span" classScript="jobApplication.getPreferRemote() ? 'checked': 'unchecked'" jobApplication="<%= jobApplication %>">
<label for="prefer-remote">
<oneit:label GUIName="I would prefer to work remotely" />
</label>
</oneit:recalcClass>
</div>
</div>
</div>
<oneit:recalcClass htmlTag="div" classScript="jobApplication.isFarFromJob() ? 'show': 'hide'" jobApplication="<%= jobApplication %>">
<div class="relocate-warning-box">
<p>
We noticed that your location is different to the location of the job (<%= job.getGoogleAddressText() %>).
</p>
<p>
Are you prepared to relocate for this position?
</p>
<div class="styled_checkboxes">
<div class="checkbox checkbox-primary">
<oneit:ormInput obj="<%= jobApplication %>" id="happy-to-relocate" attributeName="HappyToRelocate" type="checkbox" />
<oneit:recalcClass htmlTag="span" classScript="jobApplication.getHappyToRelocate() ? 'checked': 'unchecked'" jobApplication="<%= jobApplication %>">
<label for="happy-to-relocate">
<oneit:label GUIName="Yes, I am happy to relocate"/>
</label>
</oneit:recalcClass>
</div>
</div>
<span class="warning-icon"></span>
</div>
</oneit:recalcClass>
<div class="form-group text-left">
<div class="styled_checkboxes">
<div class="checkbox checkbox-primary">
<oneit:ormInput obj="<%= candidate %>" id="privacy-policy-agreed" attributeName="PrivacyPolicyAgreed" type="checkbox" />
<oneit:recalcClass htmlTag="span" classScript="candidate.showPrivacyPolicyAgreed() ? 'checked': 'unchecked'" candidate="<%= candidate %>">
<label for="privacy-policy-agreed">
<oneit:label GUIName="I have read and agree to the " />
<a href="https://www.matchd.com/privacy/" target="_blank" class="privacy-link">Privacy Policy</a>
</label>
</oneit:recalcClass>
</div>
</div>
</div>
<div class="form-group text-left">
<div class="styled_checkboxes">
<div class="checkbox checkbox-primary">
<oneit:ormInput obj="<%= candidate %>" id="conditions-agreed" attributeName="ConditionsAgreed" type="checkbox" />
<oneit:recalcClass htmlTag="span" classScript="candidate.showConditionsAgreed() ? 'checked': 'unchecked'" candidate="<%= candidate %>">
<label for="conditions-agreed">
<oneit:label GUIName="I have read and agree to the " />
<a href="https://www.matchd.com/terms-of-service/" target="_blank" class="privacy-link">Terms & Conditions</a>
</label>
</oneit:recalcClass>
</div>
</div>
</div>
<div class="text-center">
<oneit:button value="Submit" name="sendVerificationMail" cssClass="box-btn send-link-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", successPage)
.mapEntry("Job",job)
.mapEntry("Candidate",candidate)
.mapEntry("JobApplication",jobApplication)
.mapEntry(NotificationUtils.NOTIFICATION_MSG_PARAM, "emailSent")
.toMap() %>"/>
</div>
</div>
</div>
<script>
addGoogleAddressListener('#<%= "gAddress_"+ candidate.getObjectID() %>');
</script>
</oneit:form>
</oneit:dynIncluded>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment