Files
motovaultpro/wwwroot/js/taxrecord.js

215 lines
8.0 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Initialize tax record modal for mobile (using shared mobile framework)
function initializeTaxRecordMobile() {
initMobileModal({
modalId: '#taxRecordModal',
dateInputId: '#taxRecordDate',
tagSelectorId: '#taxRecordTag'
});
// Handle desktop initialization
if (!isMobileDevice()) {
initDatePicker($('#taxRecordDate'));
initTagSelector($("#taxRecordTag"));
}
}
function showAddTaxRecordModal() {
$.get('/Vehicle/GetAddTaxRecordPartialView', function (data) {
if (data) {
$("#taxRecordModalContent").html(data);
// Initialize mobile experience using shared framework
initializeTaxRecordMobile();
$('#taxRecordModal').modal('show');
}
});
}
function showEditTaxRecordModal(taxRecordId, nocache) {
if (!nocache) {
var existingContent = $("#taxRecordModalContent").html();
if (existingContent.trim() != '') {
//check if id is same.
var existingId = getTaxRecordModelData().id;
if (existingId == taxRecordId && $('[data-changed=true]').length > 0) {
$('#taxRecordModal').modal('show');
$('.cached-banner').show();
return;
}
}
}
$.get(`/Vehicle/GetTaxRecordForEditById?taxRecordId=${taxRecordId}`, function (data) {
if (data) {
$("#taxRecordModalContent").html(data);
// Initialize mobile experience using shared framework
initializeTaxRecordMobile();
$('#taxRecordModal').modal('show');
bindModalInputChanges('taxRecordModal');
$('#taxRecordModal').off('shown.bs.modal').on('shown.bs.modal', function () {
if (getGlobalConfig().useMarkDown) {
toggleMarkDownOverlay("taxRecordNotes");
}
});
}
});
}
function enableTaxRecurring() {
var taxIsRecurring = $("#taxIsRecurring").is(":checked");
if (taxIsRecurring) {
$("#taxRecurringMonth").attr('disabled', false);
} else {
$("#taxRecurringMonth").attr('disabled', true);
}
}
function hideAddTaxRecordModal() {
$('#taxRecordModal').modal('hide');
}
function deleteTaxRecord(taxRecordId) {
$("#workAroundInput").show();
Swal.fire({
title: "Confirm Deletion?",
text: "Deleted Tax Records cannot be restored.",
showCancelButton: true,
confirmButtonText: "Delete",
confirmButtonColor: "#dc3545"
}).then((result) => {
if (result.isConfirmed) {
$.post(`/Vehicle/DeleteTaxRecordById?taxRecordId=${taxRecordId}`, function (data) {
if (data) {
hideAddTaxRecordModal();
successToast("Tax Record Deleted");
var vehicleId = GetVehicleId().vehicleId;
getVehicleTaxRecords(vehicleId);
} else {
errorToast(genericErrorMessage());
}
});
} else {
$("#workAroundInput").hide();
}
});
}
function saveTaxRecordToVehicle(isEdit) {
//get values
var formValues = getAndValidateTaxRecordValues();
//validate
if (formValues.hasError) {
errorToast("Please check the form data");
return;
}
//save to db.
$.post('/Vehicle/SaveTaxRecordToVehicleId', { taxRecord: formValues }, function (data) {
if (data) {
successToast(isEdit ? "Tax Record Updated" : "Tax Record Added.");
hideAddTaxRecordModal();
saveScrollPosition();
getVehicleTaxRecords(formValues.vehicleId);
if (formValues.addReminderRecord) {
setTimeout(function () { showAddReminderModal(formValues); }, 500);
}
} else {
errorToast(genericErrorMessage());
}
})
}
function checkCustomMonthIntervalForTax() {
var selectedValue = $("#taxRecurringMonth").val();
if (selectedValue == "Other") {
$("#workAroundInput").show();
Swal.fire({
title: 'Specify Custom Time Interval',
html: `
<input type="text" inputmode="numeric" id="inputCustomMonth" class="swal2-input" placeholder="Months" onkeydown="handleSwalEnter(event)">
<select class="swal2-select" id="inputCustomMonthUnit">
<option value="Months">Months</option>
<option value="Days">Days</option>
</select>
`,
confirmButtonText: 'Set',
focusConfirm: false,
preConfirm: () => {
const customMonth = $("#inputCustomMonth").val();
if (!customMonth || isNaN(parseInt(customMonth)) || parseInt(customMonth) <= 0) {
Swal.showValidationMessage(`Please enter a valid number`);
}
const customMonthUnit = $("#inputCustomMonthUnit").val();
return { customMonth, customMonthUnit }
},
}).then(function (result) {
if (result.isConfirmed) {
customMonthInterval = result.value.customMonth;
customMonthIntervalUnit = result.value.customMonthUnit;
$("#taxRecurringMonth > option[value='Other']").text(`Other: ${result.value.customMonth} ${result.value.customMonthUnit}`);
} else {
$("#taxRecurringMonth").val(getTaxRecordModelData().monthInterval);
}
$("#workAroundInput").hide();
});
}
}
function getAndValidateTaxRecordValues() {
var taxDate = $("#taxRecordDate").val();
var taxDescription = $("#taxRecordDescription").val();
var taxCost = $("#taxRecordCost").val();
var taxNotes = $("#taxRecordNotes").val();
var vehicleId = GetVehicleId().vehicleId;
var taxRecordId = getTaxRecordModelData().id;
var taxIsRecurring = $("#taxIsRecurring").is(":checked");
var taxRecurringMonth = $("#taxRecurringMonth").val();
var taxTags = $("#taxRecordTag").val();
var addReminderRecord = $("#addReminderCheck").is(":checked");
//validation
var hasError = false;
var extraFields = getAndValidateExtraFields();
if (extraFields.hasError) {
hasError = true;
}
if (taxDate.trim() == '') { //eliminates whitespace.
hasError = true;
$("#taxRecordDate").addClass("is-invalid");
} else {
$("#taxRecordDate").removeClass("is-invalid");
}
if (taxDescription.trim() == '') {
hasError = true;
$("#taxRecordDescription").addClass("is-invalid");
} else {
$("#taxRecordDescription").removeClass("is-invalid");
}
if (taxCost.trim() == '' || !isValidMoney(taxCost)) {
hasError = true;
$("#taxRecordCost").addClass("is-invalid");
} else {
$("#taxRecordCost").removeClass("is-invalid");
}
return {
id: taxRecordId,
hasError: hasError,
vehicleId: vehicleId,
date: taxDate,
description: taxDescription,
cost: taxCost,
notes: taxNotes,
isRecurring: taxIsRecurring,
recurringInterval: taxRecurringMonth,
customMonthInterval: customMonthInterval,
customMonthIntervalUnit: customMonthIntervalUnit,
tags: taxTags,
files: uploadedFiles,
addReminderRecord: addReminderRecord,
extraFields: extraFields.extraFields,
reminderRecordId: recurringReminderRecordId
}
}
function checkRecurringTaxes() {
let vehicleId = GetVehicleId().vehicleId
$.post('/Vehicle/CheckRecurringTaxRecords', { vehicleId: vehicleId }, function (data) {
if (data) {
//notify users that recurring tax records were updated and they should refresh the page to see the new changes.
infoToast(`Recurring Tax Records Updated!<br /><br /><a class='text-link' style='cursor:pointer;' onclick='viewVehicle(${vehicleId})'>Refresh to see new records</a>`);
}
})
}