diff --git a/Controllers/Vehicle/GasController.cs b/Controllers/Vehicle/GasController.cs index 0a69c6a..a9daeef 100644 --- a/Controllers/Vehicle/GasController.cs +++ b/Controllers/Vehicle/GasController.cs @@ -113,7 +113,8 @@ namespace CarCareTracker.Controllers [HttpPost] public IActionResult GetGasRecordsEditModal(List recordIds) { - return PartialView("_GasRecordsModal", new GasRecordEditModel { RecordIds = recordIds }); + var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.GasRecord).ExtraFields; + return PartialView("_GasRecordsModal", new GasRecordEditModel { RecordIds = recordIds, EditRecord = new GasRecord { ExtraFields = extraFields } }); } [HttpPost] public IActionResult SaveMultipleGasRecords(GasRecordEditModel editModel) @@ -124,6 +125,7 @@ namespace CarCareTracker.Controllers var costIsEdited = editModel.EditRecord.Cost != 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("---")) { @@ -161,6 +163,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 = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord); } return Json(result); diff --git a/Helper/StaticHelper.cs b/Helper/StaticHelper.cs index ffaef6d..29329e1 100644 --- a/Helper/StaticHelper.cs +++ b/Helper/StaticHelper.cs @@ -199,6 +199,8 @@ namespace CarCareTracker.Helper recordExtraFields.Add(extraField); } } + //re-order extra fields + recordExtraFields = recordExtraFields.OrderBy(x => templateExtraFields.FindIndex(y => y.Name == x.Name)).ToList(); return recordExtraFields; } diff --git a/Views/Vehicle/_GasRecordsModal.cshtml b/Views/Vehicle/_GasRecordsModal.cshtml index 4259790..e7b9b57 100644 --- a/Views/Vehicle/_GasRecordsModal.cshtml +++ b/Views/Vehicle/_GasRecordsModal.cshtml @@ -28,6 +28,14 @@ + @foreach (ExtraField field in Model.EditRecord.ExtraFields) + { + var elementId = Guid.NewGuid(); +
+ + +
+ }
diff --git a/wwwroot/js/gasrecord.js b/wwwroot/js/gasrecord.js index 9c23509..1087b0d 100644 --- a/wwwroot/js/gasrecord.js +++ b/wwwroot/js/gasrecord.js @@ -461,6 +461,7 @@ function saveMultipleGasRecordsToVehicle() { var gasCost = $("#gasRecordCost").val(); var gasNotes = $("#gasRecordNotes").val(); var gasTags = $("#gasRecordTag").val(); + var gasExtraFields = getAndValidateExtraFields(); //validation var hasError = false; if (gasMileage.trim() != '' && (isNaN(gasMileageToParse) || parseInt(gasMileageToParse) < 0)) { @@ -493,7 +494,8 @@ function saveMultipleGasRecordsToVehicle() { gallons: gasConsumption, cost: gasCost, notes: gasNotes, - tags: gasTags + tags: gasTags, + extraFields: gasExtraFields.extraFields } } $.post('/Vehicle/SaveMultipleGasRecords', { editModel: formValues }, function (data) {