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,
IsRecurring = result.IsRecurring,
ReminderMileageInterval = result.ReminderMileageInterval,
ReminderMonthInterval = result.ReminderMonthInterval
ReminderMonthInterval = result.ReminderMonthInterval,
CustomMileageInterval = result.CustomMileageInterval
};
return PartialView("_ReminderRecordModal", convertedResult);
}

View File

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

View File

@ -14,11 +14,24 @@ namespace CarCareTracker.Helper
if (existingReminder.Metric == ReminderMetric.Both)
{
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)
{
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)
{

View File

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

View File

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

View File

@ -148,7 +148,7 @@
</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-content" id="reminderRecordModalContent">
</div>

View File

@ -46,7 +46,8 @@
<label class="form-check-label" for="reminderIsRecurring">Is Recurring</label>
</div>
<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="OneHundredMiles" @(Model.ReminderMileageInterval == ReminderMileageInterval.OneHundredMiles ? "selected" : "")>100 mi. / Km</!option>
<!option value="FiveHundredMiles" @(Model.ReminderMileageInterval == ReminderMileageInterval.FiveHundredMiles ? "selected" : "")>500 mi. / Km</!option>
@ -95,7 +96,8 @@
}
</div>
<script>
var customMileageInterval = @Model.CustomMileageInterval;
function getReminderRecordModelData() {
return { id: @Model.Id}
return { id: @Model.Id, mileageInterval: '@Model.ReminderMileageInterval.ToString()'}
}
</script>

View File

@ -15,6 +15,35 @@
function hideAddReminderRecordModal() {
$('#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) {
if (e != undefined) {
event.stopPropagation();
@ -108,6 +137,7 @@ function getAndValidateReminderRecordValues() {
var reminderIsRecurring = $("#reminderIsRecurring").is(":checked");
var reminderRecurringMonth = $("#reminderRecurringMonth").val();
var reminderRecurringMileage = $("#reminderRecurringMileage").val();
var reminderCustomMileageInterval = customMileageInterval;
var vehicleId = GetVehicleId().vehicleId;
var reminderId = getReminderRecordModelData().id;
//validation
@ -154,6 +184,7 @@ function getAndValidateReminderRecordValues() {
metric: reminderOption,
isRecurring: reminderIsRecurring,
reminderMileageInterval: reminderRecurringMileage,
reminderMonthInterval: reminderRecurringMonth
reminderMonthInterval: reminderRecurringMonth,
customMileageInterval: customMileageInterval
}
}