rearrange code in dataservice
This commit is contained in:
+76
-103
@@ -33,6 +33,59 @@ namespace MileageTraker.Web.DAL
|
|||||||
UpdateCurrentOdometer(log.VehicleId);
|
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()
|
public IQueryable<Log> GetLogs()
|
||||||
{
|
{
|
||||||
return _db.Logs;
|
return _db.Logs;
|
||||||
@@ -70,15 +123,9 @@ namespace MileageTraker.Web.DAL
|
|||||||
{
|
{
|
||||||
var t =
|
var t =
|
||||||
from log in logs
|
from log in logs
|
||||||
let previousLog = (from ol in _db.Logs
|
select new { log, log.VehiclePreviousLog };
|
||||||
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};
|
|
||||||
return from l in t.ToList()
|
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)
|
public IEnumerable<VehicleMileageItem> GetMonthlyVehicleMileageItems(LogQueryViewModel query)
|
||||||
@@ -86,12 +133,7 @@ namespace MileageTraker.Web.DAL
|
|||||||
var items =
|
var items =
|
||||||
from l in
|
from l in
|
||||||
from log in FilterLogs(_db.Logs, query)
|
from log in FilterLogs(_db.Logs, query)
|
||||||
let previousLog = (from ol in _db.Logs
|
let previousLog = log.VehiclePreviousLog
|
||||||
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, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0)}
|
select new {log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0)}
|
||||||
group l by l.log.VehicleId
|
group l by l.log.VehicleId
|
||||||
into g
|
into g
|
||||||
@@ -130,12 +172,7 @@ namespace MileageTraker.Web.DAL
|
|||||||
var items =
|
var items =
|
||||||
from l in
|
from l in
|
||||||
from log in FilterLogs(_db.Logs, query)
|
from log in FilterLogs(_db.Logs, query)
|
||||||
let previousLog = (from ol in _db.Logs
|
let previousLog = log.VehiclePreviousLog
|
||||||
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, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) }
|
select new { log, previousLog, miles = (previousLog != null ? log.EndOdometer - previousLog.EndOdometer : 0) }
|
||||||
group l by l.log.EmployeeName
|
group l by l.log.EmployeeName
|
||||||
into g
|
into g
|
||||||
@@ -198,6 +235,17 @@ namespace MileageTraker.Web.DAL
|
|||||||
return logs;
|
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)
|
public Log SearchPreviousLog(Log current)
|
||||||
{
|
{
|
||||||
var vehicleId = current.VehicleId;
|
var vehicleId = current.VehicleId;
|
||||||
@@ -236,70 +284,6 @@ namespace MileageTraker.Web.DAL
|
|||||||
select nl).FirstOrDefault();
|
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
|
#endregion
|
||||||
|
|
||||||
#region Vehicle
|
#region Vehicle
|
||||||
@@ -312,6 +296,14 @@ namespace MileageTraker.Web.DAL
|
|||||||
_db.SaveChanges();
|
_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()
|
public IEnumerable<Vehicle> GetVehicles()
|
||||||
{
|
{
|
||||||
var vehicles = _db.Vehicles;
|
var vehicles = _db.Vehicles;
|
||||||
@@ -323,14 +315,6 @@ namespace MileageTraker.Web.DAL
|
|||||||
return _db.Vehicles.Find(id);
|
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)
|
public void UpdateCurrentOdometer(string vehicleId)
|
||||||
{
|
{
|
||||||
var mostRecentOdometerQuery =
|
var mostRecentOdometerQuery =
|
||||||
@@ -363,17 +347,6 @@ namespace MileageTraker.Web.DAL
|
|||||||
|
|
||||||
public Log GetFirstConflictingOdometerChronologyLog(string vehicleId, DateTime date, int odometer)
|
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 =
|
var conflictingLogsQuery =
|
||||||
from log in _db.Logs
|
from log in _db.Logs
|
||||||
let existingDate = log.Date
|
let existingDate = log.Date
|
||||||
|
|||||||
Reference in New Issue
Block a user