Admin.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. using System.Data;
  2. using System.Text;
  3. namespace GBDD
  4. {
  5. public partial class Admin : Form
  6. {
  7. private Button editViolationButton;
  8. private Button editDriverButton;
  9. private Button exportViolationsButton;
  10. public Admin()
  11. {
  12. InitializeComponent();
  13. editViolationButton = new Button();
  14. editViolationButton.Text = "Редактировать";
  15. editViolationButton.Location = new Point(51, 215);
  16. editViolationButton.Size = new Size(238, 47);
  17. tabPage1.Controls.Add(editViolationButton);
  18. exportViolationsButton = new Button();
  19. exportViolationsButton.Text = "Экспорт в CSV";
  20. exportViolationsButton.Location = new Point(50, 372);
  21. exportViolationsButton.Size = new Size(239, 35);
  22. tabPage1.Controls.Add(exportViolationsButton);
  23. editDriverButton = new Button();
  24. editDriverButton.Text = "Редактировать";
  25. editDriverButton.Location = new Point(64, 255);
  26. editDriverButton.Size = new Size(230, 47);
  27. tabPage3.Controls.Add(editDriverButton);
  28. Load += Admin_Load;
  29. button1.Click += button1_Click;
  30. button2.Click += button2_Click;
  31. button3.Click += button3_Click;
  32. button4.Click += button4_Click;
  33. button5.Click += button5_Click;
  34. button6.Click += button6_Click;
  35. editViolationButton.Click += editViolationButton_Click;
  36. editDriverButton.Click += editDriverButton_Click;
  37. exportViolationsButton.Click += exportViolationsButton_Click;
  38. }
  39. private void Admin_Load(object? sender, EventArgs e)
  40. {
  41. LoadTables();
  42. }
  43. private void LoadTables()
  44. {
  45. dataGridView1.DataSource = Db.Select($"""
  46. select *
  47. from violation_view
  48. where driver_name ilike '%{textBox1.Text}%'
  49. order by id desc
  50. """);
  51. dataGridView2.DataSource = Db.Select("select * from fine_view order by id desc");
  52. dataGridView3.DataSource = Db.Select("select * from driver_view order by id desc");
  53. }
  54. private int SelectedId(DataGridView grid)
  55. {
  56. DataRowView row = (DataRowView)grid.CurrentRow.DataBoundItem;
  57. return Convert.ToInt32(row["id"]);
  58. }
  59. private void button1_Click(object? sender, EventArgs e)
  60. {
  61. new AddViolation().ShowDialog();
  62. LoadTables();
  63. }
  64. private void button2_Click(object? sender, EventArgs e)
  65. {
  66. int id = SelectedId(dataGridView1);
  67. Db.Execute($"select delete_violation({id})");
  68. LoadTables();
  69. }
  70. private void editViolationButton_Click(object? sender, EventArgs e)
  71. {
  72. int id = SelectedId(dataGridView1);
  73. new AddViolation(id).ShowDialog();
  74. LoadTables();
  75. }
  76. private void button3_Click(object? sender, EventArgs e)
  77. {
  78. int id = SelectedId(dataGridView2);
  79. Db.Execute($"select mark_fine_paid({id})");
  80. LoadTables();
  81. }
  82. private void button4_Click(object? sender, EventArgs e)
  83. {
  84. LoadTables();
  85. }
  86. private void button5_Click(object? sender, EventArgs e)
  87. {
  88. new AddDriver().ShowDialog();
  89. LoadTables();
  90. }
  91. private void button6_Click(object? sender, EventArgs e)
  92. {
  93. int id = SelectedId(dataGridView3);
  94. Db.Execute($"select delete_driver({id})");
  95. LoadTables();
  96. }
  97. private void editDriverButton_Click(object? sender, EventArgs e)
  98. {
  99. int id = SelectedId(dataGridView3);
  100. new AddDriver(id).ShowDialog();
  101. LoadTables();
  102. }
  103. private void exportViolationsButton_Click(object? sender, EventArgs e)
  104. {
  105. using var dialog = new SaveFileDialog();
  106. dialog.Filter = "CSV файлы (*.csv)|*.csv";
  107. dialog.FileName = "violations.csv";
  108. if (dialog.ShowDialog() != DialogResult.OK)
  109. {
  110. return;
  111. }
  112. ExportGridToCsv(dataGridView1, dialog.FileName);
  113. MessageBox.Show("Экспорт нарушений выполнен");
  114. }
  115. private static void ExportGridToCsv(DataGridView grid, string fileName)
  116. {
  117. using var writer = new StreamWriter(fileName, false, new UTF8Encoding(true));
  118. var headers = grid.Columns
  119. .Cast<DataGridViewColumn>()
  120. .Where(column => column.Visible)
  121. .Select(column => CsvExporter.EscapeValue(column.HeaderText));
  122. writer.WriteLine(string.Join(";", headers));
  123. foreach (DataGridViewRow row in grid.Rows)
  124. {
  125. if (row.IsNewRow)
  126. {
  127. continue;
  128. }
  129. var values = grid.Columns
  130. .Cast<DataGridViewColumn>()
  131. .Where(column => column.Visible)
  132. .Select(column => CsvExporter.EscapeValue(row.Cells[column.Index].Value?.ToString() ?? string.Empty));
  133. writer.WriteLine(string.Join(";", values));
  134. }
  135. }
  136. }
  137. }