From e196b106ec3142cb7becb5d3701f6ffc835d6830 Mon Sep 17 00:00:00 2001
From: antoc0der <1@DESKTOP-K1L8ND3>
Date: Tue, 26 Mar 2024 16:57:52 +0400
Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D1=88=D0=B5=D0=BB=20=D0=B4=D0=BE?=
=?UTF-8?q?=20=D0=B0=D0=B1=D1=81=D1=82=D1=80=D0=B0=D0=BA=D1=82=D0=BD=D0=BE?=
=?UTF-8?q?=D0=B3=D0=BE=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20=D0=BF?=
=?UTF-8?q?=D0=B4=D1=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../FlowerShopBusinessLogic.csproj | 1 +
.../OfficePackage/AbstractSaveToExcel.cs | 103 +++++
.../OfficePackage/AbstractSaveToPdf.cs | 80 ++++
.../OfficePackage/AbstractSaveToWord.cs | 56 +++
.../HelperEnums/ExcelStyleInfoType.cs | 15 +
.../HelperEnums/PdfParagraphAlignmentType.cs | 16 +
.../HelperEnums/WordJustificationType.cs | 14 +
.../HelperModels/ExcelCellParametres.cs | 18 +
.../OfficePackage/HelperModels/ExcelInfo.cs | 16 +
.../HelperModels/ExcelMergeParametres.cs | 15 +
.../OfficePackage/HelperModels/PdfInfo.cs | 18 +
.../HelperModels/PdfParagraph.cs | 15 +
.../HelperModels/PdfRowParametres.cs | 15 +
.../OfficePackage/HelperModels/WordInfo.cs | 16 +
.../HelperModels/WordParagraph.cs | 14 +
.../HelperModels/WordTextProperties.cs | 16 +
.../OfficePackage/Implements/SaveToExcel.cs | 356 ++++++++++++++++++
.../OfficePackage/Implements/SaveToWord.cs | 121 ++++++
.../BindingModels/ReportBindingModel.cs | 15 +
.../BusinessLogicsContracts/IReportLogic.cs | 40 ++
.../FlowerShopContracts.csproj | 1 +
.../ReportFlowerComponentViewModel.cs | 15 +
.../ViewModels/ReportOrdersViewModel.cs | 17 +
.../FlowerShopDataModels.csproj | 1 +
.../FlowerShopDatabaseImplement.csproj | 1 +
FlowerShopDatabaseImplement/Order.cs | 5 +-
FlowerShopDatabaseImplement/OrderStorage.cs | 36 +-
.../FlowerShopFileImplement.csproj | 4 +
.../FlowerShopListImplement.csproj | 4 +
ProjectFlowerShop/ProjectFlowerShop.csproj | 1 +
30 files changed, 1017 insertions(+), 28 deletions(-)
create mode 100644 FlowerShopBusinessLogic/OfficePackage/AbstractSaveToExcel.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/AbstractSaveToPdf.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/AbstractSaveToWord.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperEnums/ExcelStyleInfoType.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperEnums/PdfParagraphAlignmentType.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperEnums/WordJustificationType.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelCellParametres.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelMergeParametres.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfParagraph.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfRowParametres.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/WordInfo.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/HelperModels/WordTextProperties.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/Implements/SaveToExcel.cs
create mode 100644 FlowerShopBusinessLogic/OfficePackage/Implements/SaveToWord.cs
create mode 100644 FlowerShopContracts/BindingModels/ReportBindingModel.cs
create mode 100644 FlowerShopContracts/BusinessLogicsContracts/IReportLogic.cs
create mode 100644 FlowerShopContracts/ViewModels/ReportFlowerComponentViewModel.cs
create mode 100644 FlowerShopContracts/ViewModels/ReportOrdersViewModel.cs
diff --git a/FlowerShopBusinessLogic/FlowerShopBusinessLogic.csproj b/FlowerShopBusinessLogic/FlowerShopBusinessLogic.csproj
index e3db8e7..9edf3a6 100644
--- a/FlowerShopBusinessLogic/FlowerShopBusinessLogic.csproj
+++ b/FlowerShopBusinessLogic/FlowerShopBusinessLogic.csproj
@@ -7,6 +7,7 @@
+
diff --git a/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToExcel.cs b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToExcel.cs
new file mode 100644
index 0000000..3b36e74
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToExcel.cs
@@ -0,0 +1,103 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage
+{
+ public abstract class AbstractSaveToExcel
+ {
+ ///
+ /// Создание отчета
+ ///
+ ///
+ public void CreateReport(ExcelInfo info)
+ {
+ CreateExcel(info);
+ InsertCellInWorksheet(new ExcelCellParameters
+ {
+ ColumnName = "A",
+ RowIndex = 1,
+ Text = info.Title,
+ StyleInfo = ExcelStyleInfoType.Title
+ });
+ MergeCells(new ExcelMergeParameters
+ {
+ CellFromName = "A1",
+ CellToName = "C1"
+ });
+ uint rowIndex = 2;
+ foreach (var pc in info.FlowerComponents)
+ {
+ InsertCellInWorksheet(new ExcelCellParameters
+ {
+ ColumnName = "A",
+ RowIndex = rowIndex,
+ Text = pc.ComponentName,
+ StyleInfo = ExcelStyleInfoType.Text
+ });
+ rowIndex++;
+ foreach (var product in pc.Flowers)
+ {
+ InsertCellInWorksheet(new ExcelCellParameters
+ {
+ ColumnName = "B",
+ RowIndex = rowIndex,
+ Text = product.Item1,
+ StyleInfo =
+ ExcelStyleInfoType.TextWithBroder
+ });
+ InsertCellInWorksheet(new ExcelCellParameters
+ {
+ ColumnName = "C",
+ RowIndex = rowIndex,
+ Text = product.Item2.ToString(),
+ StyleInfo =
+ ExcelStyleInfoType.TextWithBroder
+ });
+ rowIndex++;
+ }
+ InsertCellInWorksheet(new ExcelCellParameters
+ {
+ ColumnName = "A",
+ RowIndex = rowIndex,
+ Text = "Итого",
+ StyleInfo = ExcelStyleInfoType.Text
+ });
+ InsertCellInWorksheet(new ExcelCellParameters
+ {
+ ColumnName = "C",
+ RowIndex = rowIndex,
+ Text = pc.TotalCount.ToString(),
+ StyleInfo = ExcelStyleInfoType.Text
+ });
+ rowIndex++;
+ }
+ SaveExcel(info);
+ }
+ ///
+ /// Создание excel-файла
+ ///
+ ///
+ protected abstract void CreateExcel(ExcelInfo info);
+ ///
+ /// Добавляем новую ячейку в лист
+ ///
+ ///
+ protected abstract void InsertCellInWorksheet(ExcelCellParameters excelParams);
+ ///
+ /// Объединение ячеек
+ ///
+ ///
+ protected abstract void MergeCells(ExcelMergeParameters excelParams);
+ ///
+ /// Сохранение файла
+ ///
+ ///
+ protected abstract void SaveExcel(ExcelInfo info);
+ }
+
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToPdf.cs b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToPdf.cs
new file mode 100644
index 0000000..b0eea1a
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToPdf.cs
@@ -0,0 +1,80 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage
+{
+ public abstract class AbstractSaveToPdf
+ {
+ public void CreateDoc(PdfInfo info)
+ {
+ CreatePdf(info);
+ CreateParagraph(new PdfParagraph
+ {
+ Text = info.Title,
+ Style ="NormalTitle",
+ ParagraphAlignment = PdfParagraphAlignmentType.Center
+ });
+ CreateParagraph(new PdfParagraph
+ {
+ Text = $"с { info.DateFrom.ToShortDateString() } по { info.DateTo.ToShortDateString() }", Style = "Normal",
+ ParagraphAlignment = PdfParagraphAlignmentType.Center
+ });
+ CreateTable(new List { "2cm", "3cm", "6cm", "3cm" });
+ CreateRow(new PdfRowParameters
+ {
+ Texts = new List { "Номер", "Дата заказа", "Изделие","Сумма" },
+ Style = "NormalTitle",
+ ParagraphAlignment = PdfParagraphAlignmentType.Center
+ });
+ foreach (var order in info.Orders)
+ {
+ CreateRow(new PdfRowParameters
+ {
+ Texts = new List { order.Id.ToString(), order.DateCreate.ToShortDateString(), order.FlowerName, order.Sum.ToString() },
+ Style = "Normal",
+ ParagraphAlignment = PdfParagraphAlignmentType.Left
+ });
+ }
+ CreateParagraph(new PdfParagraph
+ {
+ Text = $"Итого: {info.Orders.Sum(x=> x.Sum)}\t",
+ Style = "Normal",
+ ParagraphAlignment = PdfParagraphAlignmentType.Right
+ });
+ SavePdf(info);
+ }
+ ///
+ /// Создание doc-файла
+ ///
+ ///
+ protected abstract void CreatePdf(PdfInfo info);
+ ///
+ /// Создание параграфа с текстом
+ ///
+ ///
+ ///
+ protected abstract void CreateParagraph(PdfParagraph paragraph);
+ ///
+ /// Создание таблицы
+ ///
+ ///
+ ///
+ protected abstract void CreateTable(List columns);
+ ///
+ /// Создание и заполнение строки
+ ///
+ ///
+ protected abstract void CreateRow(PdfRowParameters rowParameters);
+ ///
+ /// Сохранение файла
+ ///
+ ///
+ protected abstract void SavePdf(PdfInfo info);
+ }
+
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToWord.cs b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToWord.cs
new file mode 100644
index 0000000..f59357c
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/AbstractSaveToWord.cs
@@ -0,0 +1,56 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage
+{
+ public abstract class AbstractSaveToWord
+ {
+ public void CreateDoc(WordInfo info)
+ {
+ CreateWord(info);
+ CreateParagraph(new WordParagraph
+ {
+ Texts = new List<(string, WordTextProperties)> { (info.Title, new WordTextProperties { Bold = true, Size = "24", }) },
+ TextProperties = new WordTextProperties
+ {
+ Size = "24",
+ JustificationType = WordJustificationType.Center
+ }
+ });
+ foreach (var component in info.Components)
+ {
+ CreateParagraph(new WordParagraph
+ {
+ Texts = new List<(string, WordTextProperties)> { (component.ComponentName, new WordTextProperties { Size = "24", }) },
+ TextProperties = new WordTextProperties
+ {
+ Size = "24",
+ JustificationType = WordJustificationType.Both
+ }
+ });
+ }
+ SaveWord(info);
+ }
+ ///
+ /// Создание doc-файла
+ ///
+ ///
+ protected abstract void CreateWord(WordInfo info);
+ ///
+ /// Создание абзаца с текстом
+ ///
+ ///
+ ///
+ protected abstract void CreateParagraph(WordParagraph paragraph);
+ ///
+ /// Сохранение файла
+ ///
+ ///
+ protected abstract void SaveWord(WordInfo info);
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperEnums/ExcelStyleInfoType.cs b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/ExcelStyleInfoType.cs
new file mode 100644
index 0000000..0a91444
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/ExcelStyleInfoType.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperEnums
+{
+ public enum ExcelStyleInfoType
+ {
+ Title,
+ Text,
+ TextWithBroder
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperEnums/PdfParagraphAlignmentType.cs b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/PdfParagraphAlignmentType.cs
new file mode 100644
index 0000000..8125cf3
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/PdfParagraphAlignmentType.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperEnums
+{
+ public enum PdfParagraphAlignmentType
+ {
+ Center,
+ Left,
+
+ Right
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperEnums/WordJustificationType.cs b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/WordJustificationType.cs
new file mode 100644
index 0000000..ba1ea71
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperEnums/WordJustificationType.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperEnums
+{
+ public enum WordJustificationType
+ {
+ Center,
+ Both
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelCellParametres.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelCellParametres.cs
new file mode 100644
index 0000000..ca0d84c
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelCellParametres.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class ExcelCellParameters
+ {
+ public string ColumnName { get; set; } = string.Empty;
+ public uint RowIndex { get; set; }
+ public string Text { get; set; } = string.Empty;
+ public string CellReference => $"{ColumnName}{RowIndex}";
+ public ExcelStyleInfoType StyleInfo { get; set; }
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs
new file mode 100644
index 0000000..378f150
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelInfo.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FlowerShopContracts.ViewModels;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class ExcelInfo
+ {
+ public string FileName { get; set; } = string.Empty;
+ public string Title { get; set; } = string.Empty;
+ public List FlowerComponents { get; set; } = new();
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelMergeParametres.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelMergeParametres.cs
new file mode 100644
index 0000000..2658b1f
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/ExcelMergeParametres.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class ExcelMergeParameters
+ {
+ public string CellFromName { get; set; } = string.Empty;
+ public string CellToName { get; set; } = string.Empty;
+ public string Merge => $"{CellFromName}:{CellToName}";
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs
new file mode 100644
index 0000000..bd8b32f
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfInfo.cs
@@ -0,0 +1,18 @@
+using FlowerShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class PdfInfo
+ {
+ public string FileName { get; set; } = string.Empty;
+ public string Title { get; set; } = string.Empty;
+ public DateTime DateFrom { get; set; }
+ public DateTime DateTo { get; set; }
+ public List Orders { get; set; } = new();
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfParagraph.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfParagraph.cs
new file mode 100644
index 0000000..33c0a55
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfParagraph.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class PdfParagraph
+ {
+ public string Text { get; set; } = string.Empty;
+ public string Style { get; set; } = string.Empty;
+ public PdfParagraphAlignmentType ParagraphAlignment { get; set; }
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfRowParametres.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfRowParametres.cs
new file mode 100644
index 0000000..bfcbeff
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/PdfRowParametres.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class PdfRowParameters
+ {
+ public List Texts { get; set; } = new();
+ public string Style { get; set; } = string.Empty;
+ public PdfParagraphAlignmentType ParagraphAlignment { get; set; }
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordInfo.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordInfo.cs
new file mode 100644
index 0000000..248cacd
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordInfo.cs
@@ -0,0 +1,16 @@
+using FlowerShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class WordInfo
+ {
+ public string FileName { get; set; } = string.Empty;
+ public string Title { get; set; } = string.Empty;
+ public List Components { get; set; } = new();
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs
new file mode 100644
index 0000000..6c594c5
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordParagraph.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class WordParagraph
+ {
+ public List<(string, WordTextProperties)> Texts { get; set; } = new();
+ public WordTextProperties? TextProperties { get; set; }
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordTextProperties.cs b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordTextProperties.cs
new file mode 100644
index 0000000..fbaecb4
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/HelperModels/WordTextProperties.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+
+namespace FlowerShopBusinessLogic.OfficePackage.HelperModels
+{
+ public class WordTextProperties
+ {
+ public string Size { get; set; } = string.Empty;
+ public bool Bold { get; set; }
+ public WordJustificationType JustificationType { get; set; }
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToExcel.cs b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToExcel.cs
new file mode 100644
index 0000000..501e2be
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToExcel.cs
@@ -0,0 +1,356 @@
+using DocumentFormat.OpenXml.Office2010.Excel;
+using DocumentFormat.OpenXml.Office2013.Excel;
+using DocumentFormat.OpenXml.Office2016.Excel;
+using DocumentFormat.OpenXml.Packaging;
+using DocumentFormat.OpenXml.Spreadsheet;
+using DocumentFormat.OpenXml;
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopBusinessLogic.OfficePackage.Implements
+{
+ public class SaveToExcel : AbstractSaveToExcel
+ {
+ private SpreadsheetDocument? _spreadsheetDocument;
+ private SharedStringTablePart? _shareStringPart;
+ private Worksheet? _worksheet;
+ ///
+ /// Настройка стилей для файла
+ ///
+ ///
+ private static void CreateStyles(WorkbookPart workbookpart)
+ {
+ var sp = workbookpart.AddNewPart();
+ sp.Stylesheet = new Stylesheet();
+ var fonts = new Fonts() { Count = 2U, KnownFonts = true };
+ var fontUsual = new Font();
+ fontUsual.Append(new FontSize() { Val = 12D });
+ fontUsual.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color()
+ { Theme = 1U });
+ fontUsual.Append(new FontName() { Val = "Times New Roman" });
+ fontUsual.Append(new FontFamilyNumbering() { Val = 2 });
+ fontUsual.Append(new FontScheme() { Val = FontSchemeValues.Minor });
+ var fontTitle = new Font();
+ fontTitle.Append(new Bold());
+ fontTitle.Append(new FontSize() { Val = 14D });
+ fontTitle.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color()
+ { Theme = 1U });
+ fontTitle.Append(new FontName() { Val = "Times New Roman" });
+ fontTitle.Append(new FontFamilyNumbering() { Val = 2 });
+ fontTitle.Append(new FontScheme() { Val = FontSchemeValues.Minor });
+ fonts.Append(fontUsual);
+ fonts.Append(fontTitle);
+ var fills = new Fills() { Count = 2U };
+ var fill1 = new Fill();
+ fill1.Append(new PatternFill() { PatternType = PatternValues.None });
+ var fill2 = new Fill();
+ fill2.Append(new PatternFill()
+ {
+ PatternType = PatternValues.Gray125
+ });
+ fills.Append(fill1);
+ fills.Append(fill2);
+ var borders = new Borders() { Count = 2U };
+ var borderNoBorder = new Border();
+ borderNoBorder.Append(new LeftBorder());
+ borderNoBorder.Append(new RightBorder());
+ borderNoBorder.Append(new TopBorder());
+ borderNoBorder.Append(new BottomBorder());
+ borderNoBorder.Append(new DiagonalBorder());
+ var borderThin = new Border();
+ var leftBorder = new LeftBorder() { Style = BorderStyleValues.Thin };
+ leftBorder.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color()
+ { Indexed = 64U });
+ var rightBorder = new RightBorder()
+ {
+ Style = BorderStyleValues.Thin
+ };
+ rightBorder.Append(new
+ DocumentFormat.OpenXml.Office2010.Excel.Color()
+ { Indexed = 64U });
+ var topBorder = new TopBorder() { Style = BorderStyleValues.Thin };
+ topBorder.Append(new DocumentFormat.OpenXml.Office2010.Excel.Color()
+ { Indexed = 64U });
+ var bottomBorder = new BottomBorder()
+ {
+ Style =
+ BorderStyleValues.Thin
+ };
+ bottomBorder.Append(new
+ DocumentFormat.OpenXml.Office2010.Excel.Color()
+ { Indexed = 64U });
+ borderThin.Append(leftBorder);
+ borderThin.Append(rightBorder);
+ borderThin.Append(topBorder);
+ borderThin.Append(bottomBorder);
+ borderThin.Append(new DiagonalBorder());
+ borders.Append(borderNoBorder);
+ borders.Append(borderThin);
+ var cellStyleFormats = new CellStyleFormats() { Count = 1U };
+ var cellFormatStyle = new CellFormat()
+ {
+ NumberFormatId = 0U,
+ FontId
+ = 0U,
+ FillId = 0U,
+ BorderId = 0U
+ };
+ cellStyleFormats.Append(cellFormatStyle);
+ var cellFormats = new CellFormats() { Count = 3U };
+ var cellFormatFont = new CellFormat()
+ {
+ NumberFormatId = 0U,
+ FontId =
+ 0U,
+ FillId = 0U,
+ BorderId = 0U,
+ FormatId = 0U,
+ ApplyFont = true
+ };
+ var cellFormatFontAndBorder = new CellFormat()
+ {
+ NumberFormatId = 0U,
+ FontId = 0U,
+ FillId = 0U,
+ BorderId = 1U,
+ FormatId = 0U,
+ ApplyFont = true,
+ ApplyBorder = true
+ };
+ var cellFormatTitle = new CellFormat()
+ {
+ NumberFormatId = 0U,
+ FontId
+ = 1U,
+ FillId = 0U,
+ BorderId = 0U,
+ FormatId = 0U,
+ Alignment = new Alignment()
+ {
+ Vertical = VerticalAlignmentValues.Center,
+ WrapText = true,
+ Horizontal =
+ HorizontalAlignmentValues.Center
+ },
+ ApplyFont = true
+ };
+ cellFormats.Append(cellFormatFont);
+ cellFormats.Append(cellFormatFontAndBorder);
+ cellFormats.Append(cellFormatTitle);
+ var cellStyles = new CellStyles() { Count = 1U };
+ cellStyles.Append(new CellStyle()
+ {
+ Name = "Normal",
+ FormatId = 0U,
+ BuiltinId = 0U
+ });
+ var differentialFormats = new
+ DocumentFormat.OpenXml.Office2013.Excel.DifferentialFormats()
+ { Count = 0U };
+
+ var tableStyles = new TableStyles()
+ {
+ Count = 0U,
+ DefaultTableStyle =
+ "TableStyleMedium2",
+ DefaultPivotStyle = "PivotStyleLight16"
+ };
+ var stylesheetExtensionList = new StylesheetExtensionList();
+ var stylesheetExtension1 = new StylesheetExtension()
+ {
+ Uri =
+ "{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}"
+ };
+ stylesheetExtension1.AddNamespaceDeclaration("x14",
+ "http://schemas.microsoft.com/office/spreadsheetml/2009/9/main");
+ stylesheetExtension1.Append(new SlicerStyles()
+ {
+ DefaultSlicerStyle =
+ "SlicerStyleLight1"
+ });
+ var stylesheetExtension2 = new StylesheetExtension()
+ {
+ Uri =
+ "{9260A510-F301-46a8-8635-F512D64BE5F5}"
+ };
+ stylesheetExtension2.AddNamespaceDeclaration("x15",
+ "http://schemas.microsoft.com/office/spreadsheetml/2010/11/main");
+ stylesheetExtension2.Append(new TimelineStyles()
+ {
+ DefaultTimelineStyle = "TimeSlicerStyleLight1"
+ });
+ stylesheetExtensionList.Append(stylesheetExtension1);
+ stylesheetExtensionList.Append(stylesheetExtension2);
+ sp.Stylesheet.Append(fonts);
+ sp.Stylesheet.Append(fills);
+ sp.Stylesheet.Append(borders);
+ sp.Stylesheet.Append(cellStyleFormats);
+ sp.Stylesheet.Append(cellFormats);
+ sp.Stylesheet.Append(cellStyles);
+ sp.Stylesheet.Append(differentialFormats);
+ sp.Stylesheet.Append(tableStyles);
+ sp.Stylesheet.Append(stylesheetExtensionList);
+ }
+ ///
+ /// Получение номера стиля из типа
+ ///
+ ///
+ ///
+ private static uint GetStyleValue(ExcelStyleInfoType styleInfo)
+ {
+ return styleInfo switch
+ {
+ ExcelStyleInfoType.Title => 2U,
+ ExcelStyleInfoType.TextWithBroder => 1U,
+ ExcelStyleInfoType.Text => 0U,
+ _ => 0U,
+ };
+ }
+ protected override void CreateExcel(ExcelInfo info)
+ {
+ _spreadsheetDocument = SpreadsheetDocument.Create(info.FileName,
+ SpreadsheetDocumentType.Workbook);
+ // Создаем книгу (в ней хранятся листы)
+ var workbookpart = _spreadsheetDocument.AddWorkbookPart();
+ workbookpart.Workbook = new Workbook();
+ CreateStyles(workbookpart);
+ // Получаем/создаем хранилище текстов для книги
+ _shareStringPart =
+ _spreadsheetDocument.WorkbookPart!.GetPartsOfType().Any()
+ ?
+ _spreadsheetDocument.WorkbookPart.GetPartsOfType().First()
+ :
+ _spreadsheetDocument.WorkbookPart.AddNewPart();
+ // Создаем SharedStringTable, если его нет
+ if (_shareStringPart.SharedStringTable == null)
+ {
+ _shareStringPart.SharedStringTable = new SharedStringTable();
+ }
+ // Создаем лист в книгу
+ var worksheetPart = workbookpart.AddNewPart();
+ worksheetPart.Worksheet = new Worksheet(new SheetData());
+ // Добавляем лист в книгу
+ var sheets =
+ _spreadsheetDocument.WorkbookPart.Workbook.AppendChild(new Sheets());
+ var sheet = new Sheet()
+ {
+ Id =
+ _spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart),
+ SheetId = 1,
+ Name = "Лист"
+ };
+ sheets.Append(sheet);
+ _worksheet = worksheetPart.Worksheet;
+ }
+ protected override void InsertCellInWorksheet(ExcelCellParameters
+ excelParams)
+ {
+ if (_worksheet == null || _shareStringPart == null)
+ {
+ return;
+ }
+ var sheetData = _worksheet.GetFirstChild();
+ if (sheetData == null)
+ {
+ return;
+ }
+ // Ищем строку, либо добавляем ее
+ Row row;
+ if (sheetData.Elements().Where(r => r.RowIndex! ==
+ excelParams.RowIndex).Any())
+ {
+ row = sheetData.Elements().Where(r => r.RowIndex! ==
+ excelParams.RowIndex).First();
+ }
+ else
+ {
+ row = new Row() { RowIndex = excelParams.RowIndex };
+ sheetData.Append(row);
+ }
+ // Ищем нужную ячейку
+ Cell cell;
+ if (row.Elements().Where(c => c.CellReference!.Value ==
+ excelParams.CellReference).Any())
+ {
+ cell = row.Elements().Where(c => c.CellReference!.Value ==
+ excelParams.CellReference).First();
+ }
+ else
+ {
+ // Все ячейки должны быть последовательно друг за другом расположены
+ // нужно определить, после какой вставлять
+ Cell? refCell = null;
+ foreach (Cell rowCell in row.Elements())
+ {
+ if (string.Compare(rowCell.CellReference!.Value,
+ excelParams.CellReference, true) > 0)
+ {
+ refCell = rowCell;
+ break;
+ }
+ }
+ var newCell = new Cell()
+ {
+ CellReference =
+ excelParams.CellReference
+ };
+ row.InsertBefore(newCell, refCell);
+ cell = newCell;
+ }
+ // вставляем новый текст
+ _shareStringPart.SharedStringTable.AppendChild(new
+ SharedStringItem(new Text(excelParams.Text)));
+ _shareStringPart.SharedStringTable.Save();
+ cell.CellValue = new
+ CellValue((_shareStringPart.SharedStringTable.Elements().Count(
+ ) - 1).ToString());
+ cell.DataType = new EnumValue(CellValues.SharedString);
+ cell.StyleIndex = GetStyleValue(excelParams.StyleInfo);
+ }
+ protected override void MergeCells(ExcelMergeParameters excelParams)
+ {
+ if (_worksheet == null)
+ {
+ return;
+ }
+ MergeCells mergeCells;
+ if (_worksheet.Elements().Any())
+ {
+ mergeCells = _worksheet.Elements().First();
+ }
+ else
+ {
+ mergeCells = new MergeCells();
+ if (_worksheet.Elements().Any())
+ {
+ _worksheet.InsertAfter(mergeCells,
+ _worksheet.Elements().First());
+ }
+ else
+ {
+ _worksheet.InsertAfter(mergeCells,
+ _worksheet.Elements().First());
+ }
+ }
+ var mergeCell = new MergeCell()
+ {
+ Reference = new StringValue(excelParams.Merge)
+ };
+ mergeCells.Append(mergeCell);
+ }
+ protected override void SaveExcel(ExcelInfo info)
+ {
+ if (_spreadsheetDocument == null)
+ {
+ return;
+ }
+ _spreadsheetDocument.WorkbookPart!.Workbook.Save();
+ _spreadsheetDocument.Dispose();
+ }
+ }
+}
diff --git a/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToWord.cs b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToWord.cs
new file mode 100644
index 0000000..df65399
--- /dev/null
+++ b/FlowerShopBusinessLogic/OfficePackage/Implements/SaveToWord.cs
@@ -0,0 +1,121 @@
+using FlowerShopBusinessLogic.OfficePackage.HelperEnums;
+using FlowerShopBusinessLogic.OfficePackage.HelperModels;
+using DocumentFormat.OpenXml;
+using DocumentFormat.OpenXml.Packaging;
+using DocumentFormat.OpenXml.Wordprocessing;
+
+
+namespace FlowerShopBusinessLogic.OfficePackage.Implements
+{
+ public class SaveToWord : AbstractSaveToWord
+ {
+ private WordprocessingDocument? _wordDocument;
+ private Body? _docBody;
+ ///
+ /// Получение типа выравнивания
+ ///
+ ///
+ ///
+ private static JustificationValues GetJustificationValues(WordJustificationType type)
+ {
+ return type switch
+ {
+ WordJustificationType.Both => JustificationValues.Both,
+ WordJustificationType.Center => JustificationValues.Center,
+ _ => JustificationValues.Left,
+ };
+ }
+ ///
+ /// Настройки страницы
+ ///
+ ///
+ private static SectionProperties CreateSectionProperties()
+ {
+ var properties = new SectionProperties();
+ var pageSize = new PageSize
+ {
+ Orient = PageOrientationValues.Portrait
+ };
+ properties.AppendChild(pageSize);
+ return properties;
+ }
+ ///
+ /// Задание форматирования для абзаца
+ ///
+ ///
+ ///
+ private static ParagraphProperties? CreateParagraphProperties(WordTextProperties? paragraphProperties)
+ {
+ if (paragraphProperties == null)
+ {
+ return null;
+ }
+ var properties = new ParagraphProperties();
+ properties.AppendChild(new Justification()
+ {
+ 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 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.Dispose();
+ }
+
+ }
+}
diff --git a/FlowerShopContracts/BindingModels/ReportBindingModel.cs b/FlowerShopContracts/BindingModels/ReportBindingModel.cs
new file mode 100644
index 0000000..b0f9795
--- /dev/null
+++ b/FlowerShopContracts/BindingModels/ReportBindingModel.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopContracts.BindingModels
+{
+ public class ReportBindingModel
+ {
+ public string FileName { get; set; } = string.Empty;
+ public DateTime? DateFrom { get; set; }
+ public DateTime? DateTo { get; set; }
+ }
+}
diff --git a/FlowerShopContracts/BusinessLogicsContracts/IReportLogic.cs b/FlowerShopContracts/BusinessLogicsContracts/IReportLogic.cs
new file mode 100644
index 0000000..154de41
--- /dev/null
+++ b/FlowerShopContracts/BusinessLogicsContracts/IReportLogic.cs
@@ -0,0 +1,40 @@
+using FlowerShopContracts.BindingModels;
+using FlowerShopContracts.ViewModels;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopContracts.BusinessLogicsContracts
+{
+ public interface IReportLogic
+ {
+ ///
+ /// Получение списка компонент с указанием, в каких изделиях используются
+ ///
+ ///
+ List GetFlowerComponent();
+ ///
+ /// Получение списка заказов за определенный период
+ ///
+ ///
+ ///
+ List GetOrders(ReportBindingModel model);
+ ///
+ /// Сохранение компонент в файл-Word
+ ///
+ ///
+ void SaveComponentsToWordFile(ReportBindingModel model);
+ ///
+ /// Сохранение компонент с указаеним продуктов в файл-Excel
+ ///
+ ///
+ void SaveProductComponentToExcelFile(ReportBindingModel model);
+ ///
+ /// Сохранение заказов в файл-Pdf
+ ///
+ ///
+ void SaveOrdersToPdfFile(ReportBindingModel model);
+ }
+}
diff --git a/FlowerShopContracts/FlowerShopContracts.csproj b/FlowerShopContracts/FlowerShopContracts.csproj
index 901b7f6..0da3f46 100644
--- a/FlowerShopContracts/FlowerShopContracts.csproj
+++ b/FlowerShopContracts/FlowerShopContracts.csproj
@@ -7,6 +7,7 @@
+
diff --git a/FlowerShopContracts/ViewModels/ReportFlowerComponentViewModel.cs b/FlowerShopContracts/ViewModels/ReportFlowerComponentViewModel.cs
new file mode 100644
index 0000000..670209e
--- /dev/null
+++ b/FlowerShopContracts/ViewModels/ReportFlowerComponentViewModel.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopContracts.ViewModels
+{
+ public class ReportFlowerComponentViewModel
+ {
+ public string ComponentName { get; set; } = string.Empty;
+ public int TotalCount { get; set; }
+ public List> Flowers { get; set; } = new();
+ }
+}
diff --git a/FlowerShopContracts/ViewModels/ReportOrdersViewModel.cs b/FlowerShopContracts/ViewModels/ReportOrdersViewModel.cs
new file mode 100644
index 0000000..65079c4
--- /dev/null
+++ b/FlowerShopContracts/ViewModels/ReportOrdersViewModel.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlowerShopContracts.ViewModels
+{
+ public class ReportOrdersViewModel
+ {
+ public int Id { get; set; }
+ public DateTime DateCreate { get; set; }
+ public string FlowerName { get; set; } = string.Empty;
+ public double Sum { get; set; }
+ }
+
+}
diff --git a/FlowerShopDataModels/FlowerShopDataModels.csproj b/FlowerShopDataModels/FlowerShopDataModels.csproj
index dce9680..da2f558 100644
--- a/FlowerShopDataModels/FlowerShopDataModels.csproj
+++ b/FlowerShopDataModels/FlowerShopDataModels.csproj
@@ -7,6 +7,7 @@
+
diff --git a/FlowerShopDatabaseImplement/FlowerShopDatabaseImplement.csproj b/FlowerShopDatabaseImplement/FlowerShopDatabaseImplement.csproj
index 43c2b67..ba493d6 100644
--- a/FlowerShopDatabaseImplement/FlowerShopDatabaseImplement.csproj
+++ b/FlowerShopDatabaseImplement/FlowerShopDatabaseImplement.csproj
@@ -7,6 +7,7 @@
+
diff --git a/FlowerShopDatabaseImplement/Order.cs b/FlowerShopDatabaseImplement/Order.cs
index 66b3063..dc5f0b8 100644
--- a/FlowerShopDatabaseImplement/Order.cs
+++ b/FlowerShopDatabaseImplement/Order.cs
@@ -11,7 +11,7 @@ using System.Text;
using System.Threading.Tasks;
using FlowerShopDataModels.Enums;
-namespace FlowerShopDatabaseImplement
+namespace FlowerShopDatabaseImplement.Models
{
public class Order : IOrderModel
{
@@ -27,7 +27,7 @@ namespace FlowerShopDatabaseImplement
public DateTime? DateImplement { get; private set; }
[Required]
public int FlowerId { get; private set; }
-
+ public virtual Flower? Flower { get; set; }
public static Order? Create(OrderBindingModel model)
{
if (model == null)
@@ -64,6 +64,7 @@ namespace FlowerShopDatabaseImplement
Status = Status,
DateCreate = DateCreate,
DateImplement = DateImplement,
+ FlowerName = Flower?.FlowerName ?? String.Empty,
Id = Id,
};
diff --git a/FlowerShopDatabaseImplement/OrderStorage.cs b/FlowerShopDatabaseImplement/OrderStorage.cs
index 6e7996b..a467e15 100644
--- a/FlowerShopDatabaseImplement/OrderStorage.cs
+++ b/FlowerShopDatabaseImplement/OrderStorage.cs
@@ -18,8 +18,8 @@ namespace FlowerShopDatabaseImplement.Implements
public List GetFullList()
{
using var context = new FlowerShopDataBase();
- return context.Orders
- .Select(x => AccessFlowerStorage(x.GetViewModel))
+ return context.Orders.Include(x => x.Flower)
+ .Select(x => x.GetViewModel)
.ToList();
}
public List GetFilteredList(OrderSearchModel model)
@@ -29,9 +29,9 @@ namespace FlowerShopDatabaseImplement.Implements
return new();
}
using var context = new FlowerShopDataBase();
- return context.Orders
+ return context.Orders.Include(x => x.Flower)
.Where(x => x.Id == model.Id)
- .Select(x => AccessFlowerStorage(x.GetViewModel))
+ .Select(x => x.GetViewModel)
.ToList();
}
public OrderViewModel? GetElement(OrderSearchModel model)
@@ -41,7 +41,7 @@ namespace FlowerShopDatabaseImplement.Implements
return null;
}
using var context = new FlowerShopDataBase();
- return AccessFlowerStorage(context.Orders.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel);
+ return context.Orders.Include(x => x.Flower).FirstOrDefault(x => x.Id == model.Id)?.GetViewModel;
}
public OrderViewModel? Insert(OrderBindingModel model)
{
@@ -53,12 +53,12 @@ namespace FlowerShopDatabaseImplement.Implements
using var context = new FlowerShopDataBase();
context.Orders.Add(newOrder);
context.SaveChanges();
- return AccessFlowerStorage(newOrder.GetViewModel);
+ return newOrder.GetViewModel;
}
public OrderViewModel? Update(OrderBindingModel model)
{
using var context = new FlowerShopDataBase();
- var order = context.Orders.FirstOrDefault(x => x.Id ==
+ var order = context.Orders.Include(x => x.Flower).FirstOrDefault(x => x.Id ==
model.Id);
if (order == null)
{
@@ -66,36 +66,20 @@ namespace FlowerShopDatabaseImplement.Implements
}
order.Update(model);
context.SaveChanges();
- return AccessFlowerStorage(order.GetViewModel);
+ return order.GetViewModel;
}
public OrderViewModel? Delete(OrderBindingModel model)
{
using var context = new FlowerShopDataBase();
- var element = context.Orders.FirstOrDefault(rec => rec.Id ==
+ var element = context.Orders.Include(x => x.Flower).FirstOrDefault(rec => rec.Id ==
model.Id);
if (element != null)
{
context.Orders.Remove(element);
context.SaveChanges();
- return AccessFlowerStorage(element.GetViewModel);
+ return element.GetViewModel;
}
return null;
}
-
- public static OrderViewModel AccessFlowerStorage(OrderViewModel model)
- {
- if (model == null)
- return null;
- using var context = new FlowerShopDataBase();
- foreach (var flower in context.Flowers)
- {
- if (flower.Id == model.FlowerId)
- {
- model.FlowerName = flower.FlowerName;
- break;
- }
- }
- return model;
- }
}
}
diff --git a/FlowerShopFileImplement/FlowerShopFileImplement.csproj b/FlowerShopFileImplement/FlowerShopFileImplement.csproj
index ca6fa62..a2d5f45 100644
--- a/FlowerShopFileImplement/FlowerShopFileImplement.csproj
+++ b/FlowerShopFileImplement/FlowerShopFileImplement.csproj
@@ -6,6 +6,10 @@
enable
+
+
+
+
diff --git a/FlowerShopListImplement/FlowerShopListImplement.csproj b/FlowerShopListImplement/FlowerShopListImplement.csproj
index ca6fa62..a2d5f45 100644
--- a/FlowerShopListImplement/FlowerShopListImplement.csproj
+++ b/FlowerShopListImplement/FlowerShopListImplement.csproj
@@ -6,6 +6,10 @@
enable
+
+
+
+
diff --git a/ProjectFlowerShop/ProjectFlowerShop.csproj b/ProjectFlowerShop/ProjectFlowerShop.csproj
index 5116ff2..e7c6257 100644
--- a/ProjectFlowerShop/ProjectFlowerShop.csproj
+++ b/ProjectFlowerShop/ProjectFlowerShop.csproj
@@ -9,6 +9,7 @@
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
| | |