Fuel Log Import basic functionality

This commit is contained in:
2015-09-18 13:02:15 -04:00
parent 4987215f0b
commit e3590b29e5
18 changed files with 438 additions and 59 deletions
+49 -1
View File
@@ -1,8 +1,8 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Text.RegularExpressions;
using MileageTraker.Web.Context;
using MileageTraker.Web.Models;
using MileageTraker.Web.Utility;
@@ -409,6 +409,20 @@ namespace MileageTraker.Web.DAL
return _db.Vehicles.Find(id);
}
public Vehicle GetVehicleByTag(string tagNumber)
{
var vehicle = GetVehicles().FirstOrDefault(v => v.TagNumber == tagNumber);
if (vehicle != null)
return vehicle; // exact match, this is optimal for the DB query
// no match, normalize the tags, have to get all the vehicles for regex
var vehicles = GetVehicles().ToList();
Func<string, string> b = s => Regex.Replace(s.ToLower(), @"-|\s", "");
vehicle = vehicles.FirstOrDefault(v => b(v.TagNumber) == b(tagNumber));
return vehicle;
}
public void UpdateCurrentOdometer(string vehicleId)
{
var mostRecentOdometerQuery =
@@ -630,6 +644,40 @@ namespace MileageTraker.Web.DAL
return _db.FuelLogs.Find(id);
}
public IEnumerable<FuelLog> GetDuplicateFuelLogs(FuelLog log)
{
return
from dbLog in GetFuelLogs()
where
dbLog.Date == log.Date &&
dbLog.GasPurchased == log.GasPurchased &&
dbLog.TagNumber == log.TagNumber
select dbLog;
}
public Log GetMatchingLog(FuelLog fuelLog)
{
var logs = GetLogs();
// matching by Date, Gas Purchased (gallons), and Vehicle
var vehicle = GetVehicleByTag(fuelLog.TagNumber);
if (vehicle != null)
logs = logs.Where(log => log.VehicleId == vehicle.VehicleId);
else return null;
logs = logs.Where(log =>
log.Date.Year == fuelLog.Date.Year &&
log.Date.Month == fuelLog.Date.Month &&
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 IList<DateTime> GetValidFuelLogMonths()
{