From 09fbc37472c72dd175112d0627126c6de346aba8 Mon Sep 17 00:00:00 2001 From: "DESKTOP-GENO133\\IvanPlex" Date: Sat, 10 Feb 2024 09:33:30 -0700 Subject: [PATCH 1/2] added ability to add custom month interval to reminder. --- Controllers/VehicleController.cs | 3 +- Enum/ReminderMonthInterval.cs | 1 + Helper/ReminderHelper.cs | 18 ++++++++++-- Models/Reminder/ReminderRecord.cs | 1 + Models/Reminder/ReminderRecordInput.cs | 31 +++++++++++++-------- Views/Vehicle/_ReminderRecordModal.cshtml | 7 +++-- wwwroot/js/reminderrecord.js | 34 +++++++++++++++++++++-- 7 files changed, 76 insertions(+), 19 deletions(-) diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 16e2e0c..d84ba3b 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -1352,7 +1352,8 @@ namespace CarCareTracker.Controllers IsRecurring = result.IsRecurring, ReminderMileageInterval = result.ReminderMileageInterval, ReminderMonthInterval = result.ReminderMonthInterval, - CustomMileageInterval = result.CustomMileageInterval + CustomMileageInterval = result.CustomMileageInterval, + CustomMonthInterval = result.CustomMonthInterval }; return PartialView("_ReminderRecordModal", convertedResult); } diff --git a/Enum/ReminderMonthInterval.cs b/Enum/ReminderMonthInterval.cs index dd1d472..d3ba0f4 100644 --- a/Enum/ReminderMonthInterval.cs +++ b/Enum/ReminderMonthInterval.cs @@ -2,6 +2,7 @@ { public enum ReminderMonthInterval { + Other = 0, OneMonth = 1, ThreeMonths = 3, SixMonths = 6, diff --git a/Helper/ReminderHelper.cs b/Helper/ReminderHelper.cs index 342857f..355780a 100644 --- a/Helper/ReminderHelper.cs +++ b/Helper/ReminderHelper.cs @@ -13,7 +13,14 @@ namespace CarCareTracker.Helper { if (existingReminder.Metric == ReminderMetric.Both) { - existingReminder.Date = existingReminder.Date.AddMonths((int)existingReminder.ReminderMonthInterval); + if (existingReminder.ReminderMonthInterval != ReminderMonthInterval.Other) + { + existingReminder.Date = existingReminder.Date.AddMonths((int)existingReminder.ReminderMonthInterval); + } else + { + existingReminder.Date = existingReminder.Date.AddMonths(existingReminder.CustomMonthInterval); + } + if (existingReminder.ReminderMileageInterval != ReminderMileageInterval.Other) { existingReminder.Mileage += (int)existingReminder.ReminderMileageInterval; @@ -35,7 +42,14 @@ namespace CarCareTracker.Helper } else if (existingReminder.Metric == ReminderMetric.Date) { - existingReminder.Date = existingReminder.Date.AddMonths((int)existingReminder.ReminderMonthInterval); + if (existingReminder.ReminderMonthInterval != ReminderMonthInterval.Other) + { + existingReminder.Date = existingReminder.Date.AddMonths((int)existingReminder.ReminderMonthInterval); + } + else + { + existingReminder.Date = existingReminder.Date.AddMonths(existingReminder.CustomMonthInterval); + } } return existingReminder; } diff --git a/Models/Reminder/ReminderRecord.cs b/Models/Reminder/ReminderRecord.cs index 31480b6..cf3c06c 100644 --- a/Models/Reminder/ReminderRecord.cs +++ b/Models/Reminder/ReminderRecord.cs @@ -10,6 +10,7 @@ public string Notes { get; set; } public bool IsRecurring { get; set; } = false; public int CustomMileageInterval { get; set; } = 0; + public int CustomMonthInterval { get; set; } = 0; 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 61e770a..d2fc7de 100644 --- a/Models/Reminder/ReminderRecordInput.cs +++ b/Models/Reminder/ReminderRecordInput.cs @@ -10,20 +10,27 @@ public string Notes { get; set; } public bool IsRecurring { get; set; } = false; public int CustomMileageInterval { get; set; } = 0; + public int CustomMonthInterval { get; set; } = 0; public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; public ReminderMetric Metric { get; set; } = ReminderMetric.Date; - public ReminderRecord ToReminderRecord() { return new ReminderRecord { - Id = Id, - VehicleId = VehicleId, - Date = DateTime.Parse(string.IsNullOrWhiteSpace(Date) ? DateTime.Now.AddDays(1).ToShortDateString() : Date), - Mileage = Mileage, - Description = Description, - Metric = Metric, - IsRecurring = IsRecurring, - ReminderMileageInterval = ReminderMileageInterval, - ReminderMonthInterval = ReminderMonthInterval, - CustomMileageInterval = CustomMileageInterval, - Notes = Notes }; } + public ReminderRecord ToReminderRecord() + { + return new ReminderRecord + { + Id = Id, + VehicleId = VehicleId, + Date = DateTime.Parse(string.IsNullOrWhiteSpace(Date) ? DateTime.Now.AddDays(1).ToShortDateString() : Date), + Mileage = Mileage, + Description = Description, + Metric = Metric, + IsRecurring = IsRecurring, + ReminderMileageInterval = ReminderMileageInterval, + ReminderMonthInterval = ReminderMonthInterval, + CustomMileageInterval = CustomMileageInterval, + CustomMonthInterval = CustomMonthInterval, + Notes = Notes + }; + } } } diff --git a/Views/Vehicle/_ReminderRecordModal.cshtml b/Views/Vehicle/_ReminderRecordModal.cshtml index 8fc08c4..15485eb 100644 --- a/Views/Vehicle/_ReminderRecordModal.cshtml +++ b/Views/Vehicle/_ReminderRecordModal.cshtml @@ -72,7 +72,9 @@ 150000 mi. / Km - + @(Model.ReminderMonthInterval == ReminderMonthInterval.Other && Model.CustomMonthInterval > 0 ? $"{translator.Translate(userLanguage, "Other")}: {Model.CustomMonthInterval}" : $"{translator.Translate(userLanguage, "Other")}") + @translator.Translate(userLanguage, "1 Month") @translator.Translate(userLanguage,"3 Months") @translator.Translate(userLanguage,"6 Months") @translator.Translate(userLanguage, "1 Year") @@ -102,7 +104,8 @@ \ No newline at end of file diff --git a/wwwroot/js/reminderrecord.js b/wwwroot/js/reminderrecord.js index ea5c5d7..c3809e1 100644 --- a/wwwroot/js/reminderrecord.js +++ b/wwwroot/js/reminderrecord.js @@ -15,6 +15,35 @@ function hideAddReminderRecordModal() { $('#reminderRecordModal').modal('hide'); } +function checkCustomMonthInterval() { + var selectedValue = $("#reminderRecurringMonth").val(); + if (selectedValue == "Other") { + $("#workAroundInput").show(); + Swal.fire({ + title: 'Specify Custom Month Interval', + html: ` + + `, + confirmButtonText: 'Set', + focusConfirm: false, + preConfirm: () => { + const customMonth = $("#inputCustomMileage").val(); + if (!customMonth || isNaN(parseInt(customMonth)) || parseInt(customMonth) <= 0) { + Swal.showValidationMessage(`Please enter a valid number`); + } + return { customMonth } + }, + }).then(function (result) { + if (result.isConfirmed) { + customMonthInterval = result.value.customMonth; + $("#reminderRecurringMonth > option[value='Other']").text(`Other: ${result.value.customMonth}`); + } else { + $("#reminderRecurringMonth").val(getReminderRecordModelData().monthInterval); + } + $("#workAroundInput").hide(); + }); + } +} function checkCustomMileageInterval() { var selectedValue = $("#reminderRecurringMileage").val(); if (selectedValue == "Other") { @@ -36,7 +65,7 @@ function checkCustomMileageInterval() { }).then(function (result) { if (result.isConfirmed) { customMileageInterval = result.value.customMileage; - $("option[value='Other']").text(`Other: ${result.value.customMileage}`); + $("#reminderRecurringMileage > option[value='Other']").text(`Other: ${result.value.customMileage}`); } else { $("#reminderRecurringMileage").val(getReminderRecordModelData().mileageInterval); } @@ -185,6 +214,7 @@ function getAndValidateReminderRecordValues() { isRecurring: reminderIsRecurring, reminderMileageInterval: reminderRecurringMileage, reminderMonthInterval: reminderRecurringMonth, - customMileageInterval: customMileageInterval + customMileageInterval: customMileageInterval, + customMonthInterval: customMonthInterval } } \ No newline at end of file From 8981d6984421f36feea92774632f592fdb96bbb9 Mon Sep 17 00:00:00 2001 From: "DESKTOP-GENO133\\IvanPlex" Date: Sat, 10 Feb 2024 10:47:33 -0700 Subject: [PATCH 2/2] added custom month interval for taxes/fees --- Controllers/VehicleController.cs | 11 +++++++++- Models/TaxRecord/TaxRecord.cs | 1 + Models/TaxRecord/TaxRecordInput.cs | 2 ++ Views/Vehicle/_TaxRecordModal.cshtml | 6 ++++-- wwwroot/js/taxrecord.js | 30 ++++++++++++++++++++++++++++ 5 files changed, 47 insertions(+), 3 deletions(-) diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index d84ba3b..362dafa 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -799,7 +799,14 @@ namespace CarCareTracker.Controllers { foreach(TaxRecord recurringFee in recurringFees) { - var newDate = recurringFee.Date.AddMonths((int)recurringFee.RecurringInterval); + var newDate = new DateTime(); + if (recurringFee.RecurringInterval != ReminderMonthInterval.Other) + { + newDate = recurringFee.Date.AddMonths((int)recurringFee.RecurringInterval); + } else + { + newDate = recurringFee.Date.AddMonths(recurringFee.CustomMonthInterval); + } if (DateTime.Now > newDate){ recurringFee.IsRecurring = false; var newRecurringFee = new TaxRecord() @@ -811,6 +818,7 @@ namespace CarCareTracker.Controllers IsRecurring = true, Notes = recurringFee.Notes, RecurringInterval = recurringFee.RecurringInterval, + CustomMonthInterval = recurringFee.CustomMonthInterval, Files = recurringFee.Files, Tags = recurringFee.Tags }; @@ -848,6 +856,7 @@ namespace CarCareTracker.Controllers VehicleId = result.VehicleId, IsRecurring = result.IsRecurring, RecurringInterval = result.RecurringInterval, + CustomMonthInterval = result.CustomMonthInterval, Files = result.Files, Tags = result.Tags }; diff --git a/Models/TaxRecord/TaxRecord.cs b/Models/TaxRecord/TaxRecord.cs index c023f72..ba991e7 100644 --- a/Models/TaxRecord/TaxRecord.cs +++ b/Models/TaxRecord/TaxRecord.cs @@ -10,6 +10,7 @@ public string Notes { get; set; } public bool IsRecurring { get; set; } = false; public ReminderMonthInterval RecurringInterval { get; set; } = ReminderMonthInterval.OneYear; + public int CustomMonthInterval { get; set; } = 0; public List Files { get; set; } = new List(); public List Tags { get; set; } = new List(); } diff --git a/Models/TaxRecord/TaxRecordInput.cs b/Models/TaxRecord/TaxRecordInput.cs index 878d76e..75f79f9 100644 --- a/Models/TaxRecord/TaxRecordInput.cs +++ b/Models/TaxRecord/TaxRecordInput.cs @@ -10,6 +10,7 @@ public string Notes { get; set; } public bool IsRecurring { get; set; } = false; public ReminderMonthInterval RecurringInterval { get; set; } = ReminderMonthInterval.ThreeMonths; + public int CustomMonthInterval { get; set; } = 0; public List Files { get; set; } = new List(); public List Tags { get; set; } = new List(); public TaxRecord ToTaxRecord() { return new TaxRecord { @@ -21,6 +22,7 @@ Notes = Notes, IsRecurring = IsRecurring, RecurringInterval = RecurringInterval, + CustomMonthInterval = CustomMonthInterval, Files = Files, Tags = Tags }; } diff --git a/Views/Vehicle/_TaxRecordModal.cshtml b/Views/Vehicle/_TaxRecordModal.cshtml index c3984ec..0ff936c 100644 --- a/Views/Vehicle/_TaxRecordModal.cshtml +++ b/Views/Vehicle/_TaxRecordModal.cshtml @@ -42,7 +42,8 @@ - + @(Model.RecurringInterval == ReminderMonthInterval.Other && Model.CustomMonthInterval > 0 ? $"{translator.Translate(userLanguage, "Other")}: {Model.CustomMonthInterval}" : $"{translator.Translate(userLanguage, "Other")}") @translator.Translate(userLanguage,"1 Month") @translator.Translate(userLanguage, "3 Months") @translator.Translate(userLanguage, "6 Months") @@ -97,6 +98,7 @@ \ No newline at end of file diff --git a/wwwroot/js/taxrecord.js b/wwwroot/js/taxrecord.js index 30fcdb3..419c87c 100644 --- a/wwwroot/js/taxrecord.js +++ b/wwwroot/js/taxrecord.js @@ -84,6 +84,35 @@ function saveTaxRecordToVehicle(isEdit) { } }) } +function checkCustomMonthIntervalForTax() { + var selectedValue = $("#taxRecurringMonth").val(); + if (selectedValue == "Other") { + $("#workAroundInput").show(); + Swal.fire({ + title: 'Specify Custom Month Interval', + html: ` + + `, + confirmButtonText: 'Set', + focusConfirm: false, + preConfirm: () => { + const customMonth = $("#inputCustomMileage").val(); + if (!customMonth || isNaN(parseInt(customMonth)) || parseInt(customMonth) <= 0) { + Swal.showValidationMessage(`Please enter a valid number`); + } + return { customMonth } + }, + }).then(function (result) { + if (result.isConfirmed) { + customMonthInterval = result.value.customMonth; + $("#taxRecurringMonth > option[value='Other']").text(`Other: ${result.value.customMonth}`); + } else { + $("#taxRecurringMonth").val(getTaxRecordModelData().monthInterval); + } + $("#workAroundInput").hide(); + }); + } +} function getAndValidateTaxRecordValues() { var taxDate = $("#taxRecordDate").val(); var taxDescription = $("#taxRecordDescription").val(); @@ -125,6 +154,7 @@ function getAndValidateTaxRecordValues() { notes: taxNotes, isRecurring: taxIsRecurring, recurringInterval: taxRecurringMonth, + customMonthInterval: customMonthInterval, tags: taxTags, files: uploadedFiles, addReminderRecord: addReminderRecord