added ability for user to define custom mileage intervals.

This commit is contained in:
DESKTOP-GENO133\IvanPlex 2024-01-30 17:15:21 -07:00
parent fb45aefde3
commit 178b50a033
8 changed files with 58 additions and 7 deletions

View File

@ -1309,7 +1309,8 @@ namespace CarCareTracker.Controllers
Metric = result.Metric, Metric = result.Metric,
IsRecurring = result.IsRecurring, IsRecurring = result.IsRecurring,
ReminderMileageInterval = result.ReminderMileageInterval, ReminderMileageInterval = result.ReminderMileageInterval,
ReminderMonthInterval = result.ReminderMonthInterval ReminderMonthInterval = result.ReminderMonthInterval,
CustomMileageInterval = result.CustomMileageInterval
}; };
return PartialView("_ReminderRecordModal", convertedResult); return PartialView("_ReminderRecordModal", convertedResult);
} }

View File

@ -2,6 +2,7 @@
{ {
public enum ReminderMileageInterval public enum ReminderMileageInterval
{ {
Other = 0,
FiftyMiles = 50, FiftyMiles = 50,
OneHundredMiles = 100, OneHundredMiles = 100,
FiveHundredMiles = 500, FiveHundredMiles = 500,

View File

@ -14,11 +14,24 @@ namespace CarCareTracker.Helper
if (existingReminder.Metric == ReminderMetric.Both) if (existingReminder.Metric == ReminderMetric.Both)
{ {
existingReminder.Date = existingReminder.Date.AddMonths((int)existingReminder.ReminderMonthInterval); existingReminder.Date = existingReminder.Date.AddMonths((int)existingReminder.ReminderMonthInterval);
existingReminder.Mileage += (int)existingReminder.ReminderMileageInterval; if (existingReminder.ReminderMileageInterval != ReminderMileageInterval.Other)
{
existingReminder.Mileage += (int)existingReminder.ReminderMileageInterval;
}
else
{
existingReminder.Mileage += existingReminder.CustomMileageInterval;
}
} }
else if (existingReminder.Metric == ReminderMetric.Odometer) else if (existingReminder.Metric == ReminderMetric.Odometer)
{ {
existingReminder.Mileage += (int)existingReminder.ReminderMileageInterval; if (existingReminder.ReminderMileageInterval != ReminderMileageInterval.Other)
{
existingReminder.Mileage += (int)existingReminder.ReminderMileageInterval;
} else
{
existingReminder.Mileage += existingReminder.CustomMileageInterval;
}
} }
else if (existingReminder.Metric == ReminderMetric.Date) else if (existingReminder.Metric == ReminderMetric.Date)
{ {

View File

@ -9,6 +9,7 @@
public string Description { get; set; } public string Description { get; set; }
public string Notes { get; set; } public string Notes { get; set; }
public bool IsRecurring { get; set; } = false; public bool IsRecurring { get; set; } = false;
public int CustomMileageInterval { get; set; } = 0;
public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles;
public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear;
public ReminderMetric Metric { get; set; } = ReminderMetric.Date; public ReminderMetric Metric { get; set; } = ReminderMetric.Date;

View File

@ -9,6 +9,7 @@
public string Description { get; set; } public string Description { get; set; }
public string Notes { get; set; } public string Notes { get; set; }
public bool IsRecurring { get; set; } = false; public bool IsRecurring { get; set; } = false;
public int CustomMileageInterval { get; set; } = 0;
public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles;
public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear; public ReminderMonthInterval ReminderMonthInterval { get; set; } = ReminderMonthInterval.OneYear;
public ReminderMetric Metric { get; set; } = ReminderMetric.Date; public ReminderMetric Metric { get; set; } = ReminderMetric.Date;
@ -22,6 +23,7 @@
IsRecurring = IsRecurring, IsRecurring = IsRecurring,
ReminderMileageInterval = ReminderMileageInterval, ReminderMileageInterval = ReminderMileageInterval,
ReminderMonthInterval = ReminderMonthInterval, ReminderMonthInterval = ReminderMonthInterval,
CustomMileageInterval = CustomMileageInterval,
Notes = Notes }; } Notes = Notes }; }
} }
} }

View File

@ -148,7 +148,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="modal fade" id="reminderRecordModal" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal fade" data-bs-focus="false" id="reminderRecordModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document"> <div class="modal-dialog modal-lg" role="document">
<div class="modal-content" id="reminderRecordModalContent"> <div class="modal-content" id="reminderRecordModalContent">
</div> </div>

View File

@ -46,7 +46,8 @@
<label class="form-check-label" for="reminderIsRecurring">Is Recurring</label> <label class="form-check-label" for="reminderIsRecurring">Is Recurring</label>
</div> </div>
<label for="reminderRecurringMileage">Odometer</label> <label for="reminderRecurringMileage">Odometer</label>
<select class="form-select" id="reminderRecurringMileage" @(Model.IsRecurring ? "" : "disabled")> <select class="form-select" onchange="checkCustomMileageInterval()" id="reminderRecurringMileage" @(Model.IsRecurring ? "" : "disabled")>
<!option value="Other" @(Model.ReminderMileageInterval == ReminderMileageInterval.Other ? "selected" : "")>@(Model.CustomMileageInterval > 0 ? $"Other: {Model.CustomMileageInterval}" : "Other")</!option>
<!option value="FiftyMiles" @(Model.ReminderMileageInterval == ReminderMileageInterval.FiftyMiles ? "selected" : "")>50 mi. / Km</!option> <!option value="FiftyMiles" @(Model.ReminderMileageInterval == ReminderMileageInterval.FiftyMiles ? "selected" : "")>50 mi. / Km</!option>
<!option value="OneHundredMiles" @(Model.ReminderMileageInterval == ReminderMileageInterval.OneHundredMiles ? "selected" : "")>100 mi. / Km</!option> <!option value="OneHundredMiles" @(Model.ReminderMileageInterval == ReminderMileageInterval.OneHundredMiles ? "selected" : "")>100 mi. / Km</!option>
<!option value="FiveHundredMiles" @(Model.ReminderMileageInterval == ReminderMileageInterval.FiveHundredMiles ? "selected" : "")>500 mi. / Km</!option> <!option value="FiveHundredMiles" @(Model.ReminderMileageInterval == ReminderMileageInterval.FiveHundredMiles ? "selected" : "")>500 mi. / Km</!option>
@ -95,7 +96,8 @@
} }
</div> </div>
<script> <script>
var customMileageInterval = @Model.CustomMileageInterval;
function getReminderRecordModelData() { function getReminderRecordModelData() {
return { id: @Model.Id} return { id: @Model.Id, mileageInterval: '@Model.ReminderMileageInterval.ToString()'}
} }
</script> </script>

View File

@ -15,6 +15,35 @@
function hideAddReminderRecordModal() { function hideAddReminderRecordModal() {
$('#reminderRecordModal').modal('hide'); $('#reminderRecordModal').modal('hide');
} }
function checkCustomMileageInterval() {
var selectedValue = $("#reminderRecurringMileage").val();
if (selectedValue == "Other") {
$("#workAroundInput").show();
Swal.fire({
title: 'Specify Custom Mileage Interval',
html: `
<input type="text" id="inputCustomMileage" class="swal2-input" placeholder="Mileage">
`,
confirmButtonText: 'Set',
focusConfirm: false,
preConfirm: () => {
const customMileage = $("#inputCustomMileage").val();
if (!customMileage || isNaN(parseInt(customMileage)) || parseInt(customMileage) <= 0) {
Swal.showValidationMessage(`Please enter a valid number`);
}
return { customMileage }
},
}).then(function (result) {
if (result.isConfirmed) {
customMileageInterval = result.value.customMileage;
$("option[value='Other']").text(`Other: ${result.value.customMileage}`);
} else {
$("#reminderRecurringMileage").val(getReminderRecordModelData().mileageInterval);
}
$("#workAroundInput").hide();
});
}
}
function deleteReminderRecord(reminderRecordId, e) { function deleteReminderRecord(reminderRecordId, e) {
if (e != undefined) { if (e != undefined) {
event.stopPropagation(); event.stopPropagation();
@ -108,6 +137,7 @@ function getAndValidateReminderRecordValues() {
var reminderIsRecurring = $("#reminderIsRecurring").is(":checked"); var reminderIsRecurring = $("#reminderIsRecurring").is(":checked");
var reminderRecurringMonth = $("#reminderRecurringMonth").val(); var reminderRecurringMonth = $("#reminderRecurringMonth").val();
var reminderRecurringMileage = $("#reminderRecurringMileage").val(); var reminderRecurringMileage = $("#reminderRecurringMileage").val();
var reminderCustomMileageInterval = customMileageInterval;
var vehicleId = GetVehicleId().vehicleId; var vehicleId = GetVehicleId().vehicleId;
var reminderId = getReminderRecordModelData().id; var reminderId = getReminderRecordModelData().id;
//validation //validation
@ -154,6 +184,7 @@ function getAndValidateReminderRecordValues() {
metric: reminderOption, metric: reminderOption,
isRecurring: reminderIsRecurring, isRecurring: reminderIsRecurring,
reminderMileageInterval: reminderRecurringMileage, reminderMileageInterval: reminderRecurringMileage,
reminderMonthInterval: reminderRecurringMonth reminderMonthInterval: reminderRecurringMonth,
customMileageInterval: customMileageInterval
} }
} }