using System; using System.Windows.Forms; using RestaurantApp.DAL; namespace RestaurantApp { public partial class ReportForm : Form { private ReportRepository repo = new ReportRepository(); public ReportForm() { InitializeComponent(); // Устанавливаем даты по умолчанию dtpRevenueFrom.Value = DateTime.Now.AddMonths(-1); dtpRevenueTo.Value = DateTime.Now; dtpDishSalesFrom.Value = DateTime.Now.AddMonths(-1); dtpDishSalesTo.Value = DateTime.Now; dtpWaiterStatsFrom.Value = DateTime.Now.AddMonths(-1); dtpWaiterStatsTo.Value = DateTime.Now; dtpPaymentMethodsFrom.Value = DateTime.Now.AddMonths(-1); dtpPaymentMethodsTo.Value = DateTime.Now; // Подписываем события btnRevenueShow.Click += (s, e) => LoadRevenueReport(); btnDishSalesShow.Click += (s, e) => LoadDishSalesReport(); btnWaiterStatsShow.Click += (s, e) => LoadWaiterStatsReport(); btnPaymentMethodsShow.Click += (s, e) => LoadPaymentMethodsReport(); btnLowStockRefresh.Click += (s, e) => LoadLowStockReport(); // Загружаем данные LoadRevenueReport(); LoadDishSalesReport(); LoadWaiterStatsReport(); LoadPaymentMethodsReport(); LoadLowStockReport(); } private void LoadRevenueReport() { try { var dt = repo.GetDailyRevenue(dtpRevenueFrom.Value, dtpRevenueTo.Value); dgvRevenue.DataSource = dt; if (dgvRevenue.Columns.Count > 0) { dgvRevenue.Columns["Дата"].HeaderText = "Дата"; dgvRevenue.Columns["Платежей"].HeaderText = "Кол-во платежей"; dgvRevenue.Columns["Выручка (руб.)"].HeaderText = "Выручка (руб.)"; dgvRevenue.Columns["Средний чек (руб.)"].HeaderText = "Средний чек (руб.)"; } } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } } private void LoadDishSalesReport() { try { var dt = repo.GetDishSales(dtpDishSalesFrom.Value, dtpDishSalesTo.Value); dgvDishSales.DataSource = dt; if (dgvDishSales.Columns.Count > 0) { dgvDishSales.Columns["Блюдо"].HeaderText = "Блюдо"; dgvDishSales.Columns["Категория"].HeaderText = "Категория"; dgvDishSales.Columns["Кол-во"].HeaderText = "Кол-во продаж"; dgvDishSales.Columns["Выручка (руб.)"].HeaderText = "Выручка (руб.)"; } } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } } private void LoadWaiterStatsReport() { try { var dt = repo.GetWaiterStats(dtpWaiterStatsFrom.Value, dtpWaiterStatsTo.Value); dgvWaiterStats.DataSource = dt; if (dgvWaiterStats.Columns.Count > 0) { dgvWaiterStats.Columns["Официант"].HeaderText = "Официант"; dgvWaiterStats.Columns["Заказов"].HeaderText = "Кол-во заказов"; dgvWaiterStats.Columns["Сумма (руб.)"].HeaderText = "Сумма (руб.)"; dgvWaiterStats.Columns["Средний заказ (руб.)"].HeaderText = "Средний чек (руб.)"; } } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } } private void LoadPaymentMethodsReport() { try { var dt = repo.GetPaymentMethods(dtpPaymentMethodsFrom.Value, dtpPaymentMethodsTo.Value); dgvPaymentMethods.DataSource = dt; if (dgvPaymentMethods.Columns.Count > 0) { dgvPaymentMethods.Columns["Способ оплаты"].HeaderText = "Способ оплаты"; dgvPaymentMethods.Columns["Кол-во"].HeaderText = "Кол-во"; dgvPaymentMethods.Columns["Сумма (руб.)"].HeaderText = "Сумма (руб.)"; dgvPaymentMethods.Columns["%"].HeaderText = "Доля (%)"; } } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } } private void LoadLowStockReport() { try { var dt = repo.GetLowStock(); dgvLowStock.DataSource = dt; if (dgvLowStock.Columns.Count > 0) { dgvLowStock.Columns["Ингредиент"].HeaderText = "Ингредиент"; dgvLowStock.Columns["Ед. изм."].HeaderText = "Ед. изм."; dgvLowStock.Columns["Остаток"].HeaderText = "Остаток"; dgvLowStock.Columns["Минимум"].HeaderText = "Минимальный запас"; dgvLowStock.Columns["Поставщик"].HeaderText = "Поставщик"; } } catch (Exception ex) { MessageBox.Show($"Ошибка: {ex.Message}"); } } } }