added functions for pinning notes.

This commit is contained in:
DESKTOP-GENO133\IvanPlex
2024-02-22 10:46:18 -07:00
parent dedf8fc2f7
commit 96ade10289
5 changed files with 113 additions and 81 deletions

View File

@@ -1634,6 +1634,24 @@ namespace CarCareTracker.Controllers
var result = _noteDataAccess.DeleteNoteById(noteId);
return Json(result);
}
[HttpPost]
public IActionResult PinNotes(List<int> noteIds, bool isToggle = false, bool pinStatus = false)
{
var result = false;
foreach(int noteId in noteIds)
{
var existingNote = _noteDataAccess.GetNoteById(noteId);
if (isToggle)
{
existingNote.Pinned = !existingNote.Pinned;
} else
{
existingNote.Pinned = pinStatus;
}
result = _noteDataAccess.SaveNoteToVehicle(existingNote);
}
return Json(result);
}
#endregion
#region "Supply Records"
private List<string> CheckSupplyRecordsAvailability(List<SupplyUsage> supplyUsage)

View File

@@ -72,6 +72,10 @@
<li><a class="context-menu-multiple context-menu-select-all dropdown-item" href="#" onclick="selectAllRows()">@translator.Translate(userLanguage, "Select All")</a></li>
<li><a class="context-menu-multiple context-menu-deselect-all dropdown-item" href="#" onclick="clearSelectedRows()">@translator.Translate(userLanguage, "Deselect All")</a></li>
<li><hr class="context-menu-multiple dropdown-divider"></li>
<li><a class="dropdown-item" href="#" onclick="pinNotes(selectedRow, true)">@translator.Translate(userLanguage, "Toggle Pin")</a></li>
<li><a class="dropdown-item" href="#" onclick="pinNotes(selectedRow, false, true)">@translator.Translate(userLanguage, "Pin")</a></li>
<li><a class="dropdown-item" href="#" onclick="pinNotes(selectedRow, false, false)">@translator.Translate(userLanguage, "Unpin")</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#" onclick="duplicateRecords(selectedRow, 'NoteRecord')">@translator.Translate(userLanguage, "Duplicate")</a></li>
<li><a class="dropdown-item" href="#" onclick="deleteRecords(selectedRow, 'NoteRecord')">@translator.Translate(userLanguage, "Delete")</a></li>
</ul>

View File

@@ -100,4 +100,12 @@ function getAndValidateNoteValues() {
pinned: noteIsPinned,
tags: noteTags
}
}
function pinNotes(ids, toggle, pinStatus) {
$.post('/Vehicle/PinNotes', { noteIds: ids, isToggle: toggle, pinStatus: pinStatus }, function (data) {
if (data) {
successToast(ids.length > 1 ? `${ids.length} Notes Updated` : "Note Updated.");
getVehicleNotes(GetVehicleId().vehicleId);
}
})
}

View File

@@ -811,87 +811,6 @@ function detectRowTouchEndPremature(sender) {
rowTouchTimer = null;
}
}
function editMultipleRecords(ids, dataType) {
$.post('/Vehicle/GetGenericRecordModal', { recordIds: ids, dataType: dataType }, function (data) {
if (data) {
$("#genericRecordEditModalContent").html(data);
initDatePicker($('#genericRecordDate'));
initTagSelector($("#genericRecordTag"));
$("#genericRecordEditModal").modal('show');
}
});
}
function hideGenericRecordModal() {
$("#genericRecordEditModal").modal('hide');
}
function saveGenericRecord() {
//get values
var formValues = getAndValidateGenericRecordValues();
//validate
if (formValues.hasError) {
errorToast("Please check the form data");
return;
}
var refreshDataCallBack;
switch (formValues.dataType) {
case "ServiceRecord":
refreshDataCallBack = getVehicleServiceRecords;
break;
case "RepairRecord":
refreshDataCallBack = getVehicleCollisionRecords;
break;
case "UpgradeRecord":
refreshDataCallBack = getVehicleUpgradeRecords;
break;
}
//save to db.
$.post('/Vehicle/EditMultipleRecords', { genericRecordEditModel: formValues }, function (data) {
if (data) {
successToast(formValues.recordIds.length > 1 ? "Records Updated" : "Record Updated.");
hideGenericRecordModal();
refreshDataCallBack(GetVehicleId().vehicleId);
} else {
errorToast(genericErrorMessage());
}
})
}
function getAndValidateGenericRecordValues() {
var genericDate = $("#genericRecordDate").val();
var genericMileage = $("#genericRecordMileage").val();
var genericMileageToParse = parseInt(globalParseFloat($("#genericRecordMileage").val())).toString();
var genericDescription = $("#genericRecordDescription").val();
var genericCost = $("#genericRecordCost").val();
var genericNotes = $("#genericRecordNotes").val();
var genericTags = $("#genericRecordTag").val();
//validation
var hasError = false;
if (genericMileage.trim() != '' && (isNaN(genericMileageToParse) || parseInt(genericMileageToParse) < 0)) {
hasError = true;
$("#genericRecordMileage").addClass("is-invalid");
} else {
$("#genericRecordMileage").removeClass("is-invalid");
}
if (genericCost.trim() != '' && !isValidMoney(genericCost)) {
hasError = true;
$("#genericRecordCost").addClass("is-invalid");
} else {
$("#genericRecordCost").removeClass("is-invalid");
}
return {
hasError: hasError,
dataType: getGenericRecordEditModelData().dataType,
recordIds: recordsToEdit,
editRecord: {
date: genericDate,
mileage: genericMileageToParse,
description: genericDescription,
cost: genericCost,
notes: genericNotes,
tags: genericTags
}
}
}
function replenishSupplies() {
Swal.fire({
title: 'Replenish Supplies',
@@ -922,6 +841,9 @@ function replenishSupplies() {
var parsedReplenishedCost = result.value.parsedReplCost;
var replenishedQuantity = result.value.replquantity;
var currentCost = globalParseFloat($('#supplyRecordCost').val())
if (isNaN(currentCost)) {
currentCost = 0;
}
var currentQuantity = globalParseFloat($('#supplyRecordQuantity').val());
var newQuantity = currentQuantity + replenishedQuantity;
if (replenishedCost.trim() == '') {

View File

@@ -358,4 +358,84 @@ function showRecurringReminderSelector(descriptionFieldName) {
errorToast(genericErrorMessage());
}
})
}
function editMultipleRecords(ids, dataType) {
$.post('/Vehicle/GetGenericRecordModal', { recordIds: ids, dataType: dataType }, function (data) {
if (data) {
$("#genericRecordEditModalContent").html(data);
initDatePicker($('#genericRecordDate'));
initTagSelector($("#genericRecordTag"));
$("#genericRecordEditModal").modal('show');
}
});
}
function hideGenericRecordModal() {
$("#genericRecordEditModal").modal('hide');
}
function saveGenericRecord() {
//get values
var formValues = getAndValidateGenericRecordValues();
//validate
if (formValues.hasError) {
errorToast("Please check the form data");
return;
}
var refreshDataCallBack;
switch (formValues.dataType) {
case "ServiceRecord":
refreshDataCallBack = getVehicleServiceRecords;
break;
case "RepairRecord":
refreshDataCallBack = getVehicleCollisionRecords;
break;
case "UpgradeRecord":
refreshDataCallBack = getVehicleUpgradeRecords;
break;
}
//save to db.
$.post('/Vehicle/EditMultipleRecords', { genericRecordEditModel: formValues }, function (data) {
if (data) {
successToast(formValues.recordIds.length > 1 ? "Records Updated" : "Record Updated.");
hideGenericRecordModal();
refreshDataCallBack(GetVehicleId().vehicleId);
} else {
errorToast(genericErrorMessage());
}
})
}
function getAndValidateGenericRecordValues() {
var genericDate = $("#genericRecordDate").val();
var genericMileage = $("#genericRecordMileage").val();
var genericMileageToParse = parseInt(globalParseFloat($("#genericRecordMileage").val())).toString();
var genericDescription = $("#genericRecordDescription").val();
var genericCost = $("#genericRecordCost").val();
var genericNotes = $("#genericRecordNotes").val();
var genericTags = $("#genericRecordTag").val();
//validation
var hasError = false;
if (genericMileage.trim() != '' && (isNaN(genericMileageToParse) || parseInt(genericMileageToParse) < 0)) {
hasError = true;
$("#genericRecordMileage").addClass("is-invalid");
} else {
$("#genericRecordMileage").removeClass("is-invalid");
}
if (genericCost.trim() != '' && !isValidMoney(genericCost)) {
hasError = true;
$("#genericRecordCost").addClass("is-invalid");
} else {
$("#genericRecordCost").removeClass("is-invalid");
}
return {
hasError: hasError,
dataType: getGenericRecordEditModelData().dataType,
recordIds: recordsToEdit,
editRecord: {
date: genericDate,
mileage: genericMileageToParse,
description: genericDescription,
cost: genericCost,
notes: genericNotes,
tags: genericTags
}
}
}