Merge branch 'DriverReport-VehicleBreakdown' into Authentication-Driver

This commit is contained in:
2013-02-14 09:47:33 -05:00
9 changed files with 86 additions and 31 deletions
+1 -1
View File
@@ -78,7 +78,7 @@ namespace MileageTraker.Web.Controllers
public ActionResult MonthlyDriverMileage(LogQueryViewModel query)
{
var items = DataService.GetMonthlyEmployeeMileageItems(query);
var items = DataService.GetMonthlyDriverMileageItems(query);
var report = new DriverMileageViewModel(items, query);
+37 -7
View File
@@ -188,15 +188,14 @@ namespace MileageTraker.Web.DAL
});
}
public IEnumerable<EmployeeMileageItem> GetMonthlyEmployeeMileageItems(LogQueryViewModel query)
public IEnumerable<DriverMileageItem> GetMonthlyDriverMileageItems(LogQueryViewModel query)
{
var items =
from l in
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,22 +203,53 @@ 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 EmployeeMileageItem
return items.ToList().Select(i => new DriverMileageItem
{
EmployeeName = i.User.FullName,
DriverName = i.User.FullName,
GasPurchased = i.GasPurchased,
Miles = i.Miles,
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()
});
}
@@ -1,15 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using MileageTraker.Web.ViewModels.Vehicle;
namespace MileageTraker.Web.ViewModels
{
public class EmployeeMileageItem
public class DriverMileageItem
{
public string EmployeeName { get; set; }
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(); } }
}
}
+2 -2
View File
@@ -6,13 +6,13 @@ namespace MileageTraker.Web.ViewModels
{
public class DriverMileageViewModel
{
public IEnumerable<EmployeeMileageItem> Items { get; set; }
public IEnumerable<DriverMileageItem> Items { get; set; }
public LogQueryViewModel Query { get; set; }
public int TotalMiles { get { return Items.Sum(i => i.Miles); } }
public double TotalGasPurchased { get { return Items.Sum(i => i.GasPurchased); } }
public DriverMileageViewModel(IEnumerable<EmployeeMileageItem> items, LogQueryViewModel query)
public DriverMileageViewModel(IEnumerable<DriverMileageItem> items, LogQueryViewModel query)
{
Items = items;
Query = query;
-2
View File
@@ -19,8 +19,6 @@ namespace MileageTraker.Web.ViewModels.Log
public string CityName { get; set; }
//public string EmployeeName { get; set; }
public virtual Models.User User { get; set; }
public double GasPurchased { get; set; }
+2 -2
View File
@@ -22,8 +22,8 @@ namespace MileageTraker.Web.ViewModels.Log
public string CityName { get; set; }
[Display(Name = "Employee / Driver")]
public string EmployeeName { get; set; }
[Display(Name = "Driver")]
public string UserFullName { get; set; }
[DisplayFormat(DataFormatString = "{0:0.000}", ApplyFormatInEditMode = true)]
public double GasPurchased { get; set; }
@@ -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(); } }
}
}
+39 -12
View File
@@ -29,9 +29,12 @@
<table class="table">
<tr>
<th>
Driver
</th>
<th>
Driver
</th>
<th>
Vehicle
</th>
<th>
Trips
</th>
@@ -45,22 +48,46 @@
@foreach (var item in Model.Items)
{
<tr>
<td>
@Html.DisplayTextFor(i => item.EmployeeName)
</td>
<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 => 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>
+1 -1
View File
@@ -166,7 +166,7 @@
<Compile Include="ViewModels\Account\NewPasswordViewModel.cs" />
<Compile Include="ViewModels\Account\RegisterModel.cs" />
<Compile Include="ViewModels\CheckBoxViewModel.cs" />
<Compile Include="ViewModels\EmployeeMileageItem.cs" />
<Compile Include="ViewModels\DriverMileageItem.cs" />
<Compile Include="ViewModels\DriverMileageViewModel.cs" />
<Compile Include="ViewModels\Log\LogViewModel.cs" />
<Compile Include="ViewModels\Log\LogIndexViewModel.cs" />