private void AgAkisDelete_Row(object sender, RoutedEventArgs e)
        {
            BtnAdd.Text   = "Ekle";
            BtnAdd.Margin = new Thickness(100, 0, 0, 0);

            var row = (Button)sender;
            var ctx = row.DataContext;
            var obj = (AgAkis)ctx;

            AgAkisDataGrid.ItemsSource = null;
            this.agAnahtariAgArayuzu.AgAkisList.Remove(obj);
            toplam            = this.agAnahtariAgArayuzu.AgAkisList.Select(s => s.Yuk).Sum();
            MainTitle.Content = "Ağ Akışı - " + toplam.ToString("0.##") + " Mbps";

            AgAkisDataGrid.ItemsSource = this.agAnahtariAgArayuzu.AgAkisList;

            if (this.agAnahtariAgArayuzu.AgAkisList.Count == 0)
            {
                AgAkisDataGrid.Visibility  = Visibility.Hidden;
                AgAkisNoDataRow.Visibility = Visibility.Visible;
            }

            checkedAgAkisRow = null;
            agAkis           = new AgAkis();
            agAkis.VarisNoktasiIdNameList   = new List <KeyValuePair <Guid, string> >();
            agAkis.AgArayuzuId              = this.agAnahtariAgArayuzu.UniqueId;
            GirdiComboBox.ItemsSource       = null;
            GelenAgAkisComboBox.ItemsSource = null;
            AgAkisTipi.ItemsSource          = null;
            SetAgAkisTipiList();
            SetAgArayuzuInputList();
        }
        private void AgAkisRow_Checked(object sender, RoutedEventArgs e)
        {
            if (checkedAgAkisRow != null)
            {
                checkedAgAkisRow.IsChecked = false;
            }

            BtnAdd.Text   = "Güncelle";
            BtnAdd.Margin = new Thickness(80, 0, 0, 0);

            checkedAgAkisRow = (CheckBox)sender;
            var ctx = checkedAgAkisRow.DataContext;

            agAkis = new AgAkis();
            agAkis = (AgAkis)((AgAkis)ctx).Clone();

            agAkis.InputList           = agAnahtariAgArayuzu.Node.InputList.Where(x => x.TypeId == (int)TipEnum.AgAnahtariAgArayuzu).ToList();
            GirdiComboBox.ItemsSource  = agAkis.InputList;
            GirdiComboBox.SelectedItem = agAkis.InputList.Where(x => x.UniqueId == agAkis.IliskiliAgArayuzuId).FirstOrDefault();

            GelenAgAkisComboBox.SelectedItem = girdiList.Where(o => o.Id == agAnahtariAgArayuzu.AgAkisList.Where(x => x.Id == agAkis.Id).Select(s => s.IliskiliAgArayuzuAgAkisId).FirstOrDefault()).FirstOrDefault();

            agAkis.AgAkisTipiList   = kodListeService.ListAgAkisTipi();
            AgAkisTipi.ItemsSource  = agAkis.AgAkisTipiList;
            AgAkisTipi.SelectedItem = agAkis.AgAkisTipiList.Where(x => x.Id == agAkis.AgAkisTipiId).FirstOrDefault();

            Yuk.Text = agAkis.Yuk.ToString();
            foreach (var varisNoktasiIdName in agAnahtariAgArayuzu.AgAkisList.Where(x => x.Id == agAkis.Id).Select(s => s.VarisNoktasiIdNameList).FirstOrDefault())
            {
                agAkis.VarisNoktasiIdNameList.Add(varisNoktasiIdName);
            }
            agAkis.Id = Guid.Empty;
        }
        public AgAnahtariAgAkisPopupWindow(ConnectorViewModel agAnahtariAgArayuzu)
        {
            this.agAnahtariAgArayuzu = agAnahtariAgArayuzu;
            toplam = this.agAnahtariAgArayuzu.AgAkisList.Select(s => s.Yuk).Sum();

            agAkis = new AgAkis();
            agAkis.VarisNoktasiIdNameList = new List <KeyValuePair <Guid, string> >();
            kodListeService = new KodListeService();
            InitializeComponent();
            MainTitle.Content = "Ağ Akışı - " + toplam.ToString("0.##") + " Mbps";

            Loaded += Window_Loaded;
        }
예제 #4
0
        public void UpdateAgAkisFromConnect(ConnectViewModel connect, bool isDelete)
        {
            if (isDelete)
            {
                connect.ToConnector.AgAkisList.Clear();
            }
            else
            {
                if (connect.FromConnector.AgAkisList != null && connect.FromConnector.AgAkisList.Count() != 0)
                {
                    connect.ToConnector.AgAkisList = new List <AgAkis>();
                    connect.ToConnector.AgAkisList.Clear();
                    foreach (var agAkis in connect.FromConnector.AgAkisList)
                    {
                        var agAkisTemp = new AgAkis();
                        agAkisTemp.Id                     = Guid.NewGuid();
                        agAkisTemp.AgArayuzuId            = connect.ToConnector.UniqueId;
                        agAkisTemp.Yuk                    = agAkis.Yuk;
                        agAkisTemp.AgAkisTipiId           = agAkis.AgAkisTipiId;
                        agAkisTemp.AgAkisTipiAdi          = agAkis.AgAkisTipiAdi;
                        agAkisTemp.IliskiliAgArayuzuId    = agAkis.IliskiliAgArayuzuId;
                        agAkisTemp.IliskiliAgArayuzuAdi   = agAkis.IliskiliAgArayuzuAdi;
                        agAkisTemp.VarisNoktasiIdNameList = agAkis.VarisNoktasiIdNameList;
                        agAkisTemp.FromNodeUniqueId       = agAkis.FromNodeUniqueId;

                        connect.ToConnector.AgAkisList.Add(agAkisTemp);
                        connect.AgYuku = connect.ToConnector.AgAkisList.Select(x => x.Yuk).Sum();
                    }
                }
            }

            if (connect.ToConnector.Node.TypeId == (int)TipEnum.AgAnahtari)
            {
                foreach (var output in connect.ToConnector.Node.Transitions.Items)
                {
                    var list = output.AgAkisList.Where(x => x.IliskiliAgArayuzuId == connect.ToConnector.UniqueId).ToList();

                    foreach (var item in list)
                    {
                        output.AgAkisList.Remove(item);
                    }

                    if (output.Connect != null)
                    {
                        output.Connect.AgYuku = output.AgAkisList.Select(s => s.Yuk).Sum();
                        UpdateAgAkisFromConnect(output.Connect, false);
                    }
                }
            }
        }
        private void AgAkisRow_Unchecked(object sender, RoutedEventArgs e)
        {
            BtnAdd.Text   = "Ekle";
            BtnAdd.Margin = new Thickness(100, 0, 0, 0);

            checkedAgAkisRow = null;
            agAkis           = new AgAkis();
            agAkis.VarisNoktasiIdNameList = new List <KeyValuePair <Guid, string> >();
            agAkis.AgArayuzuId            = this.agAnahtariAgArayuzu.UniqueId;

            GirdiComboBox.ItemsSource       = null;
            GelenAgAkisComboBox.ItemsSource = null;
            AgAkisTipi.ItemsSource          = null;
            SetAgAkisTipiList();
            SetAgArayuzuInputList();
        }
        private void ButtonAddAgAkis_Click(object sender, RoutedEventArgs e)
        {
            var validationContext = new ValidationContext(agAkis, null, null);
            var results           = new List <System.ComponentModel.DataAnnotations.ValidationResult>();

            if (Validator.TryValidateObject(agAkis, validationContext, results, true))
            {
                var inputToplamAgYuku = this.agAnahtariAgArayuzu.Node.InputList.Where(x => x.UniqueId == agAkis.IliskiliAgArayuzuId).Select(s => s.AgAkisList.Select(k => k.Yuk).Sum()).FirstOrDefault();
                if (inputToplamAgYuku != 0)
                {
                    bool broadcastValid = true;
                    bool unicastValid   = true;

                    if ((agAkis.AgAkisTipiId == (int)AgAkisTipEnum.Broadcast || agAkis.AgAkisTipiId == (int)AgAkisTipEnum.Multicast) && agAnahtariAgArayuzu.AgAkisList.Where(x => x.IliskiliAgArayuzuAgAkisId == agAkis.IliskiliAgArayuzuAgAkisId).Any())
                    {
                        broadcastValid = false;
                    }
                    else
                    {
                        decimal unicastTotal = 0;
                        if (agAkis.AgAkisTipiId == (int)AgAkisTipEnum.Unicast)
                        {
                            if (!string.IsNullOrEmpty(Yuk.Text))
                            {
                                agAkis.Yuk = Convert.ToDecimal(Yuk.Text);
                                var definedUnicastTotal = this.agAnahtariAgArayuzu.Node.InputList.Where(x => x.UniqueId == agAkis.IliskiliAgArayuzuId).Select(s => s.AgAkisList.Where(a => a.Id == agAkis.IliskiliAgArayuzuAgAkisId).Select(k => k.Yuk).Sum()).FirstOrDefault();

                                unicastTotal  = agAnahtariAgArayuzu.AgAkisList.Where(x => x.IliskiliAgArayuzuAgAkisId == agAkis.IliskiliAgArayuzuAgAkisId).Select(s => s.Yuk).FirstOrDefault();
                                unicastTotal += agAkis.Yuk;

                                if (unicastTotal > definedUnicastTotal)
                                {
                                    unicastValid = false;
                                }
                            }
                            else
                            {
                                agAkis.Yuk = 0;
                            }
                        }
                    }
                    if (unicastValid && broadcastValid)
                    {
                        decimal total = 0;
                        if (checkedAgAkisRow != null)
                        {
                            var ctx = checkedAgAkisRow.DataContext;
                            var obj = (AgAkis)ctx;

                            total = (this.agAnahtariAgArayuzu.AgAkisList.Select(s => s.Yuk).Sum() + agAkis.Yuk) - obj.Yuk;
                        }
                        else
                        {
                            total = this.agAnahtariAgArayuzu.AgAkisList.Select(s => s.Yuk).Sum() + agAkis.Yuk;
                        }

                        if (this.agAnahtariAgArayuzu.MaxKapasite >= total)
                        {
                            toplam            = total;
                            MainTitle.Content = "Ağ Akışı - " + toplam.ToString("0.##") + " Mbps";

                            if (checkedAgAkisRow != null)
                            {
                                var ctx = checkedAgAkisRow.DataContext;
                                var obj = (AgAkis)ctx;
                                this.agAnahtariAgArayuzu.AgAkisList.Remove(obj);
                                checkedAgAkisRow = null;
                            }

                            BtnAdd.Text   = "Ekle";
                            BtnAdd.Margin = new Thickness(100, 0, 0, 0);

                            AgAkisDataGrid.ItemsSource = null;
                            agAkis.Id                   = Guid.NewGuid();
                            agAkis.AgAkisTipiAdi        = agAkis.AgAkisTipiList.Where(x => x.Id == agAkis.AgAkisTipiId).Select(s => s.Ad).FirstOrDefault();
                            agAkis.IliskiliAgArayuzuAdi = agAkis.InputList.Where(x => x.UniqueId == agAkis.IliskiliAgArayuzuId).Select(s => s.Label).FirstOrDefault();
                            agAkis.FromNodeName         = this.agAnahtariAgArayuzu.NodesCanvas.Nodes.Items.Where(x => x.UniqueId == agAkis.FromNodeUniqueId).Select(s => s.Name).FirstOrDefault();

                            this.agAnahtariAgArayuzu.AgAkisList.Add(agAkis);

                            AgAkisDataGrid.ItemsSource = this.agAnahtariAgArayuzu.AgAkisList;
                            AgAkisDataGrid.Visibility  = Visibility.Visible;
                            AgAkisNoDataRow.Visibility = Visibility.Hidden;

                            agAkis = new AgAkis();
                            agAkis.VarisNoktasiIdNameList   = new List <KeyValuePair <Guid, string> >();
                            agAkis.AgArayuzuId              = this.agAnahtariAgArayuzu.UniqueId;
                            GirdiComboBox.ItemsSource       = null;
                            GelenAgAkisComboBox.ItemsSource = null;
                            AgAkisTipi.ItemsSource          = null;
                            SetAgAkisTipiList();
                            SetAgArayuzuInputList();
                        }
                        else
                        {
                            NotifyInfoPopup nfp = new NotifyInfoPopup();
                            nfp.msg.Text = "Ağın iletebileceği yük kapasitesi " + this.agAnahtariAgArayuzu.MinKapasite + " - " + this.agAnahtariAgArayuzu.MaxKapasite + " Mbps arasında olmalıdır!";
                            nfp.Owner    = Owner;
                            nfp.Show();
                        }
                    }
                    else
                    {
                        if (!broadcastValid)
                        {
                            NotifyInfoPopup nfp = new NotifyInfoPopup();
                            nfp.msg.Text = "Seçtiğiniz ağ akışı için daha önce kayıt yapılmıştır!";
                            nfp.Owner    = Owner;
                            nfp.Show();
                        }

                        if (!unicastValid)
                        {
                            NotifyInfoPopup nfp = new NotifyInfoPopup();
                            nfp.msg.Text = "Unicast ağ akışının toplam kapasitesini aştınız!";
                            nfp.Owner    = Owner;
                            nfp.Show();
                        }
                    }
                }
                else
                {
                    NotifyInfoPopup nfp = new NotifyInfoPopup();
                    nfp.msg.Text = "Seçtiğiniz girdi için ağ akışı tanımlaması yapılmadığı için, bu girdi için ağ akışı tanımlanamz.";
                    nfp.Owner    = Owner;
                    nfp.Show();
                }
            }
            else
            {
                foreach (var result in results)
                {
                    foreach (var memberName in result.MemberNames)
                    {
                        if (memberName == "Yuk")
                        {
                            Yuk.BorderBrush = new SolidColorBrush(Colors.Red);
                        }
                    }
                }
            }
        }