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
+33 -3
View File
@@ -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<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.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<Tuple<Models.Log, Models.Log>> LogPairs { get; set; }
public IEnumerable<VehicleMileageItem> VehicleMileageItems { get; set; }
public int TripCount { get { return LogPairs.Count(); } }
}
}
@@ -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<Tuple<Models.Log, Models.Log>> LogPairs { get; set; }
public int TripCount { get { return LogPairs.Count(); } }
}
}
+34 -7
View File
@@ -31,6 +31,9 @@
<tr>
<th>
Driver
</th>
<th>
Vehicle
</th>
<th>
Trips
@@ -45,22 +48,46 @@
@foreach (var item in Model.Items)
{
<tr>
<td colspan="5">@Html.DisplayTextFor(i => item.DriverName)</td>
</tr>
foreach (var vehicleItem in item.VehicleMileageItems)
{
<tr>
<td style="border-top: 0"></td>
<td>
@Html.DisplayTextFor(i => item.DriverName)
@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>
@Html.DisplayTextFor(i => item.TripCount)
</td>
<td @if (item.LogPairs.Any(lp => lp.Item1 == null)){
@:class="ui-state-error"
}>
<span class="report-miles">@Html.DisplayTextFor(i => item.Miles)</span>
@Html.Partial("LogsSummary", item.LogPairs)
<td>
@Html.DisplayTextFor(i => item.Miles)
</td>
<td>
@Html.DisplayTextFor(i => item.GasPurchased)
</td>
</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>