1703neshinavarfolomeev2/EmployeeForm.cs
2026-03-17 14:33:47 +04:00

189 lines
7.1 KiB
C#
Raw 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 System;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace Neshina1703
{
public partial class EmployeeForm : Form
{
private int userId;
private string userName;
public EmployeeForm(int userId, string userName)
{
InitializeComponent();
this.userId = userId;
this.userName = userName;
}
private void EmployeeForm_Load(object sender, EventArgs e)
{
lblUser.Text = $"👤 {userName}";
LoadProducts();
LoadOrders();
LoadClients();
}
// 🔹 Загрузка товаров в DataGrid
private void LoadProducts()
{
try
{
string query = @"SELECT
m.id AS 'ID',
m.medication_name AS 'Название',
m.price AS 'Цена, ₽',
m.stock_quantity AS 'На складе',
ds.status_name AS 'Отпуск',
s.supplier_name AS 'Поставщик'
FROM medications m
LEFT JOIN dispensing_statuses ds ON m.dispensing_status_id = ds.id
LEFT JOIN suppliers s ON m.supplier_id = s.id
ORDER BY m.medication_name";
dgvProducts.DataSource = DB.ExecuteQuery(query);
// Скрыть ID и настроить столбцы
if (dgvProducts.Columns["ID"] != null)
dgvProducts.Columns["ID"].Visible = false;
FormatGrid(dgvProducts);
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки товаров: " + ex.Message, "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// 🔹 Загрузка истории заказов
private void LoadOrders()
{
try
{
string query = @"SELECT
p.id AS 'ID',
p.purchase_date AS 'Дата',
c.full_name AS 'Клиент',
pr.prescription_number AS 'Рецепт №',
GROUP_CONCAT(CONCAT(m.medication_name, ' ×', pm.quantity) SEPARATOR ', ') AS 'Состав'
FROM purchases p
LEFT JOIN clients c ON p.client_id = c.id
LEFT JOIN prescriptions pr ON p.prescription_id = pr.id
LEFT JOIN purchase_medications pm ON p.id = pm.purchase_id
LEFT JOIN medications m ON pm.medication_id = m.id
GROUP BY p.id
ORDER BY p.purchase_date DESC";
dgvOrders.DataSource = DB.ExecuteQuery(query);
if (dgvOrders.Columns["ID"] != null)
dgvOrders.Columns["ID"].Visible = false;
FormatGrid(dgvOrders);
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки заказов: " + ex.Message, "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// 🔹 Загрузка клиентов в DataGrid
private void LoadClients()
{
try
{
string query = @"SELECT
c.id AS 'ID',
c.full_name AS 'ФИО',
c.phone AS 'Телефон',
c.email AS 'Email',
dc.discount_percentage AS 'Скидка, %'
FROM clients c
LEFT JOIN discount_cards dc ON c.discount_card_id = dc.id
ORDER BY c.full_name";
dgvClients.DataSource = DB.ExecuteQuery(query);
if (dgvClients.Columns["ID"] != null)
dgvClients.Columns["ID"].Visible = false;
FormatGrid(dgvClients);
}
catch (Exception ex)
{
MessageBox.Show("Ошибка загрузки клиентов: " + ex.Message, "Ошибка",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
// 🔹 Форматирование DataGrid
private void FormatGrid(DataGridView grid)
{
grid.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
grid.DefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
grid.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold);
grid.ColumnHeadersDefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(240, 240, 240);
grid.DefaultCellStyle.SelectionBackColor = System.Drawing.Color.FromArgb(0, 120, 215);
grid.DefaultCellStyle.SelectionForeColor = System.Drawing.Color.White;
grid.RowHeadersVisible = false;
grid.AllowUserToResizeRows = false;
}
// 🔹 Кнопка: Оформить заказ
private void btnCreateOrder_Click(object sender, EventArgs e)
{
var orderForm = new OrderForm(userId);
if (orderForm.ShowDialog() == DialogResult.OK)
{
LoadProducts(); // Обновить остатки
LoadOrders(); // Показать новый заказ
MessageBox.Show("✅ Заказ оформлен!", "Успех",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
// 🔹 Кнопка: Завести бонусную карту
private void btnAddCard_Click(object sender, EventArgs e)
{
var clientForm = new ClientForm();
if (clientForm.ShowDialog() == DialogResult.OK)
{
LoadClients();
MessageBox.Show("✅ Карта заведена!", "Успех",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
// 🔹 Кнопка: Выход
private void btnLogout_Click(object sender, EventArgs e)
{
var result = MessageBox.Show("Выйти из системы?", "Подтверждение",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
this.Hide();
var loginForm = new LoginForm();
loginForm.Show();
this.FormClosed += (s, args) => loginForm.FormClosed += (s2, a2) => Application.Exit();
}
}
// 🔹 Обновление при возврате фокуса
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
LoadProducts();
LoadOrders();
LoadClients();
}
private void button1_Click(object sender, EventArgs e)
{
var messengerForm = new MessengerForm(userId);
messengerForm.Show();
}
}
}