allow extra fields edit for multiple odometer records.

This commit is contained in:
DESKTOP-T0O5CDB\DESK-555BD
2024-10-10 09:38:04 -07:00
parent ed0775ab71
commit 571b558181
3 changed files with 30 additions and 2 deletions

View File

@@ -56,7 +56,8 @@ namespace CarCareTracker.Controllers
[HttpPost]
public IActionResult GetOdometerRecordsEditModal(List<int> recordIds)
{
return PartialView("_OdometerRecordsModal", new OdometerRecordEditModel { RecordIds = recordIds });
var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.OdometerRecord).ExtraFields;
return PartialView("_OdometerRecordsModal", new OdometerRecordEditModel { RecordIds = recordIds, EditRecord = new OdometerRecord { ExtraFields = extraFields } });
}
[HttpPost]
public IActionResult SaveMultipleOdometerRecords(OdometerRecordEditModel editModel)
@@ -66,6 +67,7 @@ namespace CarCareTracker.Controllers
var mileageIsEdited = editModel.EditRecord.Mileage != default;
var noteIsEdited = !string.IsNullOrWhiteSpace(editModel.EditRecord.Notes);
var tagsIsEdited = editModel.EditRecord.Tags.Any();
var extraFieldIsEdited = editModel.EditRecord.ExtraFields.Any();
//handle clear overrides
if (tagsIsEdited && editModel.EditRecord.Tags.Contains("---"))
{
@@ -99,6 +101,22 @@ namespace CarCareTracker.Controllers
{
existingRecord.Tags = editModel.EditRecord.Tags;
}
if (extraFieldIsEdited)
{
foreach (ExtraField extraField in editModel.EditRecord.ExtraFields)
{
if (existingRecord.ExtraFields.Any(x => x.Name == extraField.Name))
{
var insertIndex = existingRecord.ExtraFields.FindIndex(x => x.Name == extraField.Name);
existingRecord.ExtraFields.RemoveAll(x => x.Name == extraField.Name);
existingRecord.ExtraFields.Insert(insertIndex, extraField);
}
else
{
existingRecord.ExtraFields.Add(extraField);
}
}
}
result = _odometerRecordDataAccess.SaveOdometerRecordToVehicle(existingRecord);
}
return Json(result);

View File

@@ -26,6 +26,14 @@
<input type="number" inputmode="numeric" id="odometerRecordMileage" class="form-control" placeholder="@translator.Translate(userLanguage,"(multiple)")">
<label for="odometerRecordTag">@translator.Translate(userLanguage, "Tags(use --- to clear all existing tags)")</label>
<select multiple class="form-select" id="odometerRecordTag"></select>
@foreach (ExtraField field in Model.EditRecord.ExtraFields)
{
var elementId = Guid.NewGuid();
<div class="extra-field">
<label for="@elementId">@field.Name</label>
<input type="text" id="@elementId" class="form-control" placeholder="@translator.Translate(userLanguage,"(multiple)")">
</div>
}
</div>
<div class="col-md-6 col-12">
<label for="odometerRecordNotes">@translator.Translate(userLanguage, "Notes(use --- to clear all existing notes)")<a class="link-underline link-underline-opacity-0" onclick="showLinks(this)"><i class="bi bi-markdown ms-2"></i></a></label>

View File

@@ -170,6 +170,7 @@ function saveMultipleOdometerRecordsToVehicle() {
var odometerMileageToParse = parseInt(globalParseFloat($("#odometerRecordMileage").val())).toString();
var odometerNotes = $("#odometerRecordNotes").val();
var odometerTags = $("#odometerRecordTag").val();
var odometerExtraFields = getAndValidateExtraFields();
//validation
var hasError = false;
if (odometerMileage.trim() != '' && (isNaN(odometerMileageToParse) || parseInt(odometerMileageToParse) < 0)) {
@@ -195,7 +196,8 @@ function saveMultipleOdometerRecordsToVehicle() {
initialMileage: initialOdometerMileageToParse,
mileage: odometerMileageToParse,
notes: odometerNotes,
tags: odometerTags
tags: odometerTags,
extraFields: odometerExtraFields.extraFields
}
}
$.post('/Vehicle/SaveMultipleOdometerRecords', { editModel: formValues }, function (data) {