From efe66eaa88779d889c8c9e6534b981c0e7bde494 Mon Sep 17 00:00:00 2001 From: Loretta Date: Fri, 12 Sep 2025 13:34:54 +0200 Subject: [PATCH] improvement, fixes, etc... --- .../Controllers/FruitBankDataController.cs | 50 +++++++++++++++++-- .../Domains/DataLayer/FruitBankDbContext.cs | 5 +- .../Domains/DataLayer/ShippingDbTable.cs | 20 ++++++++ 3 files changed, 68 insertions(+), 7 deletions(-) diff --git a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs index a80fe3c..fee1398 100644 --- a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs @@ -6,6 +6,7 @@ using FruitBank.Common.Loggers; using FruitBank.Common.Models; using FruitBank.Common.Server; using FruitBank.Common.SignalRs; +using LinqToDB; using Mango.Nop.Core.Dtos; using Mango.Nop.Core.Models; using Nop.Core; @@ -40,7 +41,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers [SignalR(SignalRTags.GetMeasuringModelByShippingId)] public async Task GetMeasuringModelByShippingId(int shippingId) { - return await ctx.GetMeasuringModelByShippingId(shippingId).FirstOrDefaultAsync(); + return await ctx.GetMeasuringModelByShippingId(shippingId).FirstOrDefaultAsync(c => true); } [SignalR(SignalRTags.GetPartners)] @@ -79,7 +80,16 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers { _logger.Detail($"GetShippings invoked"); - return await ctx.Shippings.GetAll().ToListAsync(); + return await ctx.Shippings.GetAll(false).ToListAsync(); + //return await ctx.Shippings.Table.LoadWith(sd => sd.ShippingDocuments).ThenLoad(si => si.ShippingItems).ToListAsync(); + } + + [SignalR(SignalRTags.GetNotMeasuredShippings)] + public async Task> GetNotMeasuredShippings() + { + _logger.Detail($"GetNotMeasuredShippings invoked"); + + return await ctx.Shippings.GetNotMeasured(true).ToListAsync(); } [SignalR(SignalRTags.GetShippingById)] @@ -87,7 +97,18 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers { _logger.Detail($"GetShippingById invoked; id: {id}"); - return await ctx.Shippings.GetByIdAsync(id); + return await ctx.Shippings.GetByIdAsync(id, true); + } + + [SignalR(SignalRTags.UpdateShipping)] + public async Task UpdateShipping(Shipping shipping) + { + ArgumentNullException.ThrowIfNull(shipping); + + _logger.Detail($"UpdateShipping invoked; id: {shipping.Id}"); + + await ctx.Shippings.UpdateAsync(shipping); + return shipping; } [SignalR(SignalRTags.GetShippingItems)] @@ -106,6 +127,17 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers return await ctx.ShippingItems.GetByIdAsync(id); } + [SignalR(SignalRTags.UpdateShippingItem)] + public async Task UpdateShippingItem(ShippingItem shippingItem) + { + ArgumentNullException.ThrowIfNull(shippingItem); + + _logger.Detail($"UpdateShippingItem invoked; id: {shippingItem.Id}"); + + await ctx.ShippingItems.UpdateAsync(shippingItem); + return shippingItem; + } + [SignalR(SignalRTags.GetShippingDocuments)] public async Task> GetShippingDocuments() { @@ -122,6 +154,18 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers return await ctx.ShippingDocuments.GetByIdAsync(id); } + [SignalR(SignalRTags.UpdateShippingDocument)] + public async Task UpdateShippingDocument(ShippingDocument shippingDocument) + { + ArgumentNullException.ThrowIfNull(shippingDocument); + + _logger.Detail($"UpdateShippingDocument invoked; id: {shippingDocument.Id}"); + + await ctx.ShippingDocuments.UpdateAsync(shippingDocument); + return shippingDocument; + + } + [SignalR(SignalRTags.GetMeasuringUsers)] public async Task> GetMeasuringUsers() { diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs index d74cc69..d665aa1 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs @@ -1,8 +1,5 @@ -using DocumentFormat.OpenXml.Drawing; -using FruitBank.Common.Models; -using LinqToDB; +using FruitBank.Common.Models; using Mango.Nop.Core.Repositories; -using Microsoft.CodeAnalysis.CSharp.Syntax; using Nop.Core.Caching; using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Customers; diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingDbTable.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingDbTable.cs index c667803..e6d81b9 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingDbTable.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingDbTable.cs @@ -1,4 +1,5 @@ using FruitBank.Common.Entities; +using LinqToDB; using Mango.Nop.Core.Repositories; using Nop.Core.Caching; using Nop.Core.Configuration; @@ -14,4 +15,23 @@ public class ShippingDbTable : MgDbTableBase : base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings, logger) { } + + public override IOrderedQueryable GetAll() + => base.GetAll().OrderBy(s => s.ShippingDate); + + public IQueryable GetAll(bool loadRelations) + { + return loadRelations + ? GetAll() + .LoadWith(sd => sd.ShippingDocuments).ThenLoad(si => si.ShippingItems) + .LoadWith(sd => sd.ShippingDocuments).ThenLoad(p => p.Partner) + : GetAll(); + } + + public IQueryable GetNotMeasured(bool loadRelations) + => GetAll(loadRelations).Where(s => !s.IsAllMeasured); + + + public Task GetByIdAsync(int id, bool loadRelations) + => GetAll(loadRelations).FirstOrDefaultAsync(s => s.Id == id); } \ No newline at end of file