private void SetNonLaneDetectors() { List <Models.DirectionType> directions = db.DirectionTypes.ToList(); var detectionstypeslist = db.DetectionTypes.ToList(); foreach (MOE.Common.Data.Signals.Graph_DetectorsRow row in DetectorsTable) { if (row.Det_Channel > 0) { var detector = CreateNewDetector(row, detectionstypeslist); var signal = SignalsList.Where(s => s.SignalID == row.SignalID).FirstOrDefault(); if (signal != null) { var approach = signal.Approaches .Where(a => a.DirectionType.Description == row.Direction && a.ProtectedPhaseNumber == Convert.ToInt32(row.Phase)) .FirstOrDefault(); if (approach == null) { approach = CreateNewApproach(row, directions); signal.Approaches.Add(approach); } if (approach.Detectors == null) { approach.Detectors = new List <Models.Detector>(); } approach.Detectors.Add(detector); } } } }
//Загрузить список сигналов, возвращает ошибку или "" public string LoadSignals() { StartAtom(Atom.LoadSignals); CountsToZero(); if (State == State.Closed) { AddError("Копилятор уже был закрыт"); } else if (State == State.Empty) { AddError("Проект не загружен"); } else { try { var objectsId = new DicI <ObjectSignal>(); Signals.Clear(); SignalsList.Clear(); //using (var db = new DaoDb(_projectFile)) using (var db = new DaoDb(_objectsFile)) //ab\ { using (var reco = new ReaderAdo(db, "SELECT CodeObject, NameObject, TagObject, ObjectId, CommName FROM Objects ORDER BY ObjectId")) { AddEvent("Открыт рекордсет объектов"); Procent = 5; while (reco.Read()) { var curo = new ObjectSignal(reco, false); Objects.Add(curo.Code, curo); objectsId.Add(curo.Id, curo); } AddEvent("Объекты загружены"); } Thread.Sleep(50); Procent = 20; using (var recs = new ReaderAdo(db, "SELECT ObjectId, Default, CodeSignal, NameSignal, Units, DataType, ConstValue, SourceName, ReceiverName, Inf, FullCode FROM Signals ORDER BY ObjectId, SignalId")) { int i = 0, n = recs.RecordCount("SELECT Count(*) FROM Signals"); Procent = 30; AddEvent("Открыт рекордсет сигналов"); if (n != 0) { while (recs.Read()) { var sig = new Signal(recs, objectsId, false); SignalsList.Add(sig); Signals.Add(sig.FullCode, sig); if (sig.Default && objectsId.ContainsKey(sig.ObjectId)) { Signals.Add(objectsId[sig.ObjectId].Code, sig); } if (n > 20 && i % (n / 15) == 0) { Procent = (i++ *70) / n + 30; } } } } AddEvent("Сигналы загружены"); } } catch (Exception ex) { //ab //AddError("Ошибка загрузки сигналов", ex); AddError("Ошибка загрузки сигналов: " + ex.Message, ex); //\ab } } return(FinishAtom(State.Signals, State.Project, "Проект: " + _code + @"; Сигналов: " + SignalsList.Count)); }
public void SaveSignalsToDB() { db.Signals.AddRange(SignalsList.Distinct()); db.SaveChanges(); }
public void SaveSignalsToDB() { db.Signals.AddRange(SignalsList.Distinct()); Console.WriteLine("Saving Signals"); db.SaveChanges(); }
private void SetApproaches() { Console.WriteLine("Setting up New Approaches"); List <Models.DirectionType> directions = (from r in db.DirectionTypes select r).ToList(); foreach (MOE.Common.Data.Signals.Graph_DetectorsRow row in DetectorsTable) { var signal = SignalsList.Where(s => s.SignalID == row.SignalID).First(); if (signal.Approaches == null) { signal.Approaches = new List <MOE.Common.Models.Approach>(); } Models.Approach approach; if (row.Phase == "0") { approach = signal.Approaches .Where(s => s.DirectionType.Description == row.Direction) .FirstOrDefault(); } else { approach = signal.Approaches .Where(s => s.DirectionType.Description == row.Direction && s.ProtectedPhaseNumber == Convert.ToInt32(row.Phase)) .FirstOrDefault(); } if (approach == null) { signal.Approaches.Add(CreateNewApproach(row, directions)); } else if (approach.ProtectedPhaseNumber == 0 && row.Phase != "0") { approach.ProtectedPhaseNumber = Convert.ToInt32(row.Phase); approach.Description = approach.DirectionType.Description + " Phase " + approach.ProtectedPhaseNumber.ToString(); } else if (approach.ProtectedPhaseNumber != 0 && row.Phase != "0" && approach.ProtectedPhaseNumber != Convert.ToInt32(row.Phase)) { signal.Approaches.Add(CreateNewApproach(row, directions)); } foreach (Models.DirectionType direction in directions) { int maxMPH = (from r in signal.Approaches where r.DirectionTypeID == direction.DirectionTypeID select r.MPH).Max() ?? 0; foreach (Models.Approach a in signal.Approaches) { if (a.DirectionTypeID == direction.DirectionTypeID) { a.MPH = maxMPH; } } } } }