13ticket/Neshina13/Form2.cs
2025-11-17 15:48:46 +04:00

185 lines
7.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using MySql.Data.MySqlClient;
using NeshinaPolina07_11;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.Remoting.Metadata;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Neshina13
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
LoadSchedule();
// Заполняем ComboBox вариантами сортировки
comboBoxSort.Items.Clear();
comboBoxSort.Items.Add("По дате (новые сверху)");
comboBoxSort.Items.Add("По дате (старые сверху)");
comboBoxSort.Items.Add("По алфавиту (предмет)");
comboBoxSort.SelectedIndex = 0; // По умолчанию — новые сверху
}
public class SortOption
{
public string DisplayName { get; }
public string OrderByColumn { get; }
public SortOption(string displayName, string orderByColumn)
{
DisplayName = displayName;
OrderByColumn = orderByColumn;
}
}
private void LoadSchedule(string orderByClause = "s.Schedule_Date DESC")
{
string query = $@"
SELECT
s.Schedule_Id,
subj.StudySubject_name AS Предмет,
g.GroupNum AS Группа,
t.Teacher_LastName AS Преподаватель,
m.Manager_LastName AS Ответственный,
s.Schedule_Date AS Дата
FROM Schedule s
JOIN StudySubjects subj ON s.Schedule_StudySubject_Id = subj.StudySubject_Id
JOIN `Group` g ON s.Schedule_Group_Id = g.Group_Id
JOIN Teacher t ON s.Schedule_Teacher_Id = t.Teacher_Id
JOIN Mangers m ON s.Schedule_ResponsiblMmanager = m.Manger_Id
ORDER BY {orderByClause}";
try
{
var conn = DB.GetInstance().GetConnection();
using (var adapter = new MySqlDataAdapter(query, conn))
{
var table = new DataTable();
adapter.Fill(table);
dataGridView1.DataSource = table;
// Скрыть ID, если нужно
if (dataGridView1.Columns.Contains("Schedule_Id"))
dataGridView1.Columns["Schedule_Id"].Visible = false;
}
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки расписания: " + ex.Message);
}
}
private void button1_Click(object sender, EventArgs e)
{
var addForm = new Add();
if (addForm.ShowDialog() == DialogResult.OK)
{
// Обновляем таблицу только если запись успешно добавлена
LoadSchedule();
}
}
private void button4_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1();
form1.Show();
this.Hide();
}
private void button2_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count == 0)
{
MessageBox.Show("Выберите строку для редактирования.");
return;
}
// Получаем ID из первой колонки (предполагается, что Schedule_Id — первый столбец)
var selectedRow = dataGridView1.SelectedRows[0];
int scheduleId = Convert.ToInt32(selectedRow.Cells[0].Value); // если Schedule_Id — 0-й столбец
var editForm = new Edit(scheduleId);
if (editForm.ShowDialog() == DialogResult.OK)
{
LoadSchedule(); // Обновляем таблицу после успешного редактирования
}
}
private void button3_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count == 0)
{
MessageBox.Show("Пожалуйста, выберите строку для удаления.", "Удаление", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
var selectedRow = dataGridView1.SelectedRows[0];
if (!int.TryParse(selectedRow.Cells[0].Value?.ToString(), out int scheduleId))
{
MessageBox.Show("Не удалось определить ID записи.");
return;
}
var confirmResult = MessageBox.Show(
"Вы уверены, что хотите удалить эту запись?",
"Подтверждение удаления",
MessageBoxButtons.YesNo,
MessageBoxIcon.Question
);
if (confirmResult != DialogResult.Yes)
return;
try
{
var conn = DB.GetInstance().GetConnection();
string deleteQuery = "DELETE FROM Schedule WHERE Schedule_Id = @id";
using (var cmd = new MySqlCommand(deleteQuery, conn))
{
cmd.Parameters.AddWithValue("@id", scheduleId);
int rowsAffected = cmd.ExecuteNonQuery();
if (rowsAffected > 0)
{
MessageBox.Show("Запись успешно удалена.", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
LoadSchedule(); // Обновляем таблицу
}
else
{
MessageBox.Show("Запись не найдена или уже удалена.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Ошибка при удалении записи: " + ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void comboBoxSort_SelectedIndexChanged(object sender, EventArgs e)
{
string orderBy = "s.Schedule_Date DESC";
switch (comboBoxSort.SelectedItem?.ToString())
{
case "По дате (новые сверху)":
orderBy = "s.Schedule_Date DESC";
break;
case "По дате (старые сверху)":
orderBy = "s.Schedule_Date ASC";
break;
case "По алфавиту (предмет)":
orderBy = "subj.StudySubject_name ASC";
break;
}
LoadSchedule(orderBy);
}
}
}