using ComponentsLibraryNet60.Models; using Contracts.BindingModels; using Contracts.StoragesContracts; using Contracts.ViewModels; using CustomComponents; using DatabaseImplement.Models; using DataModels.Models; using DocumentFormat.OpenXml.Drawing.Charts; using DocumentFormat.OpenXml.Spreadsheet; using KOP_Labs.Classes; 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; using ViewComponents.NotVisualComponents; using Book = DatabaseImplement.Models.Book; namespace WinForm { public partial class FormMain : Form { private readonly IBookStorage _bookStorage; private readonly IShapeStorage _shapeStorage; public FormMain(IBookStorage bookStorage, IShapeStorage shapeStorage) { InitializeComponent(); _bookStorage = bookStorage; _shapeStorage = shapeStorage; LoadData(); } public void LoadData() { listBoxObjects1.deleteAll(); listBoxObjects2.deleteAll(); var books = _bookStorage.GetFullList(); listBoxObjects1.SetLayoutInfo("Название *Name* Читатели *Readers* Форма *Shape* Аннотация *Annotation* Id *Id*", "*", "*"); listBoxObjects2.SetLayoutInfo("Форма *Shape* Аннотация *Annotation* Id *Id*", "*", "*"); foreach (var book in books) { listBoxObjects1.AddInListBox(book); listBoxObjects2.AddInListBox(book); } } private void CreateToolStripMenuItem_Click(object sender, EventArgs e) { var service = Program.ServiceProvider?.GetService(typeof(FormCreateBook)); if (service is FormCreateBook form) { form.ShowDialog(); LoadData(); } } private void изменитьToolStripMenuItem_Click(object sender, EventArgs e) { try { int id = listBoxObjects1.GetObjectFromStr().Id; var service = Program.ServiceProvider?.GetService(typeof(FormCreateBook)); if (service is FormCreateBook form) { form.Id = id; form.ShowDialog(); LoadData(); } } catch (Exception ex) { MessageBox.Show("Ошибка операции", "Необходимо выбрать элемент списка!", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void удалитьToolStripMenuItem_Click(object sender, EventArgs e) { int id = listBoxObjects1.GetObjectFromStr().Id; DialogResult result = MessageBox.Show("Вы уверены, что хотите удалить выбранную запись?" + id, "Подтверждение удаления", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { _bookStorage.Delete(new BookBindingModel { Id = id }); LoadData(); } } private void справочникToolStripMenuItem_Click(object sender, EventArgs e) { var service = Program.ServiceProvider?.GetService(typeof(FormShapes)); if (service is FormShapes form) { form.ShowDialog(); LoadData(); } } public void CreateSimpleDocItem_Click(object sender, EventArgs e) { //фильтрация файлов для диалогового окна using var dialog = new SaveFileDialog { Filter = "docx|*.docx" }; if (dialog.ShowDialog() == DialogResult.OK) { try { var list = _bookStorage.GetFullList().OrderBy(l => l.Shape).ToList(); var disciplines = _shapeStorage.GetFullList().OrderBy(d => d.Name).ToList(); List totalList = new(); List supportList = new(); foreach (var discipline in disciplines) { foreach (var elem in list) { if (elem.Shape.Equals(discipline.Name)) { supportList.Add(elem); } } supportList = supportList.OrderBy(sl => sl.Name).ToList(); totalList.Add(new string[,] { { "Форма", discipline.Name } }); foreach (var elem in supportList) { var listFCs = elem.Readers.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList(); string[,] newArray = { { elem.Name, listFCs[listFCs.Count - 1] } }; totalList.Add(newArray); } supportList.Clear(); } MyTable table = new(dialog.FileName, "Первое задание", totalList); wordTableComponent1.CreateDoc(table); MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void отчётToolStripMenuItem_Click(object sender, EventArgs e) { CreateSimpleDocItem_Click(sender, e); } private void отчёт2ToolStripMenuItem_Click(object sender, EventArgs e) { List? list = _bookStorage.GetFullList().OrderBy(l => l.Name).ToList(); using var dialog = new SaveFileDialog { Filter = "pdf|*.pdf" }; if (dialog.ShowDialog() == DialogResult.OK) { try { componentDocumentWithTableHeaderColumnPdf1.CreateDoc(new ComponentDocumentWithTableHeaderDataConfig { FilePath = dialog.FileName, Header = "Отчет PDF", UseUnion = true, ColumnsRowsWidth = new List<(int, int)> { (0, 25), (0, 25), (0, 25), }, ColumnUnion = new List<(int StartIndex, int Count)> { (1, 2) }, Headers = new List<(int ColumnIndex, int RowIndex, string Header, string PropertyName)> { (0, 0, "Название", "Name"), (1, 0, "Описание", ""), (1, 1, "Форма", "Shape"), (2, 1, "Аннотация", "Annotation"), }, Data = list }); MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void CreateReportExcel(object sender, EventArgs e) { using var dialog = new SaveFileDialog { Filter = "xlsx|*.xlsx" }; if (dialog.ShowDialog() == DialogResult.OK) { try { var list = _bookStorage.GetFullList(); var shapes = _shapeStorage.GetFullList(); int[,] supportList = new int[4, shapes.Count]; int c = 0; for (int i = 0; i < shapes.Count; i++) { foreach (var elem in list) { if (shapes[i].Name.Equals(elem.Shape)) { c++; if (elem.Annotation.Length >= 0 && elem.Annotation.Length < 10) { supportList[0, i]++; } if (elem.Annotation.Length >= 10 && elem.Annotation.Length < 150) { supportList[1, i]++; } if (elem.Annotation.Length >= 150 && elem.Annotation.Length < 200) { supportList[2, i]++; } if (elem.Annotation.Length >= 200 && elem.Annotation.Length < 250) { supportList[3, i]++; } } } } string[] Names = { "50-150", "100-150", "150-200", "200-250" }; var list2D = new Dictionary>(); for (var i = 0; i < Names.Length; i++) { var curlist = new List(); for (int j = 0; j < shapes.Count; j++) { curlist.Add(supportList[i, j]); } list2D.Add(Names[i], curlist); } DiagramComponent diagram = new DiagramComponent(); diagram.CreateExcel(new CustomComponents.MyNonVisualComponents.LineChartConfig { ChartTitle = "diagramm", FilePath = dialog.FileName, Header = "Diagramm", Values = list2D }); MessageBox.Show(" " + c); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void отчёт3ToolStripMenuItem_Click(object sender, EventArgs e) { CreateReportExcel(sender, e); } private void FormMain_KeyDown(object sender, KeyEventArgs e) { if (e.Control) { switch (e.KeyCode) { case Keys.A: CreateToolStripMenuItem_Click(sender, e); break; case Keys.U: изменитьToolStripMenuItem_Click(sender, e); break; case Keys.D: удалитьToolStripMenuItem_Click(sender, e); break; case Keys.S: справочникToolStripMenuItem_Click(sender, e); break; case Keys.T: отчётToolStripMenuItem_Click(sender, e); break; case Keys.C: отчёт2ToolStripMenuItem_Click(sender, e); break; case Keys.M: отчёт3ToolStripMenuItem_Click(sender, e); break; } } } private void listBoxObjects1_KeyDown(object sender, KeyEventArgs e) { if (e.Control) { switch (e.KeyCode) { case Keys.A: CreateToolStripMenuItem_Click(sender, e); break; /*case Keys.U: EditProviderItem_Click(sender, e); break; case Keys.D: RemoveProviderItem_Click(sender, e); break; case Keys.S: GetSimpleDocumentItem_Click(sender, e); break; case Keys.T: GetTableDocumentItem_Click(sender, e); break; case Keys.C: GetDiagramDocumentItem_Click(sender, e); break; case Keys.M: OpenListToolStripMenuItem_Click(sender, e); break;*/ } } } private void menuStrip1_KeyDown(object sender, KeyEventArgs e) { if (e.Control) { switch (e.KeyCode) { case Keys.A: CreateToolStripMenuItem_Click(sender, e); break; /*case Keys.U: EditProviderItem_Click(sender, e); break; case Keys.D: RemoveProviderItem_Click(sender, e); break; case Keys.S: GetSimpleDocumentItem_Click(sender, e); break; case Keys.T: GetTableDocumentItem_Click(sender, e); break; case Keys.C: GetDiagramDocumentItem_Click(sender, e); break; case Keys.M: OpenListToolStripMenuItem_Click(sender, e); break;*/ } } } } }