| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- using System;
- using System.Data;
- using System.Windows.Forms;
- namespace WindowsFormsApp4
- {
- public partial class RequestsForm : Form
- {
- private DataTable requestsTable;
- public RequestsForm()
- {
- InitializeComponent();
- AttachEventHandlers();
- LoadRequests();
- ConfigureGrid();
- ConfigureButtonsByRole();
- }
- private void AttachEventHandlers()
- {
- btnRefresh.Click += BtnRefresh_Click;
- btnChangeStatus.Click += BtnChangeStatus_Click;
- btnNewRequest.Click += BtnNewRequest_Click;
- btnCancelRequest.Click += BtnCancelRequest_Click;
- btnTakeToWork.Click += BtnTakeToWork_Click;
- btnAssignManager.Click += BtnAssignManager_Click;
- btnBack.Click += BtnBack_Click;
- }
- private void ConfigureButtonsByRole()
- {
- btnChangeStatus.Visible = false;
- btnNewRequest.Visible = false;
- btnCancelRequest.Visible = false;
- btnTakeToWork.Visible = false;
- btnAssignManager.Visible = false;
- if (Session.IsClient)
- {
- btnNewRequest.Visible = true;
- btnCancelRequest.Visible = true;
- lblTitle.Text = "📋 Мои заявки";
- Console.WriteLine("Клиент: показаны кнопки Новая заявка и Отменить");
- }
- else if (Session.IsManager)
- {
- btnChangeStatus.Visible = true;
- btnTakeToWork.Visible = true;
- lblTitle.Text = "📋 Заявки (назначенные мне)";
- Console.WriteLine("Менеджер: показаны кнопки Изменить статус и Взять в работу");
- }
- else if (Session.IsAdmin)
- {
- btnChangeStatus.Visible = true;
- btnAssignManager.Visible = true;
- lblTitle.Text = "📋 Все заявки";
- Console.WriteLine("Админ: показаны кнопки Изменить статус и Назначить менеджера");
- }
- }
- private void LoadRequests()
- {
- try
- {
- requestsTable = DatabaseHelper.GetRequests(
- Session.CurrentUser.UserId,
- Session.CurrentUser.Role,
- Session.CurrentUser.ClientId,
- Session.CurrentUser.ManagerId
- );
- MessageBox.Show($"Таблица загружена. Строк: {requestsTable.Rows.Count}", "Отладка");
- dgvRequests.DataSource = requestsTable;
- ConfigureGrid();
- dgvRequests.Visible = true;
- }
- catch (Exception ex)
- {
- MessageBox.Show($"Ошибка загрузки заявок: {ex.Message}", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Error);
- }
- }
- private void ConfigureGrid()
- {
- if (dgvRequests.Columns.Count == 0) return;
- if (dgvRequests.Columns.Contains("id"))
- dgvRequests.Columns["id"].HeaderText = "№";
- if (dgvRequests.Columns.Contains("client_name"))
- dgvRequests.Columns["client_name"].HeaderText = "Клиент";
- if (dgvRequests.Columns.Contains("manager_name"))
- dgvRequests.Columns["manager_name"].HeaderText = "Менеджер";
- if (dgvRequests.Columns.Contains("request_date"))
- dgvRequests.Columns["request_date"].HeaderText = "Дата заявки";
- if (dgvRequests.Columns.Contains("measurement_datetime"))
- dgvRequests.Columns["measurement_datetime"].HeaderText = "Дата замера";
- if (dgvRequests.Columns.Contains("status"))
- dgvRequests.Columns["status"].HeaderText = "Статус";
- // Настройка цветов
- dgvRequests.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(50, 56, 67);
- dgvRequests.DefaultCellStyle.ForeColor = System.Drawing.Color.FromArgb(203, 232, 87);
- dgvRequests.DefaultCellStyle.SelectionBackColor = System.Drawing.Color.FromArgb(198, 141, 255);
- dgvRequests.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.FromArgb(50, 56, 67);
- dgvRequests.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(198, 141, 255);
- dgvRequests.ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.Color.FromArgb(50, 56, 67);
- dgvRequests.EnableHeadersVisualStyles = false;
- if (Session.IsClient)
- {
- if (dgvRequests.Columns.Contains("client_name"))
- dgvRequests.Columns["client_name"].Visible = false;
- if (dgvRequests.Columns.Contains("manager_name"))
- dgvRequests.Columns["manager_name"].Visible = false;
- }
- dgvRequests.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
- }
- private void BtnRefresh_Click(object sender, EventArgs e)
- {
- LoadRequests();
- }
- private void BtnChangeStatus_Click(object sender, EventArgs e)
- {
- if (dgvRequests.CurrentRow == null)
- {
- MessageBox.Show("Выберите заявку", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- int requestId = Convert.ToInt32(dgvRequests.CurrentRow.Cells["id"].Value);
- string currentStatus = dgvRequests.CurrentRow.Cells["status"].Value.ToString();
- ChangeStatusForm form = new ChangeStatusForm(requestId, currentStatus);
- if (form.ShowDialog() == DialogResult.OK)
- {
- LoadRequests();
- }
- }
- private void BtnNewRequest_Click(object sender, EventArgs e)
- {
- NewRequestForm form = new NewRequestForm();
- if (form.ShowDialog() == DialogResult.OK)
- {
- LoadRequests();
- MessageBox.Show("Заявка успешно создана!", "Успешно",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- private void BtnCancelRequest_Click(object sender, EventArgs e)
- {
- if (dgvRequests.CurrentRow == null)
- {
- MessageBox.Show("Выберите заявку", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- int requestId = Convert.ToInt32(dgvRequests.CurrentRow.Cells["id"].Value);
- string currentStatus = dgvRequests.CurrentRow.Cells["status"].Value.ToString();
- if (currentStatus != "new")
- {
- MessageBox.Show("Можно отменить только заявку со статусом 'Новая'",
- "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- DialogResult result = MessageBox.Show("Отменить заявку?",
- "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
- if (result == DialogResult.Yes)
- {
- DatabaseHelper.UpdateRequestStatus(requestId, "cancelled");
- LoadRequests();
- MessageBox.Show("Заявка отменена", "Успешно",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- private void BtnTakeToWork_Click(object sender, EventArgs e)
- {
- if (dgvRequests.CurrentRow == null)
- {
- MessageBox.Show("Выберите заявку", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- int requestId = Convert.ToInt32(dgvRequests.CurrentRow.Cells["id"].Value);
- string currentStatus = dgvRequests.CurrentRow.Cells["status"].Value.ToString();
- if (currentStatus != "new")
- {
- MessageBox.Show("Можно взять в работу только заявку со статусом 'Новая'",
- "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- DialogResult result = MessageBox.Show("Взять заявку в работу?",
- "Подтверждение", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
- if (result == DialogResult.Yes)
- {
- DatabaseHelper.AssignManagerToRequest(requestId, Session.CurrentUser.ManagerId.Value);
- DatabaseHelper.UpdateRequestStatus(requestId, "in_progress");
- LoadRequests();
- MessageBox.Show("Заявка взята в работу", "Успешно",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- private void BtnAssignManager_Click(object sender, EventArgs e)
- {
- if (dgvRequests.CurrentRow == null)
- {
- MessageBox.Show("Выберите заявку", "Ошибка",
- MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- int requestId = Convert.ToInt32(dgvRequests.CurrentRow.Cells["id"].Value);
- string currentStatus = dgvRequests.CurrentRow.Cells["status"].Value.ToString();
- if (currentStatus != "new")
- {
- MessageBox.Show("Можно назначить менеджера только на заявку со статусом 'Новая'",
- "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
- return;
- }
- AssignManagerForm form = new AssignManagerForm(requestId);
- if (form.ShowDialog() == DialogResult.OK)
- {
- LoadRequests();
- MessageBox.Show("Менеджер назначен", "Успешно",
- MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- }
- private void BtnBack_Click(object sender, EventArgs e)
- {
- this.Close();
- }
- }
- }
|