diff --git a/ProjectPublishing/ProjectPublishing/Entities/Order.cs b/ProjectPublishing/ProjectPublishing/Entities/Order.cs index db2a7c9..6c70cd3 100644 --- a/ProjectPublishing/ProjectPublishing/Entities/Order.cs +++ b/ProjectPublishing/ProjectPublishing/Entities/Order.cs @@ -63,5 +63,15 @@ namespace ProjectPublishing.Entities OrderDate = DateTime.Now, Description = tempOrderMaterials.Description ?? string.Empty }; } + + public void SetOrderMaterials(IEnumerable orderMaterials) + { + if (orderMaterials != null && orderMaterials.Any()) + { + Materials = orderMaterials; + } + } + + } } diff --git a/ProjectPublishing/ProjectPublishing/Repositories/Implementations/OrderRepository.cs b/ProjectPublishing/ProjectPublishing/Repositories/Implementations/OrderRepository.cs index 3df328f..0f5f4f5 100644 --- a/ProjectPublishing/ProjectPublishing/Repositories/Implementations/OrderRepository.cs +++ b/ProjectPublishing/ProjectPublishing/Repositories/Implementations/OrderRepository.cs @@ -10,6 +10,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using static System.Runtime.InteropServices.JavaScript.JSType; namespace ProjectPublishing.Repositories.Implementations { @@ -89,8 +90,8 @@ WHERE Id=@id"; using var connection = new NpgsqlConnection(_connectionString.ConnectionString); var querySelect = @" SELECT o.*, -ma.MaterialId as MaterialsId, ma.Amount as MaterialsAmount, +ma.MaterialId as MaterialsId, CONCAT(c.LastName, ' ', c.FirstName) as CustomerName, ph.Name as PrintingName FROM PrintingOrder o @@ -98,11 +99,28 @@ LEFT JOIN OrderMaterials ma ON o.Id = ma.OrderId LEFT JOIN Customer c ON o.CustomerId = c.Id LEFT JOIN PrintingHouse ph ON o.PrintingId = ph.Id "; // возможно сюда фикс - var printingOrders = connection.Query(querySelect); - _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(printingOrders)); + //var printingOrders = connection.Query(querySelect); + var ordersDict = new Dictionary>(); + var orders = connection.Query(querySelect, + (order, orderMaterials) => + { + if (!ordersDict.TryGetValue(order.Id, out var frr)) + { + frr = []; + ordersDict.Add(order.Id,frr); + } - return printingOrders.GroupBy(x => x.Id, y => y, (key, value) => - Order.CreateOrder(value.First(), value.Select(z => OrderMaterials.Create(0, z.MaterialsId, z.MaterialsAmount)))).ToList(); + frr.Add(orderMaterials); + return order; + }, splitOn: "MaterialsId"); + _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(orders)); + + return ordersDict.Select(x => + { + var o = orders.First(y => y.Id == x.Key); + o.SetOrderMaterials(x.Value); + return o; + }).ToArray(); } catch (Exception ex) { diff --git a/Отчеты/otp-doc.docx b/Отчеты/otp-doc.docx new file mode 100644 index 0000000..7c5b767 Binary files /dev/null and b/Отчеты/otp-doc.docx differ diff --git a/Отчеты/otp-pdf.pdf b/Отчеты/otp-pdf.pdf new file mode 100644 index 0000000..56b83de Binary files /dev/null and b/Отчеты/otp-pdf.pdf differ diff --git a/Отчеты/otp-tab.xlsx b/Отчеты/otp-tab.xlsx new file mode 100644 index 0000000..cc13cbf Binary files /dev/null and b/Отчеты/otp-tab.xlsx differ