mirror of
https://github.com/hargata/lubelog.git
synced 2025-12-10 00:46:08 -06:00
Allow users to select any extra field as vehicle identifier.
This commit is contained in:
parent
e3dccf0182
commit
23f97ebd46
@ -75,7 +75,8 @@ namespace CarCareTracker.Controllers
|
||||
OdometerOptional = x.OdometerOptional,
|
||||
ExtraFields = x.ExtraFields,
|
||||
Tags = x.Tags,
|
||||
DashboardMetrics = x.DashboardMetrics
|
||||
DashboardMetrics = x.DashboardMetrics,
|
||||
VehicleIdentifier = x.VehicleIdentifier
|
||||
};
|
||||
//dashboard metrics
|
||||
if (x.DashboardMetrics.Any())
|
||||
@ -122,7 +123,7 @@ namespace CarCareTracker.Controllers
|
||||
if (vehicleReminders.Any())
|
||||
{
|
||||
var reminderUrgency = _reminderHelper.GetReminderRecordViewModels(vehicleReminders, 0, DateTime.Now);
|
||||
reminderUrgency = reminderUrgency.Select(x => new ReminderRecordViewModel { Id = x.Id, Date = x.Date, Urgency = x.Urgency, Description = $"{vehicle.Year} {vehicle.Make} {vehicle.Model} #{vehicle.LicensePlate} - {x.Description}" }).ToList();
|
||||
reminderUrgency = reminderUrgency.Select(x => new ReminderRecordViewModel { Id = x.Id, Date = x.Date, Urgency = x.Urgency, Description = $"{vehicle.Year} {vehicle.Make} {vehicle.Model} #{StaticHelper.GetVehicleIdentifier(vehicle)} - {x.Description}" }).ToList();
|
||||
reminders.AddRange(reminderUrgency);
|
||||
}
|
||||
}
|
||||
|
||||
@ -109,7 +109,7 @@ namespace CarCareTracker.Helper
|
||||
string emailSubject = $"Vehicle Reminders From LubeLogger - {DateTime.Now.ToShortDateString()}";
|
||||
//construct html table.
|
||||
string emailBody = File.ReadAllText(emailTemplatePath);
|
||||
emailBody = emailBody.Replace("{VehicleInformation}", $"{vehicle.Year} {vehicle.Make} {vehicle.Model} #{vehicle.LicensePlate}");
|
||||
emailBody = emailBody.Replace("{VehicleInformation}", $"{vehicle.Year} {vehicle.Make} {vehicle.Model} #{StaticHelper.GetVehicleIdentifier(vehicle)}");
|
||||
string tableBody = "";
|
||||
foreach(ReminderRecordViewModel reminder in reminders)
|
||||
{
|
||||
|
||||
@ -298,6 +298,40 @@ namespace CarCareTracker.Helper
|
||||
return "bi-file-bar-graph";
|
||||
}
|
||||
}
|
||||
public static string GetVehicleIdentifier(Vehicle vehicle)
|
||||
{
|
||||
if (vehicle.VehicleIdentifier == "LicensePlate")
|
||||
{
|
||||
return vehicle.LicensePlate;
|
||||
} else
|
||||
{
|
||||
if (vehicle.ExtraFields.Any(x=>x.Name == vehicle.VehicleIdentifier))
|
||||
{
|
||||
return vehicle.ExtraFields?.FirstOrDefault(x=>x.Name == vehicle.VehicleIdentifier)?.Value;
|
||||
} else
|
||||
{
|
||||
return "N/A";
|
||||
}
|
||||
}
|
||||
}
|
||||
public static string GetVehicleIdentifier(VehicleViewModel vehicle)
|
||||
{
|
||||
if (vehicle.VehicleIdentifier == "LicensePlate")
|
||||
{
|
||||
return vehicle.LicensePlate;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (vehicle.ExtraFields.Any(x => x.Name == vehicle.VehicleIdentifier))
|
||||
{
|
||||
return vehicle.ExtraFields?.FirstOrDefault(x => x.Name == vehicle.VehicleIdentifier)?.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
return "N/A";
|
||||
}
|
||||
}
|
||||
}
|
||||
//CSV Write Methods
|
||||
public static void WriteGenericRecordExportModel(CsvWriter _csv, IEnumerable<GenericRecordExportModel> genericRecords)
|
||||
{
|
||||
|
||||
@ -28,5 +28,9 @@
|
||||
/// </summary>
|
||||
public string OdometerDifference { get; set; } = "0";
|
||||
public List<DashboardMetric> DashboardMetrics { get; set; } = new List<DashboardMetric>();
|
||||
/// <summary>
|
||||
/// Determines what is displayed in place of the license plate.
|
||||
/// </summary>
|
||||
public string VehicleIdentifier { get; set; } = "LicensePlate";
|
||||
}
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
public bool OdometerOptional { get; set; } = false;
|
||||
public List<ExtraField> ExtraFields { get; set; } = new List<ExtraField>();
|
||||
public List<string> Tags { get; set; } = new List<string>();
|
||||
public string VehicleIdentifier { get; set; } = "LicensePlate";
|
||||
//Dashboard Metric Attributes
|
||||
public List<DashboardMetric> DashboardMetrics { get; set; } = new List<DashboardMetric>();
|
||||
public int LastReportedMileage { get; set; }
|
||||
|
||||
@ -76,7 +76,7 @@
|
||||
<h5 class="card-title text-truncate garage-item-year" data-unit="@vehicle.Year">@($"{vehicle.Year}")</h5>
|
||||
<h5 class="card-title text-truncate">@($"{vehicle.Make}")</h5>
|
||||
<h5 class="card-title text-truncate">@($"{vehicle.Model}")</h5>
|
||||
<p class="card-text text-truncate">@vehicle.LicensePlate</p>
|
||||
<p class="card-text text-truncate">@StaticHelper.GetVehicleIdentifier(vehicle)</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
}
|
||||
@model Vehicle
|
||||
@{
|
||||
ViewData["Title"] = $"{Model.Year} {Model.Make} {Model.Model} ({Model.LicensePlate})";
|
||||
ViewData["Title"] = $"{Model.Year} {Model.Make} {Model.Model} ({StaticHelper.GetVehicleIdentifier(Model)})";
|
||||
}
|
||||
@section Scripts {
|
||||
<script src="~/js/vehicle.js?v=@StaticHelper.VersionNumber"></script>
|
||||
@ -72,7 +72,7 @@
|
||||
<div class="row">
|
||||
<div class="d-flex justify-content-between">
|
||||
<button onclick="returnToGarage()" class="lubelogger-tab btn btn-secondary btn-md mt-1 mb-1"><i class="bi bi-arrow-left-square"></i></button>
|
||||
<h1 class="text-truncate display-4">@($"{Model.Year} {Model.Make} {Model.Model}")<small class="text-body-secondary">@($"(#{Model.LicensePlate})")</small></h1>
|
||||
<h1 class="text-truncate display-4">@($"{Model.Year} {Model.Make} {Model.Model}")<small class="text-body-secondary">@($"(#{StaticHelper.GetVehicleIdentifier(Model)})")</small></h1>
|
||||
<button onclick="editVehicle(@Model.Id)" class="lubelogger-tab btn btn-warning btn-md mt-1 mb-1"><i class="bi bi-pencil-square"></i></button>
|
||||
<div class="lubelogger-navbar-button">
|
||||
<button type="button" class="btn btn-adaptive" onclick="showMobileNav()"><i class="bi bi-list lubelogger-menu-icon"></i></button>
|
||||
|
||||
@ -21,9 +21,21 @@
|
||||
<li class="list-group-item">
|
||||
<span class="display-6">@($"{Model.VehicleData.Year} {Model.VehicleData.Make} {Model.VehicleData.Model}")</span>
|
||||
</li>
|
||||
<li class="list-group-item">
|
||||
<span class="lead">@Model.VehicleData.LicensePlate</span>
|
||||
</li>
|
||||
@if (!string.IsNullOrWhiteSpace(Model.VehicleData.LicensePlate))
|
||||
{
|
||||
<li class="list-group-item">
|
||||
<span class="lead">@Model.VehicleData.LicensePlate</span>
|
||||
</li>
|
||||
}
|
||||
@foreach(ExtraField extraField in Model.VehicleData.ExtraFields)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(extraField.Value))
|
||||
{
|
||||
<li class="list-group-item">
|
||||
<span class="lead">@($"{extraField.Name}: {extraField.Value}")</span>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
<li class="list-group-item">
|
||||
<div class="row">
|
||||
<div class="col-4">
|
||||
|
||||
@ -44,10 +44,18 @@
|
||||
<input type="text" id="@elementId" class="form-control @(field.IsRequired ? "extra-field-required" : "")" placeholder="@field.Name" value="@field.Value">
|
||||
</div>
|
||||
}
|
||||
<label for="inputIdentifier">@translator.Translate(userLanguage, "Identifier")</label>
|
||||
<select class="form-select" id="inputIdentifier" )>
|
||||
<!option value="LicensePlate" @(Model.VehicleIdentifier == "LicensePlate" ? "selected" : "")>@translator.Translate(userLanguage, "License Plate")</!option>
|
||||
@foreach(ExtraField field in Model.ExtraFields)
|
||||
{
|
||||
<!option value="@field.Name" @(Model.VehicleIdentifier == field.Name ? "selected" : "")>@field.Name</!option>
|
||||
}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-12 col-md-6">
|
||||
<label for="inputFuelType">@translator.Translate(userLanguage, "Fuel Type")</label>
|
||||
<select class="form-select" onchange="checkCustomMonthInterval()" id="inputFuelType")>
|
||||
<select class="form-select" id="inputFuelType")>
|
||||
<!option value="Gasoline" @(!Model.IsDiesel && !Model.IsElectric ? "selected" : "")>@translator.Translate(userLanguage, "Gasoline")</!option>
|
||||
<!option value="Diesel" @(Model.IsDiesel ? "selected" : "")>@translator.Translate(userLanguage, "Diesel")</!option>
|
||||
<!option value="Electric" @(Model.IsElectric ? "selected" : "")>@translator.Translate(userLanguage, "Electric")</!option>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -49,6 +49,7 @@ function saveVehicle(isEdit) {
|
||||
var vehicleOdometerDifference = parseInt(globalParseFloat($("#inputOdometerDifference").val())).toString();
|
||||
var vehiclePurchasePrice = $("#inputPurchasePrice").val();
|
||||
var vehicleSoldPrice = $("#inputSoldPrice").val();
|
||||
var vehicleIdentifier = $("#inputIdentifier").val();
|
||||
var vehicleDashboardMetrics = $("#collapseMetricInfo :checked").map(function () {
|
||||
return this.value;
|
||||
}).toArray();
|
||||
@ -76,12 +77,26 @@ function saveVehicle(isEdit) {
|
||||
} else {
|
||||
$("#inputModel").removeClass("is-invalid");
|
||||
}
|
||||
if (vehicleLicensePlate.trim() == '') {
|
||||
hasError = true;
|
||||
$("#inputLicensePlate").addClass("is-invalid");
|
||||
if (vehicleIdentifier == "LicensePlate") {
|
||||
if (vehicleLicensePlate.trim() == '') {
|
||||
hasError = true;
|
||||
$("#inputLicensePlate").addClass("is-invalid");
|
||||
} else {
|
||||
$("#inputLicensePlate").removeClass("is-invalid");
|
||||
}
|
||||
} else {
|
||||
$("#inputLicensePlate").removeClass("is-invalid");
|
||||
//check if extra fields have value.
|
||||
var vehicleIdentifierExtraField = extraFields.extraFields.filter(x => x.name == vehicleIdentifier);
|
||||
//check if extra field exists.
|
||||
if (vehicleIdentifierExtraField.length == 0) {
|
||||
$(".modal.fade.show").find(`.extra-field [placeholder='${vehicleIdentifier}']`).addClass("is-invalid");
|
||||
hasError = true;
|
||||
} else {
|
||||
$(".modal.fade.show").find(`.extra-field [placeholder='${vehicleIdentifier}']`).removeClass("is-invalid");
|
||||
}
|
||||
}
|
||||
|
||||
if (vehicleHasOdometerAdjustment) {
|
||||
//validate odometer adjustments
|
||||
//validate multiplier
|
||||
@ -136,7 +151,8 @@ function saveVehicle(isEdit) {
|
||||
odometerDifference: vehicleOdometerDifference,
|
||||
purchasePrice: vehiclePurchasePrice,
|
||||
soldPrice: vehicleSoldPrice,
|
||||
dashboardMetrics: vehicleDashboardMetrics
|
||||
dashboardMetrics: vehicleDashboardMetrics,
|
||||
vehicleIdentifier: vehicleIdentifier
|
||||
}, function (data) {
|
||||
if (data) {
|
||||
if (!isEdit) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user