From df24434689255533145c0861000d445dddbd339b Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Mon, 20 Jan 2025 12:42:59 -0700 Subject: [PATCH 1/4] add days as an interval for recurring tax records and reminders --- Controllers/Vehicle/ReminderController.cs | 1 + Controllers/Vehicle/TaxController.cs | 1 + Enum/ReminderIntervalUnit.cs | 8 ++++++++ Helper/ReminderHelper.cs | 18 ++++++++++++++++-- Logic/VehicleLogic.cs | 8 +++++--- Models/Reminder/ReminderRecord.cs | 1 + Models/Reminder/ReminderRecordInput.cs | 2 ++ Models/TaxRecord/TaxRecord.cs | 1 + Models/TaxRecord/TaxRecordInput.cs | 2 ++ Views/Vehicle/_ReminderRecordModal.cshtml | 3 ++- Views/Vehicle/_TaxRecordModal.cshtml | 3 ++- wwwroot/js/reminderrecord.js | 17 ++++++++++++----- wwwroot/js/taxrecord.js | 15 +++++++++++---- 13 files changed, 64 insertions(+), 16 deletions(-) create mode 100644 Enum/ReminderIntervalUnit.cs diff --git a/Controllers/Vehicle/ReminderController.cs b/Controllers/Vehicle/ReminderController.cs index cb9721c..1a52188 100644 --- a/Controllers/Vehicle/ReminderController.cs +++ b/Controllers/Vehicle/ReminderController.cs @@ -156,6 +156,7 @@ namespace CarCareTracker.Controllers ReminderMonthInterval = result.ReminderMonthInterval, CustomMileageInterval = result.CustomMileageInterval, CustomMonthInterval = result.CustomMonthInterval, + CustomMonthIntervalUnit = result.CustomMonthIntervalUnit, Tags = result.Tags }; return PartialView("_ReminderRecordModal", convertedResult); diff --git a/Controllers/Vehicle/TaxController.cs b/Controllers/Vehicle/TaxController.cs index e0fbb38..8eef08d 100644 --- a/Controllers/Vehicle/TaxController.cs +++ b/Controllers/Vehicle/TaxController.cs @@ -90,6 +90,7 @@ namespace CarCareTracker.Controllers IsRecurring = result.IsRecurring, RecurringInterval = result.RecurringInterval, CustomMonthInterval = result.CustomMonthInterval, + CustomMonthIntervalUnit = result.CustomMonthIntervalUnit, Files = result.Files, Tags = result.Tags, ExtraFields = StaticHelper.AddExtraFields(result.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.TaxRecord).ExtraFields) diff --git a/Enum/ReminderIntervalUnit.cs b/Enum/ReminderIntervalUnit.cs new file mode 100644 index 0000000..afaa372 --- /dev/null +++ b/Enum/ReminderIntervalUnit.cs @@ -0,0 +1,8 @@ +namespace CarCareTracker.Models +{ + public enum ReminderIntervalUnit + { + Months = 1, + Days = 2 + } +} diff --git a/Helper/ReminderHelper.cs b/Helper/ReminderHelper.cs index b058a68..5d8a4be 100644 --- a/Helper/ReminderHelper.cs +++ b/Helper/ReminderHelper.cs @@ -25,7 +25,14 @@ namespace CarCareTracker.Helper existingReminder.Date = newDate.AddMonths((int)existingReminder.ReminderMonthInterval); } else { - existingReminder.Date = newDate.Date.AddMonths(existingReminder.CustomMonthInterval); + if (existingReminder.CustomMonthIntervalUnit == ReminderIntervalUnit.Months) + { + existingReminder.Date = newDate.Date.AddMonths(existingReminder.CustomMonthInterval); + } + else if (existingReminder.CustomMonthIntervalUnit == ReminderIntervalUnit.Days) + { + existingReminder.Date = newDate.Date.AddDays(existingReminder.CustomMonthInterval); + } } if (existingReminder.ReminderMileageInterval != ReminderMileageInterval.Other) @@ -55,7 +62,14 @@ namespace CarCareTracker.Helper } else { - existingReminder.Date = newDate.AddMonths(existingReminder.CustomMonthInterval); + if (existingReminder.CustomMonthIntervalUnit == ReminderIntervalUnit.Months) + { + existingReminder.Date = newDate.AddMonths(existingReminder.CustomMonthInterval); + } + else if (existingReminder.CustomMonthIntervalUnit == ReminderIntervalUnit.Days) + { + existingReminder.Date = newDate.AddDays(existingReminder.CustomMonthInterval); + } } } return existingReminder; diff --git a/Logic/VehicleLogic.cs b/Logic/VehicleLogic.cs index 0b06faa..9d42c2f 100644 --- a/Logic/VehicleLogic.cs +++ b/Logic/VehicleLogic.cs @@ -340,7 +340,8 @@ namespace CarCareTracker.Logic bool RecurringTaxIsOutdated(TaxRecord taxRecord) { var monthInterval = taxRecord.RecurringInterval != ReminderMonthInterval.Other ? (int)taxRecord.RecurringInterval : taxRecord.CustomMonthInterval; - return DateTime.Now > taxRecord.Date.AddMonths(monthInterval); + bool addDays = taxRecord.RecurringInterval == ReminderMonthInterval.Other && taxRecord.CustomMonthIntervalUnit == ReminderIntervalUnit.Days; + return addDays ? DateTime.Now > taxRecord.Date.AddDays(monthInterval) : DateTime.Now > taxRecord.Date.AddMonths(monthInterval); } var result = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); var outdatedRecurringFees = result.Where(x => x.IsRecurring && RecurringTaxIsOutdated(x)); @@ -351,6 +352,7 @@ namespace CarCareTracker.Logic { var monthInterval = recurringFee.RecurringInterval != ReminderMonthInterval.Other ? (int)recurringFee.RecurringInterval : recurringFee.CustomMonthInterval; bool isOutdated = true; + bool addDays = recurringFee.RecurringInterval == ReminderMonthInterval.Other && recurringFee.CustomMonthIntervalUnit == ReminderIntervalUnit.Days; //update the original outdated tax record recurringFee.IsRecurring = false; _taxRecordDataAccess.SaveTaxRecordToVehicle(recurringFee); @@ -361,9 +363,9 @@ namespace CarCareTracker.Logic { try { - var nextDate = originalDate.AddMonths(monthInterval * monthMultiplier); + var nextDate = addDays ? originalDate.AddDays(monthInterval * monthMultiplier) : originalDate.AddMonths(monthInterval * monthMultiplier); monthMultiplier++; - var nextnextDate = originalDate.AddMonths(monthInterval * monthMultiplier); + var nextnextDate = addDays ? originalDate.AddDays(monthInterval * monthMultiplier) : originalDate.AddMonths(monthInterval * monthMultiplier); recurringFee.Date = nextDate; recurringFee.Id = default; //new record recurringFee.IsRecurring = DateTime.Now <= nextnextDate; diff --git a/Models/Reminder/ReminderRecord.cs b/Models/Reminder/ReminderRecord.cs index 472558f..744381a 100644 --- a/Models/Reminder/ReminderRecord.cs +++ b/Models/Reminder/ReminderRecord.cs @@ -13,6 +13,7 @@ public ReminderUrgencyConfig CustomThresholds { get; set; } = new ReminderUrgencyConfig(); public int CustomMileageInterval { get; set; } = 0; public int CustomMonthInterval { get; set; } = 0; + public ReminderIntervalUnit CustomMonthIntervalUnit { get; set; } = ReminderIntervalUnit.Months; public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; public ReminderMetric Metric { get; set; } = ReminderMetric.Date; diff --git a/Models/Reminder/ReminderRecordInput.cs b/Models/Reminder/ReminderRecordInput.cs index 43d8ace..4b91a24 100644 --- a/Models/Reminder/ReminderRecordInput.cs +++ b/Models/Reminder/ReminderRecordInput.cs @@ -13,6 +13,7 @@ public ReminderUrgencyConfig CustomThresholds { get; set; } = new ReminderUrgencyConfig(); public int CustomMileageInterval { get; set; } = 0; public int CustomMonthInterval { get; set; } = 0; + public ReminderIntervalUnit CustomMonthIntervalUnit { get; set; } = ReminderIntervalUnit.Months; public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; public ReminderMetric Metric { get; set; } = ReminderMetric.Date; @@ -34,6 +35,7 @@ ReminderMonthInterval = ReminderMonthInterval, CustomMileageInterval = CustomMileageInterval, CustomMonthInterval = CustomMonthInterval, + CustomMonthIntervalUnit = CustomMonthIntervalUnit, Notes = Notes, Tags = Tags }; diff --git a/Models/TaxRecord/TaxRecord.cs b/Models/TaxRecord/TaxRecord.cs index 7df781d..ca6f37e 100644 --- a/Models/TaxRecord/TaxRecord.cs +++ b/Models/TaxRecord/TaxRecord.cs @@ -11,6 +11,7 @@ public bool IsRecurring { get; set; } = false; public ReminderMonthInterval RecurringInterval { get; set; } = ReminderMonthInterval.OneYear; public int CustomMonthInterval { get; set; } = 0; + public ReminderIntervalUnit CustomMonthIntervalUnit { get; set; } = ReminderIntervalUnit.Months; public List Files { get; set; } = new List(); public List Tags { get; set; } = new List(); public List ExtraFields { get; set; } = new List(); diff --git a/Models/TaxRecord/TaxRecordInput.cs b/Models/TaxRecord/TaxRecordInput.cs index fed922a..a5bf514 100644 --- a/Models/TaxRecord/TaxRecordInput.cs +++ b/Models/TaxRecord/TaxRecordInput.cs @@ -12,6 +12,7 @@ public bool IsRecurring { get; set; } = false; public ReminderMonthInterval RecurringInterval { get; set; } = ReminderMonthInterval.ThreeMonths; public int CustomMonthInterval { get; set; } = 0; + public ReminderIntervalUnit CustomMonthIntervalUnit { get; set; } = ReminderIntervalUnit.Months; public List Files { get; set; } = new List(); public List Tags { get; set; } = new List(); public List ExtraFields { get; set; } = new List(); @@ -25,6 +26,7 @@ IsRecurring = IsRecurring, RecurringInterval = RecurringInterval, CustomMonthInterval = CustomMonthInterval, + CustomMonthIntervalUnit = CustomMonthIntervalUnit, Files = Files, Tags = Tags, ExtraFields = ExtraFields diff --git a/Views/Vehicle/_ReminderRecordModal.cshtml b/Views/Vehicle/_ReminderRecordModal.cshtml index e5150cf..f4e7fa9 100644 --- a/Views/Vehicle/_ReminderRecordModal.cshtml +++ b/Views/Vehicle/_ReminderRecordModal.cshtml @@ -84,7 +84,7 @@