Vehicle breakdown operational

This commit is contained in:
2013-02-12 18:01:20 -05:00
parent 36e277a442
commit 73e4740c7e
4 changed files with 75 additions and 18 deletions
+34 -4
View File
@@ -195,8 +195,7 @@ namespace MileageTraker.Web.DAL
from log in FilterLogs(_db.Logs, query) from log in FilterLogs(_db.Logs, query)
let previousLog = log.VehiclePreviousLog let previousLog = log.VehiclePreviousLog
select new { log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) } select new { log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) }
group l by l.log.User group l by l.log.User into g
into g
let miles = g.Sum(l => l.miles) let miles = g.Sum(l => l.miles)
let gasPurchased = g.Sum(l => l.log.GasPurchased) let gasPurchased = g.Sum(l => l.log.GasPurchased)
where miles > 0 || gasPurchased > 0 where miles > 0 || gasPurchased > 0
@@ -204,13 +203,35 @@ namespace MileageTraker.Web.DAL
from i in g from i in g
orderby i.log.Date descending, i.log.EndOdometer descending orderby i.log.Date descending, i.log.EndOdometer descending
select new { PreviousLog = i.previousLog, Log = i.log } 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 select
new new
{ {
User = g.Key, User = g.Key,
GasPurchased = gasPurchased, GasPurchased = gasPurchased,
Miles = miles, Miles = miles,
LogPairs = logPairs LogPairs = logPairs,
VehicleLogs = vehicleLogs
}; };
return items.ToList().Select(i => new DriverMileageItem return items.ToList().Select(i => new DriverMileageItem
@@ -219,7 +240,16 @@ namespace MileageTraker.Web.DAL
GasPurchased = i.GasPurchased, GasPurchased = i.GasPurchased,
Miles = i.Miles, Miles = i.Miles,
LogPairs = i.LogPairs.ToList() LogPairs = i.LogPairs.ToList()
.Select(lp => new Tuple<Log, Log>(lp.PreviousLog, lp.Log)) .Select(lp => new Tuple<Log, Log>(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<Log, Log>(lp.PreviousLog, lp.Log))
}).ToList()
}); });
} }
+2
View File
@@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using MileageTraker.Web.ViewModels.Vehicle;
namespace MileageTraker.Web.ViewModels namespace MileageTraker.Web.ViewModels
{ {
@@ -10,6 +11,7 @@ namespace MileageTraker.Web.ViewModels
public int Miles { get; set; } public int Miles { get; set; }
public double GasPurchased { get; set; } public double GasPurchased { get; set; }
public IEnumerable<Tuple<Models.Log, Models.Log>> LogPairs { get; set; } public IEnumerable<Tuple<Models.Log, Models.Log>> LogPairs { get; set; }
public IEnumerable<VehicleMileageItem> VehicleMileageItems { get; set; }
public int TripCount { get { return LogPairs.Count(); } } public int TripCount { get { return LogPairs.Count(); } }
} }
} }
@@ -1,5 +1,4 @@
using System; using System;
using System.Linq;
using System.Collections.Generic; using System.Collections.Generic;
namespace MileageTraker.Web.ViewModels.Vehicle namespace MileageTraker.Web.ViewModels.Vehicle
@@ -11,6 +10,5 @@ namespace MileageTraker.Web.ViewModels.Vehicle
public double GasPurchased { get; set; } public double GasPurchased { get; set; }
public string Prog { get; set; } public string Prog { get; set; }
public IEnumerable<Tuple<Models.Log, Models.Log>> LogPairs { get; set; } public IEnumerable<Tuple<Models.Log, Models.Log>> LogPairs { get; set; }
public int TripCount { get { return LogPairs.Count(); } }
} }
} }
+39 -12
View File
@@ -29,9 +29,12 @@
<table class="table"> <table class="table">
<tr> <tr>
<th> <th>
Driver Driver
</th> </th>
<th>
Vehicle
</th>
<th> <th>
Trips Trips
</th> </th>
@@ -45,22 +48,46 @@
@foreach (var item in Model.Items) @foreach (var item in Model.Items)
{ {
<tr> <tr>
<td> <td colspan="5">@Html.DisplayTextFor(i => item.DriverName)</td>
@Html.DisplayTextFor(i => item.DriverName) </tr>
</td> foreach (var vehicleItem in item.VehicleMileageItems)
{
<tr>
<td style="border-top: 0"></td>
<td>
@Html.DisplayTextFor(i => vehicleItem.VehicleId)
@Html.DisplayTextFor(i => vehicleItem.Prog)
</td>
<td>
</td>
<td @if (vehicleItem.LogPairs.Any(lp => lp.Item1 == null)){
@:class="ui-state-error"
}>
<span class="report-miles">@Html.DisplayTextFor(i => vehicleItem.Miles)</span>
@Html.Partial("LogsSummary", vehicleItem.LogPairs)
</td>
<td>
@Html.DisplayTextFor(i => vehicleItem.GasPurchased)
</td>
</tr>
}
<tr>
<td style="border-top: 0"></td>
<td style="text-align: right">
Total:
</td>
<td> <td>
@Html.DisplayTextFor(i => item.TripCount) @Html.DisplayTextFor(i => item.TripCount)
</td> </td>
<td @if (item.LogPairs.Any(lp => lp.Item1 == null)){ <td>
@:class="ui-state-error" @Html.DisplayTextFor(i => item.Miles)
}>
<span class="report-miles">@Html.DisplayTextFor(i => item.Miles)</span>
@Html.Partial("LogsSummary", item.LogPairs)
</td> </td>
<td> <td>
@Html.DisplayTextFor(i => item.GasPurchased) @Html.DisplayTextFor(i => item.GasPurchased)
</td> </td>
</tr> </tr>
} }
<tfoot><tr><td colspan="2">Total:</td><td>@Html.DisplayTextFor(m => m.TotalMiles)</td><td>@Html.DisplayTextFor(m => m.TotalGasPurchased)</td></tr></tfoot> <tfoot><tr><td colspan="3" style="text-align: right">Grand Total:</td><td>@Html.DisplayTextFor(m => m.TotalMiles)</td><td>@Html.DisplayTextFor(m => m.TotalGasPurchased)</td></tr></tfoot>
</table> </table>