433 lines
9.9 KiB
C#
433 lines
9.9 KiB
C#
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<Book>().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<Book>().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<string[,]> totalList = new();
|
||
|
||
List<BookViewModel> 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<BookViewModel>? 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<BookViewModel>
|
||
{
|
||
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<string, List<int>>();
|
||
|
||
|
||
for (var i = 0; i < Names.Length; i++)
|
||
{
|
||
var curlist = new List<int>();
|
||
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;*/
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|