diff --git a/ProjectPublishing/ProjectPublishing/Entities/Order.cs b/ProjectPublishing/ProjectPublishing/Entities/Order.cs index e35107b..0d9a1e9 100644 --- a/ProjectPublishing/ProjectPublishing/Entities/Order.cs +++ b/ProjectPublishing/ProjectPublishing/Entities/Order.cs @@ -24,11 +24,26 @@ namespace ProjectPublishing.Entities public int PrintingId { get; private set; } - public List Materials { get; private set; } + public IEnumerable Materials { get; private set; } = []; - public static Order CreateOrder(int id, string description, ProductType productType, int amount, OrderStatus status, int customerId, int printingId, List materials) + public static Order CreateOrder(int id, string description, ProductType productType, int amount, OrderStatus status, int customerId, int printingId, IEnumerable materials) { return new Order { ProductType = productType, Id = id, Amount = amount, Status = status, CustomerId = customerId, PrintingId = printingId, Materials = materials, OrderDate = DateTime.Now, Description = description ?? string.Empty }; } + + public static Order CreateOrder(TempOrderMaterials tempOrderMaterials, IEnumerable materials) + { + return new Order + { + ProductType = tempOrderMaterials.ProductType, + Id = tempOrderMaterials.Id, + Amount = tempOrderMaterials.Amount, + Status = tempOrderMaterials.Status, + CustomerId = tempOrderMaterials.CustomerId, + PrintingId = tempOrderMaterials.PrintingId, + Materials = materials, + OrderDate = DateTime.Now, + Description = tempOrderMaterials.Description ?? string.Empty }; + } } } diff --git a/ProjectPublishing/ProjectPublishing/Entities/TempOrderMaterials.cs b/ProjectPublishing/ProjectPublishing/Entities/TempOrderMaterials.cs new file mode 100644 index 0000000..8eca561 --- /dev/null +++ b/ProjectPublishing/ProjectPublishing/Entities/TempOrderMaterials.cs @@ -0,0 +1,32 @@ +using ProjectPublishing.Entities.Enums; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectPublishing.Entities +{ + public class TempOrderMaterials + { + public int Id { get; private set; } + + public DateTime OrderDate { get; private set; } + + public string Description { get; private set; } + + public ProductType ProductType { get; private set; } + + public int Amount { get; private set; } + + public OrderStatus Status { get; private set; } + + public int CustomerId { get; private set; } + + public int PrintingId { get; private set; } + + public int MaterialsId { get; private set; } + + public int MaterialsAmount { get; private set; } + } +} diff --git a/ProjectPublishing/ProjectPublishing/Reports/TableReport.cs b/ProjectPublishing/ProjectPublishing/Reports/TableReport.cs index d48b4f8..d7cd7d7 100644 --- a/ProjectPublishing/ProjectPublishing/Reports/TableReport.cs +++ b/ProjectPublishing/ProjectPublishing/Reports/TableReport.cs @@ -1,4 +1,5 @@ using Microsoft.Extensions.Logging; +using Newtonsoft.Json; using ProjectPublishing.Repositories; using System; using System.Collections.Generic; @@ -63,7 +64,7 @@ namespace ProjectPublishing.Reports CountOut = (int?)m.Amount }))) .OrderBy(x => x.Date); - + _logger.LogDebug("Объединенные данные в отчет: {json}", JsonConvert.SerializeObject(data)); return new List { item } .Union( data.Select(x => new string[] { diff --git a/ProjectPublishing/ProjectPublishing/Repositories/Implementations/OrderRepository.cs b/ProjectPublishing/ProjectPublishing/Repositories/Implementations/OrderRepository.cs index d921cc0..ad5085f 100644 --- a/ProjectPublishing/ProjectPublishing/Repositories/Implementations/OrderRepository.cs +++ b/ProjectPublishing/ProjectPublishing/Repositories/Implementations/OrderRepository.cs @@ -86,10 +86,16 @@ WHERE Id=@id"; try { using var connection = new NpgsqlConnection(_connectionString.ConnectionString); - var querySelect = "SELECT * FROM PrintingOrder"; // возможно сюда фикс - var printingOrders = connection.Query(querySelect); + var querySelect = @" +SELECT o.*, ma.MaterialId +FROM PrintingOrder o +LEFT JOIN OrderMaterials ma ON o.Id = ma.OrderId +"; // возможно сюда фикс + var printingOrders = connection.Query(querySelect); _logger.LogDebug("Полученные объекты: {json}", JsonConvert.SerializeObject(printingOrders)); - return printingOrders; + + 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(); } catch (Exception ex) {