예제 #1
0
        private void NewNumbersDetected(List <Number> number)
        {
            string numeral = "0123456789";
            string num     = "";

            for (int j = 0; j < number.Count; j++)
            {
                for (int i = 0; i < number[j].text.Length; i++)
                {
                    if (numeral.IndexOf(number[j].text[i]) < 0)
                    {
                        num += "A";
                    }
                    else
                    {
                        num += "0";
                    }
                }

                if (numTemplate.IndexOf(num) < 0)
                {
                    HistoryTransit historyTransit = null;
                    historyTransit = dataBase.NumberToHistory(number[j], user);
                    NewNotyfNumber(number[j], historyTransit);
                    VkNotyf(number[j], historyTransit);
                }
            }
        }
예제 #2
0
        private void NewNumberDetected(Number number)
        {
            string numeral = "0123456789";
            string num     = "";

            if (number.text.Length < 3)
            {
                return;
            }
            for (int i = 0; i < number.text.Length; i++)
            {
                if (numeral.IndexOf(number.text[i]) < 0)
                {
                    num += "A";
                }
                else
                {
                    num += "0";
                }
            }

            if (numTemplate.IndexOf(num) < 0)
            {
                number.accuracy = -1;
            }
            else
            {
                number.accuracy = 1;
            }

            HistoryTransit historyTransit = null;

            if (number.accuracy != -1)
            {
                if (number.direction == dataBase.CheckDirection(number, user))
                {
                    historyTransit = dataBase.NumberToHistory(number, user);
                }
                else
                {
                    number.accuracy = -1;
                    NewNotyfNumber(number, null);
                    return;
                }
            }

            NewNotyfNumber(number, historyTransit);
            VkNotyf(number, historyTransit);
        }
예제 #3
0
        /*public async Task<HistoryTransit> AddTransit(string num, int direction, int camera)
         * {
         *  Number number = new Number();
         *  number.text = num;
         *  if (number.direction == dataBase.CheckDirection(number, user))
         *  {
         *      number.photo = cameras[camera].GetMat();
         *      HistoryTransit historyTransit = null;
         *      historyTransit = dataBase.NumberToHistory(number, user, direction);
         *      NewNotyfNumber(number, historyTransit);
         *      VkNotyf(number, historyTransit);
         *      return historyTransit;
         *  }
         *
         *  return null;
         * }*/

        public void VkNotyf(Number number, HistoryTransit historyTransit)
        {
            if (vkControl.vkMessages == null)
            {
                return;
            }
            List <int> contacts = dataBase.GetContacts(number.text);

            foreach (int id in contacts)
            {
                vkControl.vkMessages.SendMsg(
                    id,
                    string.Format(
                        "Гос. номер <{0}>, совершен {1}{2}",
                        number.text,
                        number.direction == 1 ? "выезд" : (number.direction == -1 ? "въезд" : "проезд"),
                        (historyTransit != null && historyTransit.dateExit != "") ? ". Стоимость составила " + historyTransit.cost : ""),
                    number.photo == null ? null : number.photo.Bitmap);
            }
        }
예제 #4
0
        public WinFormAddTransit(Number number, HistoryTransit historyTransit, List <Camera> cameras, User user)
        {
            InitializeComponent();
            this.number         = number;
            this.historyTransit = historyTransit;
            this.cameras        = cameras;
            this.user           = user;
            if (number != null)
            {
                pictureBox1.Image = number.licensePlateImages.GetOutputArray().GetMat().Bitmap;
                textBox1.Text     = number.text;
                if (number.direction == -1)
                {
                    comboBox1.SelectedText = "Въезд";
                }
                if (number.direction == 1)
                {
                    comboBox1.SelectedText = "Выезд";
                }
            }

            if (historyTransit != null)
            {
                checkBox1.Checked = historyTransit.added;
                button1.Enabled   = !historyTransit.added;
                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");
            }

            foreach (Camera cam in cameras)
            {
                comboBox2.Items.Add(cam.camName);
            }
        }
예제 #5
0
        public HistoryTransit NumberToHistory(Number number, User user)
        {
            HistoryTransit transit;
            DataTable      dataTable = GetDataTable(string.Format("SELECT id, черныйСписок FROM Авто WHERE госНомер='{0}'", number.text));

            if (dataTable.Rows.Count < 1)
            {
                RunCommand(string.Format("INSERT INTO Авто (госНомер) VALUES('{0}')", number.text));
                dataTable = GetDataTable(string.Format("SELECT id, черныйСписок FROM Авто WHERE госНомер='{0}'", number.text));
            }

            int  avto  = (int)dataTable.Rows[0].ItemArray[0];
            bool black = dataTable.Rows[0].ItemArray[1].ToString() == "1" ? true : false;

            if (black)
            {
                dataTable = GetDataTable(
                    string.Format(
                        @"SELECT фио, серияНомер_ВУ, балансСчета, списокВидовАвто.авто, госНомер, черныйСписок, комментарий, въехалДата, выехалДата, стоимость
FROM ИсторияПроездов 
	FULL JOIN Авто ON Авто.id=ИсторияПроездов.авто
    FULL JOIN Клиенты ON Клиенты.id=Авто.клиент
    FULL JOIN списокВидовАвто ON списокВидовАвто.id=Авто.авто
WHERE госНомер='{0}'
order by въехалДата DESC
LIMIT 1",
                        number.text,
                        user.parking));
                transit = new HistoryTransit
                {
                    fio        = dataTable.Rows[0].ItemArray[0].ToString(),
                    serialNum  = dataTable.Rows[0].ItemArray[1].ToString(),
                    balance    = dataTable.Rows[0].ItemArray[2].ToString(),
                    avto       = dataTable.Rows[0].ItemArray[3].ToString(),
                    LicenseNum = dataTable.Rows[0].ItemArray[04].ToString(),
                    blackList  = (bool)dataTable.Rows[0].ItemArray[5],
                    comment    = dataTable.Rows[0].ItemArray[6].ToString(),
                    added      = false
                };

                return(transit);
            }

            dataTable = GetDataTable(
                string.Format(
                    "SELECT выехалДата, id FROM ИсторияПроездов WHERE авто='{0}' and парковка='{1}' order by выехалДата ASC LIMIT 1",
                    avto,
                    user.parking));
            DateTime dateTime = DateTime.Now;

            if (dataTable.Rows.Count > 0)
            {
                if (dataTable.Rows[0].ItemArray[0].ToString() == "")
                {
                    decimal price = CalcCost(avto, user, dateTime);
                    RunCommand(
                        string.Format(
                            "UPDATE ИсторияПроездов SET выехалДата='{0}', стоимость='{1}', выехалФото=@image WHERE id='{2}'",
                            dateTime.ToString("yyyy-MM-dd HH:mm"),
                            string.Format("{0:F2} ", price).Replace(",", "."),
                            dataTable.Rows[0].ItemArray[1].ToString()),
                        number.photo == null ? null : number.photo.Bitmap);
                    RunCommand(
                        string.Format(
                            "UPDATE Парковки SET занято = Парковки.занято - 1 WHERE Парковки.id = '{0}'",
                            user.parking));
                }
                else
                {
                    RunCommand(
                        string.Format(
                            "INSERT INTO ИсторияПроездов (въехалДата, авто, парковка, въехалФото) VALUES('{0}', '{1}', '{2}', @image)",
                            dateTime.ToString("yyyy-MM-dd HH:mm"),
                            avto,
                            user.parking),
                        number.photo == null ? null : number.photo.Bitmap);
                    RunCommand(
                        string.Format(
                            "UPDATE Парковки SET занято = Парковки.занято + 1 WHERE Парковки.id = '{0}'",
                            user.parking));
                }
            }
            else
            {
                RunCommand(
                    string.Format(
                        "INSERT INTO ИсторияПроездов (въехалДата, авто, парковка, въехалФото) VALUES('{0}', '{1}', '{2}', @image)",
                        dateTime.ToString("yyyy-MM-dd HH:mm"),
                        avto,
                        user.parking),
                    number.photo.Bitmap);
                RunCommand(
                    string.Format(
                        "UPDATE Парковки SET занято = Парковки.занято + 1 WHERE Парковки.id = '{0}'",
                        user.parking));
            }

            dataTable = GetDataTable(
                string.Format(
                    @"SELECT фио, серияНомер_ВУ, балансСчета, списокВидовАвто.авто, госНомер, черныйСписок, комментарий, въехалДата, выехалДата, стоимость
FROM ИсторияПроездов 
	JOIN Авто ON Авто.id=ИсторияПроездов.авто
    JOIN Клиенты ON Клиенты.id=Авто.клиент
    JOIN списокВидовАвто ON списокВидовАвто.id=Авто.авто
WHERE госНомер='{0}' and парковка='{1}'
order by въехалДата DESC
LIMIT 1",
                    number.text,
                    user.parking));
            transit = new HistoryTransit
            {
                fio        = dataTable.Rows[0].ItemArray[0].ToString(),
                serialNum  = dataTable.Rows[0].ItemArray[1].ToString(),
                balance    = dataTable.Rows[0].ItemArray[2].ToString(),
                avto       = dataTable.Rows[0].ItemArray[3].ToString(),
                LicenseNum = dataTable.Rows[0].ItemArray[04].ToString(),
                blackList  = dataTable.Rows[0].ItemArray[5].ToString() == "1" ? true : false,
                comment    = dataTable.Rows[0].ItemArray[6].ToString(),
                dateEnter  = dataTable.Rows[0].ItemArray[7].ToString(),
                dateExit   = dataTable.Rows[0].ItemArray[8].ToString(),
                cost       = dataTable.Rows[0].ItemArray[8].ToString() == "" ? "0" : dataTable.Rows[0].ItemArray[8].ToString()
            };

            return(transit);
        }
예제 #6
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;
            }
        }
예제 #7
0
        private void NewNotyfNumber(Number number, HistoryTransit info)
        {
            numList.Add(number);
            transitList.Add(info);
            if (numList.Count > 20)
            {
                numList.RemoveAt(0);
                transitList.RemoveAt(0);
                listBox1.Invoke((MethodInvoker) delegate
                {
                    listBox1.Items.RemoveAt(0);
                });
            }

            listBox1.Invoke((MethodInvoker) delegate
            {
                switch (number.direction)
                {
                case 1:
                    {
                        listBox1.Items.Add(number.accuracy < 1 ? "Требуется подтверждение! " : "" + number.text + " / Выъезд / " + DateTime.Now.ToShortTimeString());
                        break;
                    }

                case -1:
                    {
                        listBox1.Items.Add(number.accuracy < 1 ? "Требуется подтверждение! " : "" + number.text + " / Въезд / " + DateTime.Now.ToShortTimeString());
                        break;
                    }

                default:
                    {
                        listBox1.Items.Add(number.accuracy < 1 ? "Требуется подтверждение! " : "" + number.text + " / " + DateTime.Now.ToShortTimeString());
                        break;
                    }
                }
            });

            richTextBox1.Invoke((MethodInvoker) delegate
            {
                if (info != null)
                {
                    string str = "";
                    str       += number.text + ":\n";
                    if (info.blackList)
                    {
                        str += "Данный гос. номер в черном списке! \n";
                    }

                    if (info.comment.Length > 0)
                    {
                        str += "Комментарий " + info.comment + "\n";
                    }

                    if (info.blackList || info.comment.Length > 0)
                    {
                        richTextBox1.Text = richTextBox1.Text + "\n" + str;
                    }
                }
            });
        }