From 33954a91c412db085fc1217bad99a6551463b9a7 Mon Sep 17 00:00:00 2001 From: "annalyovushkina@yandex.ru" Date: Tue, 22 Oct 2024 17:03:21 +0400 Subject: [PATCH] =?UTF-8?q?=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=BC=D1=81=D1=8F=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20=D1=83?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=BE=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WinFormUchetLab/Form1.Designer.cs | 85 ++++++ WinFormUchetLab/WinFormUchetLab/Form1.cs | 261 +++++++++++++++++- WinFormUchetLab/WinFormUchetLab/Form1.resx | 9 + .../WinFormUchetLab/FormChecker.Designer.cs | 39 +++ .../WinFormUchetLab/FormChecker.cs | 20 ++ .../WinFormUchetLab/FormChecker.resx | 120 ++++++++ .../WinFormUchetLab/FormLab.Designer.cs | 39 +++ WinFormUchetLab/WinFormUchetLab/FormLab.cs | 20 ++ WinFormUchetLab/WinFormUchetLab/FormLab.resx | 120 ++++++++ WinFormUchetLab/WinFormUchetLab/Program.cs | 41 ++- 10 files changed, 751 insertions(+), 3 deletions(-) create mode 100644 WinFormUchetLab/WinFormUchetLab/FormChecker.Designer.cs create mode 100644 WinFormUchetLab/WinFormUchetLab/FormChecker.cs create mode 100644 WinFormUchetLab/WinFormUchetLab/FormChecker.resx create mode 100644 WinFormUchetLab/WinFormUchetLab/FormLab.Designer.cs create mode 100644 WinFormUchetLab/WinFormUchetLab/FormLab.cs create mode 100644 WinFormUchetLab/WinFormUchetLab/FormLab.resx diff --git a/WinFormUchetLab/WinFormUchetLab/Form1.Designer.cs b/WinFormUchetLab/WinFormUchetLab/Form1.Designer.cs index 83cb014..876818c 100644 --- a/WinFormUchetLab/WinFormUchetLab/Form1.Designer.cs +++ b/WinFormUchetLab/WinFormUchetLab/Form1.Designer.cs @@ -28,7 +28,20 @@ /// private void InitializeComponent() { + components = new System.ComponentModel.Container(); controlDataTableTable1 = new ControlsLibraryNet60.Data.ControlDataTableTable(); + controlDataTableRow1 = new ControlsLibraryNet60.Data.ControlDataTableRow(); + contextMenuStrip1 = new ContextMenuStrip(components); + создатьToolStripMenuItem = new ToolStripMenuItem(); + изменитьToolStripMenuItem = new ToolStripMenuItem(); + удалитьToolStripMenuItem = new ToolStripMenuItem(); + wordToolStripMenuItem = new ToolStripMenuItem(); + excelToolStripMenuItem = new ToolStripMenuItem(); + pdfToolStripMenuItem = new ToolStripMenuItem(); + лабаToolStripMenuItem = new ToolStripMenuItem(); + pdfImage = new CustomComponents.NonVisualComponents.PdfImage(components); + customExcelTable = new Non_visual_components_Kouvshinoff.CustomComponentExcelTableWithHeader(components); + contextMenuStrip1.SuspendLayout(); SuspendLayout(); // // controlDataTableTable1 @@ -40,19 +53,91 @@ controlDataTableTable1.Size = new Size(799, 447); controlDataTableTable1.TabIndex = 0; // + // controlDataTableRow1 + // + controlDataTableRow1.Location = new Point(13, 65); + controlDataTableRow1.Margin = new Padding(4, 5, 4, 5); + controlDataTableRow1.Name = "controlDataTableRow1"; + controlDataTableRow1.SelectedRowIndex = -1; + controlDataTableRow1.Size = new Size(774, 371); + controlDataTableRow1.TabIndex = 1; + // + // contextMenuStrip1 + // + contextMenuStrip1.ImageScalingSize = new Size(20, 20); + contextMenuStrip1.Items.AddRange(new ToolStripItem[] { создатьToolStripMenuItem, изменитьToolStripMenuItem, удалитьToolStripMenuItem, wordToolStripMenuItem, excelToolStripMenuItem, pdfToolStripMenuItem, лабаToolStripMenuItem }); + contextMenuStrip1.Name = "contextMenuStrip1"; + contextMenuStrip1.Size = new Size(146, 172); + // + // создатьToolStripMenuItem + // + создатьToolStripMenuItem.Name = "создатьToolStripMenuItem"; + создатьToolStripMenuItem.Size = new Size(145, 24); + создатьToolStripMenuItem.Text = "создать"; + // + // изменитьToolStripMenuItem + // + изменитьToolStripMenuItem.Name = "изменитьToolStripMenuItem"; + изменитьToolStripMenuItem.Size = new Size(145, 24); + изменитьToolStripMenuItem.Text = "изменить"; + // + // удалитьToolStripMenuItem + // + удалитьToolStripMenuItem.Name = "удалитьToolStripMenuItem"; + удалитьToolStripMenuItem.Size = new Size(145, 24); + удалитьToolStripMenuItem.Text = "удалить"; + // + // wordToolStripMenuItem + // + wordToolStripMenuItem.Name = "wordToolStripMenuItem"; + wordToolStripMenuItem.Size = new Size(145, 24); + wordToolStripMenuItem.Text = "word"; + // + // excelToolStripMenuItem + // + excelToolStripMenuItem.Name = "excelToolStripMenuItem"; + excelToolStripMenuItem.Size = new Size(145, 24); + excelToolStripMenuItem.Text = "excel"; + // + // pdfToolStripMenuItem + // + pdfToolStripMenuItem.Name = "pdfToolStripMenuItem"; + pdfToolStripMenuItem.Size = new Size(145, 24); + pdfToolStripMenuItem.Text = "pdf"; + // + // лабаToolStripMenuItem + // + лабаToolStripMenuItem.Name = "лабаToolStripMenuItem"; + лабаToolStripMenuItem.Size = new Size(145, 24); + лабаToolStripMenuItem.Text = "лаба"; + // // Form1 // AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 450); + Controls.Add(controlDataTableRow1); Controls.Add(controlDataTableTable1); Name = "Form1"; Text = "Form1"; + Load += Form1_Load; + contextMenuStrip1.ResumeLayout(false); ResumeLayout(false); } #endregion private ControlsLibraryNet60.Data.ControlDataTableTable controlDataTableTable1; + private ControlsLibraryNet60.Data.ControlDataTableRow controlDataTableRow1; + private ContextMenuStrip contextMenuStrip1; + private ToolStripMenuItem создатьToolStripMenuItem; + private ToolStripMenuItem изменитьToolStripMenuItem; + private ToolStripMenuItem удалитьToolStripMenuItem; + private ToolStripMenuItem wordToolStripMenuItem; + private ToolStripMenuItem excelToolStripMenuItem; + private ToolStripMenuItem pdfToolStripMenuItem; + private ToolStripMenuItem лабаToolStripMenuItem; + private CustomComponents.NonVisualComponents.PdfImage pdfImage; + private Non_visual_components_Kouvshinoff.CustomComponentExcelTableWithHeader customExcelTable; } } diff --git a/WinFormUchetLab/WinFormUchetLab/Form1.cs b/WinFormUchetLab/WinFormUchetLab/Form1.cs index ff5dd08..d7d4744 100644 --- a/WinFormUchetLab/WinFormUchetLab/Form1.cs +++ b/WinFormUchetLab/WinFormUchetLab/Form1.cs @@ -1,15 +1,272 @@ using System.Windows.Forms; using UchetLabContracts.BindingModels; using UchetLabContracts.BusinessLogicsContracts; +using UchetLabBusinessLogic.BusinessLogic; +using UchetLabContracts.BindingModels; +using UchetLabContracts.BusinessLogicsContracts; +using ControlsLibraryNet60.Models; +using ControlsLibraryNet60.Data; +using ComponentsLibraryNet60.DocumentWithChart; +using ComponentsLibraryNet60.Models; +using CustomComponents.Helpers; +using DocumentFormat.OpenXml.Spreadsheet; +using Microsoft.Data.SqlClient; +using Non_visual_components_Kouvshinoff.InfoModels; +using UchetLabContracts.ViewModels; namespace WinFormUchetLab { public partial class Form1 : Form { - - public Form1() + private readonly ILabLogic _labLogic; + private readonly ICheckerLogic _checkerLogic; + public Form1(ILabLogic dishLogic, ICheckerLogic orderLogic) { + _labLogic = dishLogic; + _checkerLogic = orderLogic; InitializeComponent(); + List columnConfigs = new List + { + new DataTableColumnConfig + { + ColumnHeader = "", + PropertyName = "Id", + Width = 150, + Visible = false + }, + new DataTableColumnConfig + { + ColumnHeader = "", + PropertyName = "LabTask", + Width = 250, + Visible = true + }, + new DataTableColumnConfig + { + ColumnHeader = "", + PropertyName = "Checker", + Width = 200, + Visible = true + }, + new DataTableColumnConfig + { + ColumnHeader = " ", + PropertyName = "CheckDate", + Width = 200, + Visible = true + } + }; + controlDataTableRow1.LoadColumns(columnConfigs); + controlDataTableRow1.ContextMenuStrip = contextMenuStrip1; } + + private void Form1_Load(object sender, EventArgs e) + { + LoadData(); + } + private void LoadData() + { + controlDataTableRow1.Clear(); + try + { + var labs = _labLogic.ReadList(null); + if (labs == null) + { + return; + } + + foreach (var lab in labs) + { + + controlDataTableRow1.AddRow(lab); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + private void AddElement() + { + var service = Program.ServiceProvider?.GetService(typeof(FormLab)); + if (!(service is FormLab form)) + { + return; + } + + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + + private void UpdateElement() + { + var service = Program.ServiceProvider?.GetService(typeof(FormLab)); + if (!(service is FormLab form)) + { + return; + } + + var selectedLab = controlDataTableRow1.GetSelectedObject(); + if (selectedLab == null) + { + MessageBox.Show(" !", "", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + form.Id = Convert.ToInt32(selectedLab.Id); + if (form.ShowDialog() == DialogResult.OK) + { + LoadData(); + } + } + + private void DeleteElement() + { + if (MessageBox.Show(" ?", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) + { + return; + } + + var selectedLab = controlDataTableRow1.GetSelectedObject(); + int id = Convert.ToInt32(selectedLab.Id); + try + { + _labLogic.Delete(new LabBindingModel { Id = id }); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + + LoadData(); + } + + private void CreatePdf() + { + string fileName = ""; + using (var dialog = new SaveFileDialog { Filter = "pdf|*.pdf" }) + { + if (dialog.ShowDialog() == DialogResult.OK) + { + fileName = dialog.FileName.ToString(); + MessageBox.Show(" ", "", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else return; + } + + List images = new List(); + var list = _labLogic.ReadList(null); + + try + { + if (list != null) + { + foreach (var item in list) + { + images.Add(item.TaskImage); + } + string[] imagesArray = images.ToArray(); + + pdfImage.CreatePdfDoc(new DataForImage(fileName, " ", imagesArray)); + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, ""); + } + } + + private void CreateExcel() + { + string fileName = ""; + using (var dialog = new SaveFileDialog { Filter = "xlsx|*.xlsx" }) + { + if (dialog.ShowDialog() == DialogResult.OK) + { + fileName = dialog.FileName.ToString(); + MessageBox.Show(" ", "", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else return; + } + + string title = " "; + + var list = _labLogic.ReadList(null); + List header = new List(); + ColumnInfo col1 = new ColumnInfo("Id", 5, "Id"); + ColumnInfo col2 = new ColumnInfo("", 20, "LabTask"); + ColumnInfo col3 = new ColumnInfo("", 6, "Checker"); + ColumnInfo col4 = new ColumnInfo(" ", 6.5, "CheckDate"); + ColumnInfo colExam = new ColumnInfo("", new List { col3, col4 }); + header.Add(colExam); + try + { + customExcelTable.createExcel(fileName, title, + header, list); + + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, ""); + } + } + + private void CreateWord() + { + System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); + string fileName = ""; + using (var dialog = new SaveFileDialog { Filter = "docx|*.docx" }) + { + if (dialog.ShowDialog() == DialogResult.OK) + { + fileName = dialog.FileName.ToString(); + MessageBox.Show(" ", "", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else return; + } + + var data = new Dictionary>(); + + var orders = _orderLogic.ReadList(null); + + var groupedOrders = orders.GroupBy(order => order.Dish) + .Select(group => new + { + DishName = group.Key, + OrderCount = group.Count() + }) + .ToList(); + + data[""] = new List<(int Date, double Value)>(); + + int counter = 1; + foreach (var group in groupedOrders) + { + data[""].Add((counter, group.OrderCount)); + counter++; + } + + + + try + { + componentDocumentWithChartBarWord.CreateDoc(new ComponentDocumentWithChartConfig + { + Header = "test", + FilePath = fileName, + ChartTitle = " ", + LegendLocation = ComponentsLibraryNet60.Models.Location.Bottom, + Data = data + }); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, ""); + } + } + + } } diff --git a/WinFormUchetLab/WinFormUchetLab/Form1.resx b/WinFormUchetLab/WinFormUchetLab/Form1.resx index 8b2ff64..f8cfc15 100644 --- a/WinFormUchetLab/WinFormUchetLab/Form1.resx +++ b/WinFormUchetLab/WinFormUchetLab/Form1.resx @@ -117,4 +117,13 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + + + 202, 17 + + + 323, 17 + \ No newline at end of file diff --git a/WinFormUchetLab/WinFormUchetLab/FormChecker.Designer.cs b/WinFormUchetLab/WinFormUchetLab/FormChecker.Designer.cs new file mode 100644 index 0000000..bc4f632 --- /dev/null +++ b/WinFormUchetLab/WinFormUchetLab/FormChecker.Designer.cs @@ -0,0 +1,39 @@ +namespace WinFormUchetLab +{ + partial class FormChecker + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Text = "FormChecker"; + } + + #endregion + } +} \ No newline at end of file diff --git a/WinFormUchetLab/WinFormUchetLab/FormChecker.cs b/WinFormUchetLab/WinFormUchetLab/FormChecker.cs new file mode 100644 index 0000000..8d59e90 --- /dev/null +++ b/WinFormUchetLab/WinFormUchetLab/FormChecker.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace WinFormUchetLab +{ + public partial class FormChecker : Form + { + public FormChecker() + { + InitializeComponent(); + } + } +} diff --git a/WinFormUchetLab/WinFormUchetLab/FormChecker.resx b/WinFormUchetLab/WinFormUchetLab/FormChecker.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/WinFormUchetLab/WinFormUchetLab/FormChecker.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/WinFormUchetLab/WinFormUchetLab/FormLab.Designer.cs b/WinFormUchetLab/WinFormUchetLab/FormLab.Designer.cs new file mode 100644 index 0000000..08e5f3a --- /dev/null +++ b/WinFormUchetLab/WinFormUchetLab/FormLab.Designer.cs @@ -0,0 +1,39 @@ +namespace WinFormUchetLab +{ + partial class FormLab + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Text = "FormLab"; + } + + #endregion + } +} \ No newline at end of file diff --git a/WinFormUchetLab/WinFormUchetLab/FormLab.cs b/WinFormUchetLab/WinFormUchetLab/FormLab.cs new file mode 100644 index 0000000..b08657b --- /dev/null +++ b/WinFormUchetLab/WinFormUchetLab/FormLab.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace WinFormUchetLab +{ + public partial class FormLab : Form + { + public FormLab() + { + InitializeComponent(); + } + } +} diff --git a/WinFormUchetLab/WinFormUchetLab/FormLab.resx b/WinFormUchetLab/WinFormUchetLab/FormLab.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/WinFormUchetLab/WinFormUchetLab/FormLab.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/WinFormUchetLab/WinFormUchetLab/Program.cs b/WinFormUchetLab/WinFormUchetLab/Program.cs index b74e3b1..a35934a 100644 --- a/WinFormUchetLab/WinFormUchetLab/Program.cs +++ b/WinFormUchetLab/WinFormUchetLab/Program.cs @@ -1,7 +1,20 @@ +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using UchetLabBusinessLogic.BusinessLogic; +using UchetLabContracts.BusinessLogicsContracts; +using UchetLabContracts.StorageContracts; +using UchetLabDatabaseImplement.Implements; + namespace WinFormUchetLab { internal static class Program { + private static ServiceProvider? _serviceProvider; + + /// + /// IoC- + /// + public static ServiceProvider? ServiceProvider => _serviceProvider; /// /// The main entry point for the application. /// @@ -11,7 +24,33 @@ namespace WinFormUchetLab // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + var services = new ServiceCollection(); + ConfigureServices(services); + _serviceProvider = services.BuildServiceProvider(); + + Application.Run(_serviceProvider.GetRequiredService()); + } + private static void ConfigureServices(ServiceCollection services) + { + // + services.AddLogging(option => + { + option.SetMinimumLevel(LogLevel.Information); + //option.AddNLog("nlog.config"); + }); + + // IoC-, + services.AddTransient(); + services.AddTransient(); + + // IoC-, - + services.AddTransient(); + services.AddTransient(); + + // IoC-, + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); } } } \ No newline at end of file