From 6455af96bf5a7f9c1c3ee935ebd730416e200cd8 Mon Sep 17 00:00:00 2001 From: "DESKTOP-GENO133\\IvanPlex" Date: Tue, 26 Mar 2024 08:11:14 -0600 Subject: [PATCH] Add tag functionality to reminders. --- Controllers/VehicleController.cs | 3 ++- Helper/ReminderHelper.cs | 3 ++- Models/Reminder/ReminderRecord.cs | 1 + Models/Reminder/ReminderRecordInput.cs | 4 +++- Models/Reminder/ReminderRecordViewModel.cs | 1 + Views/Vehicle/_ReminderRecordModal.cshtml | 8 ++++++++ Views/Vehicle/_ReminderRecords.cshtml | 13 ++++++++++++- wwwroot/js/reminderrecord.js | 5 ++++- wwwroot/js/vehicle.js | 2 ++ 9 files changed, 35 insertions(+), 5 deletions(-) diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 4031f5f..7d57ad9 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -1683,7 +1683,8 @@ namespace CarCareTracker.Controllers ReminderMileageInterval = result.ReminderMileageInterval, ReminderMonthInterval = result.ReminderMonthInterval, CustomMileageInterval = result.CustomMileageInterval, - CustomMonthInterval = result.CustomMonthInterval + CustomMonthInterval = result.CustomMonthInterval, + Tags = result.Tags }; return PartialView("_ReminderRecordModal", convertedResult); } diff --git a/Helper/ReminderHelper.cs b/Helper/ReminderHelper.cs index 3777846..2dc1932 100644 --- a/Helper/ReminderHelper.cs +++ b/Helper/ReminderHelper.cs @@ -73,7 +73,8 @@ namespace CarCareTracker.Helper Description = reminder.Description, Notes = reminder.Notes, Metric = reminder.Metric, - IsRecurring = reminder.IsRecurring + IsRecurring = reminder.IsRecurring, + Tags = reminder.Tags }; if (reminder.Metric == ReminderMetric.Both) { diff --git a/Models/Reminder/ReminderRecord.cs b/Models/Reminder/ReminderRecord.cs index cf3c06c..3c30098 100644 --- a/Models/Reminder/ReminderRecord.cs +++ b/Models/Reminder/ReminderRecord.cs @@ -14,5 +14,6 @@ public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; public ReminderMetric Metric { get; set; } = ReminderMetric.Date; + public List Tags { get; set; } = new List(); } } diff --git a/Models/Reminder/ReminderRecordInput.cs b/Models/Reminder/ReminderRecordInput.cs index d2fc7de..64cd9dd 100644 --- a/Models/Reminder/ReminderRecordInput.cs +++ b/Models/Reminder/ReminderRecordInput.cs @@ -14,6 +14,7 @@ public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; public ReminderMetric Metric { get; set; } = ReminderMetric.Date; + public List Tags { get; set; } = new List(); public ReminderRecord ToReminderRecord() { return new ReminderRecord @@ -29,7 +30,8 @@ ReminderMonthInterval = ReminderMonthInterval, CustomMileageInterval = CustomMileageInterval, CustomMonthInterval = CustomMonthInterval, - Notes = Notes + Notes = Notes, + Tags = Tags }; } } diff --git a/Models/Reminder/ReminderRecordViewModel.cs b/Models/Reminder/ReminderRecordViewModel.cs index 5a9f65a..7fb31b6 100644 --- a/Models/Reminder/ReminderRecordViewModel.cs +++ b/Models/Reminder/ReminderRecordViewModel.cs @@ -17,5 +17,6 @@ /// Recurring Reminders /// public bool IsRecurring { get; set; } = false; + public List Tags { get; set; } = new List(); } } diff --git a/Views/Vehicle/_ReminderRecordModal.cshtml b/Views/Vehicle/_ReminderRecordModal.cshtml index f97283a..cb59dc0 100644 --- a/Views/Vehicle/_ReminderRecordModal.cshtml +++ b/Views/Vehicle/_ReminderRecordModal.cshtml @@ -42,6 +42,14 @@ +
+ +
diff --git a/Views/Vehicle/_ReminderRecords.cshtml b/Views/Vehicle/_ReminderRecords.cshtml index 2fb11e6..4e66f67 100644 --- a/Views/Vehicle/_ReminderRecords.cshtml +++ b/Views/Vehicle/_ReminderRecords.cshtml @@ -6,6 +6,7 @@ var userConfig = config.GetUserConfig(User); var userLanguage = userConfig.UserLanguage; var hasRefresh = Model.Where(x => (x.Urgency == ReminderUrgency.VeryUrgent || x.Urgency == ReminderUrgency.PastDue) && x.IsRecurring).Any(); + var recordTags = Model.SelectMany(x => x.Tags).Distinct(); }
@@ -15,6 +16,16 @@ @($"{translator.Translate(userLanguage, "Very Urgent")}: {Model.Where(x=>x.Urgency == ReminderUrgency.VeryUrgent).Count()}") @($"{translator.Translate(userLanguage, "Urgent")}: {Model.Where(x => x.Urgency == ReminderUrgency.Urgent).Count()}") @($"{translator.Translate(userLanguage, "Not Urgent")}: {Model.Where(x => x.Urgency == ReminderUrgency.NotUrgent).Count()}") + @foreach (string recordTag in recordTags) + { + @recordTag + } + + @foreach (string recordTag in recordTags) + { + + } +
@@ -45,7 +56,7 @@ @foreach (ReminderRecordViewModel reminderRecord in Model) { - + @if (reminderRecord.Urgency == ReminderUrgency.VeryUrgent) { @translator.Translate(userLanguage, "Very Urgent") diff --git a/wwwroot/js/reminderrecord.js b/wwwroot/js/reminderrecord.js index 5159b39..c0f1f0e 100644 --- a/wwwroot/js/reminderrecord.js +++ b/wwwroot/js/reminderrecord.js @@ -3,6 +3,7 @@ if (data) { $("#reminderRecordModalContent").html(data); initDatePicker($('#reminderDate'), true); + initTagSelector($("#reminderRecordTag")); $("#reminderRecordModal").modal("show"); $('#reminderRecordModal').off('shown.bs.modal').on('shown.bs.modal', function () { if (getGlobalConfig().useMarkDown) { @@ -166,6 +167,7 @@ function getAndValidateReminderRecordValues() { var reminderIsRecurring = $("#reminderIsRecurring").is(":checked"); var reminderRecurringMonth = $("#reminderRecurringMonth").val(); var reminderRecurringMileage = $("#reminderRecurringMileage").val(); + var reminderTags = $("#reminderRecordTag").val(); var reminderCustomMileageInterval = customMileageInterval; var vehicleId = GetVehicleId().vehicleId; var reminderId = getReminderRecordModelData().id; @@ -215,7 +217,8 @@ function getAndValidateReminderRecordValues() { reminderMileageInterval: reminderRecurringMileage, reminderMonthInterval: reminderRecurringMonth, customMileageInterval: customMileageInterval, - customMonthInterval: customMonthInterval + customMonthInterval: customMonthInterval, + tags: reminderTags } } function createPlanRecordFromReminder(reminderRecordId) { diff --git a/wwwroot/js/vehicle.js b/wwwroot/js/vehicle.js index fb09a15..f018fbd 100644 --- a/wwwroot/js/vehicle.js +++ b/wwwroot/js/vehicle.js @@ -246,12 +246,14 @@ function showAddReminderModal(reminderModalInput) { $.post('/Vehicle/GetAddReminderRecordPartialView', { reminderModel: reminderModalInput }, function (data) { $("#reminderRecordModalContent").html(data); initDatePicker($('#reminderDate'), true); + initTagSelector($("#reminderRecordTag")); $("#reminderRecordModal").modal("show"); }); } else { $.post('/Vehicle/GetAddReminderRecordPartialView', function (data) { $("#reminderRecordModalContent").html(data); initDatePicker($('#reminderDate'), true); + initTagSelector($("#reminderRecordTag")); $("#reminderRecordModal").modal("show"); }); }