From 04f90ae6a8490f6e36fa90a87c63b132db25bbed Mon Sep 17 00:00:00 2001 From: "DESKTOP-T0O5CDB\\DESK-555BD" Date: Fri, 16 Feb 2024 13:55:22 -0700 Subject: [PATCH] Added Distance Traveled Chart --- Controllers/VehicleController.cs | 13 ++++- Helper/ReportHelper.cs | 32 +++++++++-- Models/Report/CostForVehicleByMonth.cs | 3 ++ Views/Home/_Settings.cshtml | 2 +- Views/Vehicle/_GasCostByMonthReport.cshtml | 26 +++++++-- Views/Vehicle/_Report.cshtml | 63 +++++++++++++++------- wwwroot/defaults/en_US.json | 2 +- wwwroot/js/reports.js | 3 ++ 8 files changed, 113 insertions(+), 31 deletions(-) diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index c45e55d..692b909 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -890,6 +890,7 @@ namespace CarCareTracker.Controllers var collisionRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId); var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId); + var odometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); var viewModel = new ReportViewModel(); //get totalCostMakeUp viewModel.CostMakeUpForVehicle = new CostMakeUpForVehicle @@ -907,10 +908,12 @@ namespace CarCareTracker.Controllers allCosts.AddRange(_reportHelper.GetUpgradeRecordSum(upgradeRecords, 0)); allCosts.AddRange(_reportHelper.GetGasRecordSum(gasRecords, 0)); allCosts.AddRange(_reportHelper.GetTaxRecordSum(taxRecords, 0)); + allCosts.AddRange(_reportHelper.GetOdometerRecordSum(odometerRecords, 0)); viewModel.CostForVehicleByMonth = allCosts.GroupBy(x => new { x.MonthName, x.MonthId }).OrderBy(x => x.Key.MonthId).Select(x => new CostForVehicleByMonth { MonthName = x.Key.MonthName, - Cost = x.Sum(y => y.Cost) + Cost = x.Sum(y => y.Cost), + DistanceTraveled = x.Any(y=>y.MinMileage != default) ? x.Max(y=>y.MaxMileage) - x.Where(y=>y.MinMileage != default).Min(y=>y.MinMileage) : 0 }).ToList(); //get reminders var reminders = GetRemindersAndUrgency(vehicleId, DateTime.Now); @@ -1239,10 +1242,16 @@ namespace CarCareTracker.Controllers var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId); allCosts.AddRange(_reportHelper.GetTaxRecordSum(taxRecords, year)); } + if (selectedMetrics.Contains(ImportMode.OdometerRecord)) + { + var odometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId); + allCosts.AddRange(_reportHelper.GetOdometerRecordSum(odometerRecords, year)); + } var groupedRecord = allCosts.GroupBy(x => new { x.MonthName, x.MonthId }).OrderBy(x => x.Key.MonthId).Select(x => new CostForVehicleByMonth { MonthName = x.Key.MonthName, - Cost = x.Sum(y => y.Cost) + Cost = x.Sum(y => y.Cost), + DistanceTraveled = x.Any(y => y.MinMileage != default) ? x.Max(y => y.MaxMileage) - x.Where(y => y.MinMileage != default).Min(y => y.MinMileage) : 0 }).ToList(); return PartialView("_GasCostByMonthReport", groupedRecord); } diff --git a/Helper/ReportHelper.cs b/Helper/ReportHelper.cs index 85e82d6..1457942 100644 --- a/Helper/ReportHelper.cs +++ b/Helper/ReportHelper.cs @@ -5,6 +5,7 @@ namespace CarCareTracker.Helper { public interface IReportHelper { + IEnumerable GetOdometerRecordSum(List odometerRecords, int year = 0); IEnumerable GetServiceRecordSum(List serviceRecords, int year = 0); IEnumerable GetRepairRecordSum(List repairRecords, int year = 0); IEnumerable GetUpgradeRecordSum(List upgradeRecords, int year = 0); @@ -13,6 +14,21 @@ namespace CarCareTracker.Helper } public class ReportHelper: IReportHelper { + public IEnumerable GetOdometerRecordSum(List odometerRecords, int year = 0) + { + if (year != default) + { + odometerRecords.RemoveAll(x => x.Date.Year != year); + } + return odometerRecords.GroupBy(x => x.Date.Month).OrderBy(x => x.Key).Select(x => new CostForVehicleByMonth + { + MonthId = x.Key, + MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), + Cost = 0, + MaxMileage = x.Max(y => y.Mileage), + MinMileage = x.Min(y => y.Mileage) + }); + } public IEnumerable GetServiceRecordSum(List serviceRecords, int year = 0) { if (year != default) @@ -23,7 +39,9 @@ namespace CarCareTracker.Helper { MonthId = x.Key, MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = x.Sum(y => y.Cost) + Cost = x.Sum(y => y.Cost), + MaxMileage = x.Max(y=>y.Mileage), + MinMileage = x.Min(y=>y.Mileage) }); } public IEnumerable GetRepairRecordSum(List repairRecords, int year = 0) @@ -36,7 +54,9 @@ namespace CarCareTracker.Helper { MonthId = x.Key, MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = x.Sum(y => y.Cost) + Cost = x.Sum(y => y.Cost), + MaxMileage = x.Max(y => y.Mileage), + MinMileage = x.Min(y => y.Mileage) }); } public IEnumerable GetUpgradeRecordSum(List upgradeRecords, int year = 0) @@ -49,7 +69,9 @@ namespace CarCareTracker.Helper { MonthId = x.Key, MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = x.Sum(y => y.Cost) + Cost = x.Sum(y => y.Cost), + MaxMileage = x.Max(y => y.Mileage), + MinMileage = x.Min(y => y.Mileage) }); } public IEnumerable GetGasRecordSum(List gasRecords, int year = 0) @@ -62,7 +84,9 @@ namespace CarCareTracker.Helper { MonthId = x.Key, MonthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(x.Key), - Cost = x.Sum(y => y.Cost) + Cost = x.Sum(y => y.Cost), + MaxMileage = x.Max(y => y.Mileage), + MinMileage = x.Min(y => y.Mileage) }); } public IEnumerable GetTaxRecordSum(List taxRecords, int year = 0) diff --git a/Models/Report/CostForVehicleByMonth.cs b/Models/Report/CostForVehicleByMonth.cs index 654b4cc..83549b4 100644 --- a/Models/Report/CostForVehicleByMonth.cs +++ b/Models/Report/CostForVehicleByMonth.cs @@ -5,5 +5,8 @@ public int MonthId { get; set; } public string MonthName { get; set; } public decimal Cost { get; set; } + public int MaxMileage { get; set; } + public int MinMileage { get; set; } + public int DistanceTraveled { get; set; } } } diff --git a/Views/Home/_Settings.cshtml b/Views/Home/_Settings.cshtml index 16a504c..c1286c3 100644 --- a/Views/Home/_Settings.cshtml +++ b/Views/Home/_Settings.cshtml @@ -201,7 +201,7 @@
- Version 1.1.9 + Version 1.2.0

Proudly developed in the rural town of Price, Utah by Hargata Softworks. diff --git a/Views/Vehicle/_GasCostByMonthReport.cshtml b/Views/Vehicle/_GasCostByMonthReport.cshtml index a99a8b0..33f15e2 100644 --- a/Views/Vehicle/_GasCostByMonthReport.cshtml +++ b/Views/Vehicle/_GasCostByMonthReport.cshtml @@ -8,7 +8,7 @@ var barGraphColors = new string[] { "#00876c", "#43956e", "#67a371", "#89b177", "#a9be80", "#c8cb8b", "#e6d79b", "#e4c281", "#e3ab6b", "#e2925b", "#e07952", "#db5d4f" }; var sortedByMPG = Model.OrderBy(x => x.Cost).ToList(); } -@if (Model.Where(x=>x.Cost > 0).Any()) +@if (Model.Where(x=>x.Cost > 0).Any() || Model.Where(x=>x.DistanceTraveled > 0).Any()) {