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); } } }
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); }
/*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); } }
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); } }
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); }
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; } }
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; } } }); }