Merge pull request #894 from hargata/Hargata/893
added urgency and due metrics for recurring reminder selector
This commit is contained in:
@@ -64,8 +64,9 @@ namespace CarCareTracker.Controllers
|
|||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetRecurringReminderRecordsByVehicleId(int vehicleId)
|
public IActionResult GetRecurringReminderRecordsByVehicleId(int vehicleId)
|
||||||
{
|
{
|
||||||
var result = _reminderRecordDataAccess.GetReminderRecordsByVehicleId(vehicleId);
|
var result = GetRemindersAndUrgency(vehicleId, DateTime.Now);
|
||||||
result.RemoveAll(x => !x.IsRecurring);
|
result.RemoveAll(x => !x.IsRecurring);
|
||||||
|
result = result.OrderByDescending(x => x.Urgency).ThenBy(x => x.Description).ToList();
|
||||||
return PartialView("_RecurringReminderSelector", result);
|
return PartialView("_RecurringReminderSelector", result);
|
||||||
}
|
}
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
{
|
{
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a onclick="showRecurringReminderSelector('collisionRecordDescription')" class="btn btn-link">@translator.Translate(userLanguage, "Select Reminder")</a>
|
<a onclick="showRecurringReminderSelector('collisionRecordDescription', 'collisionRecordNotes')" class="btn btn-link">@translator.Translate(userLanguage, "Select Reminder")</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
var userLanguage = userConfig.UserLanguage;
|
var userLanguage = userConfig.UserLanguage;
|
||||||
}
|
}
|
||||||
@using CarCareTracker.Helper
|
@using CarCareTracker.Helper
|
||||||
@model List<ReminderRecord>
|
@model List<ReminderRecordViewModel>
|
||||||
@if (Model.Count() > 1)
|
@if (Model.Count() > 1)
|
||||||
{
|
{
|
||||||
<div class="mb-2">
|
<div class="mb-2">
|
||||||
@@ -16,9 +16,25 @@
|
|||||||
<select class="form-select" id="recurringReminderInput">
|
<select class="form-select" id="recurringReminderInput">
|
||||||
@if (Model.Any())
|
@if (Model.Any())
|
||||||
{
|
{
|
||||||
@foreach (ReminderRecord reminderRecord in Model)
|
@foreach (ReminderRecordViewModel reminderRecord in Model)
|
||||||
{
|
{
|
||||||
<!option value="@reminderRecord.Id">@reminderRecord.Description</!option>
|
@switch(reminderRecord.UserMetric){
|
||||||
|
case (ReminderMetric.Both):
|
||||||
|
<!option value="@reminderRecord.Id" data-description="@reminderRecord.Description" class="@StaticHelper.GetReminderUrgencyColor(reminderRecord.Urgency)">
|
||||||
|
@($"{reminderRecord.Description} | {reminderRecord.Date.ToShortDateString()} | {reminderRecord.Mileage}")
|
||||||
|
</!option>
|
||||||
|
break;
|
||||||
|
case (ReminderMetric.Odometer):
|
||||||
|
<!option value="@reminderRecord.Id" data-description="@reminderRecord.Description" class="@StaticHelper.GetReminderUrgencyColor(reminderRecord.Urgency)">
|
||||||
|
@($"{reminderRecord.Description} | {reminderRecord.Mileage}")
|
||||||
|
</!option>
|
||||||
|
break;
|
||||||
|
case (ReminderMetric.Date):
|
||||||
|
<!option value="@reminderRecord.Id" data-description="@reminderRecord.Description" class="@StaticHelper.GetReminderUrgencyColor(reminderRecord.Urgency)">
|
||||||
|
@($"{reminderRecord.Description} | {reminderRecord.Date.ToShortDateString()}")
|
||||||
|
</!option>
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
@@ -27,11 +43,26 @@
|
|||||||
</select>
|
</select>
|
||||||
<div id="recurringMultipleReminders" style="display:none;">
|
<div id="recurringMultipleReminders" style="display:none;">
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
@foreach (ReminderRecord reminderRecord in Model)
|
@foreach (ReminderRecordViewModel reminderRecord in Model)
|
||||||
{
|
{
|
||||||
<li class="list-group-item text-start">
|
<li class="list-group-item text-start">
|
||||||
<input class="form-check-input" type="checkbox" value="@reminderRecord.Id" id="recurringReminder_@reminderRecord.Id">
|
<input class="form-check-input" type="checkbox" value="@reminderRecord.Id" data-description="@reminderRecord.Description" id="recurringReminder_@reminderRecord.Id">
|
||||||
<label class="form-check-label stretched-link" for="recurringReminder_@reminderRecord.Id">@reminderRecord.Description</label>
|
<label class="form-check-label stretched-link" for="recurringReminder_@reminderRecord.Id">
|
||||||
|
@reminderRecord.Description
|
||||||
|
<br /><small class="badge @StaticHelper.GetReminderUrgencyColor(reminderRecord.Urgency)">
|
||||||
|
@switch (reminderRecord.UserMetric){
|
||||||
|
case (ReminderMetric.Both):
|
||||||
|
<i class='bi bi-calendar-event me-2'></i>@reminderRecord.Date.ToShortDateString()<i class='bi bi-speedometer ms-2 me-2'></i>@reminderRecord.Mileage
|
||||||
|
break;
|
||||||
|
case (ReminderMetric.Odometer):
|
||||||
|
<i class='bi bi-speedometer me-2'></i>@reminderRecord.Mileage
|
||||||
|
break;
|
||||||
|
case (ReminderMetric.Date):
|
||||||
|
<i class='bi bi-calendar-event me-2'></i>@reminderRecord.Date.ToShortDateString()
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
</small>
|
||||||
|
</label>
|
||||||
</li>
|
</li>
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
{
|
{
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a onclick="showRecurringReminderSelector('serviceRecordDescription')" class="btn btn-link">@translator.Translate(userLanguage, "Select Reminder")</a>
|
<a onclick="showRecurringReminderSelector('serviceRecordDescription', 'serviceRecordNotes')" class="btn btn-link">@translator.Translate(userLanguage, "Select Reminder")</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
{
|
{
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a onclick="showRecurringReminderSelector('taxRecordDescription')" class="btn btn-link">@translator.Translate(userLanguage, "Select Reminder")</a>
|
<a onclick="showRecurringReminderSelector('taxRecordDescription', 'taxRecordNotes')" class="btn btn-link">@translator.Translate(userLanguage, "Select Reminder")</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
{
|
{
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<a onclick="showRecurringReminderSelector('upgradeRecordDescription')" class="btn btn-link">@translator.Translate(userLanguage, "Select Reminder")</a>
|
<a onclick="showRecurringReminderSelector('upgradeRecordDescription', 'upgradeRecordNotes')" class="btn btn-link">@translator.Translate(userLanguage, "Select Reminder")</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -336,7 +336,7 @@ function moveRecord(recordId, source, dest) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function showRecurringReminderSelector(descriptionFieldName) {
|
function showRecurringReminderSelector(descriptionFieldName, noteFieldName) {
|
||||||
$.get(`/Vehicle/GetRecurringReminderRecordsByVehicleId?vehicleId=${GetVehicleId().vehicleId}`, function (data) {
|
$.get(`/Vehicle/GetRecurringReminderRecordsByVehicleId?vehicleId=${GetVehicleId().vehicleId}`, function (data) {
|
||||||
if (data) {
|
if (data) {
|
||||||
//prompt user to select a recurring reminder
|
//prompt user to select a recurring reminder
|
||||||
@@ -356,9 +356,16 @@ function showRecurringReminderSelector(descriptionFieldName) {
|
|||||||
}).then(function (result) {
|
}).then(function (result) {
|
||||||
if (result.isConfirmed) {
|
if (result.isConfirmed) {
|
||||||
recurringReminderRecordId = result.value.selectedRecurringReminderData.ids;
|
recurringReminderRecordId = result.value.selectedRecurringReminderData.ids;
|
||||||
var descriptionField = $(`#${descriptionFieldName}`);
|
let descriptionField = $(`#${descriptionFieldName}`);
|
||||||
|
let noteField = $(`#${noteFieldName}`);
|
||||||
if (descriptionField.length > 0) {
|
if (descriptionField.length > 0) {
|
||||||
descriptionField.val(result.value.selectedRecurringReminderData.text);
|
let descriptionFieldText = result.value.selectedRecurringReminderData.text.join(', ');
|
||||||
|
descriptionField.val(descriptionFieldText);
|
||||||
|
}
|
||||||
|
if (noteField.length > 0 && result.value.selectedRecurringReminderData.text.length > 1) {
|
||||||
|
result.value.selectedRecurringReminderData.text.map(x => {
|
||||||
|
noteField.append(`- ${x}\r\n`);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -583,7 +590,7 @@ function getAndValidateSelectedRecurringReminder() {
|
|||||||
$("#recurringMultipleReminders :checked").map(function () {
|
$("#recurringMultipleReminders :checked").map(function () {
|
||||||
selectedRecurringRemindersArray.push({
|
selectedRecurringRemindersArray.push({
|
||||||
value: this.value,
|
value: this.value,
|
||||||
text: $(this).parent().find('.form-check-label').text()
|
text: $(this).attr("data-description")
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
if (selectedRecurringRemindersArray.length == 0) {
|
if (selectedRecurringRemindersArray.length == 0) {
|
||||||
@@ -596,13 +603,13 @@ function getAndValidateSelectedRecurringReminder() {
|
|||||||
return {
|
return {
|
||||||
hasError: false,
|
hasError: false,
|
||||||
ids: selectedRecurringRemindersArray.map(x=>x.value),
|
ids: selectedRecurringRemindersArray.map(x=>x.value),
|
||||||
text: selectedRecurringRemindersArray.map(x=>x.text).join(', ')
|
text: selectedRecurringRemindersArray.map(x=>x.text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//validate single reminder
|
//validate single reminder
|
||||||
var selectedRecurringReminder = $("#recurringReminderInput").val();
|
var selectedRecurringReminder = $("#recurringReminderInput").val();
|
||||||
var selectedRecurringReminderText = $("#recurringReminderInput option:selected").text();
|
var selectedRecurringReminderText = $("#recurringReminderInput option:selected").attr("data-description");
|
||||||
if (!selectedRecurringReminder || parseInt(selectedRecurringReminder) == 0) {
|
if (!selectedRecurringReminder || parseInt(selectedRecurringReminder) == 0) {
|
||||||
return {
|
return {
|
||||||
hasError: true,
|
hasError: true,
|
||||||
@@ -613,7 +620,7 @@ function getAndValidateSelectedRecurringReminder() {
|
|||||||
return {
|
return {
|
||||||
hasError: false,
|
hasError: false,
|
||||||
ids: [selectedRecurringReminder],
|
ids: [selectedRecurringReminder],
|
||||||
text: selectedRecurringReminderText
|
text: [selectedRecurringReminderText]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user