Exemple #1
0
        private void MnuSearchDoors_Click(object sender, System.EventArgs e)
        {
            double dist;

            if (!double.TryParse(txtDistance.Text, out dist))
            {
                MessageBox.Show("Ошибка чтения ячейки с дистанцией.", "Дистанция поиска", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            if (dist > 2000 || dist < 1)
            {
                MessageBox.Show("Дистанция поиска может быть в диапазоне 1-2000 метров. Исправьте и повторите.", "Дистанция поиска", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            dist /= 1000;

            var binds = olvBinds.CollectCheckedObjects <Bind>(ObjectListViewHelper.ObjectListViewCollector.All);

            if (binds.Count == 0)
            {
                MessageBox.Show("Список привязок пуст. Необходимо загрузить привязки, прежде чем искать плоскости.", "Список привязок пуст", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            IBoardsReader reader = Helpers.DoorsHelper.GetDataReader(true);

            if (reader == null)
            {
                return;
            }
            List <IBoard> boards;

            if (reader.Boards == null || reader.Boards.Count == 0)
            {
                try
                {
                    boards = reader.ReadData().ToList();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show("Ошибка чтения базы Infopanel:\n" + ex.Message, "Ошибка подключения к базе", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            else
            {
                boards = reader.Boards;
            }

            binds = binds.UpdateBoards(boards, dist).ToList();
            olvBinds.UpdateObjects(binds);
            OlvBinds_SelectionChanged(null, null);

            //foreach (var bind in binds)
            //{
            //    if (bind.Error == null)
            //    {
            //        bind.BindedBoards = new List<IBoard>();
            //        foreach (var board in boards)
            //        {
            //            var distance = bind.Address.Coordinates.DistanceBetween(board.Location, DistanceUnits.Kilometers);
            //            if (distance.Value <= dist)
            //            {
            //                bind.BindedBoards.Add(board);
            //            }
            //        }
            //        olvBinds.UpdateObject(bind);
            //    }
            //}
        }