Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
137 changes: 32 additions & 105 deletions MOE.Common/Business/ControllerEventLogs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@ namespace MOE.Common.Business
{
public class ControllerEventLogs
{
private readonly SPM _db = new SPM();
public string SignalId { get; }
public DateTime StartDate { get; protected set; }
public DateTime EndDate { get; protected set; }
public List<int> EventCodes { get; }
public List<Controller_Event_Log> Events { get; set; }

public ControllerEventLogs(string signalId, DateTime startDate, DateTime endDate)
{
Expand All @@ -30,12 +34,9 @@ public ControllerEventLogs(string signalID, DateTime startDate, DateTime endDate
EndDate = endDate;
EventCodes = eventCodes;

var events = from s in _db.Controller_Event_Log
where s.SignalID == signalID &&
s.Timestamp >= startDate &&
s.Timestamp <= endDate &&
eventCodes.Contains(s.EventCode)
select s;
var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create();

var events = repository.GetSignalEventsByEventCodes(signalID, startDate, endDate, eventCodes);

Events = events.ToList();
Events.Sort((x, y) => DateTime.Compare(x.Timestamp, y.Timestamp));
Expand All @@ -48,13 +49,10 @@ public ControllerEventLogs(string signalID, DateTime startDate, DateTime endDate
EndDate = endDate;
EventCodes = eventCodes;

var events = from s in db.Controller_Event_Log
where s.SignalID == signalID &&
s.Timestamp >= startDate &&
s.Timestamp <= endDate &&
eventCodes.Contains(s.EventCode)
select s;

var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create(db);

var events = repository.GetSignalEventsByEventCodes(signalID, startDate, endDate, eventCodes);
Events = events.ToList();
Events.Sort((x, y) => DateTime.Compare(x.Timestamp, y.Timestamp));
}
Expand All @@ -67,13 +65,9 @@ public ControllerEventLogs(string signalID, DateTime startDate, DateTime endDate
EndDate = endDate;
EventCodes = eventCodes;

var events = from s in _db.Controller_Event_Log
where s.SignalID == signalID &&
s.Timestamp >= startDate &&
s.Timestamp <= endDate &&
eventCodes.Contains(s.EventCode) &&
s.EventParam == eventParam
select s;
var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create();

var events = repository.GetEventsByEventCodesParam(signalID, startDate, endDate, eventCodes, eventParam);

Events = events.ToList();
Events = Events.OrderBy(e => e.Timestamp).ThenBy(e => e.EventCode).ToList();
Expand All @@ -87,52 +81,33 @@ public ControllerEventLogs(string signalID, DateTime startDate, DateTime endDate
EndDate = endDate;
EventCodes = eventCodes;

var events = from s in _db.Controller_Event_Log
where s.SignalID == signalID &&
s.Timestamp >= startDate &&
s.Timestamp <= endDate &&
eventCodes.Contains(s.EventCode) &&
eventParams.Contains(s.EventParam)
select s;
var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create();

Events = events.ToList();
Events = Events.OrderBy(e => e.Timestamp).ThenBy(e => e.EventCode).ToList();
Events = repository.GetSignalEventsByEventCodesParams(signalID, startDate, endDate, eventCodes, eventParams)
.OrderBy(e => e.Timestamp).ThenBy(e => e.EventCode).ToList();
}

public string SignalId { get; }
public DateTime StartDate { get; protected set; }
public DateTime EndDate { get; protected set; }
public List<int> EventCodes { get; }
public List<Controller_Event_Log> Events { get; set; }

public void FillforPreempt(string signalID, DateTime startDate, DateTime endDate)
{
var Codes = new List<int>();

for (var i = 101; i <= 111; i++)
Codes.Add(i);

var db = new SPM();

var events = (from s in db.Controller_Event_Log
where s.SignalID == signalID &&
s.Timestamp >= startDate &&
s.Timestamp <= endDate &&
Codes.Contains(s.EventCode)
select s).ToList();
var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create();

var events = repository.GetSignalEventsByEventCodes(signalID, startDate, endDate, Codes);
Events.AddRange(events);
OrderEventsBytimestamp();
}

public void Add105Events(string signalId, DateTime startDate, DateTime endDate)
{
var events = (from s in _db.Controller_Event_Log
where s.SignalID == signalId &&
s.Timestamp >= startDate &&
s.Timestamp <= endDate &&
(s.EventCode == 105 || s.EventCode == 111)
select s).ToList();

var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create();

var events = repository.GetSignalEventsByEventCodes(signalId, startDate, endDate, new List<int> { 105, 111 });
foreach (var v in events)
{
v.EventCode = 99;
Expand All @@ -151,16 +126,9 @@ public void OrderEventsBytimestamp()

public static DateTime GetMostRecentRecordTimestamp(string signalID)
{
var db = new SPM();

var twoDaysAgo = DateTime.Now.AddDays(-2);

var row = (from r in db.Controller_Event_Log
where r.SignalID == signalID && r.Timestamp > twoDaysAgo
orderby r.Timestamp descending
select r).Take(1).FirstOrDefault();


var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create();
var row = repository.GetTopEventAfterDate(signalID, twoDaysAgo);
if (row != null)
return row.Timestamp;
return twoDaysAgo;
Expand All @@ -187,65 +155,24 @@ public void MergeEvents(ControllerEventLogs newEvents)
Events.Sort((x, y) => DateTime.Compare(x.Timestamp, y.Timestamp));
}

public static List<int> GetPedPhases(string signalID, DateTime startDate, DateTime endDate)
{
var db = new SPM();
var pedEventCodes = new List<int> { 21, 45, 90, 22 };

var events = (from s in db.Controller_Event_Log
where s.SignalID == signalID &&
s.Timestamp >= startDate &&
s.Timestamp <= endDate &&
pedEventCodes.Contains(s.EventCode)
select s.EventParam).Distinct();
return events.ToList();
}

public static int GetPreviousPlan(string signalID, DateTime startDate)
{
var db = new SPM();
var endDate = startDate.AddHours(-12);
var planRecord = from r in db.Controller_Event_Log
where r.SignalID == signalID &&
r.Timestamp >= endDate &&
r.Timestamp <= startDate &&
r.EventCode == 131
select r;
var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create();

var planRecord = repository.GetSignalEventsByEventCode(signalID, startDate, endDate, 131);
if (planRecord.Count() > 0)
return planRecord.OrderByDescending(s => s.Timestamp).FirstOrDefault().EventParam;
return 0;
}

public static Controller_Event_Log GetEventBeforeEvent(string signalID, int phase, DateTime startDate)
{
var db = new SPM();
var endDate = startDate.AddHours(-12);
var eventRecord = (from s in db.Controller_Event_Log
orderby s.Timestamp descending
where s.SignalID == signalID &&
s.EventParam == phase &&
s.Timestamp <= startDate &&
s.Timestamp >= endDate
select s
).DefaultIfEmpty(null).First();
return eventRecord;
}

public static Controller_Event_Log GetEventFromPreviousBin(string signalID, int phase, DateTime currentTime, List<int> chosenEvents, TimeSpan lookbackTime)
{
var db = new SPM();
var repository = Models.Repositories.ControllerEventLogRepositoryFactory.Create();
var startTime = currentTime - lookbackTime;
var eventRecord = (from s in db.Controller_Event_Log
where s.SignalID == signalID &&
s.EventParam == phase &&
s.Timestamp > startTime &&
s.Timestamp < currentTime &&
chosenEvents.Contains(s.EventCode)
orderby s.Timestamp descending
select s
).FirstOrDefault();

return eventRecord;
return repository.GetEventsByEventCodesParam(signalID, startTime, currentTime, chosenEvents, phase)
.OrderByDescending(s => s.Timestamp)
.FirstOrDefault();
}
}
}
70 changes: 42 additions & 28 deletions MOE.Common/Models/Repositories/ControllerEventLogRepository.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
using System;
using System.Collections.Generic;
using System.Data.Entity.Core;
using System.Data.Entity.Core.Objects;
using System.Data.SqlClient;
using System.Linq;
using System.Reflection;
using System.Web.Management;
using Microsoft.EntityFrameworkCore.Internal;

namespace MOE.Common.Models.Repositories
{
public class ControllerEventLogRepository : IControllerEventLogRepository
{
{
private readonly SPM _db = new SPM();
public ControllerEventLogRepository(SPM db)
{
Expand Down Expand Up @@ -195,8 +190,8 @@ public int GetRecordCount(string signalId, DateTime startTime, DateTime endTime)
return _db.Controller_Event_Log.Count(r => r.SignalID == signalId
&& r.Timestamp >= startTime
&& r.Timestamp < endTime);
}
catch (Exception ex)
}
catch (Exception ex)
{
var logRepository =
ApplicationEventRepositoryFactory.Create();
Expand All @@ -206,7 +201,7 @@ public int GetRecordCount(string signalId, DateTime startTime, DateTime endTime)
e.Function = "GetRecordCount";
e.SeverityLevel = ApplicationEvent.SeverityLevels.High;
e.Timestamp = DateTime.Now;
e.Description = signalId + " - " +ex.Message;
e.Description = signalId + " - " + ex.Message;
logRepository.Add(e);
throw ex;
}
Expand Down Expand Up @@ -278,12 +273,12 @@ public List<Controller_Event_Log> GetSignalEventsByEventCodes(string signalId,
select s).ToList();
events.Sort((x, y) => DateTime.Compare(x.Timestamp, y.Timestamp));
return events;
}
//catch (EntityCommandExecutionException ex)
//{
//}
}
//catch (EntityCommandExecutionException ex)
//{
//}
catch (Exception ex)
{
var logRepository =
Expand Down Expand Up @@ -347,7 +342,7 @@ public List<Controller_Event_Log> GetTopEventsAfterDateByEventCodesParam(string
eventCodes.Contains(c.EventCode)).ToList();
return events
.OrderBy(s => s.Timestamp)
.Take(top).ToList();
.Take(top).ToList();
}
catch (Exception e)
{
Expand All @@ -367,7 +362,7 @@ public List<Controller_Event_Log> GetTopEventsBeforeDateByEventCodesParam(string
secondsToCompleteCycle = Convert.ToInt32(settings.CycleCompletionSeconds);
try
{
var start = timestamp.AddSeconds(secondsToCompleteCycle *-1);
var start = timestamp.AddSeconds(secondsToCompleteCycle * -1);
var events = _db.Controller_Event_Log.Where(c =>
c.SignalID == signalId &&
c.Timestamp < timestamp &&
Expand Down Expand Up @@ -569,8 +564,8 @@ public Controller_Event_Log GetFirstEventBeforeDate(string signalId,

public Controller_Event_Log GetFirstEventAfterDateByEventCodesAndParameter(string signalId, List<int> eventCodes,
int eventParam, DateTime start, int secondsToSearch)
{
{
if (!String.IsNullOrEmpty(signalId))
{
try
Expand All @@ -579,9 +574,9 @@ public Controller_Event_Log GetFirstEventAfterDateByEventCodesAndParameter(strin
var tempDate = start.AddSeconds(secondsToSearch);
var controllerEvent = _db.Controller_Event_Log.Where(c => c.SignalID == signalId &&
c.Timestamp > start &&
c.Timestamp <= tempDate &&
c.EventParam == eventParam&&
eventCodes.Contains(c.EventCode) )
c.Timestamp <= tempDate &&
c.EventParam == eventParam &&
eventCodes.Contains(c.EventCode))
.OrderBy(c => c.Timestamp).FirstOrDefault();
return controllerEvent;
}
Expand Down Expand Up @@ -669,10 +664,10 @@ public int GetApproachEventsCountBetweenDates(int approachId, DateTime startTime

public DateTime GetMostRecentRecordTimestamp(string signalID)
{
MOE.Common.Models.Controller_Event_Log row = (from r in _db.Controller_Event_Log
where r.SignalID == signalID
orderby r.Timestamp descending
select r).Take(1).FirstOrDefault();
MOE.Common.Models.Controller_Event_Log row = (from r in _db.Controller_Event_Log
where r.SignalID == signalID
orderby r.Timestamp descending
select r).Take(1).FirstOrDefault();
if (row != null)
{
return row.Timestamp;
Expand All @@ -681,6 +676,25 @@ orderby r.Timestamp descending
{
return new DateTime();
}
}
}

public List<Controller_Event_Log> GetSignalEventsByEventCodesParams(string signalID, DateTime startDate, DateTime endDate, List<int> eventCodes, List<int> eventParams)
{
return _db.Controller_Event_Log.Where(s =>
s.SignalID == signalID &&
s.Timestamp >= startDate &&
s.Timestamp <= endDate &&
eventCodes.Contains(s.EventCode) &&
eventParams.Contains(s.EventParam)).ToList();
}

public Controller_Event_Log GetTopEventAfterDate(string signalID, DateTime twoDaysAgo)
{
return _db.Controller_Event_Log
.Where(r => r.SignalID == signalID && r.Timestamp > twoDaysAgo)
.OrderByDescending(r => r.Timestamp)
.Take(1)
.FirstOrDefault();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ int GetDetectorActivationCount(string signalId,

int GetRecordCountByParameterAndEvent(string signalId, DateTime startTime, DateTime endTime,
List<int> eventParameters, List<int> events);

List<Controller_Event_Log> GetSignalEventsByEventCodesParams(string signalID, DateTime startDate, DateTime endDate, List<int> eventCodes, List<int> eventParams);
List<Controller_Event_Log> GetRecordsByParameterAndEvent(string signalId, DateTime startTime, DateTime endTime,
List<int> eventParameters, List<int> eventCodes);

Expand All @@ -75,5 +75,6 @@ int GetApproachEventsCountBetweenDates(int approachId, DateTime startTime, DateT

Controller_Event_Log GetFirstEventAfterDateByEventCodesAndParameter(string signalId, List<int> eventCodes,
int eventParam, DateTime start, int secondsToSearch);
Controller_Event_Log GetTopEventAfterDate(string signalID, DateTime twoDaysAgo);
}
}