From ed19ff8837967abc09895673e30323042fbe61a8 Mon Sep 17 00:00:00 2001 From: Ctepa Date: Fri, 20 Dec 2024 13:55:03 +0400 Subject: [PATCH] jj --- Publication/Entites/PrintingHouseOrders.cs | 2 ++ Publication/Entites/PrintingHouses.cs | 5 ++-- .../PrintingHouseRepository.cs | 29 +++++++++++++++---- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Publication/Entites/PrintingHouseOrders.cs b/Publication/Entites/PrintingHouseOrders.cs index 68923cf..609437e 100644 --- a/Publication/Entites/PrintingHouseOrders.cs +++ b/Publication/Entites/PrintingHouseOrders.cs @@ -5,6 +5,8 @@ public class PrintingHouseOrders public int PrintingHouseId { get; set; } public int OrderId { get; set; } public int Count { get; set; } + + public string OrderInfo { get; set; } public static PrintingHouseOrders CreateEntity(int id, int orderId, int count) { return new PrintingHouseOrders { PrintingHouseId = id, OrderId = orderId, Count = count }; diff --git a/Publication/Entites/PrintingHouses.cs b/Publication/Entites/PrintingHouses.cs index 736a3a2..5e9a4c6 100644 --- a/Publication/Entites/PrintingHouses.cs +++ b/Publication/Entites/PrintingHouses.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using Unity; using System.ComponentModel; +using Publication.Entites.Enums; namespace Publication.Entites; @@ -22,7 +23,7 @@ public class PrintingHouses public int MaterialsId { get; set; } [DisplayName("Материалы")] - public string MaterialName { get; set; } = string.Empty; + public TypeMaterials MaterialName { get; set; } [DisplayName("Название")] public DateTime Date { get; set; } @@ -32,7 +33,7 @@ public class PrintingHouses [DisplayName("Заказы")] public string Orders => printingHouseOrder != null ? - string.Join(", ", printingHouseOrder.Select(x => $"{x.} {x.Count}")) : string.Empty; + string.Join(", ", printingHouseOrder.Select(x => $"{x.OrderInfo} {x.Count}")) : string.Empty; public static PrintingHouses CreateEntity(int id, string title, string phone, string address,int materialsId, IEnumerable printingHouseOrders) { diff --git a/Publication/Repositories/Implementations/PrintingHouseRepository.cs b/Publication/Repositories/Implementations/PrintingHouseRepository.cs index 1177790..3a39c71 100644 --- a/Publication/Repositories/Implementations/PrintingHouseRepository.cs +++ b/Publication/Repositories/Implementations/PrintingHouseRepository.cs @@ -4,6 +4,7 @@ using Npgsql; using Publication.Entites; using Dapper; using Unity; +using static System.Runtime.InteropServices.JavaScript.JSType; namespace Publication.Repositories.Implementations; @@ -76,16 +77,32 @@ public class PrintingHouseRepository : IPrintingHouseRepository try { using var connection = new NpgsqlConnection(connectionRepository.GetConnection); - var querySelect = @"SELECT ph.*, pho.OrderId, pho.Count, mt.material AS MaterialName + var querySelect = @"SELECT ph.*, pho.OrderId, pho.Count, mt.material, Orders.description AS OrderInfo, + FROM PrintingHouses ph INNER JOIN PrintingHouseOrders pho ON pho.PrintingHouseId = ph.Id - INNER JOIN Material mt ON ph.materialsId = mt.Id"; - var printingHouses = connection.Query(querySelect); + INNER JOIN Material mt ON ph.materialsId = mt.Id + INNER JOIN Orders ON Orders.id = pho.orderid"; + var printingHousesDict = new Dictionary>(); + var printingHouses = connection.Query(querySelect, + (printingHouses, printingHouseOrders) => + { + if (!printingHousesDict.TryGetValue(printingHouses.Id, out var pr)) + { + pr = []; + printingHousesDict.Add(printingHouses.Id, pr); + } + pr.Add(printingHouseOrders); + return printingHouses; + }, splitOn: "OrderId", param: new { dateForm, dateTo, productID }); logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(printingHouses)); - return printingHouses.GroupBy(x => x.Id, y => y, - (key, value) => PrintingHouses.CreateEntity(value.First(), - value.Select(z => PrintingHouseOrders.CreateEntity(z.Id, z.OrderId, z.Count)))).ToList(); + return printingHousesDict.Select(x => + { + var ph = printingHouses.First(y => y.Id == x.Key); + ph.SetPrintingHouseOrder(x.Value); + return ph; + }).ToArray(); } catch (Exception ex) {