extra field edit for multiple gas records.

This commit is contained in:
DESKTOP-T0O5CDB\DESK-555BD
2024-10-09 22:23:18 -06:00
parent b7e574889c
commit 19e19d7c15
4 changed files with 32 additions and 2 deletions

View File

@@ -113,7 +113,8 @@ namespace CarCareTracker.Controllers
[HttpPost] [HttpPost]
public IActionResult GetGasRecordsEditModal(List<int> recordIds) public IActionResult GetGasRecordsEditModal(List<int> 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] [HttpPost]
public IActionResult SaveMultipleGasRecords(GasRecordEditModel editModel) public IActionResult SaveMultipleGasRecords(GasRecordEditModel editModel)
@@ -124,6 +125,7 @@ namespace CarCareTracker.Controllers
var costIsEdited = editModel.EditRecord.Cost != default; var costIsEdited = editModel.EditRecord.Cost != default;
var noteIsEdited = !string.IsNullOrWhiteSpace(editModel.EditRecord.Notes); var noteIsEdited = !string.IsNullOrWhiteSpace(editModel.EditRecord.Notes);
var tagsIsEdited = editModel.EditRecord.Tags.Any(); var tagsIsEdited = editModel.EditRecord.Tags.Any();
var extraFieldIsEdited = editModel.EditRecord.ExtraFields.Any();
//handle clear overrides //handle clear overrides
if (tagsIsEdited && editModel.EditRecord.Tags.Contains("---")) if (tagsIsEdited && editModel.EditRecord.Tags.Contains("---"))
{ {
@@ -161,6 +163,22 @@ namespace CarCareTracker.Controllers
{ {
existingRecord.Tags = editModel.EditRecord.Tags; 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); result = _gasRecordDataAccess.SaveGasRecordToVehicle(existingRecord);
} }
return Json(result); return Json(result);

View File

@@ -199,6 +199,8 @@ namespace CarCareTracker.Helper
recordExtraFields.Add(extraField); recordExtraFields.Add(extraField);
} }
} }
//re-order extra fields
recordExtraFields = recordExtraFields.OrderBy(x => templateExtraFields.FindIndex(y => y.Name == x.Name)).ToList();
return recordExtraFields; return recordExtraFields;
} }

View File

@@ -28,6 +28,14 @@
<input type="text" inputmode="decimal" id="gasRecordCost" class="form-control" placeholder="@translator.Translate(userLanguage,"(multiple)")"> <input type="text" inputmode="decimal" id="gasRecordCost" class="form-control" placeholder="@translator.Translate(userLanguage,"(multiple)")">
<label for="gasRecordTag">@translator.Translate(userLanguage, "Tags(use --- to clear all existing tags)")</label> <label for="gasRecordTag">@translator.Translate(userLanguage, "Tags(use --- to clear all existing tags)")</label>
<select multiple class="form-select" id="gasRecordTag"></select> <select multiple class="form-select" id="gasRecordTag"></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>
<div class="col-md-6 col-12"> <div class="col-md-6 col-12">
<label for="gasRecordNotes">@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> <label for="gasRecordNotes">@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

@@ -461,6 +461,7 @@ function saveMultipleGasRecordsToVehicle() {
var gasCost = $("#gasRecordCost").val(); var gasCost = $("#gasRecordCost").val();
var gasNotes = $("#gasRecordNotes").val(); var gasNotes = $("#gasRecordNotes").val();
var gasTags = $("#gasRecordTag").val(); var gasTags = $("#gasRecordTag").val();
var gasExtraFields = getAndValidateExtraFields();
//validation //validation
var hasError = false; var hasError = false;
if (gasMileage.trim() != '' && (isNaN(gasMileageToParse) || parseInt(gasMileageToParse) < 0)) { if (gasMileage.trim() != '' && (isNaN(gasMileageToParse) || parseInt(gasMileageToParse) < 0)) {
@@ -493,7 +494,8 @@ function saveMultipleGasRecordsToVehicle() {
gallons: gasConsumption, gallons: gasConsumption,
cost: gasCost, cost: gasCost,
notes: gasNotes, notes: gasNotes,
tags: gasTags tags: gasTags,
extraFields: gasExtraFields.extraFields
} }
} }
$.post('/Vehicle/SaveMultipleGasRecords', { editModel: formValues }, function (data) { $.post('/Vehicle/SaveMultipleGasRecords', { editModel: formValues }, function (data) {