Дополнил

This commit is contained in:
maxnes3 2023-06-17 02:58:45 +04:00
parent 828790a0e7
commit cea667ff97
3 changed files with 530 additions and 426 deletions

View File

@ -13,104 +13,152 @@ namespace ComputersShopBusinessLogic.OfficePackage.Implements
{ {
public class SaveToWord : AbstractSaveToWord public class SaveToWord : AbstractSaveToWord
{ {
private WordprocessingDocument? _wordDocument; private WordprocessingDocument? _wordDocument;
private Body? _docBody; private Body? _docBody;
private static JustificationValues GetJustificationValues(WordJustificationType type)
{
return type switch
{
WordJustificationType.Both => JustificationValues.Both,
WordJustificationType.Center => JustificationValues.Center,
_ => JustificationValues.Left,
};
}
private static JustificationValues GetJustificationValues(WordJustificationType type) private static SectionProperties CreateSectionProperties()
{ {
return type switch var properties = new SectionProperties();
{ var pageSize = new PageSize
WordJustificationType.Both => JustificationValues.Both, {
WordJustificationType.Center => JustificationValues.Center, Orient = PageOrientationValues.Portrait
_ => JustificationValues.Left, };
}; properties.AppendChild(pageSize);
} return properties;
}
private static SectionProperties CreateSectionProperties() private static ParagraphProperties? CreateParagraphProperties(WordTextProperties? paragraphProperties)
{ {
var properties = new SectionProperties(); if (paragraphProperties == null)
var pageSize = new PageSize {
{ return null;
Orient = PageOrientationValues.Portrait }
}; var properties = new ParagraphProperties();
properties.AppendChild(pageSize); properties.AppendChild(new Justification()
return properties; {
} Val = GetJustificationValues(paragraphProperties.JustificationType)
});
properties.AppendChild(new SpacingBetweenLines
{
LineRule = LineSpacingRuleValues.Auto
});
properties.AppendChild(new Indentation());
var paragraphMarkRunProperties = new ParagraphMarkRunProperties();
if (!string.IsNullOrEmpty(paragraphProperties.Size))
{
paragraphMarkRunProperties.AppendChild(new FontSize
{
Val = paragraphProperties.Size
});
}
properties.AppendChild(paragraphMarkRunProperties);
return properties;
}
protected override void CreateTable(WordParagraph paragraph, int columnCount)
{
if (_docBody == null || paragraph == null)
{
return;
}
Table table = new();
TableProperties properties = new();
properties.AppendChild(new TableLayout { Type = TableLayoutValues.Fixed });
properties.AppendChild(new TableBorders
(
new TopBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 4 },
new LeftBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 4 },
new RightBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 4 },
new BottomBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 4 },
new InsideHorizontalBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 4 },
new InsideVerticalBorder() { Val = new EnumValue<BorderValues>(BorderValues.Single), Size = 4 }
));
properties.AppendChild(new TableWidth { Type = TableWidthUnitValues.Auto });
table.AppendChild(properties);
TableGrid tableGrid = new();
for (int j = 0; j < columnCount; ++j)
{
tableGrid.AppendChild(new GridColumn() { Width = "3400" });
}
table.AppendChild(tableGrid);
for (int i = 0; i < paragraph.Texts.Count; ++i)
{
TableRow tableRow = new();
for (int j = 0; j < columnCount; ++j)
{
var tableParagraph = new Paragraph();
tableParagraph.AppendChild(CreateParagraphProperties(paragraph.TextProperties));
var tableRun = new Run();
var runProperties = new RunProperties();
runProperties.AppendChild(new FontSize { Val = paragraph.Texts[i + j].Item2.Size });
if (paragraph.Texts[i + j].Item2.Bold)
{
runProperties.AppendChild(new Bold());
}
tableRun.AppendChild(runProperties);
tableRun.AppendChild(new Text { Text = paragraph.Texts[i + j].Item1, Space = SpaceProcessingModeValues.Preserve });
tableParagraph.AppendChild(tableRun);
TableCell cell = new();
cell.AppendChild(tableParagraph);
tableRow.AppendChild(cell);
}
i += columnCount - 1;
table.AppendChild(tableRow);
}
_docBody.AppendChild(table);
}
protected override void CreateWord(WordInfo info)
{
_wordDocument = WordprocessingDocument.Create(info.FileName, WordprocessingDocumentType.Document);
MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart();
mainPart.Document = new Document();
_docBody = mainPart.Document.AppendChild(new Body());
}
protected override void CreateParagraph(WordParagraph paragraph)
{
if (_docBody == null || paragraph == null)
{
return;
}
var docParagraph = new Paragraph();
private static ParagraphProperties? CreateParagraphProperties(WordTextProperties? paragraphProperties) docParagraph.AppendChild(CreateParagraphProperties(paragraph.TextProperties));
{ foreach (var run in paragraph.Texts)
if (paragraphProperties == null) {
{ var docRun = new Run();
return null; var properties = new RunProperties();
} properties.AppendChild(new FontSize { Val = run.Item2.Size });
var properties = new ParagraphProperties(); if (run.Item2.Bold)
properties.AppendChild(new Justification() {
{ properties.AppendChild(new Bold());
Val = GetJustificationValues(paragraphProperties.JustificationType) }
}); docRun.AppendChild(properties);
properties.AppendChild(new SpacingBetweenLines docRun.AppendChild(new Text
{ {
LineRule = LineSpacingRuleValues.Auto Text = run.Item1,
}); Space = SpaceProcessingModeValues.Preserve
properties.AppendChild(new Indentation()); });
var paragraphMarkRunProperties = new ParagraphMarkRunProperties(); docParagraph.AppendChild(docRun);
if (!string.IsNullOrEmpty(paragraphProperties.Size)) }
{ _docBody.AppendChild(docParagraph);
paragraphMarkRunProperties.AppendChild(new FontSize }
{ protected override void SaveWord(WordInfo info)
Val = {
paragraphProperties.Size if (_docBody == null || _wordDocument == null)
}); {
} return;
properties.AppendChild(paragraphMarkRunProperties); }
return properties; _docBody.AppendChild(CreateSectionProperties());
} _wordDocument.MainDocumentPart!.Document.Save();
_wordDocument.Close();
protected override void CreateWord(WordInfo info) }
{ }
_wordDocument = WordprocessingDocument.Create(info.FileName, WordprocessingDocumentType.Document);
MainDocumentPart mainPart = _wordDocument.AddMainDocumentPart();
mainPart.Document = new Document();
_docBody = mainPart.Document.AppendChild(new Body());
}
protected override void CreateParagraph(WordParagraph paragraph)
{
if (_docBody == null || paragraph == null)
{
return;
}
var docParagraph = new Paragraph();
docParagraph.AppendChild(CreateParagraphProperties(paragraph.TextProperties));
foreach (var run in paragraph.Texts)
{
var docRun = new Run();
var properties = new RunProperties();
properties.AppendChild(new FontSize { Val = run.Item2.Size });
if (run.Item2.Bold)
{
properties.AppendChild(new Bold());
}
docRun.AppendChild(properties);
docRun.AppendChild(new Text
{
Text = run.Item1,
Space = SpaceProcessingModeValues.Preserve
});
docParagraph.AppendChild(docRun);
}
_docBody.AppendChild(docParagraph);
}
protected override void SaveWord(WordInfo info)
{
if (_docBody == null || _wordDocument == null)
{
return;
}
_docBody.AppendChild(CreateSectionProperties());
_wordDocument.MainDocumentPart!.Document.Save();
_wordDocument.Close();
}
}
} }

View File

@ -22,185 +22,212 @@
#region Windows Form Designer generated code #region Windows Form Designer generated code
/// <summary> /// <summary>
/// Required method for Designer support - do not modify /// Required method for Designer support - do not modify
/// the contents of this method with the code editor. /// the contents of this method with the code editor.
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
menuStrip = new MenuStrip(); menuStrip = new MenuStrip();
справочникToolStripMenuItem = new ToolStripMenuItem(); справочникToolStripMenuItem = new ToolStripMenuItem();
computerToolStripMenuItem = new ToolStripMenuItem(); computerToolStripMenuItem = new ToolStripMenuItem();
componentsToolStripMenuItem = new ToolStripMenuItem(); componentsToolStripMenuItem = new ToolStripMenuItem();
отчётыToolStripMenuItem = new ToolStripMenuItem(); shopToolStripMenuItem = new ToolStripMenuItem();
списокКомпонентовToolStripMenuItem = new ToolStripMenuItem(); отчётыToolStripMenuItem = new ToolStripMenuItem();
компонентыПоКомпьютерамToolStripMenuItem = new ToolStripMenuItem(); списокКомпонентовToolStripMenuItem = new ToolStripMenuItem();
списокЗаказовToolStripMenuItem = new ToolStripMenuItem(); компонентыПоКомпьютерамToolStripMenuItem = new ToolStripMenuItem();
dataGridView = new DataGridView(); списокЗаказовToolStripMenuItem = new ToolStripMenuItem();
buttonCreateOrder = new Button(); пополнениеМагазинаToolStripMenuItem = new ToolStripMenuItem();
buttonTakeOrderInWork = new Button(); продатьКомпьютерToolStripMenuItem = new ToolStripMenuItem();
buttonOrderReady = new Button(); dataGridView = new DataGridView();
buttonIssuedOrder = new Button(); buttonCreateOrder = new Button();
buttonRef = new Button(); buttonTakeOrderInWork = new Button();
menuStrip.SuspendLayout(); buttonOrderReady = new Button();
((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); buttonIssuedOrder = new Button();
SuspendLayout(); buttonRef = new Button();
// menuStrip.SuspendLayout();
// menuStrip ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit();
// SuspendLayout();
menuStrip.Items.AddRange(new ToolStripItem[] { справочникToolStripMenuItem, отчётыToolStripMenuItem }); //
menuStrip.Location = new Point(0, 0); // menuStrip
menuStrip.Name = "menuStrip"; //
menuStrip.Size = new Size(1047, 24); menuStrip.Items.AddRange(new ToolStripItem[] { справочникToolStripMenuItem, отчётыToolStripMenuItem, пополнениеМагазинаToolStripMenuItem, продатьКомпьютерToolStripMenuItem });
menuStrip.TabIndex = 0; menuStrip.Location = new Point(0, 0);
menuStrip.Text = "menuStrip1"; menuStrip.Name = "menuStrip";
// menuStrip.Size = new Size(1047, 24);
// справочникToolStripMenuItem menuStrip.TabIndex = 0;
// menuStrip.Text = "menuStrip1";
справочникToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { computerToolStripMenuItem, componentsToolStripMenuItem }); //
справочникToolStripMenuItem.Name = "справочникToolStripMenuItem"; // справочникToolStripMenuItem
справочникToolStripMenuItem.Size = new Size(92, 20); //
справочникToolStripMenuItem.Text = "справочники"; справочникToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { computerToolStripMenuItem, componentsToolStripMenuItem, shopToolStripMenuItem });
// справочникToolStripMenuItem.Name = "справочникToolStripMenuItem";
// computerToolStripMenuItem справочникToolStripMenuItem.Size = new Size(92, 20);
// справочникToolStripMenuItem.Text = "справочники";
computerToolStripMenuItem.Name = "computerToolStripMenuItem"; //
computerToolStripMenuItem.Size = new Size(146, 22); // computerToolStripMenuItem
computerToolStripMenuItem.Text = "компьютеры"; //
computerToolStripMenuItem.Click += ComputersToolStripMenuItem_Click; computerToolStripMenuItem.Name = "computerToolStripMenuItem";
// computerToolStripMenuItem.Size = new Size(180, 22);
// componentsToolStripMenuItem computerToolStripMenuItem.Text = "компьютеры";
// computerToolStripMenuItem.Click += ComputersToolStripMenuItem_Click;
componentsToolStripMenuItem.Name = "componentsToolStripMenuItem"; //
componentsToolStripMenuItem.Size = new Size(146, 22); // componentsToolStripMenuItem
componentsToolStripMenuItem.Text = "компоненты"; //
componentsToolStripMenuItem.Click += ComponentsToolStripMenuItem_Click; componentsToolStripMenuItem.Name = "componentsToolStripMenuItem";
// componentsToolStripMenuItem.Size = new Size(180, 22);
// отчётыToolStripMenuItem componentsToolStripMenuItem.Text = "компоненты";
// componentsToolStripMenuItem.Click += ComponentsToolStripMenuItem_Click;
отчётыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { списокКомпонентовToolStripMenuItem, компонентыПоКомпьютерамToolStripMenuItem, списокЗаказовToolStripMenuItem }); //
отчётыToolStripMenuItem.Name = "отчётыToolStripMenuItem"; // shopToolStripMenuItem
отчётыToolStripMenuItem.Size = new Size(58, 20); //
отчётыToolStripMenuItem.Text = "отчёты"; shopToolStripMenuItem.Name = "shopToolStripMenuItem";
// shopToolStripMenuItem.Size = new Size(180, 22);
// списокКомпонентовToolStripMenuItem shopToolStripMenuItem.Text = "магазины";
// shopToolStripMenuItem.Click += ShopToolStripMenuItem_Click;
списокКомпонентовToolStripMenuItem.Name = "списокКомпонентовToolStripMenuItem"; //
списокКомпонентовToolStripMenuItem.Size = new Size(242, 22); // отчётыToolStripMenuItem
списокКомпонентовToolStripMenuItem.Text = "список компьютеров"; //
списокКомпонентовToolStripMenuItem.Click += ComponentsDocxToolStripMenuItem_Click; отчётыToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { списокКомпонентовToolStripMenuItem, компонентыПоКомпьютерамToolStripMenuItem, списокЗаказовToolStripMenuItem });
// отчётыToolStripMenuItem.Name = "отчётыToolStripMenuItem";
// компонентыПоКомпьютерамToolStripMenuItem отчётыToolStripMenuItem.Size = new Size(58, 20);
// отчётыToolStripMenuItem.Text = "отчёты";
компонентыПоКомпьютерамToolStripMenuItem.Name = омпонентыПоКомпьютерамToolStripMenuItem"; //
компонентыПоКомпьютерамToolStripMenuItem.Size = new Size(242, 22); // списокКомпонентовToolStripMenuItem
компонентыПоКомпьютерамToolStripMenuItem.Text = "компоненты по компьютерам"; //
компонентыПоКомпьютерамToolStripMenuItem.Click += ComputerComponentsToolStripMenuItem_Click; списокКомпонентовToolStripMenuItem.Name = "списокКомпонентовToolStripMenuItem";
// списокКомпонентовToolStripMenuItem.Size = new Size(242, 22);
// списокЗаказовToolStripMenuItem списокКомпонентовToolStripMenuItem.Text = "список компьютеров";
// списокКомпонентовToolStripMenuItem.Click += ComponentsDocxToolStripMenuItem_Click;
списокЗаказовToolStripMenuItem.Name = "списокЗаказовToolStripMenuItem"; //
списокЗаказовToolStripMenuItem.Size = new Size(242, 22); // компонентыПоКомпьютерамToolStripMenuItem
списокЗаказовToolStripMenuItem.Text = "список заказов"; //
списокЗаказовToolStripMenuItem.Click += OrdersToolStripMenuItem_Click; компонентыПоКомпьютерамToolStripMenuItem.Name = омпонентыПоКомпьютерамToolStripMenuItem";
// компонентыПоКомпьютерамToolStripMenuItem.Size = new Size(242, 22);
// dataGridView компонентыПоКомпьютерамToolStripMenuItem.Text = "компоненты по компьютерам";
// компонентыПоКомпьютерамToolStripMenuItem.Click += ComputerComponentsToolStripMenuItem_Click;
dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; //
dataGridView.Location = new Point(12, 27); // списокЗаказовToolStripMenuItem
dataGridView.Name = "dataGridView"; //
dataGridView.RowTemplate.Height = 25; списокЗаказовToolStripMenuItem.Name = "списокЗаказовToolStripMenuItem";
dataGridView.Size = new Size(817, 411); списокЗаказовToolStripMenuItem.Size = new Size(242, 22);
dataGridView.TabIndex = 1; списокЗаказовToolStripMenuItem.Text = "список заказов";
// списокЗаказовToolStripMenuItem.Click += OrdersToolStripMenuItem_Click;
// buttonCreateOrder //
// // пополнениеМагазинаToolStripMenuItem
buttonCreateOrder.Location = new Point(835, 50); //
buttonCreateOrder.Name = "buttonCreateOrder"; пополнениеМагазинаToolStripMenuItem.Name = "пополнениеМагазинаToolStripMenuItem";
buttonCreateOrder.Size = new Size(200, 23); пополнениеМагазинаToolStripMenuItem.Size = new Size(141, 20);
buttonCreateOrder.TabIndex = 2; пополнениеМагазинаToolStripMenuItem.Text = "пополнение магазина";
buttonCreateOrder.Text = "Создать заказ"; пополнениеМагазинаToolStripMenuItem.Click += shopReplenishmentToolStripMenuItem_Click;
buttonCreateOrder.UseVisualStyleBackColor = true; //
buttonCreateOrder.Click += ButtonCreateOrder_Click; // продатьКомпьютерToolStripMenuItem
// //
// buttonTakeOrderInWork продатьКомпьютерToolStripMenuItem.Name = "продатьКомпьютерToolStripMenuItem";
// продатьКомпьютерToolStripMenuItem.Size = new Size(129, 20);
buttonTakeOrderInWork.Location = new Point(835, 101); продатьКомпьютерToolStripMenuItem.Text = "продать компьютер";
buttonTakeOrderInWork.Name = "buttonTakeOrderInWork"; продатьКомпьютерToolStripMenuItem.Click += ButtonSellComputer_Click;
buttonTakeOrderInWork.Size = new Size(200, 23); //
buttonTakeOrderInWork.TabIndex = 3; // dataGridView
buttonTakeOrderInWork.Text = "Отдать на выполнение"; //
buttonTakeOrderInWork.UseVisualStyleBackColor = true; dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
buttonTakeOrderInWork.Click += ButtonTakeOrderInWork_Click; dataGridView.Location = new Point(12, 27);
// dataGridView.Name = "dataGridView";
// buttonOrderReady dataGridView.RowTemplate.Height = 25;
// dataGridView.Size = new Size(817, 411);
buttonOrderReady.Location = new Point(835, 156); dataGridView.TabIndex = 1;
buttonOrderReady.Name = "buttonOrderReady"; //
buttonOrderReady.Size = new Size(200, 23); // buttonCreateOrder
buttonOrderReady.TabIndex = 4; //
buttonOrderReady.Text = "Заказ готов"; buttonCreateOrder.Location = new Point(835, 50);
buttonOrderReady.UseVisualStyleBackColor = true; buttonCreateOrder.Name = "buttonCreateOrder";
buttonOrderReady.Click += ButtonOrderReady_Click; buttonCreateOrder.Size = new Size(200, 23);
// buttonCreateOrder.TabIndex = 2;
// buttonIssuedOrder buttonCreateOrder.Text = "Создать заказ";
// buttonCreateOrder.UseVisualStyleBackColor = true;
buttonIssuedOrder.Location = new Point(835, 212); buttonCreateOrder.Click += ButtonCreateOrder_Click;
buttonIssuedOrder.Name = "buttonIssuedOrder"; //
buttonIssuedOrder.Size = new Size(200, 23); // buttonTakeOrderInWork
buttonIssuedOrder.TabIndex = 5; //
buttonIssuedOrder.Text = "Заказ выдан"; buttonTakeOrderInWork.Location = new Point(835, 101);
buttonIssuedOrder.UseVisualStyleBackColor = true; buttonTakeOrderInWork.Name = "buttonTakeOrderInWork";
buttonIssuedOrder.Click += ButtonIssuedOrder_Click; buttonTakeOrderInWork.Size = new Size(200, 23);
// buttonTakeOrderInWork.TabIndex = 3;
// buttonRef buttonTakeOrderInWork.Text = "Отдать на выполнение";
// buttonTakeOrderInWork.UseVisualStyleBackColor = true;
buttonRef.Location = new Point(835, 269); buttonTakeOrderInWork.Click += ButtonTakeOrderInWork_Click;
buttonRef.Name = "buttonRef"; //
buttonRef.Size = new Size(200, 23); // buttonOrderReady
buttonRef.TabIndex = 6; //
buttonRef.Text = "Обновить список"; buttonOrderReady.Location = new Point(835, 156);
buttonRef.UseVisualStyleBackColor = true; buttonOrderReady.Name = "buttonOrderReady";
buttonRef.Click += ButtonRef_Click; buttonOrderReady.Size = new Size(200, 23);
// buttonOrderReady.TabIndex = 4;
// FormMain buttonOrderReady.Text = "Заказ готов";
// buttonOrderReady.UseVisualStyleBackColor = true;
AutoScaleDimensions = new SizeF(7F, 15F); buttonOrderReady.Click += ButtonOrderReady_Click;
AutoScaleMode = AutoScaleMode.Font; //
ClientSize = new Size(1047, 450); // buttonIssuedOrder
Controls.Add(buttonRef); //
Controls.Add(buttonIssuedOrder); buttonIssuedOrder.Location = new Point(835, 212);
Controls.Add(buttonOrderReady); buttonIssuedOrder.Name = "buttonIssuedOrder";
Controls.Add(buttonTakeOrderInWork); buttonIssuedOrder.Size = new Size(200, 23);
Controls.Add(buttonCreateOrder); buttonIssuedOrder.TabIndex = 5;
Controls.Add(dataGridView); buttonIssuedOrder.Text = "Заказ выдан";
Controls.Add(menuStrip); buttonIssuedOrder.UseVisualStyleBackColor = true;
MainMenuStrip = menuStrip; buttonIssuedOrder.Click += ButtonIssuedOrder_Click;
Name = "FormMain"; //
Text = "Магазин электроники"; // buttonRef
Load += FormMain_Load; //
menuStrip.ResumeLayout(false); buttonRef.Location = new Point(835, 269);
menuStrip.PerformLayout(); buttonRef.Name = "buttonRef";
((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); buttonRef.Size = new Size(200, 23);
ResumeLayout(false); buttonRef.TabIndex = 6;
PerformLayout(); buttonRef.Text = "Обновить список";
} buttonRef.UseVisualStyleBackColor = true;
buttonRef.Click += ButtonRef_Click;
//
// FormMain
//
AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(1047, 450);
Controls.Add(buttonRef);
Controls.Add(buttonIssuedOrder);
Controls.Add(buttonOrderReady);
Controls.Add(buttonTakeOrderInWork);
Controls.Add(buttonCreateOrder);
Controls.Add(dataGridView);
Controls.Add(menuStrip);
MainMenuStrip = menuStrip;
Name = "FormMain";
Text = "Магазин электроники";
Load += FormMain_Load;
menuStrip.ResumeLayout(false);
menuStrip.PerformLayout();
((System.ComponentModel.ISupportInitialize)dataGridView).EndInit();
ResumeLayout(false);
PerformLayout();
}
#endregion #endregion
private MenuStrip menuStrip; private MenuStrip menuStrip;
private ToolStripMenuItem справочникToolStripMenuItem; private ToolStripMenuItem справочникToolStripMenuItem;
private DataGridView dataGridView; private DataGridView dataGridView;
private Button buttonCreateOrder; private Button buttonCreateOrder;
private Button buttonTakeOrderInWork; private Button buttonTakeOrderInWork;
private Button buttonOrderReady; private Button buttonOrderReady;
private Button buttonIssuedOrder; private Button buttonIssuedOrder;
private Button buttonRef; private Button buttonRef;
private ToolStripMenuItem computerToolStripMenuItem; private ToolStripMenuItem computerToolStripMenuItem;
private ToolStripMenuItem componentsToolStripMenuItem; private ToolStripMenuItem componentsToolStripMenuItem;
private ToolStripMenuItem отчётыToolStripMenuItem; private ToolStripMenuItem отчётыToolStripMenuItem;
private ToolStripMenuItem списокКомпонентовToolStripMenuItem; private ToolStripMenuItem списокКомпонентовToolStripMenuItem;
private ToolStripMenuItem компонентыПоКомпьютерамToolStripMenuItem; private ToolStripMenuItem компонентыПоКомпьютерамToolStripMenuItem;
private ToolStripMenuItem списокЗаказовToolStripMenuItem; private ToolStripMenuItem списокЗаказовToolStripMenuItem;
private ToolStripMenuItem shopToolStripMenuItem;
private ToolStripMenuItem пополнениеМагазинаToolStripMenuItem;
private ToolStripMenuItem продатьКомпьютерToolStripMenuItem;
} }
} }

View File

@ -15,163 +15,163 @@ using System.Windows.Forms;
namespace ComputersShopView namespace ComputersShopView
{ {
public partial class FormMain : Form public partial class FormMain : Form
{ {
private readonly ILogger _logger; private readonly ILogger _logger;
private readonly IOrderLogic _orderLogic; private readonly IOrderLogic _orderLogic;
private readonly IReportLogic _reportLogic; private readonly IReportLogic _reportLogic;
public FormMain(ILogger<FormMain> logger, IOrderLogic orderLogic, IReportLogic reportlogic) public FormMain(ILogger<FormMain> logger, IOrderLogic orderLogic, IReportLogic reportlogic)
{ {
InitializeComponent(); InitializeComponent();
_logger = logger; _logger = logger;
_orderLogic = orderLogic; _orderLogic = orderLogic;
_reportLogic = reportlogic; _reportLogic = reportlogic;
} }
private void FormMain_Load(object sender, EventArgs e) private void FormMain_Load(object sender, EventArgs e)
{ {
LoadData(); LoadData();
} }
private void LoadData() private void LoadData()
{ {
_logger.LogInformation("Загрузка заказов"); _logger.LogInformation("Загрузка заказов");
try try
{ {
var list = _orderLogic.ReadList(null); var list = _orderLogic.ReadList(null);
if (list != null) if (list != null)
{ {
dataGridView.DataSource = list; dataGridView.DataSource = list;
dataGridView.Columns["ComputerId"].Visible = false; dataGridView.Columns["ComputerId"].Visible = false;
} }
_logger.LogInformation("Загрузка заказов"); _logger.LogInformation("Загрузка заказов");
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "Ошибка загрузки заказов"); _logger.LogError(ex, "Ошибка загрузки заказов");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
private void ComponentsToolStripMenuItem_Click(object sender, EventArgs e) private void ComponentsToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var service = Program.ServiceProvider?.GetService(typeof(FormComponents)); var service = Program.ServiceProvider?.GetService(typeof(FormComponents));
if (service is FormComponents form) if (service is FormComponents form)
{ {
form.ShowDialog(); form.ShowDialog();
} }
} }
private void ComputersToolStripMenuItem_Click(object sender, EventArgs e) private void ComputersToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var service = Program.ServiceProvider?.GetService(typeof(FormComputers)); var service = Program.ServiceProvider?.GetService(typeof(FormComputers));
if (service is FormComputers form) if (service is FormComputers form)
{ {
form.ShowDialog(); form.ShowDialog();
} }
} }
private void ButtonCreateOrder_Click(object sender, EventArgs e) private void ButtonCreateOrder_Click(object sender, EventArgs e)
{ {
var service = Program.ServiceProvider?.GetService(typeof(FormCreateOrder)); var service = Program.ServiceProvider?.GetService(typeof(FormCreateOrder));
if (service is FormCreateOrder form) if (service is FormCreateOrder form)
{ {
form.ShowDialog(); form.ShowDialog();
LoadData(); LoadData();
} }
} }
private void ButtonTakeOrderInWork_Click(object sender, EventArgs e) private void ButtonTakeOrderInWork_Click(object sender, EventArgs e)
{ {
if (dataGridView.SelectedRows.Count == 1) if (dataGridView.SelectedRows.Count == 1)
{ {
int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
_logger.LogInformation("Заказ №{id}. Меняется статус на 'В работе'", id); _logger.LogInformation("Заказ №{id}. Меняется статус на 'В работе'", id);
try try
{ {
var operationResult = _orderLogic.TakeOrderInWork(new OrderBindingModel var operationResult = _orderLogic.TakeOrderInWork(new OrderBindingModel
{ {
Id = id, Id = id,
ComputerId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["ComputerId"].Value), ComputerId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["ComputerId"].Value),
Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()), Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()),
Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value), Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value),
Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()), Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()),
DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString()) DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString())
}); });
if (!operationResult) if (!operationResult)
{ {
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
} }
LoadData(); LoadData();
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "Ошибка передачи заказа в работу"); _logger.LogError(ex, "Ошибка передачи заказа в работу");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
} }
private void ButtonOrderReady_Click(object sender, EventArgs e) private void ButtonOrderReady_Click(object sender, EventArgs e)
{ {
if (dataGridView.SelectedRows.Count == 1) if (dataGridView.SelectedRows.Count == 1)
{ {
int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
_logger.LogInformation("Заказ №{id}. Меняется статус на 'Готов'", id); _logger.LogInformation("Заказ №{id}. Меняется статус на 'Готов'", id);
try try
{ {
var operationResult = _orderLogic.FinishOrder(new OrderBindingModel var operationResult = _orderLogic.FinishOrder(new OrderBindingModel
{ {
Id = id, Id = id,
ComputerId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["ComputerId"].Value), ComputerId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["ComputerId"].Value),
Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()), Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()),
Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value), Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value),
Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()), Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()),
DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString()) DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString())
}); });
if (!operationResult) if (!operationResult)
{ {
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
} }
LoadData(); LoadData();
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "Ошибка отметки о готовности заказа"); _logger.LogError(ex, "Ошибка отметки о готовности заказа");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
} }
private void ButtonIssuedOrder_Click(object sender, EventArgs e) private void ButtonIssuedOrder_Click(object sender, EventArgs e)
{ {
if (dataGridView.SelectedRows.Count == 1) if (dataGridView.SelectedRows.Count == 1)
{ {
int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value); int id = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Id"].Value);
_logger.LogInformation("Заказ №{id}. Меняется статус на 'Выдан'", id); _logger.LogInformation("Заказ №{id}. Меняется статус на 'Выдан'", id);
try try
{ {
var operationResult = _orderLogic.DeliveryOrder(new OrderBindingModel var operationResult = _orderLogic.DeliveryOrder(new OrderBindingModel
{ {
Id = id, Id = id,
ComputerId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["ComputerId"].Value), ComputerId = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["ComputerId"].Value),
Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()), Status = Enum.Parse<OrderStatus>(dataGridView.SelectedRows[0].Cells["Status"].Value.ToString()),
Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value), Count = Convert.ToInt32(dataGridView.SelectedRows[0].Cells["Count"].Value),
Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()), Sum = double.Parse(dataGridView.SelectedRows[0].Cells["Sum"].Value.ToString()),
DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString()) DateCreate = DateTime.Parse(dataGridView.SelectedRows[0].Cells["DateCreate"].Value.ToString())
}); });
if (!operationResult) if (!operationResult)
{ {
throw new Exception("Ошибка при сохранении. Дополнительная информация в логах."); throw new Exception("Ошибка при сохранении. Дополнительная информация в логах.");
} }
_logger.LogInformation("Заказ №{id} выдан", id); _logger.LogInformation("Заказ №{id} выдан", id);
LoadData(); LoadData();
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogError(ex, "Ошибка отметки о выдачи заказа"); _logger.LogError(ex, "Ошибка отметки о выдачи заказа");
MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
} }
} }
} }
private void ButtonRef_Click(object sender, EventArgs e) private void ButtonRef_Click(object sender, EventArgs e)
{ {
LoadData(); LoadData();
} }
private void ComponentsDocxToolStripMenuItem_Click(object sender, EventArgs e) private void ComponentsDocxToolStripMenuItem_Click(object sender, EventArgs e)
{ {
@ -200,5 +200,34 @@ namespace ComputersShopView
form.ShowDialog(); form.ShowDialog();
} }
} }
private void ShopToolStripMenuItem_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormShops));
if (service is FormShops form)
{
form.ShowDialog();
}
}
private void shopReplenishmentToolStripMenuItem_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormShopReplenishment));
if (service is FormShopReplenishment form)
{
form.ShowDialog();
}
}
private void ButtonSellComputer_Click(object sender, EventArgs e)
{
var service = Program.ServiceProvider?.GetService(typeof(FormSellComputers));
if (service is FormSellComputers form)
{
form.ShowDialog();
LoadData();
}
}
} }
} }