From 33e916cac2699d79420454d706c247f1cabe1557 Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Wed, 4 Dec 2024 21:11:58 -0700 Subject: [PATCH] force a page refresh if there are oudated recurring tax records on vehicle load. --- Controllers/APIController.cs | 35 ++++++++++++++++++++++++++++ Controllers/Vehicle/TaxController.cs | 4 ++-- Logic/VehicleLogic.cs | 11 ++++++--- Views/API/Index.cshtml | 14 +++++++++++ wwwroot/js/taxrecord.js | 6 ++--- 5 files changed, 62 insertions(+), 8 deletions(-) diff --git a/Controllers/APIController.cs b/Controllers/APIController.cs index c7c4280..0e01379 100644 --- a/Controllers/APIController.cs +++ b/Controllers/APIController.cs @@ -569,6 +569,41 @@ namespace CarCareTracker.Controllers return Json(result); } } + [HttpGet] + [Route("/api/vehicle/taxrecords/check")] + public IActionResult CheckRecurringTaxRecords() + { + List vehicles = new List(); + try + { + var result = _dataAccess.GetVehicles(); + if (!User.IsInRole(nameof(UserData.IsRootUser))) + { + result = _userLogic.FilterUserVehicles(result, GetUserID()); + } + vehicles.AddRange(result); + int vehiclesUpdated = 0; + foreach(Vehicle vehicle in vehicles) + { + var updateResult = _vehicleLogic.UpdateRecurringTaxes(vehicle.Id); + if (updateResult) + { + vehiclesUpdated++; + } + } + if (vehiclesUpdated != default) + { + return Json(OperationResponse.Succeed($"Recurring Taxes for {vehiclesUpdated} Vehicles Updated!")); + } else + { + return Json(OperationResponse.Succeed("No Recurring Taxes Updated")); + } + } + catch (Exception ex) + { + return Json(OperationResponse.Failed($"No Recurring Taxes Updated Due To Error: {ex.Message}")); + } + } [TypeFilter(typeof(CollaboratorFilter))] [HttpPost] [Route("/api/vehicle/taxrecords/add")] diff --git a/Controllers/Vehicle/TaxController.cs b/Controllers/Vehicle/TaxController.cs index c43a760..35d1355 100644 --- a/Controllers/Vehicle/TaxController.cs +++ b/Controllers/Vehicle/TaxController.cs @@ -30,8 +30,8 @@ namespace CarCareTracker.Controllers { try { - _vehicleLogic.UpdateRecurringTaxes(vehicleId); - return Json(true); + var result = _vehicleLogic.UpdateRecurringTaxes(vehicleId); + return Json(result); } catch (Exception ex) { _logger.LogError(ex.Message); diff --git a/Logic/VehicleLogic.cs b/Logic/VehicleLogic.cs index 66e5bd9..605fdaf 100644 --- a/Logic/VehicleLogic.cs +++ b/Logic/VehicleLogic.cs @@ -17,7 +17,7 @@ namespace CarCareTracker.Logic List GetVehicleInfo(List vehicles); List GetReminders(List vehicles, bool isCalendar); List GetPlans(List vehicles, bool excludeDone); - void UpdateRecurringTaxes(int vehicleId); + bool UpdateRecurringTaxes(int vehicleId); } public class VehicleLogic: IVehicleLogic { @@ -322,12 +322,12 @@ namespace CarCareTracker.Logic } return plans.OrderBy(x => x.Priority).ThenBy(x=>x.Progress).ToList(); } - public void UpdateRecurringTaxes(int vehicleId) + public bool UpdateRecurringTaxes(int vehicleId) { var vehicleData = _dataAccess.GetVehicleById(vehicleId); if (!string.IsNullOrWhiteSpace(vehicleData.SoldDate)) { - return; + return false; } bool RecurringTaxIsOutdated(TaxRecord taxRecord) { @@ -338,6 +338,7 @@ namespace CarCareTracker.Logic var outdatedRecurringFees = result.Where(x => x.IsRecurring && RecurringTaxIsOutdated(x)); if (outdatedRecurringFees.Any()) { + var success = false; foreach (TaxRecord recurringFee in outdatedRecurringFees) { var monthInterval = recurringFee.RecurringInterval != ReminderMonthInterval.Other ? (int)recurringFee.RecurringInterval : recurringFee.CustomMonthInterval; @@ -360,14 +361,18 @@ namespace CarCareTracker.Logic recurringFee.IsRecurring = DateTime.Now <= nextnextDate; _taxRecordDataAccess.SaveTaxRecordToVehicle(recurringFee); isOutdated = !recurringFee.IsRecurring; + success = true; } catch (Exception) { isOutdated = false; //break out of loop if something broke. + success = false; } } } + return success; } + return false; //no outdated recurring tax records. } } } diff --git a/Views/API/Index.cshtml b/Views/API/Index.cshtml index 78a46ef..d1ab03e 100644 --- a/Views/API/Index.cshtml +++ b/Views/API/Index.cshtml @@ -344,6 +344,20 @@ vehicleId - Id of Vehicle +
+
+ GET +
+
+ /api/vehicle/taxrecords/check +
+
+ Updates Outdated Recurring Tax Records +
+
+ No Params +
+
POST diff --git a/wwwroot/js/taxrecord.js b/wwwroot/js/taxrecord.js index abccd99..6e7ad93 100644 --- a/wwwroot/js/taxrecord.js +++ b/wwwroot/js/taxrecord.js @@ -181,9 +181,9 @@ function getAndValidateTaxRecordValues() { } function checkRecurringTaxes() { - $.post('/Vehicle/CheckRecurringTaxRecords', { vehicleId: GetVehicleId().vehicleId },function (data) { - if (!data) { - errorToast(genericErrorMessage()); + $.post('/Vehicle/CheckRecurringTaxRecords', { vehicleId: GetVehicleId().vehicleId }, function (data) { + if (data) { + viewVehicle(GetVehicleId().vehicleId); } }) } \ No newline at end of file