示例#1
0
        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);
        }
示例#2
0
        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];
        }
示例#3
0
        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];
        }