EnVisageOnline/Main-RMO/Source/EnVisage/Views/Scenarios/_rates.cshtml

345 lines
13 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">
var datePickerOptions = {
format: 'm/d/yyyy',
autoclose: true,
startDate: '@(Constants.MIN_SELECTABLE_DATE)', // SA. ENV-1235
endDate: '@(Constants.MAX_SELECTABLE_DATE)' // SA. ENV-1235
};
var _rateDataChanged = false;
function onRateDataChanged() {
_rateDataChanged = true;
}
function resetRateDataChanged() {
_rateDataChanged = false;
}
function isRateDataChanged() {
return _rateDataChanged;
}
function onRateFailure(xhr) {
alert('ERROR!');
$('#rateTable').html(xhr.responseText);
$(".datepicker").datepicker(datePickerOptions);
unblockUI();
}
function onRateSuccess(data) {
$('.validation-summary-errors').html('');
$('.input-validation-error').removeClass('input-validation-error');
$('.field-validation-error').remove();
$(".datepicker").datepicker(datePickerOptions);
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) {
unblockUI();
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 hideButtons() {
$('#rateadd').hide();
$('#deriver').hide();
$('#resetter').hide();
$('#deleter').hide();
}
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();
var tmpValue = $('div.datepicker #RateStartDate').val();
var sDate = new Date(tmpValue);
$('div.datepicker #RateStartDate').datepicker(datePickerOptions).on('changeDate', function (evt) {
var _tmpValue = $('div.datepicker #RateStartDate').val();
var _sDate = new Date(_tmpValue);
$('div.datepicker #RateEndDate').data('datepicker').setStartDate(_sDate);
});
$('div.datepicker #RateEndDate').datepicker(datePickerOptions).data('datepicker').setStartDate(sDate);
if (id == '00000000-0000-0000-0000-000000000000') {
$("#RateStartDate").attr('disabled', true);
}
$('#modalAddRate').modal("show");
$('#rate').find('input[type=checkbox],input[type=text],select,textarea').on("change", function () {
if (typeof onRateDataChanged === 'function')
onRateDataChanged();
});
});
}
function editRateConfirmed() {
$.validator.unobtrusive.parseDynamicContent('form#rate');
if (!$('form#rate').valid())
return;
if (!changesMade || confirm('@EnVisage.Code.Constants.CONFIRM_EDIT_SCENARIO')) {
blockUI();
$(window).off('beforeunload');
}
else
return false;
var rateStartDate = new Date($('#modalAddRate #RateStartDate').val());
var rateEndDate = new Date($('#modalAddRate #RateEndDate').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;
}
$("#RateStartDate").attr('disabled', false);
$('#saveLoader').show();
$('#btnsave').addClass('disabled');
var data = $('#rate').serialize();
var url = '@Url.Action("EditRate", "Scenarios")';
console.log(url);
$.ajax({
type: "POST",
url: url,
data: data,
success: function (data) {
if ($.isFunction(resetRateDataChanged))
resetRateDataChanged();
$('#modalAddRate').modal('hide');
setTimeout(function (data) {
$('#rateTable').html(data);
setupUnload();
}, 500, data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
if ($.isFunction(resetRateDataChanged))
resetRateDataChanged();
$('#modalAddRate').modal('hide');
unblockUI();
showErrorModal("Rate Saving Error", 'Error saving rate, please try again.');
}
});
}
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('@EnVisage.Code.Constants.CONFIRM_EDIT_SCENARIO')) {
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();
//5-7-15 ENV-742 START
//}, 500);
}, 500, data);
//5-7-15 ENV-742 END
}
});
}
init.push(function () {
$(document).on('hide.bs.modal', '#modalAddRate', function (e) {
if ($(e.target).attr('id') != 'modalAddRate')
return true; // close modal form
if (typeof isRateDataChanged === 'function')
if (isRateDataChanged()) {
if (confirm("Rate editing form contains unsaved changes, do you really want to close the form?")) {
if (typeof resetRateDataChanged === 'function') {
resetRateDataChanged();
$('#modalAddRate').modal("hide");
}
};
return false; // DO NOT close modal form
}
return true; // close modal form
});
hideButtons();
});
</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;" data-backdrop="static">
<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>