From b5057b9a4d2c122c1f764459f719a797c781e046 Mon Sep 17 00:00:00 2001 From: Loretta Date: Fri, 21 Nov 2025 16:29:12 +0100 Subject: [PATCH] improvements --- .../Controllers/FruitBankDataController.cs | 35 ++++++++++++++++++- .../DataLayer/ShippingDocumentDbTable.cs | 11 ++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs index 38d33bd..4b03e32 100644 --- a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs @@ -115,6 +115,17 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers return await ctx.Shippings.GetByIdAsync(id, true); } + [SignalR(SignalRTags.AddShipping)] + public async Task AddShipping(Shipping shipping) + { + ArgumentNullException.ThrowIfNull(shipping); + + _logger.Detail($"AddShipping invoked; id: {shipping.Id}"); + + await ctx.Shippings.InsertAsync(shipping); + return await ctx.Shippings.GetByIdAsync(shipping.Id, true); + } + [SignalR(SignalRTags.UpdateShipping)] public async Task UpdateShipping(Shipping shipping) { @@ -123,7 +134,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers _logger.Detail($"UpdateShipping invoked; id: {shipping.Id}"); await ctx.Shippings.UpdateAsync(shipping); - return await ctx.Shippings.GetByIdAsync(shipping.Id, shipping.ShippingDocuments != null); + return await ctx.Shippings.GetByIdAsync(shipping.Id, true); } [SignalR(SignalRTags.GetShippingItems)] @@ -261,6 +272,28 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers return await ctx.ShippingDocuments.GetByIdAsync(id, true); } + [SignalR(SignalRTags.GetShippingDocumentsByShippingId)] + public async Task> GetShippingDocumentsByShippingId(int shippingId) + { + _logger.Detail($"GetShippingDocumentsByShippingId invoked; shippingId: {shippingId}"); + + return await ctx.ShippingDocuments.GetAllByShippingIdAsync(shippingId, true).ToListAsync(); + } + [SignalR(SignalRTags.GetShippingDocumentsByProductId)] + public async Task> GetShippingDocumentsByProductId(int productId) + { + _logger.Detail($"GetShippingDocumentsByProductId invoked; productId: {productId}"); + + return await ctx.ShippingDocuments.GetAllByProductIdAsync(productId, true).ToListAsync(); + } + [SignalR(SignalRTags.GetShippingDocumentsByPartnerId)] + public async Task> GetShippingDocumentsByPartnerId(int partnerId) + { + _logger.Detail($"GetShippingDocumentsByPartnerId invoked; partnerId: {partnerId}"); + + return await ctx.ShippingDocuments.GetAllByPartnerIdAsync(partnerId, true).ToListAsync(); + } + [SignalR(SignalRTags.AddShippingDocument)] public async Task AddShippingDocument(ShippingDocument shippingDocument) { diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingDocumentDbTable.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingDocumentDbTable.cs index 50ce936..c02f3b5 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingDocumentDbTable.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingDocumentDbTable.cs @@ -38,4 +38,15 @@ public class ShippingDocumentDbTable : MgDbTableBase public Task GetByIdAsync(int id, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(sd => sd.Id == id); + + public IQueryable GetAllByShippingIdAsync(int shippingId, bool loadRelations) + => GetAll(loadRelations).Where(sd => sd.ShippingId == shippingId); + + public IQueryable GetAllByProductIdAsync(int productId, bool loadRelations) + => GetAll(loadRelations).Where(sd => sd.ShippingItems.Any(si => si.ProductId == productId)); + + public IQueryable GetAllByPartnerIdAsync(int partnerId, bool loadRelations) + => GetAll(loadRelations).Where(sd => sd.PartnerId == partnerId); + + } \ No newline at end of file