Example #1
0
        public static IBoardsReader GetDataReader(bool messageRequest = true)
        {
            if (OuthubReader == null)
            {
                bool notExist = !System.IO.File.Exists(OuthubGridFile);
                DataManager.Boards.Readers.BoardsReadParameters_Outhub p = new DataManager.Boards.Readers.BoardsReadParameters_Outhub(OuthubGridFile, notExist);
                p.OuthubOnly = true;
                if (notExist && messageRequest)
                {
                    System.Windows.Forms.MessageBox.Show(noGridInCash, "База данных OUTHUB", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
                }

                DataManager.Boards.Readers.ReaderBuilder b = new DataManager.Boards.Readers.ReaderBuilder();
                OuthubReader = b.Build(p);
            }
            return(OuthubReader);
        }
Example #2
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);
            //    }
            //}
        }