From b7e574889c3c583ac702d44dafd695bfa38e1a24 Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Wed, 9 Oct 2024 21:29:38 -0600 Subject: [PATCH] Allow Extra Fields to be edited for multiple records for Service, Repair, and Upgrade Records. --- Controllers/VehicleController.cs | 53 ++++++++++++++++++++++-- Views/Vehicle/_GenericRecordModal.cshtml | 8 ++++ wwwroot/js/vehicle.js | 4 +- 3 files changed, 61 insertions(+), 4 deletions(-) diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 9155d28..d9d2416 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -2,10 +2,8 @@ using CarCareTracker.External.Interfaces; using CarCareTracker.Models; using Microsoft.AspNetCore.Mvc; using CarCareTracker.Helper; -using CsvHelper; using System.Globalization; using Microsoft.AspNetCore.Authorization; -using CarCareTracker.MapProfile; using System.Security.Claims; using CarCareTracker.Logic; using CarCareTracker.Filter; @@ -577,7 +575,8 @@ namespace CarCareTracker.Controllers [HttpPost] public IActionResult GetGenericRecordModal(List recordIds, ImportMode dataType) { - return PartialView("_GenericRecordModal", new GenericRecordEditModel() { DataType = dataType, RecordIds = recordIds }); + var extraFields = _extraFieldDataAccess.GetExtraFieldsById((int)dataType).ExtraFields; + return PartialView("_GenericRecordModal", new GenericRecordEditModel() { DataType = dataType, RecordIds = recordIds, EditRecord = new GenericRecord { ExtraFields = extraFields } }); } [HttpPost] public IActionResult EditMultipleRecords(GenericRecordEditModel genericRecordEditModel) @@ -588,6 +587,7 @@ namespace CarCareTracker.Controllers var costIsEdited = genericRecordEditModel.EditRecord.Cost != default; var noteIsEdited = !string.IsNullOrWhiteSpace(genericRecordEditModel.EditRecord.Notes); var tagsIsEdited = genericRecordEditModel.EditRecord.Tags.Any(); + var extraFieldIsEdited = genericRecordEditModel.EditRecord.ExtraFields.Any(); //handle clear overrides if (tagsIsEdited && genericRecordEditModel.EditRecord.Tags.Contains("---")) { @@ -629,6 +629,21 @@ namespace CarCareTracker.Controllers { existingRecord.Tags = genericRecordEditModel.EditRecord.Tags; } + if (extraFieldIsEdited) + { + foreach(ExtraField extraField in genericRecordEditModel.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 = _serviceRecordDataAccess.SaveServiceRecordToVehicle(existingRecord); } break; @@ -659,6 +674,22 @@ namespace CarCareTracker.Controllers { existingRecord.Tags = genericRecordEditModel.EditRecord.Tags; } + if (extraFieldIsEdited) + { + foreach (ExtraField extraField in genericRecordEditModel.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 = _collisionRecordDataAccess.SaveCollisionRecordToVehicle(existingRecord); } break; @@ -689,6 +720,22 @@ namespace CarCareTracker.Controllers { existingRecord.Tags = genericRecordEditModel.EditRecord.Tags; } + if (extraFieldIsEdited) + { + foreach (ExtraField extraField in genericRecordEditModel.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 = _upgradeRecordDataAccess.SaveUpgradeRecordToVehicle(existingRecord); } break; diff --git a/Views/Vehicle/_GenericRecordModal.cshtml b/Views/Vehicle/_GenericRecordModal.cshtml index f25ba6b..3417730 100644 --- a/Views/Vehicle/_GenericRecordModal.cshtml +++ b/Views/Vehicle/_GenericRecordModal.cshtml @@ -28,6 +28,14 @@ + @foreach (ExtraField field in Model.EditRecord.ExtraFields) + { + var elementId = Guid.NewGuid(); +
+ + +
+ }
diff --git a/wwwroot/js/vehicle.js b/wwwroot/js/vehicle.js index 2142f8f..374cd13 100644 --- a/wwwroot/js/vehicle.js +++ b/wwwroot/js/vehicle.js @@ -419,6 +419,7 @@ function getAndValidateGenericRecordValues() { var genericCost = $("#genericRecordCost").val(); var genericNotes = $("#genericRecordNotes").val(); var genericTags = $("#genericRecordTag").val(); + var genericExtraFields = getAndValidateExtraFields(); //validation var hasError = false; if (genericMileage.trim() != '' && (isNaN(genericMileageToParse) || parseInt(genericMileageToParse) < 0)) { @@ -443,7 +444,8 @@ function getAndValidateGenericRecordValues() { description: genericDescription, cost: genericCost, notes: genericNotes, - tags: genericTags + tags: genericTags, + extraFields: genericExtraFields.extraFields } } }