public static int GetKoppelSignaalCount(string koppeling, ControllerModel c, string name, CCOLKoppelSignaalRichtingEnum richting) { var koppelingKey = koppeling + richting.ToString(); if (_koppelSignaalCountSet.ContainsKey(koppelingKey) && _koppelSignalen.ContainsKey(koppelingKey) && !_koppelSignaalCountSet[koppelingKey]) { _koppelSignalen[koppelingKey].Sort((x, y) => (x.Order * 1000 + x.Count).CompareTo(y.Order * 1000 + y.Count)); for (int i = 1; i <= _koppelSignalen[koppelingKey].Count; i++) { if (!_koppelSignalen[koppelingKey][i - 1].CountSetManually) { _koppelSignalen[koppelingKey][i - 1].CountAll = i; } else { _koppelSignalen[koppelingKey][i - 1].CountAll = _koppelSignalen[koppelingKey][i - 1].Count; } } _koppelSignaalCountSet[koppelingKey] = true; } var ks = _koppelSignalen[koppelingKey].FirstOrDefault(x => x.Name == name && x.Richting == richting); if (ks == null) { return(0); } var ct = ks.CountAll; switch (ks.Richting) { case CCOLKoppelSignaalRichtingEnum.In: var kop = c.PTPData.PTPKoppelingen.FirstOrDefault(x => x.TeKoppelenKruispunt == koppeling); //if (kop.StartIndexInkomendeKoppelSignalen > 1) ct += kop.StartIndexInkomendeKoppelSignalen - 1; break; case CCOLKoppelSignaalRichtingEnum.Uit: var kop2 = c.PTPData.PTPKoppelingen.FirstOrDefault(x => x.TeKoppelenKruispunt == koppeling); //if (kop2.StartIndexUitgaandeKoppelSignalen > 1) ct += kop2.StartIndexUitgaandeKoppelSignalen - 1; break; } return(ct); }
public static void AddKoppelSignaal(string koppeling, int order, int count, string name, CCOLKoppelSignaalRichtingEnum richting) { var koppelingKey = koppeling + richting.ToString(); if (!_koppelSignalen.ContainsKey(koppelingKey)) { _koppelSignalen.Add(koppelingKey, new List <CCOLKoppelSignaal>()); _koppelSignaalCountSet.Add(koppelingKey, false); } else if (count != 0 && _koppelSignalen[koppelingKey].Any(x => x.Count == count)) { TLCGen.Dependencies.Providers.TLCGenDialogProvider.Default.ShowMessageBox($"" + $"{(richting == CCOLKoppelSignaalRichtingEnum.In ? "Ingangssignaal" : "Uitgangssignaal")} " + $"nummer {count} van koppeling {koppeling} wordt reeds elders gebruikt. Dit kan de juiste werking " + $"van de regeling negatief beinvloeden.", "Koppelsignaal dubbel gebruikt", System.Windows.MessageBoxButton.OK); } if (!_koppelSignaalCountPerFunc.ContainsKey(koppelingKey)) { _koppelSignaalCountPerFunc.Add(koppelingKey, new Dictionary <int, int>()); } if (!_koppelSignaalCountPerFunc[koppelingKey].ContainsKey(order)) { _koppelSignaalCountPerFunc[koppelingKey].Add(order, 1); } if (count == 0) { count = _koppelSignaalCountPerFunc[koppelingKey][order]; _koppelSignalen[koppelingKey].Add(new CCOLKoppelSignaal() { Count = count, Order = order, Name = name, Richting = richting }); } else { _koppelSignalen[koppelingKey].Add(new CCOLKoppelSignaal() { Count = count, Order = order, Name = name, Richting = richting, CountSetManually = true }); } ++_koppelSignaalCountPerFunc[koppelingKey][order]; }
public static void AddKoppelSignaal(string koppeling, int order, string name, CCOLKoppelSignaalRichtingEnum richting) { var koppelingKey = koppeling + richting.ToString(); if (!_koppelSignaalCountPerFunc.ContainsKey(koppelingKey)) { _koppelSignaalCountPerFunc.Add(koppelingKey, new Dictionary <int, int>()); } if (!_koppelSignaalCountPerFunc[koppelingKey].ContainsKey(order)) { _koppelSignaalCountPerFunc[koppelingKey].Add(order, 1); } if (!_koppelSignalen.ContainsKey(koppelingKey)) { _koppelSignalen.Add(koppelingKey, new List <CCOLKoppelSignaal>()); _koppelSignaalCountSet.Add(koppelingKey, false); } _koppelSignalen[koppelingKey].Add(new CCOLKoppelSignaal() { Count = _koppelSignaalCountPerFunc[koppelingKey][order], Order = order, Name = name, Richting = richting }); ++_koppelSignaalCountPerFunc[koppelingKey][order]; }