From 2434245c845edac34d07806c3aaf512e5f35f272 Mon Sep 17 00:00:00 2001 From: "DESKTOP-GENO133\\IvanPlex" Date: Fri, 12 Jan 2024 07:17:40 -0700 Subject: [PATCH 1/5] added volume for temp folder so that the container can run as non-root user. --- docker-compose.traefik.yml | 2 ++ docker-compose.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docker-compose.traefik.yml b/docker-compose.traefik.yml index d4657d6..398a1f5 100644 --- a/docker-compose.traefik.yml +++ b/docker-compose.traefik.yml @@ -12,6 +12,7 @@ services: - data:/App/data - documents:/App/wwwroot/documents - images:/App/wwwroot/images + - temp:/App/wwwroot/temp - log:/App/log - keys:/root/.aspnet/DataProtection-Keys # expose port and/or use serving via traefik @@ -42,6 +43,7 @@ volumes: data: documents: images: + temp: log: keys: diff --git a/docker-compose.yml b/docker-compose.yml index b5400a7..9d0b709 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,7 @@ services: - data:/App/data - documents:/App/wwwroot/documents - images:/App/wwwroot/images + - temp:/App/wwwroot/temp - log:/App/log - keys:/root/.aspnet/DataProtection-Keys # expose port and/or use serving via traefik @@ -25,5 +26,6 @@ volumes: data: documents: images: + temp: log: keys: From 4d804803a841572bf44d988239ae999d62847ef7 Mon Sep 17 00:00:00 2001 From: "DESKTOP-GENO133\\IvanPlex" Date: Fri, 12 Jan 2024 12:52:01 -0700 Subject: [PATCH 2/5] added front end stuff for consolidated vehicle maintenance record. --- Controllers/VehicleController.cs | 58 +++++++++++++++++ Models/ImportModel.cs | 3 +- Models/Report/GenericReportModel.cs | 15 +++++ Models/Report/VehicleHistoryViewModel.cs | 12 ++++ Views/Vehicle/_GasCostByMonthReport.cshtml | 2 +- Views/Vehicle/_Report.cshtml | 17 ++++- Views/Vehicle/_VehicleHistory.cshtml | 74 ++++++++++++++++++++++ wwwroot/css/site.css | 19 +++++- 8 files changed, 196 insertions(+), 4 deletions(-) create mode 100644 Models/Report/GenericReportModel.cs create mode 100644 Models/Report/VehicleHistoryViewModel.cs create mode 100644 Views/Vehicle/_VehicleHistory.cshtml diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index 0b12a6b..981c075 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -682,6 +682,64 @@ namespace CarCareTracker.Controllers }; return PartialView("_ReminderMakeUpReport", viewModel); } + public IActionResult GetVehicleHistory(int vehicleId) + { + var vehicleHistory = new VehicleHistoryViewModel(); + vehicleHistory.VehicleData = _dataAccess.GetVehicleById(vehicleId); + vehicleHistory.Odometer = GetMaxMileage(vehicleId).ToString("N0"); + List reportData = new List(); + var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId); + var repairRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); + var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); + var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); + var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId); + bool useMPG = bool.Parse(_config[nameof(UserConfig.UseMPG)]); + bool useUKMPG = bool.Parse(_config[nameof(UserConfig.UseUKMPG)]); + vehicleHistory.TotalGasCost = gasRecords.Sum(x => x.Cost); + vehicleHistory.TotalCost = serviceRecords.Sum(x => x.Cost) + repairRecords.Sum(x => x.Cost) + upgradeRecords.Sum(x => x.Cost) + taxRecords.Sum(x => x.Cost); + var averageMPG = _gasHelper.GetGasRecordViewModels(gasRecords, useMPG, useUKMPG).Average(x => x.MilesPerGallon); + vehicleHistory.MPG = averageMPG; + //insert servicerecords + reportData.AddRange(serviceRecords.Select(x => new GenericReportModel + { + Date = x.Date, + Odometer = x.Mileage, + Description = x.Description, + Notes = x.Notes, + Cost = x.Cost, + DataType = ImportMode.ServiceRecord + })); + //repair records + reportData.AddRange(repairRecords.Select(x => new GenericReportModel + { + Date = x.Date, + Odometer = x.Mileage, + Description = x.Description, + Notes = x.Notes, + Cost = x.Cost, + DataType = ImportMode.RepairRecord + })); + reportData.AddRange(upgradeRecords.Select(x => new GenericReportModel + { + Date = x.Date, + Odometer = x.Mileage, + Description = x.Description, + Notes = x.Notes, + Cost = x.Cost, + DataType = ImportMode.UpgradeRecord + })); + reportData.AddRange(taxRecords.Select(x => new GenericReportModel + { + Date = x.Date, + Odometer = 0, + Description = x.Description, + Notes = x.Notes, + Cost = x.Cost, + DataType = ImportMode.TaxRecord + })); + vehicleHistory.VehicleHistory = reportData; + return PartialView("_VehicleHistory", vehicleHistory); + } [HttpPost] public IActionResult GetCostByMonthByVehicle(int vehicleId, List selectedMetrics, int year = 0) { diff --git a/Models/ImportModel.cs b/Models/ImportModel.cs index 5b71fd7..e9ae7e7 100644 --- a/Models/ImportModel.cs +++ b/Models/ImportModel.cs @@ -1,7 +1,7 @@ namespace CarCareTracker.Models { /// - /// Import model used for importing Gas records. + /// Import model used for importing records via CSV. /// public class ImportModel { @@ -16,6 +16,7 @@ public string IsFillToFull { get; set; } public string MissedFuelUp { get; set; } } + public class ServiceRecordExportModel { public string Date { get; set; } diff --git a/Models/Report/GenericReportModel.cs b/Models/Report/GenericReportModel.cs new file mode 100644 index 0000000..c3dcd76 --- /dev/null +++ b/Models/Report/GenericReportModel.cs @@ -0,0 +1,15 @@ +namespace CarCareTracker.Models +{ + /// + /// Generic Model used for vehicle history report. + /// + public class GenericReportModel + { + public ImportMode DataType { get; set; } + public DateTime Date { get; set; } + public int Odometer { get; set; } + public string Description { get; set; } + public string Notes { get; set; } + public decimal Cost { get; set; } + } +} diff --git a/Models/Report/VehicleHistoryViewModel.cs b/Models/Report/VehicleHistoryViewModel.cs new file mode 100644 index 0000000..7b1745b --- /dev/null +++ b/Models/Report/VehicleHistoryViewModel.cs @@ -0,0 +1,12 @@ +namespace CarCareTracker.Models +{ + public class VehicleHistoryViewModel + { + public Vehicle VehicleData { get; set; } + public List VehicleHistory { get; set; } + public string Odometer { get; set; } + public decimal MPG { get; set; } + public decimal TotalCost { get; set; } + public decimal TotalGasCost { get; set; } + } +} diff --git a/Views/Vehicle/_GasCostByMonthReport.cshtml b/Views/Vehicle/_GasCostByMonthReport.cshtml index 8221ec6..8149b15 100644 --- a/Views/Vehicle/_GasCostByMonthReport.cshtml +++ b/Views/Vehicle/_GasCostByMonthReport.cshtml @@ -1,7 +1,7 @@ @model List @if (Model.Any()) { - +