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] [HttpGet]
public IActionResult AddVehiclePartialView() public IActionResult AddVehiclePartialView()
{ {
return PartialView("_VehicleModal", new Vehicle()); return PartialView("_VehicleModal", new Vehicle() { ExtraFields = _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.VehicleRecord).ExtraFields });
} }
[TypeFilter(typeof(CollaboratorFilter))] [TypeFilter(typeof(CollaboratorFilter))]
[HttpGet] [HttpGet]
public IActionResult GetEditVehiclePartialViewById(int vehicleId) public IActionResult GetEditVehiclePartialViewById(int vehicleId)
{ {
var data = _dataAccess.GetVehicleById(vehicleId); var data = _dataAccess.GetVehicleById(vehicleId);
data.ExtraFields = StaticHelper.AddExtraFields(data.ExtraFields, _extraFieldDataAccess.GetExtraFieldsById((int)ImportMode.VehicleRecord).ExtraFields);
return PartialView("_VehicleModal", data); return PartialView("_VehicleModal", data);
} }
[HttpPost] [HttpPost]

View File

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

View File

@@ -10,6 +10,7 @@
public string LicensePlate { get; set; } public string LicensePlate { get; set; }
public bool IsElectric { get; set; } = false; public bool IsElectric { get; set; } = false;
public bool UseHours { 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>(); 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.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.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.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> </select>
</div> </div>
</div> </div>

View File

@@ -49,6 +49,14 @@
<!option value="@tag">@tag</!option> <!option value="@tag">@tag</!option>
} }
</select> </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)) @if (!string.IsNullOrWhiteSpace(Model.ImageLocation))
{ {
<label for="inputImage">@translator.Translate(userLanguage, "Replace picture(optional)")</label> <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 vehicleLicensePlate = $("#inputLicensePlate").val();
var vehicleIsElectric = $("#inputIsElectric").is(":checked"); var vehicleIsElectric = $("#inputIsElectric").is(":checked");
var vehicleUseHours = $("#inputUseHours").is(":checked"); var vehicleUseHours = $("#inputUseHours").is(":checked");
var extraFields = getAndValidateExtraFields(true);
//validate //validate
var hasError = false; var hasError = false;
if (extraFields.hasError) {
hasError = true;
}
if (vehicleYear.trim() == '' || parseInt(vehicleYear) < 1900) { if (vehicleYear.trim() == '' || parseInt(vehicleYear) < 1900) {
hasError = true; hasError = true;
$("#inputYear").addClass("is-invalid"); $("#inputYear").addClass("is-invalid");
@@ -78,7 +82,8 @@ function saveVehicle(isEdit) {
licensePlate: vehicleLicensePlate, licensePlate: vehicleLicensePlate,
isElectric: vehicleIsElectric, isElectric: vehicleIsElectric,
tags: vehicleTags, tags: vehicleTags,
useHours: vehicleUseHours useHours: vehicleUseHours,
extraFields: extraFields.extraFields
}, function (data) { }, function (data) {
if (data) { if (data) {
if (!isEdit) { if (!isEdit) {
@@ -398,10 +403,11 @@ function showBulkImportModal(mode) {
function hideBulkImportModal() { function hideBulkImportModal() {
$("#bulkImportModal").modal('hide'); $("#bulkImportModal").modal('hide');
} }
function getAndValidateExtraFields() { function getAndValidateExtraFields(isVehicle) {
var hasError = false; var hasError = false;
var outputData = []; 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 extraFieldName = $(elem).children("label").text();
var extraFieldInput = $(elem).children("input"); var extraFieldInput = $(elem).children("input");
var extraFieldValue = extraFieldInput.val(); var extraFieldValue = extraFieldInput.val();