diff --git a/TravelCompany/TravelCompany/FormMain.Designer.cs b/TravelCompany/TravelCompany/FormMain.Designer.cs index 631a5ac..30234c8 100644 --- a/TravelCompany/TravelCompany/FormMain.Designer.cs +++ b/TravelCompany/TravelCompany/FormMain.Designer.cs @@ -34,6 +34,10 @@ toolStripDropDownButton1 = new ToolStripDropDownButton(); компонентыToolStripMenuItem = new ToolStripMenuItem(); туристическиеПутевкиToolStripMenuItem = new ToolStripMenuItem(); + toolStripDropDownButton2 = new ToolStripDropDownButton(); + toolStripMenuItem1 = new ToolStripMenuItem(); + toolStripMenuItem2 = new ToolStripMenuItem(); + списокЗаказовToolStripMenuItem = new ToolStripMenuItem(); buttonCreateeOrder = new Button(); buttonTakeOrderInWork = new Button(); buttonOrderReady = new Button(); @@ -47,22 +51,23 @@ // dataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells; dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; - dataGridView.Location = new Point(1, 41); + dataGridView.Location = new Point(1, 31); + dataGridView.Margin = new Padding(3, 2, 3, 2); dataGridView.Name = "dataGridView"; dataGridView.ReadOnly = true; dataGridView.RowHeadersWidth = 51; dataGridView.RowTemplate.Height = 29; dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridView.Size = new Size(937, 569); + dataGridView.Size = new Size(820, 427); dataGridView.TabIndex = 0; // // toolStrip1 // toolStrip1.ImageScalingSize = new Size(20, 20); - toolStrip1.Items.AddRange(new ToolStripItem[] { toolStripDropDownButton1 }); + toolStrip1.Items.AddRange(new ToolStripItem[] { toolStripDropDownButton1, toolStripDropDownButton2 }); toolStrip1.Location = new Point(0, 0); toolStrip1.Name = "toolStrip1"; - toolStrip1.Size = new Size(1197, 27); + toolStrip1.Size = new Size(1047, 25); toolStrip1.TabIndex = 1; toolStrip1.Text = "toolStrip1"; // @@ -73,28 +78,60 @@ toolStripDropDownButton1.Image = (Image)resources.GetObject("toolStripDropDownButton1.Image"); toolStripDropDownButton1.ImageTransparentColor = Color.Magenta; toolStripDropDownButton1.Name = "toolStripDropDownButton1"; - toolStripDropDownButton1.Size = new Size(108, 24); + toolStripDropDownButton1.Size = new Size(88, 22); toolStripDropDownButton1.Text = "Справочник"; // // компонентыToolStripMenuItem // компонентыToolStripMenuItem.Name = "компонентыToolStripMenuItem"; - компонентыToolStripMenuItem.Size = new Size(252, 26); + компонентыToolStripMenuItem.Size = new Size(202, 22); компонентыToolStripMenuItem.Text = "Компоненты"; компонентыToolStripMenuItem.Click += компонентыToolStripMenuItem_Click; // // туристическиеПутевкиToolStripMenuItem // туристическиеПутевкиToolStripMenuItem.Name = "туристическиеПутевкиToolStripMenuItem"; - туристическиеПутевкиToolStripMenuItem.Size = new Size(252, 26); + туристическиеПутевкиToolStripMenuItem.Size = new Size(202, 22); туристическиеПутевкиToolStripMenuItem.Text = "Туристические путевки"; туристическиеПутевкиToolStripMenuItem.Click += путевкиToolStripMenuItem_Click; // + // toolStripDropDownButton2 + // + toolStripDropDownButton2.DisplayStyle = ToolStripItemDisplayStyle.Text; + toolStripDropDownButton2.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem1, toolStripMenuItem2, списокЗаказовToolStripMenuItem }); + toolStripDropDownButton2.Image = (Image)resources.GetObject("toolStripDropDownButton2.Image"); + toolStripDropDownButton2.ImageTransparentColor = Color.Magenta; + toolStripDropDownButton2.Name = "toolStripDropDownButton2"; + toolStripDropDownButton2.Size = new Size(61, 22); + toolStripDropDownButton2.Text = "Отчеты"; + // + // toolStripMenuItem1 + // + toolStripMenuItem1.Name = "toolStripMenuItem1"; + toolStripMenuItem1.Size = new Size(216, 22); + toolStripMenuItem1.Text = "Список компонентов"; + toolStripMenuItem1.Click += списокКомпонентовToolStripMenuItem_Click; + // + // toolStripMenuItem2 + // + toolStripMenuItem2.Name = "toolStripMenuItem2"; + toolStripMenuItem2.Size = new Size(216, 22); + toolStripMenuItem2.Text = "Компоненты по путевкам"; + toolStripMenuItem2.Click += компонентыПоПутeвкамToolStripMenuItem_Click; + // + // списокЗаказовToolStripMenuItem + // + списокЗаказовToolStripMenuItem.Name = "списокЗаказовToolStripMenuItem"; + списокЗаказовToolStripMenuItem.Size = new Size(216, 22); + списокЗаказовToolStripMenuItem.Text = "Список заказов"; + списокЗаказовToolStripMenuItem.Click += списокЗаказовToolStripMenuItem_Click; + // // buttonCreateeOrder // - buttonCreateeOrder.Location = new Point(993, 91); + buttonCreateeOrder.Location = new Point(869, 68); + buttonCreateeOrder.Margin = new Padding(3, 2, 3, 2); buttonCreateeOrder.Name = "buttonCreateeOrder"; - buttonCreateeOrder.Size = new Size(155, 39); + buttonCreateeOrder.Size = new Size(136, 29); buttonCreateeOrder.TabIndex = 2; buttonCreateeOrder.Text = "Создать заказ"; buttonCreateeOrder.UseVisualStyleBackColor = true; @@ -102,9 +139,10 @@ // // buttonTakeOrderInWork // - buttonTakeOrderInWork.Location = new Point(993, 136); + buttonTakeOrderInWork.Location = new Point(869, 102); + buttonTakeOrderInWork.Margin = new Padding(3, 2, 3, 2); buttonTakeOrderInWork.Name = "buttonTakeOrderInWork"; - buttonTakeOrderInWork.Size = new Size(155, 53); + buttonTakeOrderInWork.Size = new Size(136, 40); buttonTakeOrderInWork.TabIndex = 3; buttonTakeOrderInWork.Text = "Отдать на выполнение"; buttonTakeOrderInWork.UseVisualStyleBackColor = true; @@ -112,9 +150,10 @@ // // buttonOrderReady // - buttonOrderReady.Location = new Point(993, 195); + buttonOrderReady.Location = new Point(869, 146); + buttonOrderReady.Margin = new Padding(3, 2, 3, 2); buttonOrderReady.Name = "buttonOrderReady"; - buttonOrderReady.Size = new Size(155, 39); + buttonOrderReady.Size = new Size(136, 29); buttonOrderReady.TabIndex = 4; buttonOrderReady.Text = "Заказ готов"; buttonOrderReady.UseVisualStyleBackColor = true; @@ -122,9 +161,10 @@ // // buttonIssuedOrder // - buttonIssuedOrder.Location = new Point(993, 240); + buttonIssuedOrder.Location = new Point(869, 180); + buttonIssuedOrder.Margin = new Padding(3, 2, 3, 2); buttonIssuedOrder.Name = "buttonIssuedOrder"; - buttonIssuedOrder.Size = new Size(155, 39); + buttonIssuedOrder.Size = new Size(136, 29); buttonIssuedOrder.TabIndex = 5; buttonIssuedOrder.Text = "Заказ выдан"; buttonIssuedOrder.UseVisualStyleBackColor = true; @@ -132,9 +172,10 @@ // // buttonRefresh // - buttonRefresh.Location = new Point(993, 285); + buttonRefresh.Location = new Point(869, 214); + buttonRefresh.Margin = new Padding(3, 2, 3, 2); buttonRefresh.Name = "buttonRefresh"; - buttonRefresh.Size = new Size(155, 39); + buttonRefresh.Size = new Size(136, 29); buttonRefresh.TabIndex = 6; buttonRefresh.Text = "Обновить список"; buttonRefresh.UseVisualStyleBackColor = true; @@ -142,9 +183,9 @@ // // FormMain // - AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(1197, 611); + ClientSize = new Size(1047, 458); Controls.Add(buttonRefresh); Controls.Add(buttonIssuedOrder); Controls.Add(buttonOrderReady); @@ -152,6 +193,7 @@ Controls.Add(buttonCreateeOrder); Controls.Add(toolStrip1); Controls.Add(dataGridView); + Margin = new Padding(3, 2, 3, 2); Name = "FormMain"; Text = "Туристическая фирма"; ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); @@ -173,5 +215,9 @@ private Button buttonOrderReady; private Button buttonIssuedOrder; private Button buttonRefresh; + private ToolStripDropDownButton toolStripDropDownButton2; + private ToolStripMenuItem toolStripMenuItem1; + private ToolStripMenuItem toolStripMenuItem2; + private ToolStripMenuItem списокЗаказовToolStripMenuItem; } } \ No newline at end of file diff --git a/TravelCompany/TravelCompany/FormMain.cs b/TravelCompany/TravelCompany/FormMain.cs index 914dcf4..62279bc 100644 --- a/TravelCompany/TravelCompany/FormMain.cs +++ b/TravelCompany/TravelCompany/FormMain.cs @@ -11,6 +11,7 @@ using System.Windows.Forms; using TravelCompany; using TravelCompanyContracts.BindingModels; using TravelCompanyContracts.BusinessLogicsContracts; +using TravelCompanyBusinessLogic.BusinessLogic; namespace TravelCompanyView { @@ -18,11 +19,13 @@ namespace TravelCompanyView { private readonly ILogger _logger; private readonly IOrderLogic _orderLogic; - public FormMain(ILogger logger, IOrderLogic orderLogic) + private readonly IReportLogic _reportLogic; + public FormMain(ILogger logger, IOrderLogic orderLogic, IReportLogic reportLogic) { InitializeComponent(); _logger = logger; _orderLogic = orderLogic; + _reportLogic = reportLogic; LoadData(); } private void FormMain_Load(object sender, EventArgs e) @@ -153,5 +156,37 @@ namespace TravelCompanyView { LoadData(); } + + private void списокКомпонентовToolStripMenuItem_Click(object sender, EventArgs e) + { + using var dialog = new SaveFileDialog { Filter = "docx|*.docx" }; + if (dialog.ShowDialog() == DialogResult.OK) + { + _reportLogic.SaveTravelsToWordFile(new ReportBindingModel + { + FileName = dialog.FileName + }); + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, + MessageBoxIcon.Information); + } + } + + private void компонентыПоПутeвкамToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormReportTravelComponents)); + if (service is FormReportTravelComponents form) + { + form.ShowDialog(); + } + } + + private void списокЗаказовToolStripMenuItem_Click(object sender, EventArgs e) + { + var service = Program.ServiceProvider?.GetService(typeof(FormReportOrders)); + if (service is FormReportOrders form) + { + form.ShowDialog(); + } + } } } diff --git a/TravelCompany/TravelCompany/FormMain.resx b/TravelCompany/TravelCompany/FormMain.resx index dbd8207..e20f7a8 100644 --- a/TravelCompany/TravelCompany/FormMain.resx +++ b/TravelCompany/TravelCompany/FormMain.resx @@ -124,7 +124,18 @@ iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAEKSURBVEhL3ZG9DsFQHMXvczDZvIOtXsHObuhqkViI3Quw + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEKSURBVEhL3ZG9DsFQHMXvczDZvIOtXsHObuhqkViI3Quw + 6CYmNoMYJJ0NBiFFIoIytOuf0+TeXP3yde+iyS+3OcP53Z4y3/dJJ4HAsiwyTVMp6BQCBIZhKAWdEcHV + vSlBmeB82NFy1KLluEWOPRC5MoHdMWhazwi4RJlALgf4EuT6BI+5kCsTrGddUY658E+QvyXYHq9UnRyC + U87f4aUApcXhnrI9Jzg/laQKFntXlHM+lSQK5psL5fvbp/JvJLGCQqmSWM5JkiCT84igXGtSrruKLQ0T + luAdmZxHBG37FFuWBC/j5XKOmX8WAH7rcI6ZMffPgjQwN2bXJgDo/COBTpjneQ2dML0PY3cISreGe8HM + qgAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEKSURBVEhL3ZG9DsFQHMXvczDZvIOtXsHObuhqkViI3Quw 6CYmNoMYJJ0NBiFFIoIytOuf0+TeXP3yde+iyS+3OcP53Z4y3/dJJ4HAsiwyTVMp6BQCBIZhKAWdEcHV vSlBmeB82NFy1KLluEWOPRC5MoHdMWhazwi4RJlALgf4EuT6BI+5kCsTrGddUY658E+QvyXYHq9UnRyC U87f4aUApcXhnrI9Jzg/laQKFntXlHM+lSQK5psL5fvbp/JvJLGCQqmSWM5JkiCT84igXGtSrruKLQ0T diff --git a/TravelCompany/TravelCompany/FormReportOrders.Designer.cs b/TravelCompany/TravelCompany/FormReportOrders.Designer.cs new file mode 100644 index 0000000..5cdc827 --- /dev/null +++ b/TravelCompany/TravelCompany/FormReportOrders.Designer.cs @@ -0,0 +1,136 @@ +namespace TravelCompanyView +{ + partial class FormReportOrders + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + panel = new Panel(); + buttonCreateToPdf = new Button(); + buttonCreateReport = new Button(); + label2 = new Label(); + label1 = new Label(); + dateTimePickerEnd = new DateTimePicker(); + dateTimePickerStart = new DateTimePicker(); + panel.SuspendLayout(); + SuspendLayout(); + // + // panel + // + panel.Controls.Add(buttonCreateToPdf); + panel.Controls.Add(buttonCreateReport); + panel.Controls.Add(label2); + panel.Controls.Add(label1); + panel.Controls.Add(dateTimePickerEnd); + panel.Controls.Add(dateTimePickerStart); + panel.Dock = DockStyle.Top; + panel.Location = new Point(0, 0); + panel.Margin = new Padding(3, 2, 3, 2); + panel.Name = "panel"; + panel.Size = new Size(861, 56); + panel.TabIndex = 0; + // + // buttonCreateToPdf + // + buttonCreateToPdf.Location = new Point(684, 29); + buttonCreateToPdf.Margin = new Padding(3, 2, 3, 2); + buttonCreateToPdf.Name = "buttonCreateToPdf"; + buttonCreateToPdf.Size = new Size(166, 23); + buttonCreateToPdf.TabIndex = 5; + buttonCreateToPdf.Text = "PDF"; + buttonCreateToPdf.UseVisualStyleBackColor = true; + buttonCreateToPdf.Click += buttonCreateToPdf_Click; + // + // buttonCreateReport + // + buttonCreateReport.Location = new Point(485, 29); + buttonCreateReport.Margin = new Padding(3, 2, 3, 2); + buttonCreateReport.Name = "buttonCreateReport"; + buttonCreateReport.Size = new Size(166, 23); + buttonCreateReport.TabIndex = 4; + buttonCreateReport.Text = "Сформировать"; + buttonCreateReport.UseVisualStyleBackColor = true; + buttonCreateReport.Click += buttonCreateReport_Click; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(328, 9); + label2.Name = "label2"; + label2.Size = new Size(44, 15); + label2.TabIndex = 3; + label2.Text = "Конец:"; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(83, 9); + label1.Name = "label1"; + label1.Size = new Size(52, 15); + label1.TabIndex = 2; + label1.Text = "Начало:"; + // + // dateTimePickerEnd + // + dateTimePickerEnd.Location = new Point(269, 29); + dateTimePickerEnd.Margin = new Padding(3, 2, 3, 2); + dateTimePickerEnd.Name = "dateTimePickerEnd"; + dateTimePickerEnd.Size = new Size(164, 23); + dateTimePickerEnd.TabIndex = 1; + // + // dateTimePickerStart + // + dateTimePickerStart.Location = new Point(31, 29); + dateTimePickerStart.Margin = new Padding(3, 2, 3, 2); + dateTimePickerStart.Name = "dateTimePickerStart"; + dateTimePickerStart.Size = new Size(164, 23); + dateTimePickerStart.TabIndex = 0; + // + // FormReportOrders + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(861, 338); + Controls.Add(panel); + Margin = new Padding(3, 2, 3, 2); + Name = "FormReportOrders"; + Text = "Заказы"; + panel.ResumeLayout(false); + panel.PerformLayout(); + ResumeLayout(false); + } + + #endregion + + private Panel panel; + private DateTimePicker dateTimePickerEnd; + private DateTimePicker dateTimePickerStart; + private Button buttonCreateToPdf; + private Button buttonCreateReport; + private Label label2; + private Label label1; + } +} \ No newline at end of file diff --git a/TravelCompany/TravelCompany/FormReportOrders.cs b/TravelCompany/TravelCompany/FormReportOrders.cs new file mode 100644 index 0000000..1892910 --- /dev/null +++ b/TravelCompany/TravelCompany/FormReportOrders.cs @@ -0,0 +1,101 @@ +using Microsoft.Extensions.Logging; +using Microsoft.Reporting.WinForms; +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 TravelCompanyContracts.BindingModels; +using TravelCompanyContracts.BusinessLogicsContracts; + +namespace TravelCompanyView +{ + public partial class FormReportOrders : Form + { + private readonly ReportViewer reportViewer; + private readonly ILogger _logger; + private readonly IReportLogic _logic; + + public FormReportOrders(ILogger logger, IReportLogic logic) + { + InitializeComponent(); + _logger = logger; + _logic = logic; + reportViewer = new ReportViewer + { + Dock = DockStyle.Fill + }; + reportViewer.LocalReport.LoadReportDefinition(new FileStream("D:\\Уник\\2 курс 4 семестр\\РПП\\TravelCompanyView\\TravelCompany\\TravelCompany\\ReportOrders.rdlc", FileMode.Open)); + Controls.Clear(); + Controls.Add(reportViewer); + Controls.Add(panel); + } + + private void buttonCreateReport_Click(object sender, EventArgs e) + { + if (dateTimePickerStart.Value.Date >= dateTimePickerEnd.Value.Date) + { + MessageBox.Show("Дата начала должна быть меньше даты окончания", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + try + { + var dataSource = _logic.GetOrders(new ReportBindingModel + { + DateFrom = dateTimePickerStart.Value, + DateTo = dateTimePickerEnd.Value + }); + var source = new ReportDataSource("DataSetOrders", dataSource); + reportViewer.LocalReport.DataSources.Clear(); + reportViewer.LocalReport.DataSources.Add(source); + var parameters = new[] { new ReportParameter("ReportParameterPeriod", $"c{dateTimePickerStart.Value.ToShortDateString()} по {dateTimePickerEnd.Value.ToShortDateString()}") }; + reportViewer.LocalReport.SetParameters(parameters); + reportViewer.RefreshReport(); + _logger.LogInformation("Загрузка списка заказов на период {From}-{ To}", dateTimePickerStart.Value.ToShortDateString(), dateTimePickerEnd.Value.ToShortDateString()); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки списка заказов на период"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, + MessageBoxIcon.Error); + } + + } + + private void buttonCreateToPdf_Click(object sender, EventArgs e) + { + if (dateTimePickerStart.Value.Date >= dateTimePickerEnd.Value.Date) + { + MessageBox.Show("Дата начала должна быть меньше даты окончания", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + using var dialog = new SaveFileDialog + { + Filter = "pdf|*.pdf" + }; + if (dialog.ShowDialog() == DialogResult.OK) + { + try + { + _logic.SaveOrdersToPdfFile(new ReportBindingModel + { + FileName = dialog.FileName, + DateFrom = dateTimePickerStart.Value, + DateTo = dateTimePickerEnd.Value + }); + _logger.LogInformation("Сохранение списка заказов на период { From} -{ To}", dateTimePickerStart.Value.ToShortDateString(), dateTimePickerEnd.Value.ToShortDateString()); + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка сохранения списка заказов на период"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } +} diff --git a/TravelCompany/TravelCompany/FormReportOrders.resx b/TravelCompany/TravelCompany/FormReportOrders.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/TravelCompany/TravelCompany/FormReportOrders.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/TravelCompany/TravelCompany/FormReportTravelComponents.Designer.cs b/TravelCompany/TravelCompany/FormReportTravelComponents.Designer.cs new file mode 100644 index 0000000..a51423f --- /dev/null +++ b/TravelCompany/TravelCompany/FormReportTravelComponents.Designer.cs @@ -0,0 +1,99 @@ +namespace TravelCompanyView +{ + partial class FormReportTravelComponents + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + dataGridView = new DataGridView(); + ColumnComponent = new DataGridViewTextBoxColumn(); + ColumnCount = new DataGridViewTextBoxColumn(); + ColumnTravel = new DataGridViewTextBoxColumn(); + buttonSaveExcel = new Button(); + ((System.ComponentModel.ISupportInitialize)dataGridView).BeginInit(); + SuspendLayout(); + // + // dataGridView + // + dataGridView.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView.Columns.AddRange(new DataGridViewColumn[] { ColumnComponent, ColumnCount, ColumnTravel }); + dataGridView.Location = new Point(0, 44); + dataGridView.Name = "dataGridView"; + dataGridView.RowTemplate.Height = 25; + dataGridView.Size = new Size(608, 426); + dataGridView.TabIndex = 0; + // + // ColumnComponent + // + ColumnComponent.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnComponent.HeaderText = "Компонент"; + ColumnComponent.Name = "ColumnComponent"; + // + // ColumnCount + // + ColumnCount.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnCount.HeaderText = "Количество"; + ColumnCount.Name = "ColumnCount"; + // + // ColumnTravel + // + ColumnTravel.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + ColumnTravel.HeaderText = "Путевка"; + ColumnTravel.Name = "ColumnTravel"; + // + // buttonSaveExcel + // + buttonSaveExcel.Location = new Point(55, 12); + buttonSaveExcel.Name = "buttonSaveExcel"; + buttonSaveExcel.Size = new Size(154, 26); + buttonSaveExcel.TabIndex = 1; + buttonSaveExcel.Text = "Сохранить в Excel"; + buttonSaveExcel.UseVisualStyleBackColor = true; + buttonSaveExcel.Click += ButtonSaveToExcel_Click; + // + // FormReportTravelComponents + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(607, 462); + Controls.Add(buttonSaveExcel); + Controls.Add(dataGridView); + Name = "FormReportTravelComponents"; + Text = "FormReportTravelComponents"; + Load += FormReportTravelComponents_Load; + ((System.ComponentModel.ISupportInitialize)dataGridView).EndInit(); + ResumeLayout(false); + } + + #endregion + + private DataGridView dataGridView; + private DataGridViewTextBoxColumn ColumnComponent; + private DataGridViewTextBoxColumn ColumnCount; + private DataGridViewTextBoxColumn ColumnTravel; + private Button buttonSaveExcel; + } +} \ No newline at end of file diff --git a/TravelCompany/TravelCompany/FormReportTravelComponents.cs b/TravelCompany/TravelCompany/FormReportTravelComponents.cs new file mode 100644 index 0000000..aed5a17 --- /dev/null +++ b/TravelCompany/TravelCompany/FormReportTravelComponents.cs @@ -0,0 +1,78 @@ +using Microsoft.Extensions.Logging; +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 TravelCompanyContracts.BindingModels; +using TravelCompanyContracts.BusinessLogicsContracts; + +namespace TravelCompanyView +{ + public partial class FormReportTravelComponents : Form + { + private readonly ILogger _logger; + private readonly IReportLogic _logic; + + public FormReportTravelComponents(ILogger logger, IReportLogic logic) + { + InitializeComponent(); + _logger = logger; + _logic = logic; + } + + private void FormReportTravelComponents_Load(object sender, EventArgs e) + { + try + { + var dict = _logic.GetTravelComponents(); + if (dict != null) + { + dataGridView.Rows.Clear(); + foreach (var elem in dict) + { + dataGridView.Rows.Add(new object[] { elem.TravelName, "", "" }); + foreach (var listElem in elem.Components) + { + dataGridView.Rows.Add(new object[] { "", listElem.Item1, listElem.Item2 }); + } + dataGridView.Rows.Add(new object[] { "Итого", "", elem.TotalCount }); + dataGridView.Rows.Add(Array.Empty()); + } + } + _logger.LogInformation("Загрузка списка изделий по компонентам"); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка загрузки списка изделий по компонентам"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void ButtonSaveToExcel_Click(object sender, EventArgs e) + { + using var dialog = new SaveFileDialog { Filter = "xlsx|*.xlsx" }; + if (dialog.ShowDialog() == DialogResult.OK) + { + try + { + _logic.SaveTravelComponentToExcelFile(new ReportBindingModel + { + FileName = dialog.FileName + }); + _logger.LogInformation("Сохранение списка изделий по компонентам"); + MessageBox.Show("Выполнено", "Успех", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка сохранения списка изделий по компонентам"); + MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } +} diff --git a/TravelCompany/TravelCompany/FormReportTravelComponents.resx b/TravelCompany/TravelCompany/FormReportTravelComponents.resx new file mode 100644 index 0000000..0e0d521 --- /dev/null +++ b/TravelCompany/TravelCompany/FormReportTravelComponents.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + \ No newline at end of file diff --git a/TravelCompany/TravelCompany/Program.cs b/TravelCompany/TravelCompany/Program.cs index 385ddd8..0399a47 100644 --- a/TravelCompany/TravelCompany/Program.cs +++ b/TravelCompany/TravelCompany/Program.cs @@ -6,6 +6,8 @@ using TravelCompanyContracts.BusinessLogicsContracts; using TravelCompanyContracts.StoragesContracts; using TravelCompanyDatabaseImplement.Implements; using TravelCompanyView; +using TravelCompanyBusinessLogic.OfficePackage.Implements; +using TravelCompanyBusinessLogic.OfficePackage; namespace TravelCompany { @@ -41,6 +43,7 @@ namespace TravelCompany services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); @@ -48,6 +51,11 @@ namespace TravelCompany services.AddTransient(); services.AddTransient(); services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); } } } \ No newline at end of file diff --git a/TravelCompany/TravelCompany/ReportOrders.rdlc b/TravelCompany/TravelCompany/ReportOrders.rdlc new file mode 100644 index 0000000..54e1ac3 --- /dev/null +++ b/TravelCompany/TravelCompany/ReportOrders.rdlc @@ -0,0 +1,88 @@ + + + 0 + + + + + + + + + + + + + + true + true + + + + + Заказы + + + + + + + Textbox2 + 0.9937cm + 16.51cm + + + Middle + 2pt + 2pt + 2pt + 2pt + + + + 2in +