Commit 42207fbc by Nilu

Extend job changes

Job List: Capture status changes
Confirm action when changing and explain consequences – needs to be at least a 2-step process:
Are you sure you want to change the Status of this Job? Yes/No
If you change the status of this Job to Closed/Filled then no further applicants can be accepted and the Job can not be reopened. Do you wish to continue? Yes/No
parent 6c3d0057
......@@ -8,7 +8,6 @@ import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.logging.LoggingArea;
import oneit.objstore.StorageException;
import oneit.objstore.parser.BusinessObjectParser;
import oneit.security.SecUser;
import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult;
......@@ -16,7 +15,6 @@ import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException;
import oneit.utils.DateDiff;
import oneit.utils.MultiException;
import oneit.utils.math.NullArith;
import performa.orm.CompanyUser;
import performa.orm.HiringTeam;
......@@ -29,22 +27,6 @@ public class ExtendJobFP extends SaveFP
private static final LoggingArea LOG = LoggingArea.createLoggingArea("ExtendJobFP");
@Override
public void validate(ORMProcessState process, SubmissionDetails submission, MultiException exceptions, Map params) throws StorageException
{
HttpServletRequest request = submission.getRequest();
SecUser secUser = SecUser.getTXUser(process.getTransaction());
CompanyUser companyUser = (CompanyUser) request.getAttribute("CompanyUser");
if(!companyUser.isLoggedViaSocial())
{
BusinessObjectParser.assertFieldCondition(companyUser.getConfirmPassword() != null, companyUser, CompanyUser.FIELD_ConfirmPassword, "mandatory", exceptions, true, request);
}
super.validate(process, submission, exceptions, params);
}
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
......@@ -53,40 +35,25 @@ public class ExtendJobFP extends SaveFP
HiringTeam billingTeam = hiringTeam.getManageOwnBilling() ? hiringTeam : hiringTeam.getBilledByTeam();
SecUser secUser = SecUser.getTXUser(process.getTransaction());
CompanyUser companyUser = secUser.getExtension(CompanyUser.REFERENCE_CompanyUser);
boolean valid = true;
LogMgr.log(LOG, LogLevel.PROCESSING1, "Start of Extend job : ", job);
if(!companyUser.isLoggedViaSocial()) //cannot check password for social media logedin user
job.setApplyBy(DateDiff.add(job.getApplyBy(), Calendar.DATE, 30));
job.setLastEdited(new Date());
if (billingTeam.canCreateJob())
{
valid = secUser.checkPassword(companyUser.getConfirmPassword());
billingTeam.setUsedCredits(NullArith.add(billingTeam.getUsedCredits(), 1).intValue());
if(!valid)
if(billingTeam.getUsedCredits() > billingTeam.getAvailableCredits())
{
companyUser.setConfirmPassword(null);
StripeUtils.recordUsage(billingTeam);
}
BusinessObjectParser.assertFieldCondition(valid, companyUser, CompanyUser.FIELD_ConfirmPassword, "passwordNotMatch");
}
if(valid)
else if(billingTeam.getIsPPJ())
{
job.setApplyBy(DateDiff.add(job.getApplyBy(), Calendar.DATE, 30));
job.setLastEdited(new Date());
if (billingTeam.canCreateJob())
{
billingTeam.setUsedCredits(NullArith.add(billingTeam.getUsedCredits(), 1).intValue());
if(billingTeam.getUsedCredits() > billingTeam.getAvailableCredits())
{
StripeUtils.recordUsage(billingTeam);
}
}
else if(billingTeam.getIsPPJ())
{
StripeUtils.makePayment(hiringTeam, job);
}
StripeUtils.makePayment(hiringTeam, job);
}
LogMgr.log(LOG, LogLevel.PROCESSING1, "Job Extended. Apply by date : ", job.getApplyBy());
......
......@@ -18,7 +18,9 @@
<oneit:dynIncluded>
<script type="text/javascript">
var ExtendPopup = null;
var ExtendPopup = null;
var StatusPopup = null;
var ConfirmPopup = null;
$(document).ready(function()
{
......@@ -35,7 +37,19 @@
ExtendPopup = new jBox('Modal', {
id : "extend-job",
overlay : true,
width : 500, height : 450
width : 500, height : 380
});
StatusPopup = new jBox('Modal', {
id : "status-change",
overlay : true,
width : 500, height : 280
});
ConfirmPopup = new jBox('Modal', {
id : "status-change-confirm",
overlay : true,
width : 500, height : 350
});
$(".job-status").change(function()
......@@ -54,6 +68,19 @@
ExtendPopup.setContent($("#" + $(elem).data('popupid') ));
ExtendPopup.open();
}
function showStatusPopup(elemid)
{
StatusPopup.setContent($("#status-change-" + elemid ));
StatusPopup.open();
}
function showStatusConfirmPopup(elemid)
{
StatusPopup.close();
ConfirmPopup.setContent($("#status-change-confirm-" + elemid ));
ConfirmPopup.open();
}
</script>
<style>
.calendar .extend-icon{
......@@ -190,15 +217,6 @@
<oneit:toString value="<%= DateDiff.add(job.getApplyBy(), Calendar.DATE, 30) %>" mode="LongDate" />.
Would you like to continue?
</div>
<%
if(!compUser.isLoggedViaSocial())
{
%>
<p class="password-text">Please confirm your password to continue.</p>
<oneit:ormInput obj="<%= compUser %>" type="password" attributeName="ConfirmPassword" cssClass="form-control"/>
<%
}
%>
</div>
<div class="change-plan-button extend-job-button">
<a class="change-plan-no-button popup-no-button">No</a>
......@@ -266,27 +284,70 @@
</div>
<div class="job-states jl-c wider-select">
<div class="dropdown show select2type">
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink<%= job.getID() %>" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="top-selected-item"><img src="images/<%= job.getJobStatus().getDescription().toLowerCase() %>.png" class="userPic" /> <%= job.getJobStatus().getDescription() %></span>
<span class="select2type_arrow " role="presentation"><b role="presentation"></b></span>
</a>
<div class="dropdown-menu select2type-results" aria-labelledby="dropdownMenuLink<%= job.getID() %>">
<a href="#" class="dropdown-item icontype_<%= job.getJobStatus().getDescription().toLowerCase() %>"><%= job.getJobStatus().getDescription() %></a>
<%
for (JobStatus jStatus : job.getAvailableStatus(roleType))
{
%>
<oneit:button name="saveJob" value="<%= jStatus.getDescription() %>" skin="link" cssClass="<%="dropdown-item icontype_" + jStatus.getDescription().toLowerCase() %>"
<a class="dropdown-toggle" href="#" role="button" id="dropdownMenuLink<%= job.getID() %>" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="top-selected-item"><img src="images/<%= job.getJobStatus().getDescription().toLowerCase() %>.png" class="userPic" /> <%= job.getJobStatus().getDescription() %></span>
<span class="select2type_arrow " role="presentation"><b role="presentation"></b></span>
</a>
<div class="dropdown-menu select2type-results" aria-labelledby="dropdownMenuLink<%= job.getID() %>">
<a href="#" class="dropdown-item icontype_<%= job.getJobStatus().getDescription().toLowerCase() %>"><%= job.getJobStatus().getDescription() %></a>
<%
for (JobStatus jStatus : job.getAvailableStatus(roleType))
{
%>
<a class="<%="dropdown-item icontype_" + jStatus.getDescription().toLowerCase() %>" onClick="showStatusPopup('<%= job.getID().toString() + jStatus %>')">
<%= jStatus.getDescription() %>
</a>
<div id="status-change-<%= job.getID().toString() + jStatus %>" style="display:none" >
<div class="extend-job-content">
<h3>
Are you sure you want to change the status of this job?
</h3>
</div>
<div class="change-plan-button extend-job-button">
<a class="change-plan-no-button popup-no-button">No</a>
<%
if(jStatus == JobStatus.OPEN)
{
%>
<oneit:button skin="link" value="Yes" name="saveJob" cssClass="change-plan-yes-button"
requestAttribs="<%= CollectionUtils.mapEntry("Job", job)
.mapEntry("nextPage", homePage + "&JobStatus=" + (jobStatus != null ? jobStatus : "") + "&JobSortOption=" + jobSortOption)
.mapEntry("JobStatus", jStatus)
.toMap() %>" />
<%
}
else
{
%>
<a class=" change-plan-yes-button" onclick="showStatusConfirmPopup('<%= job.getID().toString() + jStatus %>')">Yes</a>
<%
}
%>
</div>
</div>
<div id="status-change-confirm-<%= job.getID().toString() + jStatus %>" style="display:none" >
<div class="extend-job-content">
<h3>
Are you sure you want to change the status of this job?
</h3>
<div class="extend-job-info">
By changing this job to Closed or Filled no further applicants can be accepted and the Job can not be reopened. Do you with to continue?
</div>
</div>
<div class="change-plan-button extend-job-button">
<a class="change-plan-no-button popup-no-button">No</a>
<oneit:button skin="link" value="Yes" name="saveJob" cssClass="change-plan-yes-button"
requestAttribs="<%= CollectionUtils.mapEntry("Job", job)
.mapEntry("nextPage", homePage + "&JobStatus=" + (jobStatus != null ? jobStatus : "") + "&JobSortOption=" + jobSortOption)
.mapEntry("JobStatus", jStatus)
.toMap() %>" />
<%
}
%>
</div>
</div>
</div>
</div>
<%
}
%>
</div>
</div>
</div>
</div>
<%
......
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