From 05e678c810d8dc93e0fa188f5fdb64309eb354b3 Mon Sep 17 00:00:00 2001 From: James Kolpack Date: Fri, 7 Dec 2012 14:08:15 -0500 Subject: [PATCH] rearrange code in dataservice --- Web/DAL/DataService.cs | 193 ++++++++++++++++++----------------------- 1 file changed, 83 insertions(+), 110 deletions(-) diff --git a/Web/DAL/DataService.cs b/Web/DAL/DataService.cs index d40962d..e839eb3 100644 --- a/Web/DAL/DataService.cs +++ b/Web/DAL/DataService.cs @@ -33,6 +33,59 @@ namespace MileageTraker.Web.DAL UpdateCurrentOdometer(log.VehicleId); } + public void UpdateLog(Log log) + { + _db.Logs.Attach(log); + var original = _db.Logs.Find(log.LogId); + + // ignore these properties while updating + log.Created = original.Created; + log.Source = original.Source; + log.UserAgent = original.UserAgent; + log.UserHostAddress = original.UserHostAddress; + + // remove from the list + var nextLog = + (from l in _db.Logs + where l.VehiclePreviousLogId == log.LogId + select l).FirstOrDefault(); + if (nextLog != null) + nextLog.VehiclePreviousLogId = log.VehiclePreviousLogId; + + log.VehiclePreviousLog = null; + log.VehiclePreviousLogId = null; + + // add it back in new position + var previousLog = SearchPreviousLog(log); + if (previousLog != null) + log.VehiclePreviousLogId = previousLog.LogId; + var newNextLog = SearchNextLog(log); + if (newNextLog != null) + newNextLog.VehiclePreviousLogId = log.LogId; + + _db.Entry(log).State = EntityState.Modified; + _db.SaveChanges(); + + UpdateCurrentOdometer(log.VehicleId); + } + + public void DeleteLog(int id) + { + var log = _db.Logs.Find(id); + + var nextLog = + (from l in _db.Logs + where l.VehiclePreviousLogId == log.LogId + select l).FirstOrDefault(); + if (nextLog != null) + nextLog.VehiclePreviousLog = log.VehiclePreviousLog; + + _db.Logs.Remove(log); + _db.SaveChanges(); + + UpdateCurrentOdometer(log.VehicleId); + } + public IQueryable GetLogs() { return _db.Logs; @@ -70,15 +123,9 @@ namespace MileageTraker.Web.DAL { var t = from log in logs - let previousLog = (from ol in _db.Logs - where ol.VehicleId == log.VehicleId && - ((ol.Date <= log.Date && ol.EndOdometer < log.EndOdometer) || - (ol.EndOdometer == log.EndOdometer && ol.Created < log.Created)) - orderby ol.EndOdometer descending, ol.Created descending - select ol).FirstOrDefault() - select new {log, previousLog}; + select new { log, log.VehiclePreviousLog }; return from l in t.ToList() - select new LogIndexViewModel(l.log, l.previousLog); + select new LogIndexViewModel(l.log, l.VehiclePreviousLog); } public IEnumerable GetMonthlyVehicleMileageItems(LogQueryViewModel query) @@ -86,12 +133,7 @@ namespace MileageTraker.Web.DAL var items = from l in from log in FilterLogs(_db.Logs, query) - let previousLog = (from ol in _db.Logs - where ol.VehicleId == log.VehicleId && - ((ol.Date <= log.Date && ol.EndOdometer < log.EndOdometer) || - (ol.EndOdometer == log.EndOdometer && ol.Created < log.Created)) - orderby ol.EndOdometer descending, ol.Created descending - select ol).FirstOrDefault() + let previousLog = log.VehiclePreviousLog select new {log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0)} group l by l.log.VehicleId into g @@ -130,12 +172,7 @@ namespace MileageTraker.Web.DAL var items = from l in from log in FilterLogs(_db.Logs, query) - let previousLog = (from ol in _db.Logs - where ol.VehicleId == log.VehicleId && - ((ol.Date <= log.Date && ol.EndOdometer < log.EndOdometer) || - (ol.EndOdometer == log.EndOdometer && ol.Created < log.Created)) - orderby ol.EndOdometer descending, ol.Created descending - select ol).FirstOrDefault() + let previousLog = log.VehiclePreviousLog select new { log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) } group l by l.log.EmployeeName into g @@ -198,6 +235,17 @@ namespace MileageTraker.Web.DAL return logs; } + public IEnumerable GetRecentLogsByEmployee(string employeeName) + { + return + (from l in _db.Logs + where l.EmployeeName == employeeName + orderby l.Created descending + select l) + .Take(3) + .ToList(); + } + public Log SearchPreviousLog(Log current) { var vehicleId = current.VehicleId; @@ -212,7 +260,7 @@ namespace MileageTraker.Web.DAL where pl.VehicleId == vehicleId && ((pl.Date <= date && pl.EndOdometer < endOdometer) || (pl.EndOdometer == endOdometer && pl.Created < created)) && - pl.LogId != excludeLogId + pl.LogId != excludeLogId orderby pl.EndOdometer descending, pl.Created descending select pl).FirstOrDefault(); } @@ -228,76 +276,12 @@ namespace MileageTraker.Web.DAL public Log SearchNextLog(int endOdometer, string vehicleId, DateTime date, DateTime created, int? excludeLogId = null) { return (from nl in GetLogs() - where nl.VehicleId == vehicleId && - ((nl.Date >= date && nl.EndOdometer > endOdometer) - || (nl.EndOdometer == endOdometer && nl.Created > created)) && - nl.LogId != excludeLogId - orderby nl.EndOdometer ascending, nl.Created ascending - select nl).FirstOrDefault(); - } - - public void UpdateLog(Log log) - { - _db.Logs.Attach(log); - var original = _db.Logs.Find(log.LogId); - - // ignore these properties while updating - log.Created = original.Created; - log.Source = original.Source; - log.UserAgent = original.UserAgent; - log.UserHostAddress = original.UserHostAddress; - - // remove from the list - var nextLog = - (from l in _db.Logs - where l.VehiclePreviousLogId == log.LogId - select l).FirstOrDefault(); - if (nextLog != null) - nextLog.VehiclePreviousLogId = log.VehiclePreviousLogId; - - log.VehiclePreviousLog = null; - log.VehiclePreviousLogId = null; - - // add it back in new position - var previousLog = SearchPreviousLog(log); - if (previousLog != null) - log.VehiclePreviousLogId = previousLog.LogId; - var newNextLog = SearchNextLog(log); - if (newNextLog != null) - newNextLog.VehiclePreviousLogId = log.LogId; - - _db.Entry(log).State = EntityState.Modified; - _db.SaveChanges(); - - UpdateCurrentOdometer(log.VehicleId); - } - - public void DeleteLog(int id) - { - var log = _db.Logs.Find(id); - - var nextLog = - (from l in _db.Logs - where l.VehiclePreviousLogId == log.LogId - select l).FirstOrDefault(); - if (nextLog != null) - nextLog.VehiclePreviousLog = log.VehiclePreviousLog; - - _db.Logs.Remove(log); - _db.SaveChanges(); - - UpdateCurrentOdometer(log.VehicleId); - } - - public IEnumerable GetRecentLogsByEmployee(string employeeName) - { - return - (from l in _db.Logs - where l.EmployeeName == employeeName - orderby l.Created descending - select l) - .Take(3) - .ToList(); + where nl.VehicleId == vehicleId && + ((nl.Date >= date && nl.EndOdometer > endOdometer) + || (nl.EndOdometer == endOdometer && nl.Created > created)) && + nl.LogId != excludeLogId + orderby nl.EndOdometer ascending, nl.Created ascending + select nl).FirstOrDefault(); } #endregion @@ -312,6 +296,14 @@ namespace MileageTraker.Web.DAL _db.SaveChanges(); } + public void UpdateVehicle(Vehicle vehicle) + { + if (vehicle.Assigned == "Unassigned") + vehicle.Assigned = null; + _db.Entry(vehicle).State = EntityState.Modified; + _db.SaveChanges(); + } + public IEnumerable GetVehicles() { var vehicles = _db.Vehicles; @@ -323,14 +315,6 @@ namespace MileageTraker.Web.DAL return _db.Vehicles.Find(id); } - public void UpdateVehicle(Vehicle vehicle) - { - if (vehicle.Assigned == "Unassigned") - vehicle.Assigned = null; - _db.Entry(vehicle).State = EntityState.Modified; - _db.SaveChanges(); - } - public void UpdateCurrentOdometer(string vehicleId) { var mostRecentOdometerQuery = @@ -363,17 +347,6 @@ namespace MileageTraker.Web.DAL public Log GetFirstConflictingOdometerChronologyLog(string vehicleId, DateTime date, int odometer) { - // TODO HACK for testing, delete later - try - { - if (!_db.Logs.Any()) - return null; - } - catch (NullReferenceException) - { - return null; - } - var conflictingLogsQuery = from log in _db.Logs let existingDate = log.Date