diff --git a/GarmentFactory/GarmentFactoryBusinessLogic/BusinessLogics/ReportLogic.cs b/GarmentFactory/GarmentFactoryBusinessLogic/BusinessLogics/ReportLogic.cs index 79189aa..fb8ce1a 100644 --- a/GarmentFactory/GarmentFactoryBusinessLogic/BusinessLogics/ReportLogic.cs +++ b/GarmentFactory/GarmentFactoryBusinessLogic/BusinessLogics/ReportLogic.cs @@ -13,18 +13,21 @@ namespace GarmentFactoryBusinessLogic.BusinessLogics private readonly ITextileStorage _textileStorage; private readonly IOrderStorage _orderStorage; + private readonly IShopStorage _shopStorage; private readonly AbstractSaveToExcel _saveToExcel; private readonly AbstractSaveToWord _saveToWord; private readonly AbstractSaveToPdf _saveToPdf; + - public ReportLogic(ITextileStorage textileStorage, IComponentStorage componentStorage, IOrderStorage orderStorage, + public ReportLogic(ITextileStorage textileStorage, IComponentStorage componentStorage, IShopStorage shopStorage, IOrderStorage orderStorage, AbstractSaveToExcel saveToExcel, AbstractSaveToWord saveToWord, AbstractSaveToPdf saveToPdf) { _textileStorage = textileStorage; _orderStorage = orderStorage; + _shopStorage = shopStorage; _saveToExcel = saveToExcel; _saveToWord = saveToWord; @@ -57,7 +60,30 @@ namespace GarmentFactoryBusinessLogic.BusinessLogics return list; } + public List GetShopTextiles() + { + var shops = _shopStorage.GetFullList(); + var list = new List(); + + foreach (var shop in shops) + { + var record = new ReportShopTextileViewModel + { + ShopName = shop.ShopName, + Textiles = new List<(string Textile, int Count)>(), + TotalCount = 0, + }; + foreach (var textile in shop.ShopTextiles) + { + record.Textiles.Add(new(textile.Value.Item1.TextileName, textile.Value.Item2)); + record.TotalCount += textile.Value.Item2; + } + + list.Add(record); + } + return list; + } public List GetOrders(ReportBindingModel model) { return _orderStorage.GetFilteredList(new OrderSearchModel { DateFrom = model.DateFrom, DateTo = model.DateTo }) @@ -71,7 +97,17 @@ namespace GarmentFactoryBusinessLogic.BusinessLogics }) .ToList(); } - + public List GetGroupedByDateOrders() + { + return _orderStorage.GetFullList().GroupBy(x => x.DateCreate.Date) + .Select(x => new ReportOrdersByDateViewModel + { + Date = x.Key, + Count = x.Count(), + Sum = x.Sum(y => y.Sum) + }) + .ToList(); + } public void SaveTextilesToWordFile(ReportBindingModel model) { _saveToWord.CreateDoc(new WordInfo @@ -81,7 +117,15 @@ namespace GarmentFactoryBusinessLogic.BusinessLogics Textiles = _textileStorage.GetFullList() }); } - + public void SaveShopsToWordFile(ReportBindingModel model) + { + _saveToWord.CreateShopsTable(new WordInfo + { + FileName = model.FileName, + Title = "Список магазинов", + Shops = _shopStorage.GetFullList() + }); + } public void SaveTextileComponentToExcelFile(ReportBindingModel model) { _saveToExcel.CreateReport(new ExcelInfo @@ -91,7 +135,15 @@ namespace GarmentFactoryBusinessLogic.BusinessLogics TextileComponents = GetTextileComponents() }); } - + public void SaveShopTextileToExcelFile(ReportBindingModel model) + { + _saveToExcel.CreateShopReport(new ExcelInfo + { + FileName = model.FileName, + Title = "Загруженность магазинов", + ShopTextiles = GetShopTextiles() + }); + } public void SaveOrdersToPdfFile(ReportBindingModel model) { _saveToPdf.CreateDoc(new PdfInfo @@ -103,5 +155,14 @@ namespace GarmentFactoryBusinessLogic.BusinessLogics Orders = GetOrders(model) }); } + public void SaveGroupedOrdersToPdfFile(ReportBindingModel model) + { + _saveToPdf.CreateDocWithGroupedOrders(new PdfInfo + { + FileName = model.FileName, + Title = "Заказы по датам", + GroupedOrders = GetGroupedByDateOrders() + }); + } } } diff --git a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToExcel.cs b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToExcel.cs index f127966..11814de 100644 --- a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToExcel.cs +++ b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToExcel.cs @@ -80,7 +80,76 @@ namespace GarmentFactoryBusinessLogic.OfficePackage SaveExcel(info); } + public void CreateShopReport(ExcelInfo info) + { + CreateExcel(info); + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "A", + RowIndex = 1, + Text = info.Title, + StyleInfo = ExcelStyleInfoType.Title + }); + + MergeCells(new ExcelMergeParameters + { + CellFromName = "A1", + CellToName = "C1" + }); + + uint rowIndex = 2; + foreach (var si in info.ShopTextiles) + { + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "A", + RowIndex = rowIndex, + Text = si.ShopName, + StyleInfo = ExcelStyleInfoType.Text + }); + rowIndex++; + + foreach (var (Textile, Count) in si.Textiles) + { + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "B", + RowIndex = rowIndex, + Text = Textile, + StyleInfo = ExcelStyleInfoType.TextWithBorder + }); + + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "C", + RowIndex = rowIndex, + Text = Count.ToString(), + StyleInfo = ExcelStyleInfoType.TextWithBorder + }); + + rowIndex++; + } + + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "A", + RowIndex = rowIndex, + Text = "Итого", + StyleInfo = ExcelStyleInfoType.Text + }); + InsertCellInWorksheet(new ExcelCellParameters + { + ColumnName = "C", + RowIndex = rowIndex, + Text = si.TotalCount.ToString(), + StyleInfo = ExcelStyleInfoType.Text + }); + rowIndex++; + } + + SaveExcel(info); + } // Создание excel-файла protected abstract void CreateExcel(ExcelInfo info); diff --git a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToPdf.cs b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToPdf.cs index 978fe96..3f458a5 100644 --- a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToPdf.cs +++ b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToPdf.cs @@ -44,8 +44,34 @@ namespace GarmentFactoryBusinessLogic.OfficePackage SavePdf(info); } + public void CreateDocWithGroupedOrders(PdfInfo info) + { + CreatePdf(info); + CreateParagraph(new PdfParagraph { Text = info.Title, Style = "NormalTitle", ParagraphAlignment = PdfParagraphAlignmentType.Center }); - // Создание pdf-файла + CreateTable(new List { "5cm", "6cm", "5cm" }); + + CreateRow(new PdfRowParameters + { + Texts = new List { "Дата", "Количество заказов", "Сумма" }, + Style = "NormalTitle", + ParagraphAlignment = PdfParagraphAlignmentType.Center + }); + + foreach (var order in info.GroupedOrders) + { + CreateRow(new PdfRowParameters + { + Texts = new List { order.Date.ToShortDateString(), order.Count.ToString(), order.Sum.ToString() }, + Style = "Normal", + ParagraphAlignment = PdfParagraphAlignmentType.Left + }); + } + CreateParagraph(new PdfParagraph { Text = $"Итого: {info.GroupedOrders.Sum(x => x.Sum)}\t", Style = "Normal", ParagraphAlignment = PdfParagraphAlignmentType.Right }); + + SavePdf(info); + } + // Создание pdf-файла protected abstract void CreatePdf(PdfInfo info); // Создание параграфа с текстом diff --git a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToWord.cs b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToWord.cs index c8a8edc..86302ab 100644 --- a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToWord.cs +++ b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/AbstractSaveToWord.cs @@ -40,8 +40,52 @@ namespace GarmentFactoryBusinessLogic.OfficePackage SaveWord(info); } + public void CreateShopsTable(WordInfo info) + { + CreateWord(info); - // Создание doc-файла + CreateParagraph(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24", }) }, + TextProperties = new WordTextProperties + { + Size = "24", + JustificationType = WordJustificationType.Center + } + }); + + CreateTable(new List { "3000", "3000", "3000" }); + + CreateRow(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { ("Название магазина", new WordTextProperties { Size = "24" }), + ("Адрес", new WordTextProperties { Size = "24" }), ("Дата открытия", new WordTextProperties { Size = "24" }) }, + TextProperties = new WordTextProperties + { + Size = "24", + Bold = true, + JustificationType = WordJustificationType.Center + } + }); + + foreach (var shop in info.Shops) + { + CreateRow(new WordParagraph + { + Texts = new List<(string, WordTextProperties)> { (shop.ShopName, new WordTextProperties { Size = "22" }), + (shop.Address, new WordTextProperties { Size = "22" }), (shop.DateOpening.ToString(), new WordTextProperties { Size = "22" })}, + TextProperties = new WordTextProperties + { + Size = "22", + JustificationType = WordJustificationType.Center + } + }); + } + + SaveWord(info); + } + + // Создание doc-файла protected abstract void CreateWord(WordInfo info); // Создание абзаца с текстом diff --git a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs index 9eaea62..3e44450 100644 --- a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs +++ b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs @@ -14,5 +14,6 @@ namespace GarmentFactoryBusinessLogic.OfficePackage.HelperModels public string Title { get; set; } = string.Empty; public List TextileComponents { get; set; } = new(); + public List ShopTextiles { get; set; } = new(); } } diff --git a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs index 41244bb..45efac3 100644 --- a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs +++ b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs @@ -18,5 +18,6 @@ namespace GarmentFactoryBusinessLogic.OfficePackage.HelperModels public DateTime DateTo { get; set; } public List Orders { get; set; } = new(); + public List GroupedOrders { get; set; } = new(); } } diff --git a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/WordInfo.cs b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/WordInfo.cs index 7000d62..d927eca 100644 --- a/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/WordInfo.cs +++ b/GarmentFactory/GarmentFactoryBusinessLogic/OfficePackage/HelperModels/WordInfo.cs @@ -14,5 +14,6 @@ namespace GarmentFactoryBusinessLogic.OfficePackage.HelperModels public string Title { get; set; } = string.Empty; public List Textiles { get; set; } = new(); + public List Shops { get; set; } = new(); } } diff --git a/GarmentFactory/GarmentFactoryContracts/BusinessLogicsContracts/IReportLogic.cs b/GarmentFactory/GarmentFactoryContracts/BusinessLogicsContracts/IReportLogic.cs index 5d1f614..cc4b274 100644 --- a/GarmentFactory/GarmentFactoryContracts/BusinessLogicsContracts/IReportLogic.cs +++ b/GarmentFactory/GarmentFactoryContracts/BusinessLogicsContracts/IReportLogic.cs @@ -6,13 +6,19 @@ namespace GarmentFactoryContracts.BusinessLogicsContracts { //Получение списка компонент с указанием, в каких изделиях используются List GetTextileComponents(); + List GetShopTextiles(); // Получение списка заказов за определенный период List GetOrders(ReportBindingModel model); + List GetGroupedByDateOrders(); // Сохранение компонент в файл-Word void SaveTextilesToWordFile(ReportBindingModel model); // Сохранение компонент с указаеним продуктов в файл-Excel void SaveTextileComponentToExcelFile(ReportBindingModel model); // Сохранение заказов в файл-Pdf void SaveOrdersToPdfFile(ReportBindingModel model); + void SaveShopsToWordFile(ReportBindingModel model); + void SaveShopTextileToExcelFile(ReportBindingModel model); + void SaveGroupedOrdersToPdfFile(ReportBindingModel model); + } } diff --git a/GarmentFactory/GarmentFactoryContracts/ViewModels/ReportOrdersByDateViewModel.cs b/GarmentFactory/GarmentFactoryContracts/ViewModels/ReportOrdersByDateViewModel.cs new file mode 100644 index 0000000..1e860e0 --- /dev/null +++ b/GarmentFactory/GarmentFactoryContracts/ViewModels/ReportOrdersByDateViewModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GarmentFactoryContracts.ViewModels +{ + public class ReportOrdersByDateViewModel + { + public DateTime Date { get; set; } + + public int Count { get; set; } + + public double Sum { get; set; } + } +} diff --git a/GarmentFactory/GarmentFactoryContracts/ViewModels/ReportShopTextileViewModel.cs b/GarmentFactory/GarmentFactoryContracts/ViewModels/ReportShopTextileViewModel.cs new file mode 100644 index 0000000..d285cde --- /dev/null +++ b/GarmentFactory/GarmentFactoryContracts/ViewModels/ReportShopTextileViewModel.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace GarmentFactoryContracts.ViewModels +{ + public class ReportShopTextileViewModel + { + public string ShopName { get; set; } = string.Empty; + + public int TotalCount { get; set; } + + public List<(string Textile, int Count)> Textiles { get; set; } = new(); + } +} diff --git a/GarmentFactory/GarmentFactoryView/FormMain.Designer.cs b/GarmentFactory/GarmentFactoryView/FormMain.Designer.cs index bb63346..5a5a314 100644 --- a/GarmentFactory/GarmentFactoryView/FormMain.Designer.cs +++ b/GarmentFactory/GarmentFactoryView/FormMain.Designer.cs @@ -20,7 +20,7 @@ base.Dispose(disposing); } - #region Windows Form Designer generated code + #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify @@ -32,12 +32,22 @@ справочникиToolStripMenuItem = new ToolStripMenuItem(); компонентыToolStripMenuItem = new ToolStripMenuItem(); изделиеToolStripMenuItem = new ToolStripMenuItem(); + магазиныToolStripMenuItem = new ToolStripMenuItem(); + отчетыToolStripMenuItem = new ToolStripMenuItem(); + списокПродуктаToolStripMenuItem = new ToolStripMenuItem(); + компонентыПоИзделиямToolStripMenuItem = new ToolStripMenuItem(); + списокЗаказовToolStripMenuItem = new ToolStripMenuItem(); + пополнениеМагазинаToolStripMenuItem = new ToolStripMenuItem(); + продажаИзделияToolStripMenuItem = new ToolStripMenuItem(); dataGridView = new DataGridView(); buttonCreateOrder = new Button(); buttonTakeOrderInWork = new Button(); buttonOrderReady = new Button(); buttonIssuedOrder = new Button(); buttonUpd = new Button(); + списокМагазиновToolStripMenuItem = new ToolStripMenuItem(); + загруженностьМагазиновToolStripMenuItem = new ToolStripMenuItem(); + заказыПоДатамToolStripMenuItem = new ToolStripMenuItem(); menuStrip.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); SuspendLayout(); @@ -45,7 +55,7 @@ // menuStrip // menuStrip.ImageScalingSize = new Size(20, 20); - menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem }); + menuStrip.Items.AddRange(new ToolStripItem[] { справочникиToolStripMenuItem, отчетыToolStripMenuItem, пополнениеМагазинаToolStripMenuItem, продажаИзделияToolStripMenuItem }); menuStrip.Location = new Point(0, 0); menuStrip.Name = "menuStrip"; menuStrip.Size = new Size(1178, 28); @@ -54,7 +64,7 @@ // // справочникиToolStripMenuItem // - справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { компонентыToolStripMenuItem, изделиеToolStripMenuItem }); + справочникиToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { компонентыToolStripMenuItem, изделиеToolStripMenuItem, магазиныToolStripMenuItem }); справочникиToolStripMenuItem.Name = "справочникиToolStripMenuItem"; справочникиToolStripMenuItem.Size = new Size(117, 24); справочникиToolStripMenuItem.Text = "Справочники"; @@ -73,6 +83,55 @@ изделиеToolStripMenuItem.Text = "Изделие"; изделиеToolStripMenuItem.Click += ИзделиеToolStripMenuItem_Click; // + // магазиныToolStripMenuItem + // + магазиныToolStripMenuItem.Name = "магазиныToolStripMenuItem"; + магазиныToolStripMenuItem.Size = new Size(224, 26); + магазиныToolStripMenuItem.Text = "Магазины"; + магазиныToolStripMenuItem.Click += МагазиныToolStripMenuItem_Click; + // + // отчетыToolStripMenuItem + // + отчетыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { списокПродуктаToolStripMenuItem, компонентыПоИзделиямToolStripMenuItem, списокЗаказовToolStripMenuItem, списокМагазиновToolStripMenuItem, загруженностьМагазиновToolStripMenuItem, заказыПоДатамToolStripMenuItem }); + отчетыToolStripMenuItem.Name = "отчетыToolStripMenuItem"; + отчетыToolStripMenuItem.Size = new Size(73, 24); + отчетыToolStripMenuItem.Text = "Отчеты"; + // + // списокПродуктаToolStripMenuItem + // + списокПродуктаToolStripMenuItem.Name = "списокПродуктаToolStripMenuItem"; + списокПродуктаToolStripMenuItem.Size = new Size(276, 26); + списокПродуктаToolStripMenuItem.Text = "Список изделия"; + списокПродуктаToolStripMenuItem.Click += СписокИзделияToolStripMenuItem_Click; + // + // компонентыПоИзделиямToolStripMenuItem + // + компонентыПоИзделиямToolStripMenuItem.Name = "компонентыПоИзделиямToolStripMenuItem"; + компонентыПоИзделиямToolStripMenuItem.Size = new Size(276, 26); + компонентыПоИзделиямToolStripMenuItem.Text = "Компоненты по изделиям"; + компонентыПоИзделиямToolStripMenuItem.Click += КомпонентыПоИзделиямToolStripMenuItem_Click; + // + // списокЗаказовToolStripMenuItem + // + списокЗаказовToolStripMenuItem.Name = "списокЗаказовToolStripMenuItem"; + списокЗаказовToolStripMenuItem.Size = new Size(276, 26); + списокЗаказовToolStripMenuItem.Text = "Список заказов"; + списокЗаказовToolStripMenuItem.Click += СписокЗаказовToolStripMenuItem_Click; + // + // пополнениеМагазинаToolStripMenuItem + // + пополнениеМагазинаToolStripMenuItem.Name = "пополнениеМагазинаToolStripMenuItem"; + пополнениеМагазинаToolStripMenuItem.Size = new Size(182, 24); + пополнениеМагазинаToolStripMenuItem.Text = "Пополнение магазина"; + пополнениеМагазинаToolStripMenuItem.Click += ПополнениеМагазинаToolStripMenuItem_Click; + // + // продажаИзделияToolStripMenuItem + // + продажаИзделияToolStripMenuItem.Name = "продажаИзделияToolStripMenuItem"; + продажаИзделияToolStripMenuItem.Size = new Size(148, 24); + продажаИзделияToolStripMenuItem.Text = "Продажа изделия"; + продажаИзделияToolStripMenuItem.Click += ПродажаИзделияToolStripMenuItem_Click; + // // dataGridView // dataGridView.AllowUserToAddRows = false; @@ -140,6 +199,27 @@ buttonUpd.UseVisualStyleBackColor = true; buttonUpd.Click += ButtonUpd_Click; // + // списокМагазиновToolStripMenuItem + // + списокМагазиновToolStripMenuItem.Name = "списокМагазиновToolStripMenuItem"; + списокМагазиновToolStripMenuItem.Size = new Size(276, 26); + списокМагазиновToolStripMenuItem.Text = "Список магазинов"; + списокМагазиновToolStripMenuItem.Click += СписокМагазиновToolStripMenuItem_Click; + // + // загруженностьМагазиновToolStripMenuItem + // + загруженностьМагазиновToolStripMenuItem.Name = "загруженностьМагазиновToolStripMenuItem"; + загруженностьМагазиновToolStripMenuItem.Size = new Size(276, 26); + загруженностьМагазиновToolStripMenuItem.Text = "Загруженность магазинов"; + загруженностьМагазиновToolStripMenuItem.Click += ЗагруженностьМагазиновToolStripMenuItem_Click; + // + // заказыПоДатамToolStripMenuItem + // + заказыПоДатамToolStripMenuItem.Name = "заказыПоДатамToolStripMenuItem"; + заказыПоДатамToolStripMenuItem.Size = new Size(276, 26); + заказыПоДатамToolStripMenuItem.Text = "Заказы по датам"; + заказыПоДатамToolStripMenuItem.Click += ЗаказыПоДатамToolStripMenuItem_Click; + // // FormMain // AutoScaleDimensions = new SizeF(8F, 20F); @@ -164,9 +244,9 @@ PerformLayout(); } - #endregion + #endregion - private MenuStrip menuStrip; + private MenuStrip menuStrip; private ToolStripMenuItem справочникиToolStripMenuItem; private ToolStripMenuItem компонентыToolStripMenuItem; private ToolStripMenuItem изделиеToolStripMenuItem; @@ -176,5 +256,15 @@ private Button buttonOrderReady; private Button buttonIssuedOrder; private Button buttonUpd; + private ToolStripMenuItem отчетыToolStripMenuItem; + private ToolStripMenuItem списокПродуктаToolStripMenuItem; + private ToolStripMenuItem компонентыПоИзделиямToolStripMenuItem; + private ToolStripMenuItem списокЗаказовToolStripMenuItem; + private ToolStripMenuItem пополнениеМагазинаToolStripMenuItem; + private ToolStripMenuItem продажаИзделияToolStripMenuItem; + private ToolStripMenuItem магазиныToolStripMenuItem; + private ToolStripMenuItem списокМагазиновToolStripMenuItem; + private ToolStripMenuItem загруженностьМагазиновToolStripMenuItem; + private ToolStripMenuItem заказыПоДатамToolStripMenuItem; } } \ No newline at end of file diff --git a/GarmentFactory/GarmentFactoryView/FormMain.cs b/GarmentFactory/GarmentFactoryView/FormMain.cs index 570d577..0a8d6f2 100644 --- a/GarmentFactory/GarmentFactoryView/FormMain.cs +++ b/GarmentFactory/GarmentFactoryView/FormMain.cs @@ -17,65 +17,67 @@ namespace GarmentFactoryView { private readonly ILogger _logger; private readonly IOrderLogic _orderLogic; + private readonly IReportLogic _reportLogic; - public FormMain(ILogger logger, IOrderLogic orderLogic) + public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic) { InitializeComponent(); _logger = logger; _orderLogic = orderLogic; + _reportLogic = reportLogic; } - private void FormMain_Load(object sender, EventArgs e) - { - LoadData(); - } - private void LoadData() - { - try - { - var list = _orderLogic.ReadList(null); - if (list != null) - { - dataGridView.DataSource = list; - dataGridView.Columns["TextileId"].Visible = false; - dataGridView.Columns["TextileName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; - } - _logger.LogInformation("Загрузка заказов"); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка загрузки заказов"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); - } - } - private void КомпонентыToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormComponents)); - if (service is FormComponents form) - { - form.ShowDialog(); - } - } + private void FormMain_Load(object sender, EventArgs e) + { + LoadData(); + } + private void LoadData() + { + try + { + var list = _orderLogic.ReadList(null); + if (list != null) + { + dataGridView.DataSource = list; + dataGridView.Columns["TextileId"].Visible = false; + dataGridView.Columns["TextileName"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + } + _logger.LogInformation("Загрузка заказов"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки заказов"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void КомпонентыToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormComponents)); + if (service is FormComponents form) + { + form.ShowDialog(); + } + } - private void ИзделиеToolStripMenuItem_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormTextiles)); - if (service is FormTextiles form) - { - form.ShowDialog(); - } - } + private void ИзделиеToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormTextiles)); + if (service is FormTextiles form) + { + form.ShowDialog(); + } + } - private void ButtonCreateOrder_Click(object sender, EventArgs e) - { - var service = Program.ServiceProvider?.GetService(typeof(FormCreateOrder)); - if (service is FormCreateOrder form) - { - form.ShowDialog(); - LoadData(); - } + private void ButtonCreateOrder_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormCreateOrder)); + if (service is FormCreateOrder form) + { + form.ShowDialog(); + LoadData(); + } - } + } private void ButtonTakeOrderInWork_Click(object sender, EventArgs e) { @@ -120,40 +122,110 @@ namespace GarmentFactoryView catch (Exception ex) { _logger.LogError(ex, "Ошибка отметки о готовности заказа"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } - } + } - private void ButtonIssuedOrder_Click(object sender, EventArgs e) - { - if (dataGridView.SelectedRows.Count == 1) - { - int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); - _logger.LogInformation("Заказ №{id}. Меняется статус на 'Выдан'", id); - try - { - var operationResult = _orderLogic.DeliveryOrder(new OrderBindingModel { Id = id }); - if (!operationResult) - { - throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); - } - _logger.LogInformation("Заказ №{id} выдан", id); - LoadData(); - } - catch (Exception ex) - { - _logger.LogError(ex, "Ошибка отметки о выдачи заказа"); - MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, - MessageBoxIcon.Error); - } - } + private void ButtonIssuedOrder_Click(object sender, EventArgs e) + { + if (dataGridView.SelectedRows.Count == 1) + { + int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); + _logger.LogInformation("Заказ №{id}. Меняется статус на 'Выдан'", id); + try + { + var operationResult = _orderLogic.DeliveryOrder(new OrderBindingModel { Id = id }); + if (!operationResult) + { + throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); + } + _logger.LogInformation("Заказ №{id} выдан", id); + LoadData(); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка отметки о выдачи заказа"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + } } private void ButtonUpd_Click(object sender, EventArgs e) { LoadData(); } + + private void СписокИзделияToolStripMenuItem_Click(object sender, EventArgs e) + { + using var dialog = new SaveFileDialog { Filter = "docx|*.docx" }; + if (dialog.ShowDialog() == DialogResult.OK) + { + _reportLogic.SaveTextilesToWordFile(new ReportBindingModel { FileName = dialog.FileName }); + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + + private void КомпонентыПоИзделиямToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormReportTextileComponents)); + if (service is FormReportTextileComponents form) + { + form.ShowDialog(); + } + } + + private void СписокЗаказовToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormReportOrders)); + if (service is FormReportOrders form) + { + form.ShowDialog(); + } + } + + private void ПополнениеМагазинаToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormMakeDelivery)); + if (service is FormMakeDelivery form) + { + form.ShowDialog(); + } + } + + private void ПродажаИзделияToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormTextileSale)); + if (service is FormTextileSale form) + { + form.ShowDialog(); + } + } + + private void МагазиныToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormShops)); + if (service is FormShops form) + { + form.ShowDialog(); + } + } + + private void СписокМагазиновToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void ЗагруженностьМагазиновToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void ЗаказыПоДатамToolStripMenuItem_Click(object sender, EventArgs e) + { + + } } } diff --git a/GarmentFactory/GarmentFactoryView/Program.cs b/GarmentFactory/GarmentFactoryView/Program.cs index 94696bd..983ca8d 100644 --- a/GarmentFactory/GarmentFactoryView/Program.cs +++ b/GarmentFactory/GarmentFactoryView/Program.cs @@ -39,8 +39,8 @@ namespace GarmentFactoryView services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -53,12 +53,14 @@ namespace GarmentFactoryView services.AddTransient(); services.AddTransient(); services.AddTransient(); - services.AddTransient(); - services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); } }