From 73e4740c7e81e045c61c83bac2b7f08d7ff624a6 Mon Sep 17 00:00:00 2001 From: James Kolpack Date: Tue, 12 Feb 2013 18:01:20 -0500 Subject: [PATCH] Vehicle breakdown operational --- Web/DAL/DataService.cs | 38 +++++++++++++-- Web/ViewModels/DriverMileageItem.cs | 2 + Web/ViewModels/Vehicle/VehicleMileageItem.cs | 2 - Web/Views/Log/MonthlyDriverMileage.cshtml | 51 +++++++++++++++----- 4 files changed, 75 insertions(+), 18 deletions(-) diff --git a/Web/DAL/DataService.cs b/Web/DAL/DataService.cs index 73acd92..7d0694d 100644 --- a/Web/DAL/DataService.cs +++ b/Web/DAL/DataService.cs @@ -195,8 +195,7 @@ namespace MileageTraker.Web.DAL from log in FilterLogs(_db.Logs, query) let previousLog = log.VehiclePreviousLog select new { log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) } - group l by l.log.User - into g + group l by l.log.User into g let miles = g.Sum(l => l.miles) let gasPurchased = g.Sum(l => l.log.GasPurchased) where miles > 0 || gasPurchased > 0 @@ -204,13 +203,35 @@ namespace MileageTraker.Web.DAL from i in g orderby i.log.Date descending, i.log.EndOdometer descending select new { PreviousLog = i.previousLog, Log = i.log } + let vehicleLogs = + from i in g + group i by i.log.VehicleId into v + from vehicle in _db.Vehicles + where vehicle.VehicleId == v.Key + let vehicleProg = vehicle.Prog + let vehicleMiles = v.Sum(l => l.miles) + let vehicleGasPurchased = v.Sum(l => l.log.GasPurchased) + where miles > 0 || gasPurchased > 0 + let vehicleLogPairs = + from i in v + orderby i.log.Date descending, i.log.EndOdometer descending + select new { PreviousLog = i.previousLog, Log = i.log } + select new + { + VehicleId = v.Key, + Prog = vehicleProg, + Miles = vehicleMiles, + GasPurchased = vehicleGasPurchased, + LogPairs = vehicleLogPairs + } select new { User = g.Key, GasPurchased = gasPurchased, Miles = miles, - LogPairs = logPairs + LogPairs = logPairs, + VehicleLogs = vehicleLogs }; return items.ToList().Select(i => new DriverMileageItem @@ -219,7 +240,16 @@ namespace MileageTraker.Web.DAL GasPurchased = i.GasPurchased, Miles = i.Miles, LogPairs = i.LogPairs.ToList() - .Select(lp => new Tuple(lp.PreviousLog, lp.Log)) + .Select(lp => new Tuple(lp.PreviousLog, lp.Log)), + VehicleMileageItems = i.VehicleLogs.ToList().Select(v => new VehicleMileageItem + { + VehicleId = v.VehicleId, + Prog = v.Prog, + Miles = v.Miles, + GasPurchased = v.GasPurchased, + LogPairs = v.LogPairs.ToList() + .Select(lp => new Tuple(lp.PreviousLog, lp.Log)) + }).ToList() }); } diff --git a/Web/ViewModels/DriverMileageItem.cs b/Web/ViewModels/DriverMileageItem.cs index a60b036..5c69118 100644 --- a/Web/ViewModels/DriverMileageItem.cs +++ b/Web/ViewModels/DriverMileageItem.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using MileageTraker.Web.ViewModels.Vehicle; namespace MileageTraker.Web.ViewModels { @@ -10,6 +11,7 @@ namespace MileageTraker.Web.ViewModels public int Miles { get; set; } public double GasPurchased { get; set; } public IEnumerable> LogPairs { get; set; } + public IEnumerable VehicleMileageItems { get; set; } public int TripCount { get { return LogPairs.Count(); } } } } \ No newline at end of file diff --git a/Web/ViewModels/Vehicle/VehicleMileageItem.cs b/Web/ViewModels/Vehicle/VehicleMileageItem.cs index e226d54..7a0f680 100644 --- a/Web/ViewModels/Vehicle/VehicleMileageItem.cs +++ b/Web/ViewModels/Vehicle/VehicleMileageItem.cs @@ -1,5 +1,4 @@ using System; -using System.Linq; using System.Collections.Generic; namespace MileageTraker.Web.ViewModels.Vehicle @@ -11,6 +10,5 @@ namespace MileageTraker.Web.ViewModels.Vehicle public double GasPurchased { get; set; } public string Prog { get; set; } public IEnumerable> LogPairs { get; set; } - public int TripCount { get { return LogPairs.Count(); } } } } \ No newline at end of file diff --git a/Web/Views/Log/MonthlyDriverMileage.cshtml b/Web/Views/Log/MonthlyDriverMileage.cshtml index 254dc9a..a6cc4b2 100644 --- a/Web/Views/Log/MonthlyDriverMileage.cshtml +++ b/Web/Views/Log/MonthlyDriverMileage.cshtml @@ -29,9 +29,12 @@ - + + @@ -45,22 +48,46 @@ @foreach (var item in Model.Items) { - + + + foreach (var vehicleItem in item.VehicleMileageItems) + { + + + + + + + + + } + + + - } - +
- Driver - + Driver + + Vehicle + Trips
- @Html.DisplayTextFor(i => item.DriverName) - @Html.DisplayTextFor(i => item.DriverName)
+ @Html.DisplayTextFor(i => vehicleItem.VehicleId) + @Html.DisplayTextFor(i => vehicleItem.Prog) + + + lp.Item1 == null)){ + @:class="ui-state-error" + }> + @Html.DisplayTextFor(i => vehicleItem.Miles) + @Html.Partial("LogsSummary", vehicleItem.LogPairs) + + @Html.DisplayTextFor(i => vehicleItem.GasPurchased) +
+ Total: + @Html.DisplayTextFor(i => item.TripCount) lp.Item1 == null)){ - @:class="ui-state-error" - }> - @Html.DisplayTextFor(i => item.Miles) - @Html.Partial("LogsSummary", item.LogPairs) + + @Html.DisplayTextFor(i => item.Miles) @Html.DisplayTextFor(i => item.GasPurchased)
Total:@Html.DisplayTextFor(m => m.TotalMiles)@Html.DisplayTextFor(m => m.TotalGasPurchased)
Grand Total:@Html.DisplayTextFor(m => m.TotalMiles)@Html.DisplayTextFor(m => m.TotalGasPurchased)