Merge pull request #610 from hargata/Hargata/609

Added custom thresholds for reminder.
This commit is contained in:
Hargata Softworks 2024-09-07 13:37:52 -06:00 committed by GitHub
commit 26b7d101ab
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 76 additions and 2 deletions

View File

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

View File

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

View File

@ -9,6 +9,8 @@
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 bool UseCustomThresholds { get; set; } = false;
public ReminderUrgencyConfig CustomThresholds { get; set; } = new ReminderUrgencyConfig();
public int CustomMileageInterval { get; set; } = 0; public int CustomMileageInterval { get; set; } = 0;
public int CustomMonthInterval { get; set; } = 0; public int CustomMonthInterval { get; set; } = 0;
public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles;

View File

@ -9,6 +9,8 @@
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 bool UseCustomThresholds { get; set; } = false;
public ReminderUrgencyConfig CustomThresholds { get; set; } = new ReminderUrgencyConfig();
public int CustomMileageInterval { get; set; } = 0; public int CustomMileageInterval { get; set; } = 0;
public int CustomMonthInterval { get; set; } = 0; public int CustomMonthInterval { get; set; } = 0;
public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles; public ReminderMileageInterval ReminderMileageInterval { get; set; } = ReminderMileageInterval.FiveThousandMiles;
@ -26,6 +28,8 @@
Description = Description, Description = Description,
Metric = Metric, Metric = Metric,
IsRecurring = IsRecurring, IsRecurring = IsRecurring,
UseCustomThresholds = UseCustomThresholds,
CustomThresholds = CustomThresholds,
ReminderMileageInterval = ReminderMileageInterval, ReminderMileageInterval = ReminderMileageInterval,
ReminderMonthInterval = ReminderMonthInterval, ReminderMonthInterval = ReminderMonthInterval,
CustomMileageInterval = CustomMileageInterval, CustomMileageInterval = CustomMileageInterval,

View File

@ -93,6 +93,22 @@
<!option value="ThreeYears" @(Model.ReminderMonthInterval == ReminderMonthInterval.ThreeYears ? "selected" : "")>@translator.Translate(userLanguage, "3 Years")</!option> <!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> <!option value="FiveYears" @(Model.ReminderMonthInterval == ReminderMonthInterval.FiveYears ? "selected" : "")>@translator.Translate(userLanguage, "5 Years")</!option>
</select> </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> </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) { function saveReminderRecordToVehicle(isEdit) {
//get values //get values
var formValues = getAndValidateReminderRecordValues(); var formValues = getAndValidateReminderRecordValues();
@ -180,9 +188,13 @@ function getAndValidateReminderRecordValues() {
var reminderRecurringMonth = $("#reminderRecurringMonth").val(); var reminderRecurringMonth = $("#reminderRecurringMonth").val();
var reminderRecurringMileage = $("#reminderRecurringMileage").val(); var reminderRecurringMileage = $("#reminderRecurringMileage").val();
var reminderTags = $("#reminderRecordTag").val(); var reminderTags = $("#reminderRecordTag").val();
var reminderCustomMileageInterval = customMileageInterval;
var vehicleId = GetVehicleId().vehicleId; var vehicleId = GetVehicleId().vehicleId;
var reminderId = getReminderRecordModelData().id; 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 //validation
var hasError = false; var hasError = false;
var reminderDateIsInvalid = reminderDate.trim() == ''; //eliminates whitespace. var reminderDateIsInvalid = reminderDate.trim() == ''; //eliminates whitespace.
@ -205,6 +217,33 @@ function getAndValidateReminderRecordValues() {
} else { } else {
$("#reminderDescription").removeClass("is-invalid"); $("#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) { if (reminderOption == undefined) {
hasError = true; hasError = true;
$("#reminderMetricDate").addClass("is-invalid"); $("#reminderMetricDate").addClass("is-invalid");
@ -226,6 +265,13 @@ function getAndValidateReminderRecordValues() {
notes: reminderNotes, notes: reminderNotes,
metric: reminderOption, metric: reminderOption,
isRecurring: reminderIsRecurring, isRecurring: reminderIsRecurring,
useCustomThresholds: reminderUseCustomThresholds,
customThresholds: {
urgentDays: reminderUrgentDays,
veryUrgentDays: reminderVeryUrgentDays,
urgentDistance: reminderUrgentDistance,
veryUrgentDistance: reminderVeryUrgentDistance
},
reminderMileageInterval: reminderRecurringMileage, reminderMileageInterval: reminderRecurringMileage,
reminderMonthInterval: reminderRecurringMonth, reminderMonthInterval: reminderRecurringMonth,
customMileageInterval: customMileageInterval, customMileageInterval: customMileageInterval,