Allow Extra Fields to be edited for multiple records for Service, Repair, and Upgrade Records.

This commit is contained in:
DESKTOP-T0O5CDB\DESK-555BD
2024-10-09 21:29:38 -06:00
parent 2a66c97254
commit b7e574889c
3 changed files with 61 additions and 4 deletions

View File

@@ -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<int> 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;

View File

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

@@ -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
}
}
}