EnVisageOnline/Beta/Source/EnVisage/Views/Scenarios/_rates.cshtml

263 lines
8.6 KiB
Plaintext

@using EnVisage.Code
@using EnVisage.Code.HtmlHelpers
@using EnVisage.Models
@model EnVisage.Models.RatesModel
@{
ViewBag.Title = "Rates";
}
<div id="erorMsgPlaceholder"></div>
@Html.AntiForgeryToken()
<script type="text/javascript">
function onRateFailure(xhr) {
$('#rateTable').html(xhr.responseText);
$(".datepicker").datepicker();
unblockUI();
}
function onRateSuccess(data) {
$('.validation-summary-errors').html('');
$('.input-validation-error').removeClass('input-validation-error');
$('.field-validation-error').remove();
$(".datepicker").datepicker();
checkButtons();
unblockUI();
}
function LoadRates(expCatId) {
if (expCatId != null && expCatId != "")
$('#@Html.ClientIdFor(t => t.ExpenditureCategoryId)').val(expCatId);
$('#@Html.ClientIdFor(t => t.Mode)').val('@RatesModel.FormMode.ListRates');
StopEdit();
blockUI();
$('#ratesForm').submit();
}
function DeriveRates() {
blockUI();
$('#@Html.ClientIdFor(t => t.Mode)').val('@RatesModel.FormMode.DeriveRate');
$('#ratesForm').submit();
}
function loadRate(id) {
$('#@Html.ClientIdFor(t => t.Mode)').val('@RatesModel.FormMode.EditRate');
$('#@Html.ClientIdFor(t => t.EditRateId)').val(id);
//$('#ratesForm').submit();
$(".innerForm input").removeData("validator");
$(".innerForm input").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parseDynamicContent('.innerForm');
$('#modalAddRate').modal('show');
}
function saveRate() {
var data = $('form#rate').serialize();
var url = '@Url.Action("", "")';
}
function loadDeleteRate() {
blockUI();
$('#@Html.ClientIdFor(t => t.Mode)').val('@RatesModel.FormMode.DeleteRate');
$('#@Html.ClientIdFor(t => t.DeleteRateId)').val($('#@Html.ClientIdFor(t => t.EditRateId)').val());
$('#@Html.ClientIdFor(t => t.EditRateId)').val('@Guid.Empty');
$('#ratesForm').submit();
}
function DeleteRates(selectedExpCatId) {
blockUI();
//$('#@Html.ClientIdFor(t => t.Mode)').val('@RatesModel.FormMode.DeleteRate');
//$('#ratesForm').submit();
var url = '@Url.Action("DeleteAllLocalRates", "Scenarios", new { scenarioId = Model.ScenarioId, expenditureCategoryId = "expCatId" })';
var selectedExpCatId = $('#expCatList ul li.active').prop('id');
if (selectedExpCatId != undefined) {
url = url.replace("expCatId", selectedExpCatId);
url = url.replace('&amp;', '&');
//console.log(url);
$.post(url, null, function (data) {
if (data != null) {
if (data.Status == 'Ok') {
LoadRates(selectedExpCatId);
} else if (data.Status == 'Error') {
console.log(data.Msg);
}
}
});
}
}
function deleteRate() {
blockUI();
$('#@Html.ClientIdFor(t => t.Mode)').val('@RatesModel.FormMode.ConfirmDeleteRate');
$('#ratesForm').submit();
}
function checkButtons(scenarioId, expCatId) {
if ($('#localRates tr').length > 1) {
$('#rateadd').removeClass('disabled');
$('#deriver').addClass('disabled');
$('#resetter').removeClass('disabled');
$('#deleter').removeClass('disabled');
} else {
$('#rateadd').addClass('disabled');
$('#deriver').removeClass('disabled');
$('#resetter').addClass('disabled');
$('#deleter').addClass('disabled');
}
}
function LoadRateEditModal(id, parentId) {
var url = '@Url.Action("EditRate", "Scenarios", new { id = "idval", parentId = Model.ScenarioId, expentureCategoryId = "expCatVal" })';
url = url.replace('idval', id);
url = url.replace('expCatVal', $('#@Html.ClientIdFor(t => t.ExpenditureCategoryId)').val());
url = url.replace('&amp;', '&');
$('#modalAddRate .divForCreate').load(url, function (data) {
$(".innerForm input").removeData("validator");
$(".innerForm input").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parseDynamicContent('.innerForm');
$(".datepicker").datepicker();
if (id == '00000000-0000-0000-0000-000000000000') {
$("#StartDate").attr('disabled', true);
}
$('#modalAddRate').modal("show");
});
}
function editRateConfirmed() {
if (!changesMade || confirm('Scenario calendar contains unsaved changes. Are you sure you want to leave the page?')) {
blockUI();
$(window).off('beforeunload');
}
else
return false;
var rateStartDate = new Date($('#modalAddRate #StartDate').val());
var rateEndDate = new Date($('#modalAddRate #EndDate').val());
var scenStartDate = new Date($('#StartDateStr').val());
var scenEndDate = new Date($('#EndDateStr').val());
if (rateStartDate >= rateEndDate)
{
$('#modalAddRate .validation-summary-valid').addClass("validation-summary-errors");
$('#modalAddRate .validation-summary-valid').removeClass("validation-summary-valid");
$('#modalAddRate .validation-summary-errors li').html("Start date must be prior to end date");
$('#modalAddRate .validation-summary-errors li').css("display", "block");
unblockUI();
setupUnload();
return;
}
if (rateStartDate >= scenEndDate || rateEndDate > scenEndDate)
{
$('#modalAddRate .validation-summary-valid').addClass("validation-summary-errors");
$('#modalAddRate .validation-summary-valid').removeClass("validation-summary-valid");
$('#modalAddRate .validation-summary-errors li').html("Rate dates must be within scenario duration");
$('#modalAddRate .validation-summary-errors li').css("display", "block");
unblockUI();
setupUnload();
return;
}
$("#StartDate").attr('disabled', false);
$('#saveLoader').show();
$('#btnsave').addClass('disabled');
var data = $('#rate').serialize();
var url = '@Url.Action("EditRate", "Scenarios")';
console.log(url);
$.post(url, data, function (data) {
if (data != null) {
$('#modalAddRate').modal('hide');
setTimeout(function(data) {
$('#rateTable').html(data);
setupUnload();
}, 500, data);
}
});
}
function LoadDeleteRateModal(id) {
var url = '@Url.Action("DeleteRate", "Scenarios", new { id = "idval" })';
url = url.replace('idval', id);
$('#modalDeleteRate .divForCreate').load(url, function (data) {
$('#modalDeleteRate').modal("show");
});
}
function deleteRateConfirmed() {
if (!changesMade || confirm('Scenario calendar contains unsaved changes. Are you sure you want to leave the page?')) {
blockUI();
$(window).off('beforeunload');
}
else
return false;
var data = $('#deleteRateForm').serialize();
var url = '@Url.Action("DeleteRate", "Scenarios")';
console.log(url);
blockUI();
$.post(url, data, function (data) {
unblockUI();
if (data != null) {
$('#modalDeleteRate').modal('hide');
setTimeout(function(data) {
$('#rateTable').html(data);
unblockUI();
setupUnload();
}, 500);
}
});
}
</script>
<div class="panel-body" style="border: 0;">
<div class="row">
<div class="col-xs-6 col-md-4">
<div class="panel">
<div class="panel-heading">
<span class="panel-title">Expenditure Categories</span>
</div>
<div class="panel-body" id="expCatList">
<ul class="nav nav-pills nav-stacked">
@foreach (var category in Utils.GetScenarioExpenditures(Model.ScenarioId))
{
<li id="@category.Id" @(category.Id == Model.ExpenditureCategoryId ? "class=active" : "")><a href="javascript:void(0);" onclick="javascript:LoadRates('@category.Id');">@category.Name</a></li>
}
</ul>
</div>
</div>
</div>
@using (Ajax.BeginForm("ProcessRates", "Scenario", new AjaxOptions { HttpMethod = "Post", OnSuccess = "onRateSuccess", OnFailure = "onRateFailure(xhr)", UpdateTargetId = "rateTable" }, new { @id = "ratesForm", @class = "innerForm" }))
{
@Html.HiddenFor(t => t.Mode)
@Html.HiddenFor(t => t.ExpenditureCategoryId)
@Html.HiddenFor(t => t.ScenarioId)
@Html.HiddenFor(t => t.EditRateId)
@Html.HiddenFor(t => t.DeleteRateId)
if (RatesModel.FormMode.ListRates == Model.Mode)
{
@Html.Partial("_ratelist", Model)
}
else if (RatesModel.FormMode.DeleteRate == Model.Mode)
{
<div id="deleteRateDiv">
@*@Html.Partial("_deleteRate", Model)*@
</div>
}
else if (RatesModel.FormMode.EditRate == Model.Mode)
{
}
}
</div>
</div>
<div id="modalAddRate" class="modal fade" tabindex="-1" role="dialog" style="display: none;">
<div class="modal-dialog divForCreate">
</div>
</div>
<div id="modalDeleteRate" class="modal fade" tabindex="-1" role="dialog" style="display: none;">
<div class="modal-dialog divForCreate">
</div>
</div>