Beispiel #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            DataBaseCenter dataBaseCenter = DataBaseCenter.Create();

            if (dataBaseCenter.Autorization(user.login, textBox1.Text) != null)
            {
                if (textBox2.Text == textBox3.Text)
                {
                    if (0 < dataBaseCenter.RunCommand(string.Format("UPDATE пользователи SET пароль='{1}' WHERE id='{0}'", user.id, DataBaseCenter.HashPass(textBox2.Text))))
                    {
                        MessageBox.Show("Пароль изменен", "Оповещение");
                    }
                    else
                    {
                        MessageBox.Show("Пароль изменить не удалось!", "Ошибка");
                    };
                }
                else
                {
                    MessageBox.Show("Новые пароли не совпадают!", "Ошибка");
                }
            }
            else
            {
                MessageBox.Show("Старый пароль неверный!", "Ошибка");
            };
        }
Beispiel #2
0
        public bool Authorization()
        {
            VkApi vkAcc = new VkApi();

            try
            {
                DataBaseCenter dataBase  = DataBaseCenter.Create();
                DataTable      dataTable = dataBase.GetDataTable("SELECT значение FROM Настройки WHERE название='vk'");
                if (dataTable.Rows.Count == 0)
                {
                    return(false);
                }
                string[] str = dataTable.Rows[0].ItemArray[0].ToString().Split("|".ToCharArray());
                ulong.TryParse(str[0], out appId);
                login = str[1];
                pass  = str[2];
                vkAcc.Authorize(new ApiAuthParams
                {
                    ApplicationId = appId,
                    Login         = login,
                    Password      = pass,
                    AccessToken   = str[3],
                    Settings      = Settings.All
                });
            }
            catch
            {
                return(false);
            }

            vkMessages = new VkMessages(vkAcc);
            vkBot      = new VkBot(vkAcc, vkMessages);
            return(true);
        }
Beispiel #3
0
        private LongPollHistoryResponse GetLongPoolHistory()
        {
            if (!Ts.HasValue)
            {
                GetLongPoolServer(null);
            }
            MessagesGetLongPollHistoryParams rp = new MessagesGetLongPollHistoryParams();

            rp.Ts  = Ts.Value;
            rp.Pts = Pts;

            int c = 0;
            LongPollHistoryResponse history = null;
            string errorLog = "";

            while (c < 5 && history == null)
            {
                c++;
                try
                {
                    history = vkAcc.Messages.GetLongPollHistory(rp);
                }
                catch (TooManyRequestsException)
                {
                    Thread.Sleep(150);
                    c--;
                }
                catch (Exception ex)
                {
                    DataBaseCenter        dataBase  = DataBaseCenter.Create();
                    System.Data.DataTable dataTable = dataBase.GetDataTable("SELECT значение FROM Настройки WHERE название='vk'");
                    string[] str = dataTable.Rows[0].ItemArray[0].ToString().Split("|".ToCharArray());
                    ulong    appId;
                    ulong.TryParse(str[0], out appId);
                    vkAcc.Authorize(new ApiAuthParams
                    {
                        ApplicationId = appId,
                        Login         = str[1],
                        Password      = str[2],
                        AccessToken   = str[3],
                        Settings      = Settings.All
                    });
                    try { GetLongPoolServer(null); } catch { };
                }
            }

            if (history != null)
            {
                Pts = history.NewPts;
                foreach (var m in history.Messages)
                {
                    m.FromId = m.Type == VkNet.Enums.MessageType.Sended ? vkAcc.UserId : m.UserId;
                }
            }

            return(history);
        }
Beispiel #4
0
        public QiwiWatcher()
        {
            DataBaseCenter dataBase  = DataBaseCenter.Create();
            DataTable      dataTable = dataBase.GetDataTable("SELECT значение FROM Настройки WHERE название='qiwi'");

            string[] str = dataTable.Rows[0].ItemArray[0].ToString().Split("|".ToCharArray());
            phone = str[0];
            token = str[1];
        }
Beispiel #5
0
        public static DataBaseCenter Create()
        {
            if (dataBaseCenter == null)
            {
                dataBaseCenter = new DataBaseCenter();
            }

            return(dataBaseCenter);
        }
Beispiel #6
0
        private void сброситьПарольToolStripMenuItem_Click(object sender, EventArgs e)
        {
            string alhp   = "qwertyuiopasdfghjklzxcvbnm";
            Random random = new Random();
            string pass   = alhp[random.Next(25)].ToString() +
                            alhp[random.Next(25)].ToString() +
                            alhp[random.Next(25)].ToString() +
                            alhp[random.Next(25)].ToString() +
                            alhp[random.Next(25)].ToString();

            пользователиDataGridView.CurrentRow.Cells[3].Value = DataBaseCenter.HashPass(pass);
            MessageBox.Show("Новый пароль " + pass, "Оповещение");
        }
        public WinFormDataParkings(User user)
        {
            InitializeComponent();
            парковкиDataGridView.DataError += new DataGridViewDataErrorEventHandler(DataGridView_DataError);
            DataBaseCenter dataBase = DataBaseCenter.Create();

            if (dataBase.CheckRigth(user, Rights.редПольз))
            {
                парковкиDataGridView.ReadOnly            = false;
                bindingNavigatorAddNewItem.Enabled       = true;
                bindingNavigatorDeleteItem.Enabled       = true;
                парковкиBindingNavigatorSaveItem.Enabled = true;
            }
        }
Beispiel #8
0
        private void button1_Click(object sender, EventArgs e)
        {
            DataBaseCenter dataBaseCenter = DataBaseCenter.Create();
            User           user           = null;

            user = dataBaseCenter.Autorization(textBox1.Text, textBox2.Text);
            if (user != null)
            {
                (new WinFormMain(user)).Show();
                this.Hide();
            }
            else
            {
                MessageBox.Show("Неверный логин или пароль!", "Ошибка");
            }
        }
Beispiel #9
0
        private void button8_Click(object sender, EventArgs e)
        {
            DataBaseCenter dataBase = DataBaseCenter.Create();

            if (!dataBase.CheckRigth(user, Rights.группы))
            {
                MessageBox.Show("Недостаточно прав!", "Предупреждение");
                return;
            }

            try
            {
                (new WinFormDataGroups()).Show();
            }
            catch { }
        }
Beispiel #10
0
 private void button3_Click(object sender, EventArgs e)
 {
     if (double.TryParse(textBox3.Text, out double d))
     {
         DataBaseCenter dataBaseCenter = DataBaseCenter.Create();
         dataBaseCenter.AddPayment(textBox6.Text, textBox3.Text);
         MessageBox.Show("Выполнено!", "Оповещение");
         panel2.Visible = false;
         клиентыDataGridView.Enabled = true;
         this.клиентыTableAdapter.Fill(this.parkingDataSet.клиенты);
     }
     else
     {
         MessageBox.Show("Введена некорректная сумма!", "Ошибка");
     }
 }
Beispiel #11
0
        private void button10_Click(object sender, EventArgs e)
        {
            DataBaseCenter dataBase = DataBaseCenter.Create();

            if (!dataBase.CheckRigth(user, Rights.настройки))
            {
                MessageBox.Show("Недостаточно прав!", "Предупреждение");
                return;
            }

            try
            {
                (new WinFormQiwiSetting()).Show();
            }
            catch { }
        }
Beispiel #12
0
        public WinFormDataClients(User user)
        {
            InitializeComponent();
            клиентыDataGridView.DataError          += new DataGridViewDataErrorEventHandler(DataGridView_DataError);
            контактыклиентовDataGridView.DataError += new DataGridViewDataErrorEventHandler(DataGridView_DataError);
            DataBaseCenter dataBase = DataBaseCenter.Create();

            if (dataBase.CheckRigth(user, Rights.редКлиенты))
            {
                клиентыDataGridView.ReadOnly          = false;
                bindingNavigatorDeleteItem.Enabled    = true;
                toolStripButton2.Enabled              = true;
                контактыклиентовDataGridView.ReadOnly = false;
            }

            клиентыDataGridView.Columns[3].ReadOnly = true;
        }
Beispiel #13
0
        private void WinFormSettings_Load(object sender, EventArgs e)
        {
            try
            {
                FileStream stream    = new FileStream("Настройки\\Камеры.cfg", FileMode.Open);
                byte[]     byte_buff = new byte[(int)stream.Length];
                stream.Read(byte_buff, 0, (int)stream.Length);
                string str_buff = Encoding.Default.GetString(byte_buff);
                cameras = JsonConvert.DeserializeObject <List <Camera> >(str_buff);
                stream.Close();
            }
            catch { }

            for (int i = 0; i < cameras.Count; i++)
            {
                listBox1.Items.Add(cameras[i].camName + " // " + cameras[i].url);
                listBox2.Items.Add(cameras[i].camName + " // " + cameras[i].url);
            }

            if (cameras.Count != 0)
            {
                listBox1.SelectedIndex = 0;
                listBox2.SelectedIndex = 0;
            }

            DataBaseCenter dataBase = DataBaseCenter.Create();

            if (!dataBase.CheckRigth(user, Rights.настройки))
            {
                button5.Enabled = false;
                return;
            }

            DataTable dataTable = dataBase.GetDataTable("SELECT значение FROM Настройки WHERE название='vk'");

            if (dataTable.Rows.Count != 0)
            {
                string[] str = dataTable.Rows[0].ItemArray[0].ToString().Split("|".ToCharArray());
                Array.Resize(ref str, 4);
                textBox10.Text = str[0];
                textBox9.Text  = str[1];
                textBox11.Text = str[2];
                textBox12.Text = str[3];
            }
        }
Beispiel #14
0
        private void button5_Click(object sender, EventArgs e)
        {
            ulong id;

            if (!ulong.TryParse(textBox10.Text, out id))
            {
                MessageBox.Show("Некорректный индентификатор приложения!", "Ошибка!");
                return;
            }

            DataBaseCenter dataBase = DataBaseCenter.Create();

            dataBase.RunCommand("UPDATE Настройки SET значение='" +
                                textBox10.Text + "|" +
                                textBox9.Text + "|" +
                                textBox11.Text + "|" +
                                textBox12.Text + "' WHERE название='vk'");
        }
Beispiel #15
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (comboBox1.Text == "" || textBox1.Text == "")
            {
                MessageBox.Show("Введены не все данные!", "Ошибка");
                return;
            }

            if (number == null)
            {
                number = new Number();
                if (comboBox2.SelectedIndex >= 0)
                {
                    number.photo = cameras[comboBox2.SelectedIndex].GetMat();
                }
            }

            number.text      = textBox1.Text;
            number.direction = comboBox1.Text == "Въезд" ? -1 : 1;

            DataBaseCenter dataBase = DataBaseCenter.Create();

            if (number.direction == dataBase.CheckDirection(number, user))
            {
                historyTransit = dataBase.NumberToHistory(number, user);

                if (historyTransit != null)
                {
                    richTextBox1.AppendText((historyTransit.blackList ? "В ЧЕРНОМ СПИСКЕ! \n" : ""));
                    richTextBox1.AppendText("ФИО: " + historyTransit.fio + "\n");
                    richTextBox1.AppendText("Серия/номер ВУ: " + historyTransit.serialNum + "\n");
                    richTextBox1.AppendText("Баланс: " + historyTransit.balance + "\n");
                    richTextBox1.AppendText("Авто: " + historyTransit.avto + "\n");
                    richTextBox1.AppendText("Дата въезда: " + historyTransit.dateEnter + "\n");
                    richTextBox1.AppendText("Дата выезда: " + historyTransit.dateExit + "\n");
                    richTextBox1.AppendText("Стоимость стоянки: " + historyTransit.cost + "\n");
                    richTextBox1.AppendText("Комментарий: " + historyTransit.comment + "\n");
                    if (VkNotyf != null && historyTransit.added)
                    {
                        Task.Run(() => { VkNotyf(number, historyTransit); });
                    }
                    if (historyTransit.added)
                    {
                        MessageBox.Show("Добавлено!", "Оповещение");
                    }
                    else
                    {
                        MessageBox.Show("Не удалось добавить!", "Ошибка");
                    }
                }
                else
                {
                    MessageBox.Show("Не удалось добавить!", "Ошибка");
                }
            }
            else
            {
                MessageBox.Show("Направление движения не совпадает с ожидаемым!", "Ошибка");
                return;
            }
        }
Beispiel #16
0
        private void MessagesRecievedDelegate(VkApi owner, ReadOnlyCollection <Message> messages)
        {
            foreach (Message msg in messages)
            {
                if (msg.FromId != vkAcc.UserId)
                {
                    string[] cmd = msg.Body.ToLower().Split(Convert.ToChar(" "));
                    switch (cmd[0])
                    {
                    case "инфо":
                    {
                        DataBaseCenter dataBase = DataBaseCenter.Create();
                        try
                        {
                            string str = dataBase.StatusAvto(msg.FromId.Value);
                            vkMessages.SendMsg(msg.FromId.Value, str);
                        }
                        catch
                        {
                            vkMessages.SendMsg(msg.FromId.Value, "Необходимо зарегистрировать ваш ID в системе, обратитесь к оператору!");
                        }

                        break;
                    }

                    case "парковка":
                    {
                        DataBaseCenter dataBase = DataBaseCenter.Create();
                        string         str      = dataBase.BusyParking();
                        vkMessages.SendMsg(msg.FromId.Value, str);
                        break;
                    }

                    case "счет":
                    {
                        DataBaseCenter        dataBase = DataBaseCenter.Create();
                        System.Data.DataTable dt       = dataBase.GetDataTable(
                            string.Format(
                                "Select Клиенты.id, балансСчета FROM Клиенты JOIN КонтактыКлиентов ON КонтактыКлиентов.клиент=Клиенты.id WHERE КонтактыКлиентов.контакт='{0}'",
                                msg.FromId.Value));
                        if (dt.Rows.Count > 0)
                        {
                            vkMessages.SendMsg(
                                msg.FromId.Value,
                                string.Format(
                                    @"Номер вашего счета: ЛС{0}
Баланс вашего счета: {1}",
                                    dt.Rows[0].ItemArray[0].ToString(),
                                    dt.Rows[0].ItemArray[1].ToString()));
                        }
                        else
                        {
                            vkMessages.SendMsg(msg.FromId.Value, "Необходимо зарегистрировать ваш ID в системе, обратитесь к оператору!");
                        }

                        break;
                    }

                    case "отчет":
                    {
                        try
                        {
                            switch (cmd[1])
                            {
                            case "платежи":
                            {
                                Report report = new Report();
                                string path   = report.CreateReportTransaction(msg.FromId.Value, cmd[2], cmd[3]);
                                vkMessages.SendMsg(msg.FromId.Value, "Отчет готов", path);
                                System.IO.File.Delete(path);
                                break;
                            }

                            case "парковка":
                            {
                                Report report = new Report();
                                string path   = report.CreateReportTransit(msg.FromId.Value, cmd[2], cmd[3]);
                                vkMessages.SendMsg(msg.FromId.Value, "Отчет готов", path);
                                System.IO.File.Delete(path);
                                break;
                            }

                            default:
                            {
                                ErrMsg(msg.FromId.Value, msg.Id.Value);
                                break;
                            }
                            }
                        }
                        catch
                        {
                            vkMessages.SendMsg(msg.FromId.Value, "Необходимо зарегистрировать ваш ID в системе, обратитесь к оператору!");
                        }

                        break;
                    }

                    default:
                    {
                        ErrMsg(msg.FromId.Value, msg.Id.Value);
                        break;
                    }
                    }
                }
            }
        }
Beispiel #17
0
        public string CreateReportTransaction(long idvk, string leftDate, string rightDate)
        {
            DataBaseCenter dataBase  = DataBaseCenter.Create();
            DataTable      dataTable = dataBase.GetDataTable(string.Format(
                                                                 @"Select ИсторияТранзакций.операция, 
ИсторияТранзакций.сумма, ИсторияТранзакций.дата, 
concat(въехалДата, ' - ', выехалДата, ' - авто: ',госНомер)   
From ИсторияТранзакций 
	JOIN Клиенты ON Клиенты.id=ИсторияТранзакций.клиент 
    JOIN КонтактыКлиентов ON КонтактыКлиентов.клиент=Клиенты.id    
    LEFT JOIN ИсторияПроездов ON ИсторияПроездов.id=ИсторияТранзакций.стоянка 
    LEFT JOIN Авто ON Авто.id=ИсторияПроездов.авто 
WHERE 
	КонтактыКлиентов.контакт='{0}' and ИсторияТранзакций.дата between '{1}' and '{2}' 
ORDER BY ИсторияТранзакций.дата DESC", idvk, leftDate, rightDate));

            DataRow[] data_arr = dataTable.Select();
            dataTable = dataBase.GetDataTable(string.Format(@"Select ФИО, серияНомер_ВУ
From Клиенты
    JOIN КонтактыКлиентов ON КонтактыКлиентов.клиент=Клиенты.id    
WHERE
	КонтактыКлиентов.контакт='{0}'
LIMIT 1", idvk));
            if (dataTable.Rows.Count == 0)
            {
                throw new Exception();
            }

            string path     = string.Format("report {0} {1}.docx", idvk, DateTime.Now.ToString("yyyy-MM-dd HH-mm"));
            DocX   document = DocX.Create(path);

            document.InsertParagraph(string.Format("История операций по счету за период '{0}' - '{1}'", leftDate, rightDate)).Font(new FontFamily("Times New Roman")).FontSize(16).Bold().Alignment = Alignment.center;
            document.InsertParagraph(string.Format("Для {0}, вод. удост. {1}", dataTable.Rows[0].ItemArray[0].ToString(), dataTable.Rows[0].ItemArray[1].ToString())).Font(new FontFamily("Times New Roman")).FontSize(16).Bold().Alignment = Alignment.center;
            document.InsertParagraph();
            Table table = document.AddTable(1, 4);

            for (int i = 0; i < 4; i++)
            {
                table.Rows[0].Cells[i].RemoveParagraphAt(0);
                table.Rows[0].Cells[i].VerticalAlignment = VerticalAlignment.Center;
            }

            table.Alignment = Alignment.center;
            table.Rows[0].Cells[0].Width = 100;
            table.Rows[0].Cells[1].Width = 50;
            table.Rows[0].Cells[2].Width = 100;
            table.Rows[0].Cells[3].Width = 400;
            table.Rows[0].Cells[0].InsertParagraph("Операция").Font(new FontFamily("Times New Roman")).FontSize(14).Bold().Alignment = Alignment.center;
            table.Rows[0].Cells[1].InsertParagraph("Сумма").Font(new FontFamily("Times New Roman")).FontSize(14).Bold().Alignment    = Alignment.center;
            table.Rows[0].Cells[2].InsertParagraph("Дата").Font(new FontFamily("Times New Roman")).FontSize(14).Bold().Alignment     = Alignment.center;
            table.Rows[0].Cells[3].InsertParagraph("Стоянка").Font(new FontFamily("Times New Roman")).FontSize(14).Bold().Alignment  = Alignment.center;
            for (int i = 0; i < data_arr.Length; i++)
            {
                table.InsertRow();
                for (int j = 0; j < 4; j++)
                {
                    table.Rows[i + 1].Cells[j].RemoveParagraphAt(0);
                    table.Rows[i + 1].Cells[j].InsertParagraph(data_arr[i].ItemArray[j].ToString()).Font(new FontFamily("Times New Roman")).FontSize(14).Alignment = Alignment.left;
                    table.Rows[i + 1].Cells[j].VerticalAlignment = VerticalAlignment.Center;
                }
            }

            document.InsertTable(table);
            document.Save();
            return(path);
        }
Beispiel #18
0
        public string CreateReportTransit(long idvk, string leftDate, string rightDate)
        {
            DataBaseCenter dataBase  = DataBaseCenter.Create();
            DataTable      dataTable = dataBase.GetDataTable(string.Format(
                                                                 @"Select concat(Парковки.название, ' ', Парковки.адрес),
concat(въехалДата, ' - ', выехалДата), госНомер, ИсторияПроездов.стоимость   
From ИсторияПроездов 
	JOIN Авто ON Авто.id=ИсторияПроездов.авто
	JOIN Клиенты ON Клиенты.id=Авто.клиент
    JOIN КонтактыКлиентов ON КонтактыКлиентов.клиент=Клиенты.id 
    JOIN Парковки ON Парковки.id=ИсторияПроездов.парковка
WHERE
	КонтактыКлиентов.контакт='{0}' and (ИсторияПроездов.въехалДата between '{1}' and '{2}' or ИсторияПроездов.выехалДата between '{1}' and '{2}')
ORDER BY ИсторияПроездов.въехалДата DESC", idvk, leftDate, rightDate));

            DataRow[] data_arr = dataTable.Select();
            dataTable = dataBase.GetDataTable(string.Format(@"Select ФИО, серияНомер_ВУ
From Клиенты
    JOIN КонтактыКлиентов ON КонтактыКлиентов.клиент=Клиенты.id    
WHERE
	КонтактыКлиентов.контакт='{0}'
LIMIT 1", idvk));
            if (dataTable.Rows.Count == 0)
            {
                throw new Exception();
            }

            string path     = string.Format("report {0} {1}.docx", idvk, DateTime.Now.ToString("yyyy-MM-dd HH-mm"));
            DocX   document = DocX.Create(path);

            document.InsertParagraph(string.Format("История парковки за период '{0}' - '{1}'", leftDate, rightDate)).Font(new FontFamily("Times New Roman")).FontSize(16).Bold().Alignment = Alignment.center;
            document.InsertParagraph(string.Format("Для {0}, вод. удост. {1}", dataTable.Rows[0].ItemArray[0].ToString(), dataTable.Rows[0].ItemArray[1].ToString())).Font(new FontFamily("Times New Roman")).FontSize(16).Bold().Alignment = Alignment.center;
            document.InsertParagraph();
            Table table = document.AddTable(1, 4);

            for (int i = 0; i < 4; i++)
            {
                table.Rows[0].Cells[i].RemoveParagraphAt(0);
                table.Rows[0].Cells[i].VerticalAlignment = VerticalAlignment.Center;
            }

            table.Alignment = Alignment.center;
            table.Rows[0].Cells[0].Width = 250;
            table.Rows[0].Cells[1].Width = 250;
            table.Rows[0].Cells[2].Width = 100;
            table.Rows[0].Cells[3].Width = 50;
            table.Rows[0].Cells[0].InsertParagraph("Парковка").Font(new FontFamily("Times New Roman")).FontSize(14).Bold().Alignment   = Alignment.center;
            table.Rows[0].Cells[1].InsertParagraph("Дата").Font(new FontFamily("Times New Roman")).FontSize(14).Bold().Alignment       = Alignment.center;
            table.Rows[0].Cells[2].InsertParagraph("Гос. номер").Font(new FontFamily("Times New Roman")).FontSize(14).Bold().Alignment = Alignment.center;
            table.Rows[0].Cells[3].InsertParagraph("Стоимость").Font(new FontFamily("Times New Roman")).FontSize(14).Bold().Alignment  = Alignment.center;
            for (int i = 0; i < data_arr.Length; i++)
            {
                table.InsertRow();
                for (int j = 0; j < 4; j++)
                {
                    table.Rows[i + 1].Cells[j].RemoveParagraphAt(0);
                    table.Rows[i + 1].Cells[j].InsertParagraph(data_arr[i].ItemArray[j].ToString()).Font(new FontFamily("Times New Roman")).FontSize(14).Alignment = Alignment.left;
                    table.Rows[i + 1].Cells[j].VerticalAlignment = VerticalAlignment.Center;
                }
            }

            document.InsertTable(table);
            document.Save();
            return(path);
        }
Beispiel #19
0
        public int CameraControlCreate(User user)
        {
            this.user = user;
            int result = 0;

            try
            {
                FileStream stream    = new FileStream("Настройки\\Камеры.cfg", FileMode.Open);
                byte[]     byte_buff = new byte[(int)stream.Length];
                stream.Read(byte_buff, 0, (int)stream.Length);
                string str_buff = Encoding.Default.GetString(byte_buff);
                cameras = JsonConvert.DeserializeObject <List <Camera> >(str_buff);
                stream.Close();
            }
            catch { result += 2; }

            try
            {
                StreamReader reader = new StreamReader("Настройки\\ШаблоныНомеров.cfg");
                while (!reader.EndOfStream)
                {
                    numTemplate.Add(reader.ReadLine());
                }

                reader.Close();
            }
            catch { result += 4; }

            if (!vkControl.Authorization())
            {
                result += 8;
            }
            else
            {
                DataBaseCenter dataBase = DataBaseCenter.Create();
                if (dataBase.CheckRigth(user, Rights.чатБот))
                {
                    vkControl.vkBot.BotStart();
                }
            }

            if (dataBase.CheckRigth(user, Rights.qiwiБот))
            {
                qiwiWatcher = new QiwiWatcher();
                qiwiWatcher.StartAsync();
            }

            Task.Run(() =>
            {
                for (int i = 0; i < cameras.Count; i++)
                {
                    cameras[i].Reconnect();
                    numberDetectors.Add(new NumberDetector(cameras[i]));
                    numberDetectors.Last().NewNumberDetect += NewNumberDetected;
                    //numberDetectors.Last().NewNumbersDetect += NewNumbersDetected;
                    numberDetectors.Last().Start(); // добавить также обработчики
                }
            });

            return(result);
        }