diff --git a/Controllers/VehicleController.cs b/Controllers/VehicleController.cs index ef53271..0d91b77 100644 --- a/Controllers/VehicleController.cs +++ b/Controllers/VehicleController.cs @@ -914,11 +914,11 @@ namespace CarCareTracker.Controllers bool useUKMPG = _config.GetUserConfig(User).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 = 0.00M; + var averageMPG = "0"; var gasViewModels = _gasHelper.GetGasRecordViewModels(gasRecords, useMPG, useUKMPG); if (gasViewModels.Any()) { - averageMPG = gasViewModels.Average(x => x.MilesPerGallon); + averageMPG = _gasHelper.GetAverageGasMileage(gasViewModels); } vehicleHistory.MPG = averageMPG; //insert servicerecords diff --git a/Enum/ReminderMileageInterval.cs b/Enum/ReminderMileageInterval.cs index 1400aaa..ca8f00b 100644 --- a/Enum/ReminderMileageInterval.cs +++ b/Enum/ReminderMileageInterval.cs @@ -2,12 +2,19 @@ { public enum ReminderMileageInterval { + FiftyMiles = 50, + OneHundredMiles = 100, FiveHundredMiles = 500, OneThousandMiles = 1000, ThreeThousandMiles = 3000, + FourThousandMiles = 4000, FiveThousandMiles = 5000, SevenThousandFiveHundredMiles = 7500, TenThousandMiles = 10000, - FiftyThousandMiles = 50000 + TwentyThousandMiles = 20000, + ThirtyThousandMiles = 30000, + FiftyThousandMiles = 50000, + OneHundredThousandMiles = 100000, + OneHundredFiftyThousandMiles = 150000 } } diff --git a/Enum/ReminderMonthInterval.cs b/Enum/ReminderMonthInterval.cs index fb1148e..675949f 100644 --- a/Enum/ReminderMonthInterval.cs +++ b/Enum/ReminderMonthInterval.cs @@ -5,6 +5,8 @@ ThreeMonths = 3, SixMonths = 6, OneYear = 12, + TwoYears = 24, + ThreeYears = 36, FiveYears = 60 } } diff --git a/Helper/GasHelper.cs b/Helper/GasHelper.cs index a9c2a1a..c62c31b 100644 --- a/Helper/GasHelper.cs +++ b/Helper/GasHelper.cs @@ -5,9 +5,23 @@ namespace CarCareTracker.Helper public interface IGasHelper { List GetGasRecordViewModels(List result, bool useMPG, bool useUKMPG); + string GetAverageGasMileage(List results); } public class GasHelper : IGasHelper { + public string GetAverageGasMileage(List results) + { + var recordWithCalculatedMPG = results.Where(x => x.MilesPerGallon > 0); + if (recordWithCalculatedMPG.Any()) + { + var maxMileage = recordWithCalculatedMPG.Max(x => x.Mileage); + var minMileage = recordWithCalculatedMPG.Min(x => x.Mileage); + var totalGallonsConsumed = recordWithCalculatedMPG.Sum(x => x.Gallons); + var averageGasMileage = (maxMileage - minMileage) / totalGallonsConsumed; + return averageGasMileage.ToString("F"); + } + return "0"; + } public List GetGasRecordViewModels(List result, bool useMPG, bool useUKMPG) { var computedResults = new List(); diff --git a/Models/Report/VehicleHistoryViewModel.cs b/Models/Report/VehicleHistoryViewModel.cs index 7b1745b..315b704 100644 --- a/Models/Report/VehicleHistoryViewModel.cs +++ b/Models/Report/VehicleHistoryViewModel.cs @@ -5,7 +5,7 @@ public Vehicle VehicleData { get; set; } public List VehicleHistory { get; set; } public string Odometer { get; set; } - public decimal MPG { get; set; } + public string MPG { get; set; } public decimal TotalCost { get; set; } public decimal TotalGasCost { get; set; } } diff --git a/Views/Vehicle/_Gas.cshtml b/Views/Vehicle/_Gas.cshtml index 279ec88..f254bc0 100644 --- a/Views/Vehicle/_Gas.cshtml +++ b/Views/Vehicle/_Gas.cshtml @@ -1,5 +1,6 @@ @using CarCareTracker.Helper @inject IConfigHelper config +@inject IGasHelper gasHelper @model GasRecordViewModelContainer @{ var userConfig = config.GetUserConfig(User); @@ -40,7 +41,7 @@ @($"# of Gas Records: {Model.GasRecords.Count()}") @if (Model.GasRecords.Where(x => x.MilesPerGallon > 0).Any()) { - @($"Average Fuel Economy: {Model.GasRecords.Where(y => y.MilesPerGallon > 0)?.Average(x => x.MilesPerGallon).ToString("F") ?? "0"}") + @($"Average Fuel Economy: {gasHelper.GetAverageGasMileage(Model.GasRecords)}") @($"Min Fuel Economy: {Model.GasRecords.Where(y => y.MilesPerGallon > 0)?.Min(x => x.MilesPerGallon).ToString("F") ?? "0"}") @($"Max Fuel Economy: {Model.GasRecords.Max(x => x.MilesPerGallon).ToString("F") ?? "0"}") } diff --git a/Views/Vehicle/_PlanRecordItem.cshtml b/Views/Vehicle/_PlanRecordItem.cshtml index 59cd73d..2e11902 100644 --- a/Views/Vehicle/_PlanRecordItem.cshtml +++ b/Views/Vehicle/_PlanRecordItem.cshtml @@ -1,5 +1,5 @@ @model PlanRecord -
+
diff --git a/Views/Vehicle/_ReminderRecordModal.cshtml b/Views/Vehicle/_ReminderRecordModal.cshtml index 4a9a027..e65ab03 100644 --- a/Views/Vehicle/_ReminderRecordModal.cshtml +++ b/Views/Vehicle/_ReminderRecordModal.cshtml @@ -47,19 +47,28 @@
diff --git a/Views/Vehicle/_VehicleHistory.cshtml b/Views/Vehicle/_VehicleHistory.cshtml index 4c4b0ac..2d36af4 100644 --- a/Views/Vehicle/_VehicleHistory.cshtml +++ b/Views/Vehicle/_VehicleHistory.cshtml @@ -56,7 +56,7 @@
  • Last Reported Odometer Reading: @Model.Odometer
  • -
  • Average Fuel Economy: @($"{Model.MPG.ToString("F")} {fuelEconomyUnit}")
  • +
  • Average Fuel Economy: @($"{Model.MPG} {fuelEconomyUnit}")
  • Total Spent(excl. fuel): @Model.TotalCost.ToString("C")
  • Total Spent on Fuel: @Model.TotalGasCost.ToString("C")