Added custom thresholds for reminder.

This commit is contained in:
DESKTOP-T0O5CDB\DESK-555BD 2024-09-07 08:39:26 -06:00
parent e62fa31485
commit f3c3cdf0cb
7 changed files with 76 additions and 2 deletions

View File

@ -1733,6 +1733,8 @@ namespace CarCareTracker.Controllers
Mileage = result.Mileage,
Metric = result.Metric,
IsRecurring = result.IsRecurring,
UseCustomThresholds = result.UseCustomThresholds,
CustomThresholds = result.CustomThresholds,
ReminderMileageInterval = result.ReminderMileageInterval,
ReminderMonthInterval = result.ReminderMonthInterval,
CustomMileageInterval = result.CustomMileageInterval,

View File

@ -66,6 +66,10 @@ namespace CarCareTracker.Helper
var reminderUrgencyConfig = _config.GetReminderUrgencyConfig();
foreach (var reminder in reminders)
{
if (reminder.UseCustomThresholds)
{
reminderUrgencyConfig = reminder.CustomThresholds;
}
var reminderViewModel = new ReminderRecordViewModel()
{
Id = reminder.Id,

View File

@ -9,6 +9,8 @@
public string Description { get; set; }
public string Notes { get; set; }
public bool IsRecurring { get; set; } = false;
public bool UseCustomThresholds { get; set; } = false;
public ReminderUrgencyConfig CustomThresholds { get; set; } = new ReminderUrgencyConfig();
public int CustomMileageInterval { get; set; } = 0;
public int CustomMonthInterval { get; set; } = 0;
public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles;

View File

@ -9,6 +9,8 @@
public string Description { get; set; }
public string Notes { get; set; }
public bool IsRecurring { get; set; } = false;
public bool UseCustomThresholds { get; set; } = false;
public ReminderUrgencyConfig CustomThresholds { get; set; } = new ReminderUrgencyConfig();
public int CustomMileageInterval { get; set; } = 0;
public int CustomMonthInterval { get; set; } = 0;
public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles;
@ -26,6 +28,8 @@
Description = Description,
Metric = Metric,
IsRecurring = IsRecurring,
UseCustomThresholds = UseCustomThresholds,
CustomThresholds = CustomThresholds,
ReminderMileageInterval = ReminderMileageInterval,
ReminderMonthInterval = ReminderMonthInterval,
CustomMileageInterval = CustomMileageInterval,

View File

@ -93,6 +93,22 @@
<!option value="ThreeYears" @(Model.ReminderMonthInterval == ReminderMonthInterval.ThreeYears ? "selected" : "")>@translator.Translate(userLanguage, "3 Years")</!option>
<!option value="FiveYears" @(Model.ReminderMonthInterval == ReminderMonthInterval.FiveYears ? "selected" : "")>@translator.Translate(userLanguage, "5 Years")</!option>
</select>
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" role="switch" onchange="toggleCustomThresholds()" id="reminderUseCustomThresholds" checked="@Model.UseCustomThresholds">
<label class="form-check-label" for="reminderUseCustomThresholds">@translator.Translate(userLanguage, "Use Custom Thresholds")</label>
</div>
<div class="collapse @(Model.UseCustomThresholds ? "show" : "")" id="reminderCustomThresholds">
<div>
<label for="reminderUrgentDays">@translator.Translate(userLanguage, "Urgent(Days)")</label>
<input type="text" id="reminderUrgentDays" class="form-control" placeholder="@translator.Translate(userLanguage, "Urgent")" value="@Model.CustomThresholds.UrgentDays">
<label for="reminderVeryUrgentDays">@translator.Translate(userLanguage, "Very Urgent(Days)")</label>
<input type="text" id="reminderVeryUrgentDays" class="form-control" placeholder="@translator.Translate(userLanguage, "Very Urgent")" value="@Model.CustomThresholds.VeryUrgentDays">
<label for="reminderUrgentDistance">@translator.Translate(userLanguage, "Urgent(Distance)")</label>
<input type="text" id="reminderUrgentDistance" class="form-control" placeholder="@translator.Translate(userLanguage, "Urgent")" value="@Model.CustomThresholds.UrgentDistance">
<label for="reminderVeryUrgentDistance">@translator.Translate(userLanguage, "Very Urgent(Distance)")</label>
<input type="text" id="reminderVeryUrgentDistance" class="form-control" placeholder="@translator.Translate(userLanguage, "Very Urgent")" value="@Model.CustomThresholds.VeryUrgentDistance">
</div>
</div>
</div>
</div>
</div>

File diff suppressed because one or more lines are too long

View File

@ -102,6 +102,14 @@ function deleteReminderRecord(reminderRecordId, e) {
}
});
}
function toggleCustomThresholds() {
var isChecked = $("#reminderUseCustomThresholds").is(':checked');
if (isChecked) {
$("#reminderCustomThresholds").collapse('show');
} else {
$("#reminderCustomThresholds").collapse('hide');
}
}
function saveReminderRecordToVehicle(isEdit) {
//get values
var formValues = getAndValidateReminderRecordValues();
@ -180,9 +188,13 @@ function getAndValidateReminderRecordValues() {
var reminderRecurringMonth = $("#reminderRecurringMonth").val();
var reminderRecurringMileage = $("#reminderRecurringMileage").val();
var reminderTags = $("#reminderRecordTag").val();
var reminderCustomMileageInterval = customMileageInterval;
var vehicleId = GetVehicleId().vehicleId;
var reminderId = getReminderRecordModelData().id;
var reminderUseCustomThresholds = $("#reminderUseCustomThresholds").is(":checked");
var reminderUrgentDays = $("#reminderUrgentDays").val();
var reminderVeryUrgentDays = $("#reminderVeryUrgentDays").val();
var reminderUrgentDistance = $("#reminderUrgentDistance").val();
var reminderVeryUrgentDistance = $("#reminderVeryUrgentDistance").val();
//validation
var hasError = false;
var reminderDateIsInvalid = reminderDate.trim() == ''; //eliminates whitespace.
@ -205,6 +217,33 @@ function getAndValidateReminderRecordValues() {
} else {
$("#reminderDescription").removeClass("is-invalid");
}
if (reminderUseCustomThresholds) {
//validate custom threshold values
if (reminderUrgentDays.trim() == '' || isNaN(reminderUrgentDays) || parseInt(reminderUrgentDays) < 0) {
hasError = true;
$("#reminderUrgentDays").addClass("is-invalid");
} else {
$("#reminderUrgentDays").removeClass("is-invalid");
}
if (reminderVeryUrgentDays.trim() == '' || isNaN(reminderVeryUrgentDays) || parseInt(reminderVeryUrgentDays) < 0) {
hasError = true;
$("#reminderVeryUrgentDays").addClass("is-invalid");
} else {
$("#reminderVeryUrgentDays").removeClass("is-invalid");
}
if (reminderUrgentDistance.trim() == '' || isNaN(reminderUrgentDistance) || parseInt(reminderUrgentDistance) < 0) {
hasError = true;
$("#reminderUrgentDistance").addClass("is-invalid");
} else {
$("#reminderUrgentDistance").removeClass("is-invalid");
}
if (reminderVeryUrgentDistance.trim() == '' || isNaN(reminderVeryUrgentDistance) || parseInt(reminderVeryUrgentDistance) < 0) {
hasError = true;
$("#reminderVeryUrgentDistance").addClass("is-invalid");
} else {
$("#reminderVeryUrgentDistance").removeClass("is-invalid");
}
}
if (reminderOption == undefined) {
hasError = true;
$("#reminderMetricDate").addClass("is-invalid");
@ -226,6 +265,13 @@ function getAndValidateReminderRecordValues() {
notes: reminderNotes,
metric: reminderOption,
isRecurring: reminderIsRecurring,
useCustomThresholds: reminderUseCustomThresholds,
customThresholds: {
urgentDays: reminderUrgentDays,
veryUrgentDays: reminderVeryUrgentDays,
urgentDistance: reminderUrgentDistance,
veryUrgentDistance: reminderVeryUrgentDistance
},
reminderMileageInterval: reminderRecurringMileage,
reminderMonthInterval: reminderRecurringMonth,
customMileageInterval: customMileageInterval,