using AbazovViewComponents.LogicalComponents; using AccountContracts.BindingModels; using AccountContracts.BusinessLogicsContracts; using AccountContracts.ViewModels; using AccountDatabaseImplement.Models; using ComponentsLibraryNet60.Models; using ControlsLibraryNet60.Core; using NevaevaLibrary.LogicalComponents; 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 AccountsView { public partial class FormMain : Form { private IAccountLogic _logic; public FormMain(IAccountLogic logic) { InitializeComponent(); _logic = logic; abazovTreeView.setHierarchy(new List<(string, bool)> { ("RoleName", false), ("ViewRating", false), ("Id", true), ("Login", true) }); } private void ролиToolStripMenuItem_Click(object sender, EventArgs e) { var service = Program.ServiceProvider?.GetService(typeof(FormRoles)); if (service is FormRoles form) { form.ShowDialog(); } } private void FormMain_Load(object sender, EventArgs e) { LoadData(); } private void LoadData() { abazovTreeView.clear(); var accounts = _logic.ReadList(null); if (accounts != null) { foreach (var account in accounts) { if (!account.Rating.HasValue) { account.ViewRating = 0; } else { account.ViewRating = account.Rating.Value; } } abazovTreeView.addItems(accounts); } } private void создатьToolStripMenuItem_Click(object sender, EventArgs e) { var service = Program.ServiceProvider?.GetService(typeof(FormAccount)); if (service is FormAccount form) { if (form.ShowDialog() == DialogResult.OK) { LoadData(); } } } private void редактироватьToolStripMenuItem_Click(object sender, EventArgs e) { var service = Program.ServiceProvider?.GetService(typeof(FormAccount)); if (service is FormAccount form) { var selected = abazovTreeView.getSelecetedNodeValue(); if (selected == null) return; form.Id = selected.Id; if (form.ShowDialog() == DialogResult.OK) { LoadData(); } } } private void удалитьToolStripMenuItem_Click(object sender, EventArgs e) { var selected = abazovTreeView.getSelecetedNodeValue(); if (selected == null) return; if (MessageBox.Show("Удалить запись?", "", MessageBoxButtons.YesNo) == DialogResult.Yes) { if (_logic.Delete(new AccountBindingModel { Id = selected.Id })) { LoadData(); } } } private void документToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new() { Filter = "Word Files|*.docx" }; if (saveFileDialog.ShowDialog() != DialogResult.OK) return; List paragraphs = new List(); foreach (var account in _logic.ReadList(null)) { if (account.Rating == null) { paragraphs.Add(account.Login + ": " + account.Warnings); } } string path = saveFileDialog.FileName; wordLongTextComponent.createWithLongText(new WordLongTextInfo(path, "Аккаунты без рейтинга", paragraphs.ToArray())); MessageBox.Show("Документ создан"); } private void документСДиаграммойToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog saveFileDialog = new() { Filter = "Excel Files|*.xlsx" }; if (saveFileDialog.ShowDialog() != DialogResult.OK) return; List paragraphs = new List(); string path = saveFileDialog.FileName; var data = _logic.ReadList(null).Where(x => x.Rating == null).GroupBy(x => x.RoleName).Select(x => new { RoleName = x.Key, RoleCount = x.Count(), }).ToList(); excelDiagramComponent.createWithDiagram(path, "Роли без рейтинга", "Роли без рейтинга", AbazovViewComponents.LogicalComponents.DiagramLegendEnum.BottomRight, data, "RoleName", "RoleCount"); MessageBox.Show("Документ создан"); } private void документСТаблицейToolStripMenuItem_Click(object sender, EventArgs e) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); SaveFileDialog saveFileDialog = new() { Filter = "PDF Files|*.pdf" }; if (saveFileDialog.ShowDialog() != DialogResult.OK) return; List paragraphs = new List(); string path = saveFileDialog.FileName; var accounts = _logic.ReadList(null); foreach (var account in accounts) { if (!account.Rating.HasValue) { account.DocRating = "нет"; } else { account.DocRating = account.Rating.Value.ToString(); } } ComponentDocumentWithTableHeaderDataConfig config = new ComponentsLibraryNet60.Models.ComponentDocumentWithTableHeaderDataConfig { Data = accounts, UseUnion = false, Header = "Аккаунты", ColumnsRowsDataCount = (4, 1), Headers = new List<(int ColumnIndex, int RowIndex, string Header, string PropertyName)> { (0, 0, "Id", "Id"), (1, 0, "Логин", "Login"), (2, 0, "Роль", "RoleName"), (3, 0, "Рейтинг", "DocRating") }, ColumnsRowsWidth = new List<(int Column, int Row)> { (10, 10), (10, 10), (10, 10), (10, 10) }, ColumnUnion = new List<(int StartIndex, int Count)>(), FilePath = path }; componentDocumentWithTableMultiHeaderPdf.CreateDoc(config); MessageBox.Show("Документ создан"); } } }