rearrange code in dataservice

This commit is contained in:
2012-12-07 14:08:15 -05:00
parent 6f28fb1621
commit 05e678c810
+76 -103
View File
@@ -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<Log> 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<VehicleMileageItem> 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<Log> 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;
@@ -236,70 +284,6 @@ namespace MileageTraker.Web.DAL
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<Log> GetRecentLogsByEmployee(string employeeName)
{
return
(from l in _db.Logs
where l.EmployeeName == employeeName
orderby l.Created descending
select l)
.Take(3)
.ToList();
}
#endregion
#region Vehicle
@@ -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<Vehicle> 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