add report header.
This commit is contained in:
@@ -14,14 +14,15 @@ namespace CarCareTracker.Controllers
|
|||||||
{
|
{
|
||||||
//get records
|
//get records
|
||||||
var vehicleData = _dataAccess.GetVehicleById(vehicleId);
|
var vehicleData = _dataAccess.GetVehicleById(vehicleId);
|
||||||
var serviceRecords = _serviceRecordDataAccess.GetServiceRecordsByVehicleId(vehicleId);
|
var vehicleRecords = _vehicleLogic.GetVehicleRecords(vehicleId);
|
||||||
var gasRecords = _gasRecordDataAccess.GetGasRecordsByVehicleId(vehicleId);
|
var serviceRecords = vehicleRecords.ServiceRecords;
|
||||||
var collisionRecords = _collisionRecordDataAccess.GetCollisionRecordsByVehicleId(vehicleId);
|
var gasRecords = vehicleRecords.GasRecords;
|
||||||
var taxRecords = _taxRecordDataAccess.GetTaxRecordsByVehicleId(vehicleId);
|
var collisionRecords = vehicleRecords.CollisionRecords;
|
||||||
var upgradeRecords = _upgradeRecordDataAccess.GetUpgradeRecordsByVehicleId(vehicleId);
|
var taxRecords = vehicleRecords.TaxRecords;
|
||||||
var odometerRecords = _odometerRecordDataAccess.GetOdometerRecordsByVehicleId(vehicleId);
|
var upgradeRecords = vehicleRecords.UpgradeRecords;
|
||||||
|
var odometerRecords = vehicleRecords.OdometerRecords;
|
||||||
var userConfig = _config.GetUserConfig(User);
|
var userConfig = _config.GetUserConfig(User);
|
||||||
var viewModel = new ReportViewModel();
|
var viewModel = new ReportViewModel() { ReportHeaderForVehicle = new ReportHeader() };
|
||||||
//check if custom widgets are configured
|
//check if custom widgets are configured
|
||||||
viewModel.CustomWidgetsConfigured = _fileHelper.WidgetsExist();
|
viewModel.CustomWidgetsConfigured = _fileHelper.WidgetsExist();
|
||||||
//get totalCostMakeUp
|
//get totalCostMakeUp
|
||||||
@@ -91,6 +92,7 @@ namespace CarCareTracker.Controllers
|
|||||||
var mileageData = _gasHelper.GetGasRecordViewModels(gasRecords, userConfig.UseMPG, userConfig.UseUKMPG);
|
var mileageData = _gasHelper.GetGasRecordViewModels(gasRecords, userConfig.UseMPG, userConfig.UseUKMPG);
|
||||||
string preferredFuelMileageUnit = _config.GetUserConfig(User).PreferredGasMileageUnit;
|
string preferredFuelMileageUnit = _config.GetUserConfig(User).PreferredGasMileageUnit;
|
||||||
var fuelEconomyMileageUnit = StaticHelper.GetFuelEconomyUnit(vehicleData.IsElectric, vehicleData.UseHours, userConfig.UseMPG, userConfig.UseUKMPG);
|
var fuelEconomyMileageUnit = StaticHelper.GetFuelEconomyUnit(vehicleData.IsElectric, vehicleData.UseHours, userConfig.UseMPG, userConfig.UseUKMPG);
|
||||||
|
var averageMPG = _gasHelper.GetAverageGasMileage(mileageData, userConfig.UseMPG);
|
||||||
mileageData.RemoveAll(x => x.MilesPerGallon == default);
|
mileageData.RemoveAll(x => x.MilesPerGallon == default);
|
||||||
bool invertedFuelMileageUnit = fuelEconomyMileageUnit == "l/100km" && preferredFuelMileageUnit == "km/l";
|
bool invertedFuelMileageUnit = fuelEconomyMileageUnit == "l/100km" && preferredFuelMileageUnit == "km/l";
|
||||||
var monthlyMileageData = StaticHelper.GetBaseLineCostsNoMonthName();
|
var monthlyMileageData = StaticHelper.GetBaseLineCostsNoMonthName();
|
||||||
@@ -114,6 +116,12 @@ namespace CarCareTracker.Controllers
|
|||||||
monthMileage.Cost = 100 / monthMileage.Cost;
|
monthMileage.Cost = 100 / monthMileage.Cost;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
var newAverageMPG = decimal.Parse(averageMPG, NumberStyles.Any);
|
||||||
|
if (newAverageMPG != 0)
|
||||||
|
{
|
||||||
|
newAverageMPG = 100 / newAverageMPG;
|
||||||
|
}
|
||||||
|
averageMPG = newAverageMPG.ToString("F");
|
||||||
}
|
}
|
||||||
var mpgViewModel = new MPGForVehicleByMonth {
|
var mpgViewModel = new MPGForVehicleByMonth {
|
||||||
CostData = monthlyMileageData,
|
CostData = monthlyMileageData,
|
||||||
@@ -121,6 +129,12 @@ namespace CarCareTracker.Controllers
|
|||||||
SortedCostData = (userConfig.UseMPG || invertedFuelMileageUnit) ? monthlyMileageData.OrderByDescending(x => x.Cost).ToList() : monthlyMileageData.OrderBy(x => x.Cost).ToList()
|
SortedCostData = (userConfig.UseMPG || invertedFuelMileageUnit) ? monthlyMileageData.OrderByDescending(x => x.Cost).ToList() : monthlyMileageData.OrderBy(x => x.Cost).ToList()
|
||||||
};
|
};
|
||||||
viewModel.FuelMileageForVehicleByMonth = mpgViewModel;
|
viewModel.FuelMileageForVehicleByMonth = mpgViewModel;
|
||||||
|
//report header
|
||||||
|
//total cost.
|
||||||
|
viewModel.ReportHeaderForVehicle.TotalCost = _vehicleLogic.GetVehicleTotalCost(vehicleRecords);
|
||||||
|
viewModel.ReportHeaderForVehicle.AverageMPG = $"{averageMPG} {mpgViewModel.Unit}";
|
||||||
|
viewModel.ReportHeaderForVehicle.MaxOdometer = _vehicleLogic.GetMaxMileage(vehicleRecords);
|
||||||
|
viewModel.ReportHeaderForVehicle.DistanceTraveled = odometerRecords.Sum(x => x.DistanceTraveled);
|
||||||
return PartialView("_Report", viewModel);
|
return PartialView("_Report", viewModel);
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
@@ -145,6 +159,60 @@ namespace CarCareTracker.Controllers
|
|||||||
return Json(result);
|
return Json(result);
|
||||||
}
|
}
|
||||||
[TypeFilter(typeof(CollaboratorFilter))]
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult GetSummaryForVehicle(int vehicleId, int year = 0)
|
||||||
|
{
|
||||||
|
var vehicleData = _dataAccess.GetVehicleById(vehicleId);
|
||||||
|
var vehicleRecords = _vehicleLogic.GetVehicleRecords(vehicleId);
|
||||||
|
|
||||||
|
var serviceRecords = vehicleRecords.ServiceRecords;
|
||||||
|
var gasRecords = vehicleRecords.GasRecords;
|
||||||
|
var collisionRecords = vehicleRecords.CollisionRecords;
|
||||||
|
var taxRecords = vehicleRecords.TaxRecords;
|
||||||
|
var upgradeRecords = vehicleRecords.UpgradeRecords;
|
||||||
|
var odometerRecords = vehicleRecords.OdometerRecords;
|
||||||
|
|
||||||
|
if (year != default)
|
||||||
|
{
|
||||||
|
serviceRecords.RemoveAll(x => x.Date.Year != year);
|
||||||
|
gasRecords.RemoveAll(x => x.Date.Year != year);
|
||||||
|
collisionRecords.RemoveAll(x => x.Date.Year != year);
|
||||||
|
taxRecords.RemoveAll(x => x.Date.Year != year);
|
||||||
|
upgradeRecords.RemoveAll(x => x.Date.Year != year);
|
||||||
|
odometerRecords.RemoveAll(x => x.Date.Year != year);
|
||||||
|
}
|
||||||
|
|
||||||
|
var userConfig = _config.GetUserConfig(User);
|
||||||
|
|
||||||
|
var mileageData = _gasHelper.GetGasRecordViewModels(gasRecords, userConfig.UseMPG, userConfig.UseUKMPG);
|
||||||
|
string preferredFuelMileageUnit = _config.GetUserConfig(User).PreferredGasMileageUnit;
|
||||||
|
var fuelEconomyMileageUnit = StaticHelper.GetFuelEconomyUnit(vehicleData.IsElectric, vehicleData.UseHours, userConfig.UseMPG, userConfig.UseUKMPG);
|
||||||
|
var averageMPG = _gasHelper.GetAverageGasMileage(mileageData, userConfig.UseMPG);
|
||||||
|
bool invertedFuelMileageUnit = fuelEconomyMileageUnit == "l/100km" && preferredFuelMileageUnit == "km/l";
|
||||||
|
|
||||||
|
if (invertedFuelMileageUnit)
|
||||||
|
{
|
||||||
|
var newAverageMPG = decimal.Parse(averageMPG, NumberStyles.Any);
|
||||||
|
if (newAverageMPG != 0)
|
||||||
|
{
|
||||||
|
newAverageMPG = 100 / newAverageMPG;
|
||||||
|
}
|
||||||
|
averageMPG = newAverageMPG.ToString("F");
|
||||||
|
}
|
||||||
|
|
||||||
|
var mpgUnit = invertedFuelMileageUnit ? preferredFuelMileageUnit : fuelEconomyMileageUnit;
|
||||||
|
|
||||||
|
var viewModel = new ReportHeader()
|
||||||
|
{
|
||||||
|
TotalCost = _vehicleLogic.GetVehicleTotalCost(vehicleRecords),
|
||||||
|
AverageMPG = $"{averageMPG} {mpgUnit}",
|
||||||
|
MaxOdometer = _vehicleLogic.GetMaxMileage(vehicleRecords),
|
||||||
|
DistanceTraveled = odometerRecords.Sum(x => x.DistanceTraveled)
|
||||||
|
};
|
||||||
|
|
||||||
|
return PartialView("_ReportHeader", viewModel);
|
||||||
|
}
|
||||||
|
[TypeFilter(typeof(CollaboratorFilter))]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult GetCostMakeUpForVehicle(int vehicleId, int year = 0)
|
public IActionResult GetCostMakeUpForVehicle(int vehicleId, int year = 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -5,6 +5,6 @@
|
|||||||
public int MaxOdometer { get; set; }
|
public int MaxOdometer { get; set; }
|
||||||
public int DistanceTraveled { get; set; }
|
public int DistanceTraveled { get; set; }
|
||||||
public decimal TotalCost { get; set; }
|
public decimal TotalCost { get; set; }
|
||||||
public decimal AverageMPG { get; set; }
|
public string AverageMPG { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,23 +7,8 @@
|
|||||||
}
|
}
|
||||||
@model ReportViewModel
|
@model ReportViewModel
|
||||||
<div class="container reportTabContainer">
|
<div class="container reportTabContainer">
|
||||||
<div class="row hideOnPrint">
|
<div class="row hideOnPrint" id="reportHeaderContent">
|
||||||
<div class="col-md-3 col-12 mt-2 text-center">
|
@await Html.PartialAsync("_ReportHeader", Model.ReportHeaderForVehicle)
|
||||||
<span class="lead">@Model.ReportHeaderForVehicle.MaxOdometer.ToString("N0")</span><br />
|
|
||||||
<span class="text-secondary">Current Odometer</span>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 col-12 mt-2 text-center">
|
|
||||||
<span class="lead">@Model.ReportHeaderForVehicle.DistanceTraveled.ToString("N0")</span><br />
|
|
||||||
<span class="text-secondary">Distance Traveled</span>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 col-12 mt-2 text-center">
|
|
||||||
<span class="lead">@StaticHelper.HideZeroCost(Model.ReportHeaderForVehicle.DistanceTraveled.ToString("C2"), true)</span><br />
|
|
||||||
<span class="text-secondary">Total Cost</span>
|
|
||||||
</div>
|
|
||||||
<div class="col-md-3 col-12 mt-2 text-center">
|
|
||||||
<span class="lead">@Model.ReportHeaderForVehicle.AverageMPG.ToString("F")</span><br />
|
|
||||||
<span class="text-secondary">Average Fuel Economy</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
<div class="row hideOnPrint">
|
<div class="row hideOnPrint">
|
||||||
|
|||||||
24
Views/Vehicle/_ReportHeader.cshtml
Normal file
24
Views/Vehicle/_ReportHeader.cshtml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
@using CarCareTracker.Helper
|
||||||
|
@inject IConfigHelper config
|
||||||
|
@inject ITranslationHelper translator
|
||||||
|
@{
|
||||||
|
var userConfig = config.GetUserConfig(User);
|
||||||
|
var userLanguage = userConfig.UserLanguage;
|
||||||
|
}
|
||||||
|
@model ReportHeader
|
||||||
|
<div class="col-md-3 col-12 mt-2 text-center">
|
||||||
|
<span class="lead">@Model.MaxOdometer.ToString("N0")</span><br />
|
||||||
|
<span class="text-secondary">@translator.Translate(userLanguage, "Last Reported Odometer Reading")</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 col-12 mt-2 text-center">
|
||||||
|
<span class="lead">@Model.DistanceTraveled.ToString("N0")</span><br />
|
||||||
|
<span class="text-secondary">@translator.Translate(userLanguage, "Distance Traveled")</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 col-12 mt-2 text-center">
|
||||||
|
<span class="lead">@StaticHelper.HideZeroCost(Model.TotalCost.ToString("C2"), true)</span><br />
|
||||||
|
<span class="text-secondary">@translator.Translate(userLanguage, "Total Cost")</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-3 col-12 mt-2 text-center">
|
||||||
|
<span class="lead">@Model.AverageMPG</span><br />
|
||||||
|
<span class="text-secondary">@translator.Translate(userLanguage, "Average Fuel Economy")</span>
|
||||||
|
</div>
|
||||||
File diff suppressed because one or more lines are too long
@@ -143,6 +143,14 @@ function refreshMPGChart() {
|
|||||||
var year = getYear();
|
var year = getYear();
|
||||||
$.post('/Vehicle/GetMonthMPGByVehicle', {vehicleId: vehicleId, year: year}, function (data) {
|
$.post('/Vehicle/GetMonthMPGByVehicle', {vehicleId: vehicleId, year: year}, function (data) {
|
||||||
$("#monthFuelMileageReportContent").html(data);
|
$("#monthFuelMileageReportContent").html(data);
|
||||||
|
refreshReportHeader();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function refreshReportHeader() {
|
||||||
|
var vehicleId = GetVehicleId().vehicleId;
|
||||||
|
var year = getYear();
|
||||||
|
$.post('/Vehicle/GetSummaryForVehicle', { vehicleId: vehicleId, year: year }, function (data) {
|
||||||
|
$("#reportHeaderContent").html(data);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
function setSelectedMetrics() {
|
function setSelectedMetrics() {
|
||||||
|
|||||||
Reference in New Issue
Block a user