доделать ворд
This commit is contained in:
parent
242c5e4b58
commit
7b0038a08f
@ -18,6 +18,11 @@ using WinFormsLibraryVolkov.NonVisualComponents;
|
|||||||
using ComponentsLibraryNet60.Core;
|
using ComponentsLibraryNet60.Core;
|
||||||
using ComponentsLibraryNet60.DocumentWithTable;
|
using ComponentsLibraryNet60.DocumentWithTable;
|
||||||
using ComponentsLibraryNet60.Models;
|
using ComponentsLibraryNet60.Models;
|
||||||
|
using OxyPlot.Legends;
|
||||||
|
using FormLibrary.HelperClasses;
|
||||||
|
using FormLibrary;
|
||||||
|
using System.Diagnostics;
|
||||||
|
using DocumentFormat.OpenXml.Drawing.Charts;
|
||||||
|
|
||||||
namespace InternetShopOrdersApp
|
namespace InternetShopOrdersApp
|
||||||
{
|
{
|
||||||
@ -99,18 +104,6 @@ namespace InternetShopOrdersApp
|
|||||||
if (excelImagesComponent.createWithImages(new ExcelImageInfo(path, "Фотокарточки заказов", orderImages.ToArray()))) MessageBox.Show("Документ был создан");
|
if (excelImagesComponent.createWithImages(new ExcelImageInfo(path, "Фотокарточки заказов", orderImages.ToArray()))) MessageBox.Show("Документ был создан");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void документСТаблицейToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string path = AppDomain.CurrentDomain.BaseDirectory + "Отчет по всем заказам.docx";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void документСДиаграммойToolStripMenuItem_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
string path = AppDomain.CurrentDomain.BaseDirectory + "Гистограмма товаров.pdf";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void выбранныеТоварыToolStripMenuItem_Click(object sender, EventArgs e)
|
private void выбранныеТоварыToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var service = Program.ServiceProvider?.GetService(typeof(FormSelectedItems));
|
var service = Program.ServiceProvider?.GetService(typeof(FormSelectedItems));
|
||||||
@ -119,5 +112,95 @@ namespace InternetShopOrdersApp
|
|||||||
form.ShowDialog();
|
form.ShowDialog();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void документСТаблицейToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string path = AppDomain.CurrentDomain.BaseDirectory + "Отчет по всем товарам.docx";
|
||||||
|
|
||||||
|
// Получение списка заказов, который теперь должен возвращать список OrderViewModel
|
||||||
|
var orders = _logic.ReadList(null).Select(order => new OrderViewModel
|
||||||
|
{
|
||||||
|
Id = order.Id,
|
||||||
|
Fullname = order.Fullname,
|
||||||
|
Email = order.Email,
|
||||||
|
SelectedItemName = order.SelectedItemName,
|
||||||
|
OrderImage = order.OrderImage
|
||||||
|
}).ToList(); // Преобразование в список OrderViewModel
|
||||||
|
|
||||||
|
// Настройка заголовков
|
||||||
|
var headers = new List<(int ColumnIndex, int RowIndex, string Header, string PropertyName)>
|
||||||
|
{
|
||||||
|
(0, 0, "Идентификатор", nameof(OrderViewModel.Id)),
|
||||||
|
(1, 0, "Личные данные", null), // Adjusting to show a single header for the merged fields
|
||||||
|
(2, 0, "Выбранный товар", nameof(OrderViewModel.SelectedItemName))
|
||||||
|
};
|
||||||
|
|
||||||
|
// Задайте количество данных и заголовков
|
||||||
|
var dataCount = orders.Count; // Количество строк данных
|
||||||
|
var headerCount = headers.Count; // Количество заголовков
|
||||||
|
|
||||||
|
// Определение ширины колонок
|
||||||
|
var columnsRowsWidth = new List<(int Column, int Row)>
|
||||||
|
{
|
||||||
|
(0, 1), // Ширина для "Идентификатор"
|
||||||
|
(1, 1), // Ширина для "Личные данные" (объединение ФИО и Эл. почты)
|
||||||
|
(2, 1) // Ширина для "Выбранный товар"
|
||||||
|
};
|
||||||
|
|
||||||
|
// Определение объединения колонок
|
||||||
|
var columnUnion = new List<(int StartIndex, int Count)>
|
||||||
|
{
|
||||||
|
(1, 2) // Объединяем "ФИО" и "Эл. почта" в одну ячейку
|
||||||
|
};
|
||||||
|
|
||||||
|
// Создание документа
|
||||||
|
componentDocumentWithTableMultiHeaderWord.CreateDoc(new ComponentDocumentWithTableHeaderDataConfig<OrderViewModel>
|
||||||
|
{
|
||||||
|
Header = "Отчет по всем товарам",
|
||||||
|
Headers = headers,
|
||||||
|
ColumnsRowsDataCount = (headerCount, dataCount+1), // +1 для заголовка
|
||||||
|
ColumnsRowsWidth = columnsRowsWidth,
|
||||||
|
ColumnUnion = columnUnion,
|
||||||
|
UseUnion = true,
|
||||||
|
FilePath = path,
|
||||||
|
Data = orders // Передаем данные заказов в виде OrderViewModel
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void документСДиаграммойToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var histogramGenerator = new ComponentHistogramToPdf();
|
||||||
|
|
||||||
|
var orders = _logic.ReadList(null);
|
||||||
|
|
||||||
|
var itemCounts = new Dictionary<string, int>();
|
||||||
|
foreach (var order in orders)
|
||||||
|
{
|
||||||
|
if (!itemCounts.ContainsKey(order.SelectedItemName))
|
||||||
|
{
|
||||||
|
itemCounts[order.SelectedItemName] = 0;
|
||||||
|
}
|
||||||
|
itemCounts[order.SelectedItemName]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
var chartData = new List<ChartData>
|
||||||
|
{
|
||||||
|
new ChartData { SeriesName = "Заказы по товарам", Data = itemCounts.ToDictionary(kvp => kvp.Key, kvp => (double)kvp.Value) }
|
||||||
|
};
|
||||||
|
|
||||||
|
string filePath = AppDomain.CurrentDomain.BaseDirectory + "Какие товары сколько раз заказывали.pdf";
|
||||||
|
|
||||||
|
histogramGenerator.CreateHistogramPdf(filePath, "Какие товары сколько раз заказывали", "Диаграмма заказов", OxyPlot.Legends.LegendPosition.BottomCenter, chartData);
|
||||||
|
|
||||||
|
MessageBox.Show("PDF успешно сгенерирован!", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Ошибка: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -143,6 +143,7 @@
|
|||||||
Controls.Add(labelFIO);
|
Controls.Add(labelFIO);
|
||||||
Name = "FormOrder";
|
Name = "FormOrder";
|
||||||
Text = "Заказ";
|
Text = "Заказ";
|
||||||
|
Load += FormOrder_Load;
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
using InternetShopOrdersContracts.BindingModels;
|
using InternetShopOrdersContracts.BindingModels;
|
||||||
using InternetShopOrdersContracts.BusinessLogicContracts;
|
using InternetShopOrdersContracts.BusinessLogicContracts;
|
||||||
using InternetShopOrdersContracts.ViewModels;
|
using InternetShopOrdersContracts.ViewModels;
|
||||||
|
using InternetShopOrdersContracts.SearchModels;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
@ -10,6 +11,7 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace InternetShopOrdersApp
|
namespace InternetShopOrdersApp
|
||||||
{
|
{
|
||||||
@ -34,6 +36,24 @@ namespace InternetShopOrdersApp
|
|||||||
{
|
{
|
||||||
_selectedItems = _selectedItemLogic.ReadList(null);
|
_selectedItems = _selectedItemLogic.ReadList(null);
|
||||||
customSelectedCheckedListBox.PopulateList(_selectedItems.Select(x => x.Name).ToList());
|
customSelectedCheckedListBox.PopulateList(_selectedItems.Select(x => x.Name).ToList());
|
||||||
|
if (_id.HasValue)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var view = _logic.ReadElement(new OrderSearchModel { Id = _id.Value });
|
||||||
|
if (view != null)
|
||||||
|
{
|
||||||
|
textBoxFIO.Text = view.Fullname;
|
||||||
|
customSelectedCheckedListBox.SelectedElement = view.SelectedItemName;
|
||||||
|
controlInputRegexEmail.Value = view.Email;
|
||||||
|
orderImage = view.OrderImage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buttonSave_Click(object sender, EventArgs e)
|
private void buttonSave_Click(object sender, EventArgs e)
|
||||||
@ -50,6 +70,15 @@ namespace InternetShopOrdersApp
|
|||||||
{
|
{
|
||||||
MessageBox.Show("Выберите фото заказа", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
MessageBox.Show("Выберите фото заказа", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
}
|
}
|
||||||
|
if (controlInputRegexEmail.Value == null)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Введите электронную почту", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
if (!Regex.IsMatch(controlInputRegexEmail.Value, controlInputRegexEmail.Pattern))
|
||||||
|
{
|
||||||
|
MessageBox.Show("Некорректный формат ввода электронной почты", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var model = new OrderBindingModel
|
var model = new OrderBindingModel
|
||||||
|
Loading…
Reference in New Issue
Block a user