diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs index ae8ae70..5b9c5c3 100644 --- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs @@ -18,27 +18,6 @@ using Nop.Web.Framework.Mvc.Filters; namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers { - public class CustomOrderSignalREndpoint(FruitBankDbContext ctx) : ICustomOrderSignalREndpointServer - { - [SignalR(SignalRTags.GetAllOrderDtos)] - public async Task> GetAllOrderDtos() - { - return await ctx.OrderDtos.GetAllDtos().ToListAsync(); - } - - [SignalR(SignalRTags.GetOrderDtoById)] - public async Task GetOrderDtoById(int orderId) - { - return await ctx.OrderDtos.GetDtoByIdAsync(orderId); - } - - [SignalR(SignalRTags.GetPendingOrderDtos)] - public async Task> GetPendingOrderDtos() - { - return await ctx.OrderDtos.GetAllByStatusDto(OrderStatus.Pending).ToListAsync(); - } - } - [Area(AreaNames.ADMIN)] [AuthorizeAdmin] public class CustomOrderController : BaseAdminController, ICustomOrderSignalREndpointServer diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderSignalREndpoint.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderSignalREndpoint.cs new file mode 100644 index 0000000..b4de584 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderSignalREndpoint.cs @@ -0,0 +1,29 @@ +using AyCode.Services.SignalRs; +using FruitBank.Common.Dtos; +using FruitBank.Common.Server.Interfaces; +using FruitBank.Common.SignalRs; +using Nop.Core.Domain.Orders; +using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers; + +public class CustomOrderSignalREndpoint(FruitBankDbContext ctx) : ICustomOrderSignalREndpointServer +{ + [SignalR(SignalRTags.GetAllOrderDtos)] + public async Task> GetAllOrderDtos() + { + return await ctx.OrderDtos.GetAllDtos().ToListAsync(); + } + + [SignalR(SignalRTags.GetOrderDtoById)] + public async Task GetOrderDtoById(int orderId) + { + return await ctx.OrderDtos.GetDtoByIdAsync(orderId); + } + + [SignalR(SignalRTags.GetPendingOrderDtos)] + public async Task> GetPendingOrderDtos() + { + return await ctx.OrderDtos.GetAllByStatusDto(OrderStatus.Pending).ToListAsync(); + } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/Interfaces/IOrderDtoDbSet.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/Interfaces/IOrderDtoDbSet.cs index bf36515..d935195 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/Interfaces/IOrderDtoDbSet.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/Interfaces/IOrderDtoDbSet.cs @@ -1,10 +1,11 @@ -using Mango.Nop.Core.Interfaces; +using FruitBank.Common.Dtos; +using Mango.Nop.Core.Interfaces; using Nop.Core.Domain.Orders; using Nop.Data; namespace Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer.Interfaces; -public interface IOrderDtoDbSet : IMgDbTableBase where TDbTable : IRepository +public interface IOrderDtoDbSet : IMgDbTableBase where TDbTable : IRepository { public TDbTable OrderDtos { get; set; } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/OrderDtoDbTable.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/OrderDtoDbTable.cs index 6f6cb0b..e1204e9 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/OrderDtoDbTable.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/OrderDtoDbTable.cs @@ -12,7 +12,7 @@ using Nop.Services.Logging; namespace Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; -public class OrderDtoDbTable : MgDbTableBase +public class OrderDtoDbTable : MgDbTableBase { public OrderDtoDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings, ILogger logger) : base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings, logger) @@ -21,14 +21,18 @@ public class OrderDtoDbTable : MgDbTableBase public IQueryable GetAllDtos() { - return GetAll().Select(o => new OrderDto(o)); + return GetAll() + .LoadWith(o => o.GenericAttributes) + .LoadWith(o => o.OrderItemDtos).ThenLoad(oi => oi.ProductDto) + .LoadWith(o => o.OrderItemDtos).ThenLoad(oi => oi.GenericAttributes) + .LoadWith(o => o.OrderItemDtos).ThenLoad(oi => oi.OrderItemPallets); } public Task GetDtoByIdAsync(int orderId) { - return GetAll().Where(x => x.Id == orderId).Select(o => new OrderDto(o)).FirstOrDefaultAsync(null); + return GetAllDtos().Where(x => x.Id == orderId).FirstOrDefaultAsync(null); } public IQueryable GetAllByStatusDto(OrderStatus orderStatus) - => GetAll().Where(o => o.OrderStatusId == (int)orderStatus).Select(o => new OrderDto(o)); + => GetAllDtos().Where(o => o.OrderStatusId == (int)orderStatus); } diff --git a/Nop.Plugin.Misc.AIPlugin/Factories/CustomOrderModelFactory.cs b/Nop.Plugin.Misc.AIPlugin/Factories/CustomOrderModelFactory.cs index 4478b65..3783369 100644 --- a/Nop.Plugin.Misc.AIPlugin/Factories/CustomOrderModelFactory.cs +++ b/Nop.Plugin.Misc.AIPlugin/Factories/CustomOrderModelFactory.cs @@ -174,12 +174,8 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Factories public async Task PrepareOrderListModelExtendedAsync(OrderSearchModel searchModel) { var orderListModel = await PrepareOrderListModelAsync(searchModel); - - var orderListModelExtended = new OrderListModelExtended(); var extendedRows = new List(orderListModel.RecordsFiltered); - PropertyHelper.CopyPublicValueTypeProperties(orderListModel, orderListModelExtended); - foreach (var orderModel in orderListModel.Data) { var orderModelExtended = new OrderModelExtended(); @@ -190,8 +186,12 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Factories Console.WriteLine(orderModelExtended.Id); extendedRows.Add(orderModelExtended); } - + + orderListModel.Data = null; + + var orderListModelExtended = orderListModel.ToJson().JsonTo(); orderListModelExtended.Data = extendedRows; + return orderListModelExtended; } diff --git a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs index 0cdde7f..b1b5ab4 100644 --- a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs +++ b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs @@ -77,10 +77,10 @@ public class PluginNopStartup : INopStartup services.AddScoped, EventConsumer>(); services.AddScoped(); services.AddScoped(); - - services.AddScoped, OrderListModelExtended>(); - services.AddScoped(); - services.AddScoped(); + + //services.AddScoped(); + //services.AddScoped(); + //services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs b/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs index 9ba4d8e..487ab3d 100644 --- a/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs +++ b/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs @@ -1,6 +1,8 @@ using FruitBank.Common; using FruitBank.Common.Dtos; using FruitBank.Common.Entities; +using Nop.Core.Domain.Catalog; +using Nop.Core.Domain.Orders; using Nop.Data.Mapping; namespace Nop.Plugin.Misc.FruitBankPlugin.Mapping; @@ -12,7 +14,10 @@ public partial class NameCompatibility : INameCompatibility /// public Dictionary TableNames => new Dictionary { - //{ typeof(OrderDto), "Order"}, + { typeof(ProductDto), nameof(Product)}, + { typeof(OrderDto), nameof(Order)}, + { typeof(OrderItemDto), nameof(OrderItem)}, + { typeof(Pallet), FruitBankConstClient.PalletDbTableName}, { typeof(Files), FruitBankConstClient.FilesDbTableName}, { typeof(Partner), FruitBankConstClient.PartnerDbTableName },