189 lines
7.1 KiB
C#
189 lines
7.1 KiB
C#
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();
|
||
}
|
||
}
|
||
} |