rearrange code in dataservice
This commit is contained in:
+83
-110
@@ -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;
|
||||
@@ -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<Log> 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<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
|
||||
|
||||
Reference in New Issue
Block a user