Fuel Log Match
This commit is contained in:
+75
-4
@@ -99,6 +99,12 @@ namespace MileageTraker.Web.DAL
|
||||
_db.Entry(nextLog).State = EntityState.Modified;
|
||||
}
|
||||
|
||||
// remove the reference to the log from any fuellogs
|
||||
foreach (var fuelLog in log.FuelLogs)
|
||||
{
|
||||
fuelLog.Log = null;
|
||||
}
|
||||
|
||||
_db.Logs.Remove(log);
|
||||
_db.SaveChanges();
|
||||
|
||||
@@ -409,6 +415,14 @@ namespace MileageTraker.Web.DAL
|
||||
return _db.Vehicles.Find(id);
|
||||
}
|
||||
|
||||
public string GetVehicleIdByTag(string tagNumber)
|
||||
{
|
||||
var vehicle = GetVehicleByTag(tagNumber);
|
||||
if (vehicle != null)
|
||||
return vehicle.VehicleId;
|
||||
return null;
|
||||
}
|
||||
|
||||
public Vehicle GetVehicleByTag(string tagNumber)
|
||||
{
|
||||
var vehicle = GetVehicles().FirstOrDefault(v => v.TagNumber == tagNumber);
|
||||
@@ -672,13 +686,70 @@ namespace MileageTraker.Web.DAL
|
||||
log.Date.Day == fuelLog.Date.Day
|
||||
);
|
||||
logs = logs.Where(log => log.GasPurchased == fuelLog.GasPurchased);
|
||||
|
||||
//logs = logs.Where(log => log.User.FullName == fuelLog.DriverFullName);
|
||||
//logs = logs.Where(log => log.EndOdometer == fuelLog.Odometer);
|
||||
|
||||
|
||||
return logs.FirstOrDefault();
|
||||
}
|
||||
|
||||
public IEnumerable<Log> GetPossibleMatchingLogs(FuelLog fuelLog)
|
||||
{
|
||||
const int dateRange = 3;
|
||||
const double gasRange = 1;
|
||||
const double odometerRange = 100;
|
||||
var gasVehicleQuery = GetLogs();
|
||||
|
||||
// matching by Date, Gas Purchased (gallons), and Vehicle
|
||||
|
||||
var vehicle = GetVehicleByTag(fuelLog.TagNumber);
|
||||
if (vehicle != null)
|
||||
gasVehicleQuery = gasVehicleQuery.Where(log => log.VehicleId == vehicle.VehicleId);
|
||||
|
||||
var futureDate = fuelLog.Date.AddDays(dateRange);
|
||||
var pastDate = fuelLog.Date.AddDays(-dateRange);
|
||||
|
||||
gasVehicleQuery = gasVehicleQuery.Where(log =>
|
||||
log.Date.Year <= futureDate.Year &&
|
||||
log.Date.Month <= futureDate.Month &&
|
||||
log.Date.Day <= futureDate.Day &&
|
||||
log.Date.Year >= pastDate.Year &&
|
||||
log.Date.Month >= pastDate.Month &&
|
||||
log.Date.Day >= pastDate.Day
|
||||
);
|
||||
|
||||
var gasMax = fuelLog.GasPurchased + gasRange;
|
||||
var gasMin = fuelLog.GasPurchased - gasRange;
|
||||
gasVehicleQuery = gasVehicleQuery.Where(log => log.GasPurchased <= gasMax && log.GasPurchased >= gasMin);
|
||||
|
||||
var driverQuery =
|
||||
GetLogs()
|
||||
.Where(log => log.User.FullName.Contains(fuelLog.DriverFullName))
|
||||
.Where(log => log.GasPurchased > 0)
|
||||
.Where(log =>
|
||||
log.Date.Year <= futureDate.Year &&
|
||||
log.Date.Month <= futureDate.Month &&
|
||||
log.Date.Day <= futureDate.Day &&
|
||||
log.Date.Year >= pastDate.Year &&
|
||||
log.Date.Month >= pastDate.Month &&
|
||||
log.Date.Day >= pastDate.Day
|
||||
);
|
||||
|
||||
var odoMax = fuelLog.Odometer + odometerRange;
|
||||
var odoMin = fuelLog.Odometer - odometerRange;
|
||||
var odometerQuery =
|
||||
GetLogs()
|
||||
.Where(log => log.EndOdometer > odoMin && log.EndOdometer < odoMax)
|
||||
.Where(log => log.GasPurchased > 0)
|
||||
.Where(log =>
|
||||
log.Date.Year <= futureDate.Year &&
|
||||
log.Date.Month <= futureDate.Month &&
|
||||
log.Date.Day <= futureDate.Day &&
|
||||
log.Date.Year >= pastDate.Year &&
|
||||
log.Date.Month >= pastDate.Month &&
|
||||
log.Date.Day >= pastDate.Day
|
||||
);
|
||||
|
||||
return gasVehicleQuery.Union(driverQuery).Union(odometerQuery);
|
||||
}
|
||||
|
||||
public IList<DateTime> GetValidFuelLogMonths()
|
||||
{
|
||||
var months =
|
||||
|
||||
Reference in New Issue
Block a user