From 8b2866b89b1e9d99af7b970b0d6cdc0ac81f1317 Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Mon, 19 Feb 2024 16:48:12 -0700 Subject: [PATCH 01/14] added ability to select bulk data. --- Views/Vehicle/_CollisionRecords.cshtml | 2 +- Views/Vehicle/_Gas.cshtml | 2 +- Views/Vehicle/_Notes.cshtml | 2 +- Views/Vehicle/_OdometerRecords.cshtml | 20 +++++----- Views/Vehicle/_ReminderRecords.cshtml | 2 +- Views/Vehicle/_ServiceRecords.cshtml | 2 +- Views/Vehicle/_SupplyRecords.cshtml | 2 +- Views/Vehicle/_TaxRecords.cshtml | 2 +- Views/Vehicle/_UpgradeRecords.cshtml | 2 +- wwwroot/js/vehicle.js | 54 ++++++++++++++++++++++++++ 10 files changed, 72 insertions(+), 18 deletions(-) diff --git a/Views/Vehicle/_CollisionRecords.cshtml b/Views/Vehicle/_CollisionRecords.cshtml index cdf04f1..95c00d7 100644 --- a/Views/Vehicle/_CollisionRecords.cshtml +++ b/Views/Vehicle/_CollisionRecords.cshtml @@ -68,7 +68,7 @@ @foreach (CollisionRecord collisionRecord in Model) { - + @collisionRecord.Date.ToShortDateString() @collisionRecord.Mileage @collisionRecord.Description diff --git a/Views/Vehicle/_Gas.cshtml b/Views/Vehicle/_Gas.cshtml index 01fc786..54a25aa 100644 --- a/Views/Vehicle/_Gas.cshtml +++ b/Views/Vehicle/_Gas.cshtml @@ -112,7 +112,7 @@ @foreach (GasRecordViewModel gasRecord in Model.GasRecords) { - + @gasRecord.Date @gasRecord.Mileage @(gasRecord.DeltaMileage == default ? "---" : gasRecord.DeltaMileage) diff --git a/Views/Vehicle/_Notes.cshtml b/Views/Vehicle/_Notes.cshtml index 1faef18..1e9b567 100644 --- a/Views/Vehicle/_Notes.cshtml +++ b/Views/Vehicle/_Notes.cshtml @@ -44,7 +44,7 @@ @foreach (Note note in Model) { - + @if (note.Pinned) { @note.Description diff --git a/Views/Vehicle/_OdometerRecords.cshtml b/Views/Vehicle/_OdometerRecords.cshtml index 71087ff..0fd0bfc 100644 --- a/Views/Vehicle/_OdometerRecords.cshtml +++ b/Views/Vehicle/_OdometerRecords.cshtml @@ -12,7 +12,7 @@
- @($"{translator.Translate(userLanguage,"# of Odometer Records")}: {Model.Count()}") + @($"{translator.Translate(userLanguage, "# of Odometer Records")}: {Model.Count()}") @foreach (string recordTag in recordTags) { @recordTag @@ -28,21 +28,21 @@ @if (enableCsvImports) { } else { - + }
@@ -57,15 +57,15 @@ - - - + + + @foreach (OdometerRecord odometerRecord in Model) { - + diff --git a/Views/Vehicle/_ReminderRecords.cshtml b/Views/Vehicle/_ReminderRecords.cshtml index 0cb1299..44ea6fb 100644 --- a/Views/Vehicle/_ReminderRecords.cshtml +++ b/Views/Vehicle/_ReminderRecords.cshtml @@ -45,7 +45,7 @@ @foreach (ReminderRecordViewModel reminderRecord in Model) { - + @if (reminderRecord.Urgency == ReminderUrgency.VeryUrgent) { diff --git a/Views/Vehicle/_ServiceRecords.cshtml b/Views/Vehicle/_ServiceRecords.cshtml index c979910..4427c69 100644 --- a/Views/Vehicle/_ServiceRecords.cshtml +++ b/Views/Vehicle/_ServiceRecords.cshtml @@ -68,7 +68,7 @@ @foreach (ServiceRecord serviceRecord in Model) { - + diff --git a/Views/Vehicle/_SupplyRecords.cshtml b/Views/Vehicle/_SupplyRecords.cshtml index fe96496..8bc97cd 100644 --- a/Views/Vehicle/_SupplyRecords.cshtml +++ b/Views/Vehicle/_SupplyRecords.cshtml @@ -70,7 +70,7 @@ @foreach (SupplyRecord supplyRecord in Model) { - + diff --git a/Views/Vehicle/_TaxRecords.cshtml b/Views/Vehicle/_TaxRecords.cshtml index 4014da9..16fa3a2 100644 --- a/Views/Vehicle/_TaxRecords.cshtml +++ b/Views/Vehicle/_TaxRecords.cshtml @@ -67,7 +67,7 @@ @foreach (TaxRecord taxRecord in Model) { - + diff --git a/Views/Vehicle/_UpgradeRecords.cshtml b/Views/Vehicle/_UpgradeRecords.cshtml index af16559..fac82ab 100644 --- a/Views/Vehicle/_UpgradeRecords.cshtml +++ b/Views/Vehicle/_UpgradeRecords.cshtml @@ -68,7 +68,7 @@ @foreach (UpgradeRecord upgradeRecord in Model) { - + diff --git a/wwwroot/js/vehicle.js b/wwwroot/js/vehicle.js index f2fd9f9..826b3df 100644 --- a/wwwroot/js/vehicle.js +++ b/wwwroot/js/vehicle.js @@ -327,4 +327,58 @@ function moveRecord(recordId, source, dest) { $("#workAroundInput").hide(); } }); +} +var selectedRow = []; +var isDragging = false; +$(window).on('mouseup', function (e) { + rangeMouseUp(e); +}); +$(window).on('mousedown', function (e) { + rangeMouseDown(e); +}); +$(window).on('keydown', function (e) { + if (e.ctrlKey && e.which == 65) { + e.preventDefault(); + e.stopPropagation(); + selectedRow = []; + $('.vehicleDetailTabContainer .table tbody tr').addClass('table-active'); + $('.vehicleDetailTabContainer .table tbody tr').map((index, elem) => { + selectedRow.push($(elem).attr('data-rowId')); + }); + } +}) +function rangeMouseDown(e) { + if (isRightClick(e)) { + return; + } + if (!e.ctrlKey) { + selectedRow = []; + $('.table tr').removeClass('table-active'); + } + isDragging = true; + + document.documentElement.onselectstart = function () { return false; }; +} +function isRightClick(e) { + if (e.which) { + return (e.which == 3); + } else if (e.button) { + return (e.button == 2); + } + return false; +} +function rangeMouseUp(e) { + if (isRightClick(e)) { + return; + } + isDragging = false; + document.documentElement.onselectstart = function () { return true; }; +} +function rangeMouseMove(e) { + if (isDragging) { + if (!$(e).hasClass('table-active')) { + selectedRow.push($(e).attr('data-rowId')); + $(e).addClass('table-active'); + } + } } \ No newline at end of file From 5204a71b00c217f7f8d1843b229985945ea55fe9 Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Mon, 19 Feb 2024 21:57:11 -0700 Subject: [PATCH 02/14] added option to bulk move records across service, upgrade, and repair. --- Controllers/VehicleController.cs | 51 ++++++++++ Helper/StaticHelper.cs | 9 +- Views/Vehicle/_CollisionRecords.cshtml | 10 +- Views/Vehicle/_ServiceRecords.cshtml | 10 +- Views/Vehicle/_UpgradeRecords.cshtml | 10 +- wwwroot/js/vehicle.js | 128 ++++++++++++++++++++++--- 6 files changed, 197 insertions(+), 21 deletions(-) diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index baf56c0..08da45b 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -2040,6 +2040,57 @@ namespace CarCareTracker.Controllers } return Json(result); } + public IActionResult MoveRecords(List recordIds, ImportMode source, ImportMode destination) + { + var genericRecord = new GenericRecord(); + bool result = false; + foreach(int recordId in recordIds) + { + //get + switch (source) + { + case ImportMode.ServiceRecord: + genericRecord = _serviceRecordDataAccess.GetServiceRecordById(recordId); + break; + case ImportMode.RepairRecord: + genericRecord = _collisionRecordDataAccess.GetCollisionRecordById(recordId); + break; + case ImportMode.UpgradeRecord: + genericRecord = _upgradeRecordDataAccess.GetUpgradeRecordById(recordId); + break; + } + //save + switch (destination) + { + case ImportMode.ServiceRecord: + result = _serviceRecordDataAccess.SaveServiceRecordToVehicle(StaticHelper.GenericToServiceRecord(genericRecord)); + break; + case ImportMode.RepairRecord: + result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(StaticHelper.GenericToRepairRecord(genericRecord)); + break; + case ImportMode.UpgradeRecord: + result = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(StaticHelper.GenericToUpgradeRecord(genericRecord)); + break; + } + //delete + if (result) + { + switch (source) + { + case ImportMode.ServiceRecord: + _serviceRecordDataAccess.DeleteServiceRecordById(recordId); + break; + case ImportMode.RepairRecord: + _collisionRecordDataAccess.DeleteCollisionRecordById(recordId); + break; + case ImportMode.UpgradeRecord: + _upgradeRecordDataAccess.DeleteUpgradeRecordById(recordId); + break; + } + } + } + return Json(result); + } #endregion } diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs index fcc9696..047c9b2 100644 --- a/Helper/StaticHelper.cs +++ b/Helper/StaticHelper.cs @@ -130,7 +130,8 @@ namespace CarCareTracker.Helper Files = input.Files, Notes = input.Notes, Tags = input.Tags, - ExtraFields = input.ExtraFields + ExtraFields = input.ExtraFields, + RequisitionHistory = input.RequisitionHistory }; } public static CollisionRecord GenericToRepairRecord(GenericRecord input) @@ -145,7 +146,8 @@ namespace CarCareTracker.Helper Files = input.Files, Notes = input.Notes, Tags = input.Tags, - ExtraFields = input.ExtraFields + ExtraFields = input.ExtraFields, + RequisitionHistory = input.RequisitionHistory }; } public static UpgradeRecord GenericToUpgradeRecord(GenericRecord input) @@ -160,7 +162,8 @@ namespace CarCareTracker.Helper Files = input.Files, Notes = input.Notes, Tags = input.Tags, - ExtraFields = input.ExtraFields + ExtraFields = input.ExtraFields, + RequisitionHistory = input.RequisitionHistory }; } diff --git a/Views/Vehicle/_CollisionRecords.cshtml b/Views/Vehicle/_CollisionRecords.cshtml index 95c00d7..d6ea871 100644 --- a/Views/Vehicle/_CollisionRecords.cshtml +++ b/Views/Vehicle/_CollisionRecords.cshtml @@ -68,7 +68,7 @@ @foreach (CollisionRecord collisionRecord in Model) { - + @@ -87,4 +87,10 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/Views/Vehicle/_ServiceRecords.cshtml b/Views/Vehicle/_ServiceRecords.cshtml index 4427c69..7d33667 100644 --- a/Views/Vehicle/_ServiceRecords.cshtml +++ b/Views/Vehicle/_ServiceRecords.cshtml @@ -68,7 +68,7 @@ @foreach (ServiceRecord serviceRecord in Model) { - + @@ -88,4 +88,10 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/Views/Vehicle/_UpgradeRecords.cshtml b/Views/Vehicle/_UpgradeRecords.cshtml index fac82ab..d4611ee 100644 --- a/Views/Vehicle/_UpgradeRecords.cshtml +++ b/Views/Vehicle/_UpgradeRecords.cshtml @@ -68,7 +68,7 @@ @foreach (UpgradeRecord upgradeRecord in Model) { - + @@ -86,4 +86,10 @@ - \ No newline at end of file + + + \ No newline at end of file diff --git a/wwwroot/js/vehicle.js b/wwwroot/js/vehicle.js index 826b3df..3aa529f 100644 --- a/wwwroot/js/vehicle.js +++ b/wwwroot/js/vehicle.js @@ -328,6 +328,68 @@ function moveRecord(recordId, source, dest) { } }); } +function moveRecords(ids, source, dest) { + if (ids.length == 0) { + return; + } + $("#workAroundInput").show(); + var friendlySource = ""; + var friendlyDest = ""; + var hideModalCallBack; + var refreshDataCallBack; + var recordVerbiage = selectedRow.length > 1 ? "these records" : "this record"; + switch (source) { + case "ServiceRecord": + friendlySource = "Service Records"; + hideModalCallBack = hideAddServiceRecordModal; + refreshDataCallBack = getVehicleServiceRecords; + break; + case "RepairRecord": + friendlySource = "Repairs"; + hideModalCallBack = hideAddCollisionRecordModal; + refreshDataCallBack = getVehicleCollisionRecords; + break; + case "UpgradeRecord": + friendlySource = "Upgrades"; + hideModalCallBack = hideAddUpgradeRecordModal; + refreshDataCallBack = getVehicleUpgradeRecords; + break; + } + switch (dest) { + case "ServiceRecord": + friendlyDest = "Service Records"; + break; + case "RepairRecord": + friendlyDest = "Repairs"; + break; + case "UpgradeRecord": + friendlyDest = "Upgrades"; + break; + } + + Swal.fire({ + title: "Confirm Move?", + text: `Move ${recordVerbiage} from ${friendlySource} to ${friendlyDest}?`, + showCancelButton: true, + confirmButtonText: "Move", + confirmButtonColor: "#dc3545" + }).then((result) => { + if (result.isConfirmed) { + $.post('/Vehicle/MoveRecords', { recordIds: ids, source: source, destination: dest }, function (data) { + if (data) { + hideModalCallBack(); + successToast("Records Moved"); + var vehicleId = GetVehicleId().vehicleId; + refreshDataCallBack(vehicleId); + } else { + errorToast(genericErrorMessage()); + } + }); + } else { + $("#workAroundInput").hide(); + } + }); +} var selectedRow = []; var isDragging = false; $(window).on('mouseup', function (e) { @@ -337,23 +399,26 @@ $(window).on('mousedown', function (e) { rangeMouseDown(e); }); $(window).on('keydown', function (e) { - if (e.ctrlKey && e.which == 65) { - e.preventDefault(); - e.stopPropagation(); - selectedRow = []; - $('.vehicleDetailTabContainer .table tbody tr').addClass('table-active'); - $('.vehicleDetailTabContainer .table tbody tr').map((index, elem) => { - selectedRow.push($(elem).attr('data-rowId')); - }); + var userOnInput = $(e.target).is("input") || $(e.target).is("textarea"); + if (!userOnInput) { + if (e.ctrlKey && e.which == 65) { + e.preventDefault(); + e.stopPropagation(); + clearSelectedRows(); + $('.vehicleDetailTabContainer .table tbody tr').addClass('table-active'); + $('.vehicleDetailTabContainer .table tbody tr').map((index, elem) => { + addToSelectedRows($(elem).attr('data-rowId')); + }); + } } }) function rangeMouseDown(e) { if (isRightClick(e)) { return; } - if (!e.ctrlKey) { - selectedRow = []; - $('.table tr').removeClass('table-active'); + var contextMenuAction = $(e.target).is(".table-context-menu > li > .dropdown-item") + if (!e.ctrlKey && !contextMenuAction) { + clearSelectedRows(); } isDragging = true; @@ -368,6 +433,9 @@ function isRightClick(e) { return false; } function rangeMouseUp(e) { + if ($(".table-context-menu").length > 0) { + $(".table-context-menu").hide(); + } if (isRightClick(e)) { return; } @@ -377,8 +445,44 @@ function rangeMouseUp(e) { function rangeMouseMove(e) { if (isDragging) { if (!$(e).hasClass('table-active')) { - selectedRow.push($(e).attr('data-rowId')); + addToSelectedRows($(e).attr('data-rowId')); $(e).addClass('table-active'); } } +} +function addToSelectedRows(id) { + if (selectedRow.findIndex(x=> x == id) == -1) { + selectedRow.push(id); + } +} +function clearSelectedRows() { + selectedRow = []; + $('.table tr').removeClass('table-active'); +} +function showTableContextMenu(e) { + if (event != undefined) { + event.preventDefault(); + } + $(".table-context-menu").show(); + $(".table-context-menu").css({ + position: "absolute", + left: getMenuPosition(event.clientX, 'width', 'scrollLeft'), + top: getMenuPosition(event.clientY, 'height', 'scrollTop') + }); + if (!$(e).hasClass('table-active')) { + clearSelectedRows(); + addToSelectedRows($(e).attr('data-rowId')); + $(e).addClass('table-active'); + } +} +function getMenuPosition(mouse, direction, scrollDir) { + var win = $(window)[direction](), + scroll = $(window)[scrollDir](), + menu = $(".table-context-menu")[direction](), + position = mouse + scroll; + + // opening menu would pass the side of the page + if (mouse + menu > win && menu < mouse) + position -= menu; + return position; } \ No newline at end of file From 6af0d8b88e0a6d0e68aed38dfee1032c3007f29f Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Mon, 19 Feb 2024 22:32:07 -0700 Subject: [PATCH 03/14] added functionality to delete records in bulk. --- Controllers/VehicleController.cs | 89 ++++++++++++++++++++------ Views/Vehicle/_CollisionRecords.cshtml | 2 + Views/Vehicle/_Gas.cshtml | 6 +- Views/Vehicle/_Notes.cshtml | 8 ++- Views/Vehicle/_OdometerRecords.cshtml | 8 ++- Views/Vehicle/_ReminderRecords.cshtml | 8 ++- Views/Vehicle/_ServiceRecords.cshtml | 2 + Views/Vehicle/_SupplyRecords.cshtml | 8 ++- Views/Vehicle/_TaxRecords.cshtml | 8 ++- Views/Vehicle/_UpgradeRecords.cshtml | 2 + wwwroot/js/vehicle.js | 70 ++++++++++++++++++-- 11 files changed, 174 insertions(+), 37 deletions(-) diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 08da45b..2579b23 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -165,18 +165,21 @@ namespace CarCareTracker.Controllers var sourceCollaborators = _userLogic.GetCollaboratorsForVehicle(sourceVehicleId).Select(x => x.UserVehicle.UserId).ToList(); var destCollaborators = _userLogic.GetCollaboratorsForVehicle(destVehicleId).Select(x => x.UserVehicle.UserId).ToList(); sourceCollaborators.RemoveAll(x => destCollaborators.Contains(x)); - if (sourceCollaborators.Any()) { + if (sourceCollaborators.Any()) + { foreach (int collaboratorId in sourceCollaborators) { _userLogic.AddUserAccessToVehicle(collaboratorId, destVehicleId); } - } else + } + else { return Json(new OperationResponse { Success = false, Message = "Both vehicles already have identical collaborators" }); } } - return Json(new OperationResponse { Success = true, Message = "Collaborators Copied"}); - } catch (Exception ex) + return Json(new OperationResponse { Success = true, Message = "Collaborators Copied" }); + } + catch (Exception ex) { _logger.LogError(ex.Message); return Json(new OperationResponse { Success = false, Message = StaticHelper.GenericErrorMessage }); @@ -816,7 +819,7 @@ namespace CarCareTracker.Controllers { collisionRecord.RequisitionHistory = RequisitionSupplyRecordsByUsage(collisionRecord.Supplies, DateTime.Parse(collisionRecord.Date), collisionRecord.Description); } - var result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(collisionRecord.ToCollisionRecord()); + var result = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(collisionRecord.ToCollisionRecord()); return Json(result); } [HttpGet] @@ -875,17 +878,19 @@ namespace CarCareTracker.Controllers var recurringFees = result.Where(x => x.IsRecurring); if (recurringFees.Any()) { - foreach(TaxRecord recurringFee in recurringFees) + foreach (TaxRecord recurringFee in recurringFees) { var newDate = new DateTime(); if (recurringFee.RecurringInterval != ReminderMonthInterval.Other) { newDate = recurringFee.Date.AddMonths((int)recurringFee.RecurringInterval); - } else + } + else { newDate = recurringFee.Date.AddMonths(recurringFee.CustomMonthInterval); } - if (DateTime.Now > newDate){ + if (DateTime.Now > newDate) + { recurringFee.IsRecurring = false; var newRecurringFee = new TaxRecord() { @@ -983,7 +988,7 @@ namespace CarCareTracker.Controllers { MonthName = x.Key.MonthName, Cost = x.Sum(y => y.Cost), - DistanceTraveled = x.Any(y=>y.MinMileage != default) ? x.Max(y=>y.MaxMileage) - x.Where(y=>y.MinMileage != default).Min(y=>y.MinMileage) : 0 + DistanceTraveled = x.Any(y => y.MinMileage != default) ? x.Max(y => y.MaxMileage) - x.Where(y => y.MinMileage != default).Min(y => y.MinMileage) : 0 }).ToList(); //get reminders var reminders = GetRemindersAndUrgency(vehicleId, DateTime.Now); @@ -1035,7 +1040,7 @@ namespace CarCareTracker.Controllers { MonthId = x.Key, MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = x.Sum(y=>y.Cost) + Cost = x.Sum(y => y.Cost) }).ToList(); viewModel.FuelMileageForVehicleByMonth = monthlyMileageData; return PartialView("_Report", viewModel); @@ -1106,8 +1111,9 @@ namespace CarCareTracker.Controllers public IActionResult GetVehicleAttachments(int vehicleId, List exportTabs) { List attachmentData = new List(); - if (exportTabs.Contains(ImportMode.ServiceRecord)){ - var records = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId).Where(x=>x.Files.Any()); + if (exportTabs.Contains(ImportMode.ServiceRecord)) + { + var records = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId).Where(x => x.Files.Any()); attachmentData.AddRange(records.Select(x => new GenericReportModel { Date = x.Date, @@ -1174,7 +1180,8 @@ namespace CarCareTracker.Controllers return Json(new OperationResponse { Success = false, Message = StaticHelper.GenericErrorMessage }); } return Json(new OperationResponse { Success = true, Message = result }); - } else + } + else { return Json(new OperationResponse { Success = false, Message = "No Attachments Found" }); } @@ -1548,7 +1555,7 @@ namespace CarCareTracker.Controllers public IActionResult GetPinnedNotesByVehicleId(int vehicleId) { var result = _noteDataAccess.GetNotesByVehicleId(vehicleId); - result = result.Where(x=>x.Pinned).ToList(); + result = result.Where(x => x.Pinned).ToList(); return Json(result); } [HttpPost] @@ -1598,11 +1605,11 @@ namespace CarCareTracker.Controllers private List RequisitionSupplyRecordsByUsage(List supplyUsage, DateTime dateRequisitioned, string usageDescription) { List results = new List(); - foreach(SupplyUsage supply in supplyUsage) + foreach (SupplyUsage supply in supplyUsage) { //get supply record. var result = _supplyRecordDataAccess.GetSupplyRecordById(supply.SupplyId); - var unitCost = (result.Quantity != 0 ) ? result.Cost / result.Quantity : 0; + var unitCost = (result.Quantity != 0) ? result.Cost / result.Quantity : 0; //deduct quantity used. result.Quantity -= supply.Quantity; //deduct cost. @@ -1741,10 +1748,10 @@ namespace CarCareTracker.Controllers public IActionResult SavePlanRecordTemplateToVehicleId(PlanRecordInput planRecord) { //check if template name already taken. - var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplatesByVehicleId(planRecord.VehicleId).Where(x=>x.Description == planRecord.Description).Any(); + var existingRecord = _planRecordTemplateDataAccess.GetPlanRecordTemplatesByVehicleId(planRecord.VehicleId).Where(x => x.Description == planRecord.Description).Any(); if (existingRecord) { - return Json(new OperationResponse { Success = false, Message = "A template with that description already exists for this vehicle"}); + return Json(new OperationResponse { Success = false, Message = "A template with that description already exists for this vehicle" }); } planRecord.Files = planRecord.Files.Select(x => { return new UploadedFiles { Name = x.Name, Location = _fileHelper.MoveFileFromTemp(x.Location, "documents/") }; }).ToList(); var result = _planRecordTemplateDataAccess.SavePlanRecordTemplateToVehicle(planRecord); @@ -1797,7 +1804,7 @@ namespace CarCareTracker.Controllers { existingRecord.RequisitionHistory = RequisitionSupplyRecordsByUsage(existingRecord.Supplies, DateTime.Parse(existingRecord.DateCreated), existingRecord.Description); } - var result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord.ToPlanRecord()); + var result = _planRecordDataAccess.SavePlanRecordToVehicle(existingRecord.ToPlanRecord()); return Json(new OperationResponse { Success = result, Message = result ? "Plan Record Added" : StaticHelper.GenericErrorMessage }); } [HttpGet] @@ -1897,7 +1904,8 @@ namespace CarCareTracker.Controllers { _logger.LogError("Unable to update reminder either because the reminder no longer exists or is no longer recurring"); } - } else + } + else { _logger.LogError("Unable to update reminder because it no longer exists."); } @@ -2044,7 +2052,7 @@ namespace CarCareTracker.Controllers { var genericRecord = new GenericRecord(); bool result = false; - foreach(int recordId in recordIds) + foreach (int recordId in recordIds) { //get switch (source) @@ -2091,6 +2099,45 @@ namespace CarCareTracker.Controllers } return Json(result); } + public IActionResult DeleteRecords(List recordIds, ImportMode importMode) + { + var genericRecord = new GenericRecord(); + bool result = false; + foreach (int recordId in recordIds) + { + switch (importMode) + { + case ImportMode.ServiceRecord: + result = _serviceRecordDataAccess.DeleteServiceRecordById(recordId); + break; + case ImportMode.RepairRecord: + result = _collisionRecordDataAccess.DeleteCollisionRecordById(recordId); + break; + case ImportMode.UpgradeRecord: + result = _upgradeRecordDataAccess.DeleteUpgradeRecordById(recordId); + break; + case ImportMode.GasRecord: + result = _gasRecordDataAccess.DeleteGasRecordById(recordId); + break; + case ImportMode.TaxRecord: + result = _taxRecordDataAccess.DeleteTaxRecordById(recordId); + break; + case ImportMode.SupplyRecord: + result = _supplyRecordDataAccess.DeleteSupplyRecordById(recordId); + break; + case ImportMode.NoteRecord: + result = _noteDataAccess.DeleteNoteById(recordId); + break; + case ImportMode.OdometerRecord: + result = _odometerRecordDataAccess.DeleteOdometerRecordById(recordId); + break; + case ImportMode.ReminderRecord: + result = _reminderRecordDataAccess.DeleteReminderRecordById(recordId); + break; + } + } + return Json(result); + } #endregion } diff --git a/Views/Vehicle/_CollisionRecords.cshtml b/Views/Vehicle/_CollisionRecords.cshtml index d6ea871..25b763f 100644 --- a/Views/Vehicle/_CollisionRecords.cshtml +++ b/Views/Vehicle/_CollisionRecords.cshtml @@ -93,4 +93,6 @@
  • @translator.Translate(userLanguage, "Service Records")
  • @translator.Translate(userLanguage, "Upgrades")
  • +
  • +
  • @translator.Translate(userLanguage, "Delete")
  • \ No newline at end of file diff --git a/Views/Vehicle/_Gas.cshtml b/Views/Vehicle/_Gas.cshtml index 54a25aa..00da712 100644 --- a/Views/Vehicle/_Gas.cshtml +++ b/Views/Vehicle/_Gas.cshtml @@ -112,7 +112,7 @@
    @foreach (GasRecordViewModel gasRecord in Model.GasRecords) { - + @@ -136,6 +136,10 @@ + +
    @translator.Translate(userLanguage,"Date")@translator.Translate(userLanguage,"Odometer")@translator.Translate(userLanguage,"Notes")@translator.Translate(userLanguage, "Date")@translator.Translate(userLanguage, "Odometer")@translator.Translate(userLanguage, "Notes")
    @odometerRecord.Date.ToShortDateString() @odometerRecord.Mileage @CarCareTracker.Helper.StaticHelper.TruncateStrings(odometerRecord.Notes, 75)
    @translator.Translate(userLanguage, "Very Urgent")
    @serviceRecord.Date.ToShortDateString() @serviceRecord.Mileage @serviceRecord.Description
    @supplyRecord.Date.ToShortDateString() @supplyRecord.PartNumber @supplyRecord.PartSupplier
    @taxRecord.Date.ToShortDateString() @taxRecord.Description @((hideZero && taxRecord.Cost == default) ? "---" : taxRecord.Cost.ToString("C"))
    @upgradeRecord.Date.ToShortDateString() @upgradeRecord.Mileage @upgradeRecord.Description
    @collisionRecord.Date.ToShortDateString() @collisionRecord.Mileage @collisionRecord.Description
    @serviceRecord.Date.ToShortDateString() @serviceRecord.Mileage @serviceRecord.Description
    @upgradeRecord.Date.ToShortDateString() @upgradeRecord.Mileage @upgradeRecord.Description
    @gasRecord.Date @gasRecord.Mileage @(gasRecord.DeltaMileage == default ? "---" : gasRecord.DeltaMileage)