prevent overlap of additional fields on vehicle level vs record level.

This commit is contained in:
DESKTOP-GENO133\IvanPlex
2024-02-29 16:38:31 -07:00
parent 742c5b3489
commit 6993fe5df8
7 changed files with 24 additions and 6 deletions

View File

@@ -97,13 +97,14 @@ namespace CarCareTracker.Controllers
[HttpGet]
public IActionResult AddVehiclePartialView()
{
return PartialView("_VehicleModal", new Vehicle());
return PartialView("_VehicleModal", new Vehicle() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.VehicleRecord).ExtraFields });
}
[TypeFilter(typeof(CollaboratorFilter))]
[HttpGet]
public IActionResult GetEditVehiclePartialViewById(int vehicleId)
{
var data = _dataAccess.GetVehicleById(vehicleId);
data.ExtraFields = StaticHelper.AddExtraFields(data.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.VehicleRecord).ExtraFields);
return PartialView("_VehicleModal", data);
}
[HttpPost]

View File

@@ -12,6 +12,7 @@
SupplyRecord = 7,
Dashboard = 8,
PlanRecord = 9,
OdometerRecord = 10
OdometerRecord = 10,
VehicleRecord = 11
}
}

View File

@@ -10,6 +10,7 @@
public string LicensePlate { get; set; }
public bool IsElectric { get; set; } = false;
public bool UseHours { get; set; } = false;
public List<ExtraField> ExtraFields { get; set; } = new List<ExtraField>();
public List<string> Tags { get; set; } = new List<string>();
}
}

View File

@@ -27,6 +27,7 @@
<!option @(Model.Id == (int)ImportMode.SupplyRecord ? "selected" : "") value="@((int)ImportMode.SupplyRecord)">@translator.Translate(userLanguage, "Supplies")</!option>
<!option @(Model.Id == (int)ImportMode.PlanRecord ? "selected" : "") value="@((int)ImportMode.PlanRecord)">@translator.Translate(userLanguage, "Planner")</!option>
<!option @(Model.Id == (int)ImportMode.OdometerRecord ? "selected" : "") value="@((int)ImportMode.OdometerRecord)">@translator.Translate(userLanguage, "Odometer")</!option>
<!option @(Model.Id == (int)ImportMode.VehicleRecord ? "selected" : "") value="@((int)ImportMode.VehicleRecord)">@translator.Translate(userLanguage, "Vehicle")</!option>
</select>
</div>
</div>

View File

@@ -49,6 +49,14 @@
<!option value="@tag">@tag</!option>
}
</select>
@foreach (ExtraField field in Model.ExtraFields)
{
var elementId = Guid.NewGuid();
<div class="extra-field">
<label for="@elementId">@field.Name</label>
<input type="text" id="@elementId" class="form-control @(field.IsRequired ? "extra-field-required" : "")" placeholder="@field.Name" value="@field.Value">
</div>
}
@if (!string.IsNullOrWhiteSpace(Model.ImageLocation))
{
<label for="inputImage">@translator.Translate(userLanguage, "Replace picture(optional)")</label>

File diff suppressed because one or more lines are too long

View File

@@ -40,8 +40,12 @@ function saveVehicle(isEdit) {
var vehicleLicensePlate = $("#inputLicensePlate").val();
var vehicleIsElectric = $("#inputIsElectric").is(":checked");
var vehicleUseHours = $("#inputUseHours").is(":checked");
var extraFields = getAndValidateExtraFields(true);
//validate
var hasError = false;
if (extraFields.hasError) {
hasError = true;
}
if (vehicleYear.trim() == '' || parseInt(vehicleYear) < 1900) {
hasError = true;
$("#inputYear").addClass("is-invalid");
@@ -78,7 +82,8 @@ function saveVehicle(isEdit) {
licensePlate: vehicleLicensePlate,
isElectric: vehicleIsElectric,
tags: vehicleTags,
useHours: vehicleUseHours
useHours: vehicleUseHours,
extraFields: extraFields.extraFields
}, function (data) {
if (data) {
if (!isEdit) {
@@ -398,10 +403,11 @@ function showBulkImportModal(mode) {
function hideBulkImportModal() {
$("#bulkImportModal").modal('hide');
}
function getAndValidateExtraFields() {
function getAndValidateExtraFields(isVehicle) {
var hasError = false;
var outputData = [];
$(".extra-field").map((index, elem) => {
var fieldName = isVehicle ? '#addVehicleModalContent .extra-field,#editVehicleModalContent .extra-field' : '.extra-field:not(#addVehicleModalContent .extra-field, #editVehicleModalContent .extra-field)';
$(`${fieldName}`).map((index, elem) => {
var extraFieldName = $(elem).children("label").text();
var extraFieldInput = $(elem).children("input");
var extraFieldValue = extraFieldInput.val();