mirror of
https://github.com/hargata/lubelog.git
synced 2026-02-03 17:53:02 -06:00
add missing record types to attachment export
This commit is contained in:
parent
21384f2213
commit
4509eff284
@ -577,6 +577,24 @@ namespace CarCareTracker.Controllers
|
|||||||
}
|
}
|
||||||
return PartialView("_VehicleSelector", vehiclesStored);
|
return PartialView("_VehicleSelector", vehiclesStored);
|
||||||
}
|
}
|
||||||
|
public ActionResult GetVehicleSelectorOdometer(int vehicleId)
|
||||||
|
{
|
||||||
|
var vehiclesStored = _dataAccess.GetVehicles();
|
||||||
|
if (!User.IsInRole(nameof(UserData.IsRootUser)))
|
||||||
|
{
|
||||||
|
vehiclesStored = _userLogic.FilterUserVehicles(vehiclesStored, GetUserID());
|
||||||
|
}
|
||||||
|
if (vehicleId != default)
|
||||||
|
{
|
||||||
|
vehiclesStored.RemoveAll(x => x.Id == vehicleId);
|
||||||
|
}
|
||||||
|
var userConfig = _config.GetUserConfig(User);
|
||||||
|
if (userConfig.HideSoldVehicles)
|
||||||
|
{
|
||||||
|
vehiclesStored.RemoveAll(x => !string.IsNullOrWhiteSpace(x.SoldDate));
|
||||||
|
}
|
||||||
|
return PartialView("_VehicleSelectorOdometer", vehiclesStored);
|
||||||
|
}
|
||||||
[Authorize(Roles = nameof(UserData.IsRootUser))]
|
[Authorize(Roles = nameof(UserData.IsRootUser))]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetCustomWidgetEditor()
|
public IActionResult GetCustomWidgetEditor()
|
||||||
|
|||||||
@ -431,6 +431,50 @@ namespace CarCareTracker.Controllers
|
|||||||
Files = x.Files
|
Files = x.Files
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
if (exportTabs.Contains(ImportMode.PlanRecord))
|
||||||
|
{
|
||||||
|
var records = _planRecordDataAccess.GetPlanRecordsByVehicleId(vehicleId).Where(x => x.Files.Any());
|
||||||
|
attachmentData.AddRange(records.Select(x => new GenericReportModel
|
||||||
|
{
|
||||||
|
DataType = ImportMode.PlanRecord,
|
||||||
|
Date = x.DateCreated,
|
||||||
|
Odometer = 0,
|
||||||
|
Files = x.Files
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
if (exportTabs.Contains(ImportMode.SupplyRecord))
|
||||||
|
{
|
||||||
|
var records = _supplyRecordDataAccess.GetSupplyRecordsByVehicleId(vehicleId).Where(x => x.Files.Any());
|
||||||
|
attachmentData.AddRange(records.Select(x => new GenericReportModel
|
||||||
|
{
|
||||||
|
DataType = ImportMode.SupplyRecord,
|
||||||
|
Date = x.Date,
|
||||||
|
Odometer = 0,
|
||||||
|
Files = x.Files
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
if (exportTabs.Contains(ImportMode.InspectionRecord))
|
||||||
|
{
|
||||||
|
var records = _inspectionRecordDataAccess.GetInspectionRecordsByVehicleId(vehicleId).Where(x => x.Files.Any());
|
||||||
|
attachmentData.AddRange(records.Select(x => new GenericReportModel
|
||||||
|
{
|
||||||
|
DataType = ImportMode.InspectionRecord,
|
||||||
|
Date = x.Date,
|
||||||
|
Odometer = x.Mileage,
|
||||||
|
Files = x.Files
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
if (exportTabs.Contains(ImportMode.EquipmentRecord))
|
||||||
|
{
|
||||||
|
var records = _equipmentRecordDataAccess.GetEquipmentRecordsByVehicleId(vehicleId).Where(x => x.Files.Any());
|
||||||
|
attachmentData.AddRange(records.Select(x => new GenericReportModel
|
||||||
|
{
|
||||||
|
DataType = ImportMode.EquipmentRecord,
|
||||||
|
Date = DateTime.Now,
|
||||||
|
Odometer = 0,
|
||||||
|
Files = x.Files
|
||||||
|
}));
|
||||||
|
}
|
||||||
if (attachmentData.Any())
|
if (attachmentData.Any())
|
||||||
{
|
{
|
||||||
attachmentData = attachmentData.OrderBy(x => x.Date).ThenBy(x => x.Odometer).ToList();
|
attachmentData = attachmentData.OrderBy(x => x.Date).ThenBy(x => x.Odometer).ToList();
|
||||||
@ -782,5 +826,10 @@ namespace CarCareTracker.Controllers
|
|||||||
var widgets = _fileHelper.GetWidgets();
|
var widgets = _fileHelper.GetWidgets();
|
||||||
return PartialView("_ReportWidgets", widgets);
|
return PartialView("_ReportWidgets", widgets);
|
||||||
}
|
}
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult GetImportModeSelector()
|
||||||
|
{
|
||||||
|
return PartialView("_ImportModeSelector");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
32
Views/Home/_VehicleSelectorOdometer.cshtml
Normal file
32
Views/Home/_VehicleSelectorOdometer.cshtml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
@inject IConfigHelper config
|
||||||
|
@inject ITranslationHelper translator
|
||||||
|
@using CarCareTracker.Helper
|
||||||
|
@model List<Vehicle>
|
||||||
|
|
||||||
|
@{
|
||||||
|
var userLanguage = config.GetUserConfig(User).UserLanguage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (Model.Any())
|
||||||
|
{
|
||||||
|
<div id="vehicleSelector">
|
||||||
|
<ul class="list-group">
|
||||||
|
@foreach (Vehicle vehicle in Model)
|
||||||
|
{
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="@vehicle.Id" id="vehicleCheck_@vehicle.Id">
|
||||||
|
<label class="form-check-label stretched-link" for="vehicleCheck_@vehicle.Id">@($"{vehicle.Year} {vehicle.Make} {vehicle.Model} ({StaticHelper.GetVehicleIdentifier(vehicle)})")</label>
|
||||||
|
</li>
|
||||||
|
}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="mt-2">
|
||||||
|
<div class="form-check form-check-inline">
|
||||||
|
<input type="checkbox" id="checkShiftOdometer" class="form-check-input me-1" />
|
||||||
|
<label for="checkShiftOdometer" class="form-check-label">@translator.Translate(userLanguage, "Shift Odometer")</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
<div id="vehicleSelector"><span class="lead">@translator.Translate(userLanguage, "No Vehicles Available")</span></div>
|
||||||
|
}
|
||||||
56
Views/Vehicle/_ImportModeSelector.cshtml
Normal file
56
Views/Vehicle/_ImportModeSelector.cshtml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
@inject IConfigHelper config
|
||||||
|
@inject ITranslationHelper translator
|
||||||
|
@using CarCareTracker.Helper
|
||||||
|
|
||||||
|
@{
|
||||||
|
var userLanguage = config.GetUserConfig(User).UserLanguage;
|
||||||
|
}
|
||||||
|
|
||||||
|
<div id="attachmentTabs">
|
||||||
|
<ul class="list-group">
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="PlanRecord" id="exportPlanRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportPlanRecord">@translator.Translate(userLanguage, "Planner")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="OdometerRecord" id="exportOdometerRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportOdometerRecord">@translator.Translate(userLanguage, "Odometer")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="ServiceRecord" id="exportServiceRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportServiceRecord">@translator.Translate(userLanguage, "Service Records")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="RepairRecord" id="exportRepairRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportRepairRecord">@translator.Translate(userLanguage, "Repairs")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="UpgradeRecord" id="exportUpgradeRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportUpgradeRecord">@translator.Translate(userLanguage, "Upgrades")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="GasRecord" id="exportGasRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportGasRecord">@translator.Translate(userLanguage, "Fuel")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="SupplyRecord" id="exportSupplyRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportSupplyRecord">@translator.Translate(userLanguage, "Supplies")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="TaxRecord" id="exportTaxRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportTaxRecord">@translator.Translate(userLanguage, "Taxes")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="NoteRecord" id="exportNoteRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportNoteRecord">@translator.Translate(userLanguage, "Notes")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="InspectionRecord" id="exportInspectionRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportInspectionRecord">@translator.Translate(userLanguage, "Inspections")</label>
|
||||||
|
</li>
|
||||||
|
<li class="list-group-item text-start">
|
||||||
|
<input class="form-check-input" type="checkbox" value="EquipmentRecord" id="exportEquipmentRecord">
|
||||||
|
<label class="form-check-label stretched-link" for="exportEquipmentRecord">@translator.Translate(userLanguage, "Equipment")</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
File diff suppressed because one or more lines are too long
@ -404,17 +404,12 @@ function duplicateDistanceToOtherVehicles(ids) {
|
|||||||
if (ids.length == 0) {
|
if (ids.length == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$.get(`/Home/GetVehicleSelector?vehicleId=${GetVehicleId().vehicleId}`, function (data) {
|
$.get(`/Home/GetVehicleSelectorOdometer?vehicleId=${GetVehicleId().vehicleId}`, function (data) {
|
||||||
if (data) {
|
if (data) {
|
||||||
let appendHtml = data + `<div class='mt-2'>
|
|
||||||
<div class='form-check form-check-inline'>
|
|
||||||
<input type="checkbox" id="checkShiftOdometer" class="form-check-input me-1">
|
|
||||||
<label for="checkShiftOdometer" class='form-check-label'>Shift Odometer</label>
|
|
||||||
</div>`
|
|
||||||
//prompt user to select a vehicle
|
//prompt user to select a vehicle
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
title: 'Duplicate Distance to Vehicle(s)',
|
title: 'Duplicate Distance to Vehicle(s)',
|
||||||
html: appendHtml,
|
html: data,
|
||||||
confirmButtonText: 'Duplicate',
|
confirmButtonText: 'Duplicate',
|
||||||
focusConfirm: false,
|
focusConfirm: false,
|
||||||
preConfirm: () => {
|
preConfirm: () => {
|
||||||
|
|||||||
@ -321,64 +321,35 @@ function refreshCollaborators() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
function exportAttachments() {
|
function exportAttachments() {
|
||||||
Swal.fire({
|
$.get(`/Vehicle/GetImportModeSelector?vehicleId=${GetVehicleId().vehicleId}`, function (selectorData) {
|
||||||
title: 'Export Attachments',
|
Swal.fire({
|
||||||
html: `
|
title: 'Export Attachments',
|
||||||
<div id='attachmentTabs'>
|
html: selectorData,
|
||||||
<div class='form-check form-check-inline'>
|
confirmButtonText: 'Export',
|
||||||
<input type="checkbox" id="exportServiceRecord" class="form-check-input me-1" value='ServiceRecord'>
|
showCancelButton: true,
|
||||||
<label for="exportServiceRecord" class='form-check-label'>Service Record</label>
|
focusConfirm: false,
|
||||||
</div>
|
preConfirm: () => {
|
||||||
<div class='form-check form-check-inline'>
|
var selectedExportTabs = $("#attachmentTabs :checked").map(function () {
|
||||||
<input type="checkbox" id="exportRepairRecord" class="form-check-input me-1" value='RepairRecord'>
|
return this.value;
|
||||||
<label for="exportRepairRecord" class='form-check-label'>Repairs</label>
|
});
|
||||||
</div>
|
if (selectedExportTabs.toArray().length == 0) {
|
||||||
<div class='form-check form-check-inline'>
|
Swal.showValidationMessage(`Please make at least one selection`)
|
||||||
<input type="checkbox" id="exportUpgradeRecord" class="form-check-input me-1" value='UpgradeRecord'>
|
|
||||||
<label for="exportUpgradeRecord" class='form-check-label'>Upgrades</label>
|
|
||||||
</div>
|
|
||||||
<div class='form-check form-check-inline'>
|
|
||||||
<input type="checkbox" id="exportGasRecord" class="form-check-input me-1" value='GasRecord'>
|
|
||||||
<label for="exportGasRecord" class='form-check-label'>Fuel</label>
|
|
||||||
</div>
|
|
||||||
<div class='form-check form-check-inline'>
|
|
||||||
<input type="checkbox" id="exportTaxRecord" class="form-check-input me-1" value='TaxRecord'>
|
|
||||||
<label for="exportTaxRecord" class='form-check-label'>Taxes</label>
|
|
||||||
</div>
|
|
||||||
<div class='form-check form-check-inline'>
|
|
||||||
<input type="checkbox" id="exportOdometerRecord" class="form-check-input me-1" value='OdometerRecord'>
|
|
||||||
<label for="exportOdometerRecord" class='form-check-label'>Odometer</label>
|
|
||||||
</div>
|
|
||||||
<div class='form-check form-check-inline'>
|
|
||||||
<input type="checkbox" id="exportNoteRecord" class="form-check-input me-1" value='NoteRecord'>
|
|
||||||
<label for="exportNoteRecord" class='form-check-label'>Notes</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
`,
|
|
||||||
confirmButtonText: 'Export',
|
|
||||||
showCancelButton: true,
|
|
||||||
focusConfirm: false,
|
|
||||||
preConfirm: () => {
|
|
||||||
var selectedExportTabs = $("#attachmentTabs :checked").map(function () {
|
|
||||||
return this.value;
|
|
||||||
});
|
|
||||||
if (selectedExportTabs.toArray().length == 0) {
|
|
||||||
Swal.showValidationMessage(`Please make at least one selection`)
|
|
||||||
}
|
|
||||||
return { selectedTabs: selectedExportTabs.toArray() }
|
|
||||||
},
|
|
||||||
}).then(function (result) {
|
|
||||||
if (result.isConfirmed) {
|
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
|
||||||
$.post('/Vehicle/GetVehicleAttachments', { vehicleId: vehicleId, exportTabs: result.value.selectedTabs }, function (data) {
|
|
||||||
if (data.success) {
|
|
||||||
window.location.href = data.message;
|
|
||||||
} else {
|
|
||||||
errorToast(data.message);
|
|
||||||
}
|
}
|
||||||
})
|
return { selectedTabs: selectedExportTabs.toArray() }
|
||||||
}
|
},
|
||||||
});
|
}).then(function (result) {
|
||||||
|
if (result.isConfirmed) {
|
||||||
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
|
$.post('/Vehicle/GetVehicleAttachments', { vehicleId: vehicleId, exportTabs: result.value.selectedTabs }, function (data) {
|
||||||
|
if (data.success) {
|
||||||
|
window.location.href = data.message;
|
||||||
|
} else {
|
||||||
|
errorToast(data.message);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
}
|
}
|
||||||
function showDataTable(elemClicked) {
|
function showDataTable(elemClicked) {
|
||||||
var vehicleId = GetVehicleId().vehicleId;
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user