This commit is contained in:
2013-02-17 14:30:25 -05:00
parent 07a7577d2d
commit 84e460bb51
7 changed files with 57 additions and 28 deletions
+1
View File
@@ -79,6 +79,7 @@ namespace MileageTraker.Web.Controllers
public ActionResult MonthlyDriverMileage(LogQueryViewModel query)
{
var items = DataService.GetMonthlyDriverMileageItems(query);
items = items.OrderBy(i => i.DriverName);
var report = new DriverMileageViewModel(items, query);
+1 -15
View File
@@ -196,13 +196,6 @@ namespace MileageTraker.Web.DAL
let previousLog = log.VehiclePreviousLog
select new { log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) }
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
let logPairs =
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
@@ -211,7 +204,7 @@ namespace MileageTraker.Web.DAL
let vehicleProg = vehicle.Prog
let vehicleMiles = v.Sum(l => l.miles)
let vehicleGasPurchased = v.Sum(l => l.log.GasPurchased)
where miles > 0 || gasPurchased > 0
where vehicleMiles > 0 || vehicleGasPurchased > 0
let vehicleLogPairs =
from i in v
orderby i.log.Date descending, i.log.EndOdometer descending
@@ -228,19 +221,12 @@ namespace MileageTraker.Web.DAL
new
{
User = g.Key,
GasPurchased = gasPurchased,
Miles = miles,
LogPairs = logPairs,
VehicleLogs = vehicleLogs
};
return items.ToList().Select(i => new DriverMileageItem
{
DriverName = i.User.FullName,
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,
+15 -5
View File
@@ -1,4 +1,3 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MileageTraker.Web.ViewModels.Vehicle;
@@ -8,10 +7,21 @@ namespace MileageTraker.Web.ViewModels
public class DriverMileageItem
{
public string DriverName { get; set; }
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(); } }
public int Miles
{
get { return VehicleMileageItems.Sum(i => i.Miles); }
}
public double GasPurchased
{
get { return VehicleMileageItems.Sum(i => i.GasPurchased); }
}
public int TripCount
{
get { return VehicleMileageItems.Sum(i => i.LogPairs.Count()); }
}
}
}
+1
View File
@@ -10,6 +10,7 @@ namespace MileageTraker.Web.ViewModels
public LogQueryViewModel Query { get; set; }
public int TotalMiles { get { return Items.Sum(i => i.Miles); } }
public int TotalTrips { get { return Items.Sum(i => i.TripCount); } }
public double TotalGasPurchased { get { return Items.Sum(i => i.GasPurchased); } }
public DriverMileageViewModel(IEnumerable<DriverMileageItem> items, LogQueryViewModel query)
@@ -1,5 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
namespace MileageTraker.Web.ViewModels.Vehicle
{
@@ -10,5 +12,8 @@ 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(); } }
[DisplayFormat(DataFormatString = "{0:0.000}")]
public double MilesPerGallon { get { return GasPurchased == 0 || Miles == 0 ? 0 : Miles / GasPurchased; } }
}
}
+18 -3
View File
@@ -56,10 +56,10 @@
<td style="border-top: 0"></td>
<td>
@Html.DisplayTextFor(i => vehicleItem.VehicleId)
@Html.DisplayTextFor(i => vehicleItem.Prog)
(@Html.DisplayTextFor(i => vehicleItem.Prog))
</td>
<td>
@Html.DisplayTextFor(i => vehicleItem.TripCount)
</td>
<td @if (vehicleItem.LogPairs.Any(lp => lp.Item1 == null)){
@:class="ui-state-error"
@@ -76,18 +76,33 @@
<tr>
<td style="border-top: 0"></td>
<td style="text-align: right">
<strong>
Total:
</strong>
</td>
<td>
<strong>
@Html.DisplayTextFor(i => item.TripCount)
</strong>
</td>
<td>
<strong>
@Html.DisplayTextFor(i => item.Miles)
</strong>
</td>
<td>
<strong>
@Html.DisplayTextFor(i => item.GasPurchased)
</strong>
</td>
</tr>
}
<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>
<tfoot>
<tr>
<td colspan="2" style="text-align: right"><strong>Grand Total:</strong></td>
<td><strong>@Html.DisplayTextFor(m => m.TotalTrips)</strong></td>
<td><strong>@Html.DisplayTextFor(m => m.TotalMiles)</strong></td>
<td><strong>@Html.DisplayTextFor(m => m.TotalGasPurchased)</strong></td>
</tr>
</tfoot>
</table>
+12 -1
View File
@@ -41,6 +41,9 @@
<th>
Total Gas Purchased
</th>
<th>
Miles Per Gallon
</th>
</tr>
@foreach (var item in Model.Items)
{
@@ -60,7 +63,15 @@
<td>
@Html.DisplayTextFor(i => item.GasPurchased)
</td>
<td>@(item.MilesPerGallon > 0 ? string.Format("{0:0.000}", item.MilesPerGallon) : "")</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="2" style="text-align: right"><strong>Total:</strong></td>
<td><strong>@Html.DisplayTextFor(m => m.TotalMiles)</strong></td>
<td><strong>@Html.DisplayTextFor(m => m.TotalGasPurchased)</strong></td>
<td></td>
</tr>
</tfoot>
</table>