Пример #1
0
        /// <summary>
        /// Gets all the signals based on the region
        /// </summary>
        /// <param name="region"></param>
        /// <returns>Data.Signals.MasterDataTable</returns>


        public static List <Models.Signal> GetSignals()
        {
            MOE.Common.Models.SPM db = new Models.SPM();

            var table = (from r in db.Signals select r).ToList();

            return(table);
        }
Пример #2
0
        static public MOE.Common.Models.Controller_Event_Log GetEventBeforeEvent(string signalID, int phase, DateTime startDate)
        {
            Models.SPM db          = new Models.SPM();
            DateTime   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);
        }
Пример #3
0
        static public List <int> GetPedPhases(string signalID, DateTime startDate, DateTime endDate)
        {
            Models.SPM db            = new Models.SPM();
            List <int> pedEventCodes = new List <int> {
                21, 45, 90, 23
            };
            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 <int>());
        }
Пример #4
0
        public void GetRecords()
        {
            MOE.Common.Data.SignalsTableAdapters.SignalsTableAdapter sta = new Data.SignalsTableAdapters.SignalsTableAdapter();
            SignalsTable = sta.GetData();

            MOE.Common.Data.SignalsTableAdapters.Graph_DetectorsTableAdapter gta = new Data.SignalsTableAdapters.Graph_DetectorsTableAdapter();
            DetectorsTable = gta.GetData();

            MOE.Common.Data.SignalsTableAdapters.SPM_CommentTableAdapter cta = new Data.SignalsTableAdapters.SPM_CommentTableAdapter();
            CommentsTable = cta.GetAllData();

            MOE.Common.Data.SignalsTableAdapters.ApproachRouteDetailTableAdapter rta = new Data.SignalsTableAdapters.ApproachRouteDetailTableAdapter();
            RouteDetailTable = rta.GetData();



            db = new Models.SPM();
        }
Пример #5
0
        public void GetRecords()
        {
            Console.WriteLine("Getting records from old database tables.");
            MOE.Common.Data.SignalsTableAdapters.SignalsTableAdapter sta = new Data.SignalsTableAdapters.SignalsTableAdapter();

            SignalsTable = sta.GetData();

            MOE.Common.Data.SignalsTableAdapters.Graph_DetectorsTableAdapter gta = new Data.SignalsTableAdapters.Graph_DetectorsTableAdapter();
            DetectorsTable = gta.GetData();

            MOE.Common.Data.SignalsTableAdapters.SPM_CommentTableAdapter cta = new Data.SignalsTableAdapters.SPM_CommentTableAdapter();
            CommentsTable = cta.GetAllData();

            MOE.Common.Data.SignalsTableAdapters.ApproachRouteDetailTableAdapter rta = new Data.SignalsTableAdapters.ApproachRouteDetailTableAdapter();
            RouteDetailTable = rta.GetData();

            MOE.Common.Data.SignalsTableAdapters.ApproachRouteTableAdapter arAdapter = new Data.SignalsTableAdapters.ApproachRouteTableAdapter();
            RouteTable = arAdapter.GetData();

            MOE.Common.Data.ActionTableAdapters.ActionLog_DisabledTableAdapter alta = new Data.ActionTableAdapters.ActionLog_DisabledTableAdapter();

            ActionLogTable = alta.GetData();


            MOE.Common.Data.ActionTableAdapters.Metric_ListTableAdapter mta = new Data.ActionTableAdapters.Metric_ListTableAdapter();
            MetricList = mta.GetData();

            MOE.Common.Data.ActionTableAdapters.AgenciesTableAdapter ata = new MOE.Common.Data.ActionTableAdapters.AgenciesTableAdapter();
            ActionAgencies = ata.GetData();

            MOE.Common.Data.ActionTableAdapters.Action_Log_MetricsTableAdapter almt = new Data.ActionTableAdapters.Action_Log_MetricsTableAdapter();
            ActionLogMetrics = almt.GetData();

            MOE.Common.Data.ActionTableAdapters.ActionsListTableAdapter actionsTA = new Data.ActionTableAdapters.ActionsListTableAdapter();
            ActionsList = actionsTA.GetData();

            MOE.Common.Data.ActionTableAdapters.Action_Log_ActionsTableAdapter actionlogactionsta = new Data.ActionTableAdapters.Action_Log_ActionsTableAdapter();
            ActionLogActions = actionlogactionsta.GetData();

            MOE.Common.Data.SettingsTableAdapters.MOE_UsersTableAdapter usersTA = new MOE.Common.Data.SettingsTableAdapters.MOE_UsersTableAdapter();
            OldUsersTable = usersTA.GetData();

            db = new Models.SPM();
        }
Пример #6
0
        public void FillforPreempt(string signalID, DateTime startDate, DateTime endDate)
        {
            List <int> Codes = new List <int>();

            for (int i = 101; i <= 111; i++)
            {
                Codes.Add(i);
            }

            Models.SPM db = new Models.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();

            this.Events.AddRange(events);
            OrderEventsBytimestamp();
        }
Пример #7
0
        static public DateTime GetMostRecentRecordTimestamp(string signalID)
        {
            Models.SPM db = new Models.SPM();

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

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



            if (row != null)
            {
                return(row.Timestamp);
            }
            else
            {
                return(twoDaysAgo);
            }
        }
Пример #8
0
        static public int GetPreviousPlan(string signalID, DateTime startDate)
        {
            Models.SPM db      = new Models.SPM();
            DateTime   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;

            if (planRecord.Count() > 0)
            {
                return(planRecord.OrderByDescending(s => s.Timestamp).FirstOrDefault().EventParam);
            }
            else
            {
                return(0);
            }
        }
Пример #9
0
 public void SetActionLogRepository(Models.SPM context)
 {
     db = context;
 }
Пример #10
0
 public void SetAgencyRepository(Models.SPM context)
 {
     db = context;
 }
Пример #11
0
 public ActionRepository(Models.SPM context)
 {
     db = context;
 }
Пример #12
0
        /// <summary>
        /// Creates a list of LinkPivotPair objects and exposes a LinkPivotAdjustment Table
        /// </summary>
        /// <param name="routeId"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="cycleTime"></param>
        /// <param name="chartLocation"></param>
        /// <param name="direction"></param>
        /// <param name="bias"></param>
        /// <param name="biasDirection"></param>
        /// <param name="days"></param>
        public LinkPivot(int routeId, DateTime startDate, DateTime endDate, int cycleTime, string chartLocation,
                         string direction, double bias, string biasDirection, List <DayOfWeek> days)
        {
            MOE.Common.Models.SPM db = new Models.SPM();
            var _ApproachRouteDetail = (from ard in db.ApproachRouteDetails
                                        .Include("Approach")
                                        where ard.ApproachRouteId == routeId
                                        orderby ard.ApproachOrder
                                        select ard).ToList();



            // Get a list of dates that matches the parameters passed by the user
            dates = GetDates(startDate, endDate, days);

            //Make a list of numbers to use as indices to perform parallelism
            List <int> indices = new List <int>();

            if (direction == "Upstream")
            {
                for (int i = _ApproachRouteDetail.Count - 1; i > 0; i--)
                {
                    indices.Add(i);
                }
                //Parallel.ForEach(indices, i =>
                foreach (int i in indices)
                {
                    pairedApproaches.Add(new LinkPivotPair(_ApproachRouteDetail[i].Approach.SignalID, GetOppositeDirection(_ApproachRouteDetail[i].Approach.DirectionType),
                                                           _ApproachRouteDetail[i].Approach.Signal.PrimaryName + " " + _ApproachRouteDetail[i].Approach.Signal.SecondaryName, _ApproachRouteDetail[i - 1].Approach.SignalID,
                                                           GetOppositeDirection(_ApproachRouteDetail[i - 1].Approach.DirectionType), _ApproachRouteDetail[i - 1].Approach.Signal.PrimaryName + " " + _ApproachRouteDetail[i - 1].Approach.Signal.SecondaryName,
                                                           startDate, endDate, cycleTime, chartLocation, bias, biasDirection, dates, i + 1));
                }
                //);
            }
            else
            {
                for (int i = 0; i < _ApproachRouteDetail.Count - 1; i++)
                {
                    indices.Add(i);
                }
                //Parallel.ForEach(indices, i =>
                foreach (int i in indices)
                {
                    pairedApproaches.Add(new LinkPivotPair(_ApproachRouteDetail[i].Approach.SignalID, _ApproachRouteDetail[i].Approach.DirectionType.Description,
                                                           _ApproachRouteDetail[i].Approach.Signal.PrimaryName + " " + _ApproachRouteDetail[i].Approach.Signal.SecondaryName, _ApproachRouteDetail[i + 1].Approach.SignalID, _ApproachRouteDetail[i + 1].Approach.DirectionType.Description,
                                                           _ApproachRouteDetail[i + 1].Approach.Signal.PrimaryName + " " + _ApproachRouteDetail[i + 1].Approach.Signal.SecondaryName, startDate, endDate, cycleTime, chartLocation, bias, biasDirection, dates, i + 1));
                }
                //);
            }



            ////If the user has selected the end of the list create a reverse sort the LinkPivotPair list
            ////otherwise build the list as ordered in the database
            //if (direction == "Upstream")
            //{
            //    //build a reverse sort LinkPivotPair list
            //   for (int i = detailTable.Rows.Count-1; i > 0; i--)
            //   {
            //       pairedApproaches.Add(new LinkPivotPair(detailTable[i].SignalID, detailTable[i].Direction,
            //           detailTable[i].Location, detailTable[i - 1].SignalID, detailTable[i - 1].Direction,
            //           detailTable[i - 1].Location, startDate, endDate, cycleTime, chartLocation, bias, biasDirection, dates));
            //   }
            //}
            //else
            //{
            //    //build a LinkPivotPair list as ordered in the database
            //    for (int i = 0; i < detailTable.Rows.Count - 1; i++)
            //    {
            //        pairedApproaches.Add(new LinkPivotPair(detailTable[i].SignalID, detailTable[i].Direction,
            //            detailTable[i].Location, detailTable[i + 1].SignalID, detailTable[i + 1].Direction,
            //            detailTable[i + 1].Location, startDate, endDate, cycleTime, chartLocation, bias, biasDirection, dates));
            //    }
            //}

            //Cycle through the LinkPivotPair list and add the statistics to the LinkPivotadjustmentTable
            foreach (int i in indices)
            {
                //Make sure the list is in the correct order after parrallel processing
                var lpps = from pair in pairedApproaches
                           where pair.SignalId == _ApproachRouteDetail[i].Approach.SignalID
                           select pair;

                foreach (var lpp in lpps)
                {
                    adjustment.AddLinkPivotAdjustmentRow(lpp.SignalId, Convert.ToInt32(lpp.SecondsAdded), 0,
                                                         lpp.PAOGUpstreamBefore, lpp.PAOGDownstreamBefore, lpp.AOGUpstreamBefore, lpp.AOGDownstreamBefore,
                                                         lpp.PAOGUpstreamPredicted, lpp.PAOGDownstreamPredicted, lpp.AOGUpstreamPredicted, lpp.AOGDownstreamPredicted,
                                                         lpp.Location, lpp.DownSignalId, lpp.DownstreamApproachDirection, lpp.UpstreamApproachDirection,
                                                         lpp.ResultChartLocation, lpp.DownstreamLocation, lpp.AOGTotalBefore, lpp.PAOGTotalBefore,
                                                         lpp.AOGTotalPredicted, lpp.PAOGTotalPredicted, lpp.LinkNumber, lpp.TotalVolumeDownstream,
                                                         lpp.TotalVolumeUpstream);
                }
            }

            //Set the end row to have zero for the ajustments. No adjustment can be made because
            //downstream is unknown. The end row is determined by the starting point seleceted by the user
            if (direction == "Upstream")
            {
                //End row for upstream is index 0
                adjustment.AddLinkPivotAdjustmentRow(_ApproachRouteDetail[0].Approach.SignalID, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, _ApproachRouteDetail[0].Approach.Signal.PrimaryName + " " + _ApproachRouteDetail[0].Approach.Signal.SecondaryName,
                                                     "", "", "", "", "", 0, 0, 0, 0, 1, 0, 0);
            }
            else
            {
                //End row for downstream is last row in the detail table
                adjustment.AddLinkPivotAdjustmentRow(_ApproachRouteDetail[_ApproachRouteDetail.Count - 1].Approach.SignalID, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                                                     _ApproachRouteDetail[_ApproachRouteDetail.Count - 1].Approach.Signal.PrimaryName + " " + _ApproachRouteDetail[_ApproachRouteDetail.Count - 1].Approach.Signal.SecondaryName, "", "", "", "", "", 0, 0, 0, 0, _ApproachRouteDetail.Count, 0, 0);
            }

            int cumulativeChange = 0;

            //Determine the adjustment by adding the previous rows adjustment to the current rows delta
            for (int i = adjustment.Count - 1; i >= 0; i--)
            {
                //if the new adjustment is greater than the cycle time than the adjustment should subtract
                // the cycle time from the current adjustment and the result should be the new adjustment
                if (cumulativeChange + adjustment[i].Delta > cycleTime)
                {
                    adjustment[i].Adjustment = cumulativeChange + adjustment[i].Delta - cycleTime;
                    cumulativeChange         = cumulativeChange + adjustment[i].Delta - cycleTime;
                }
                else
                {
                    adjustment[i].Adjustment = cumulativeChange + adjustment[i].Delta;
                    cumulativeChange         = cumulativeChange + adjustment[i].Delta;
                }
            }
        }
Пример #13
0
 public void SetApplicationSettingsRepository(Models.SPM context)
 {
     db = context;
 }