diff --git a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs index 69530fc..a0a6748 100644 --- a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs @@ -11,6 +11,7 @@ using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers { + //https://linq2db.github.io/articles/sql/Join-Operators.html public class FruitBankDataController(FruitBankDbContext ctx, IEnumerable logWriters): Controller, IFruitBankDataControllerServer { private readonly ILogger _logger = new Logger(logWriters.ToArray()); @@ -25,7 +26,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers [SignalR(SignalRTags.GetMeasuringModelByShippingId)] public async Task GetMeasuringModelByShippingId(int shippingId) { - throw new NotImplementedException("GetMeasuringModelByShippingId"); + return await ctx.GetMeasuringModelByShippingId(shippingId); } [SignalR(SignalRTags.GetPartners)] diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs index deea043..18a5b13 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs @@ -1,4 +1,5 @@ -using Mango.Nop.Core.Repositories; +using FruitBank.Common.Models; +using Mango.Nop.Core.Repositories; using Nop.Core.Caching; using Nop.Data; using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer.Interfaces; @@ -7,29 +8,42 @@ using Nop.Services.Logging; namespace Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; -public class FruitBankDbContext : MgDbContextBase, IPartnerDbSet, IShippingDbSet +public class FruitBankDbContext : MgDbContextBase, IPartnerDbSet, IShippingDbSet, IShippingItemDbSet { private readonly IProductService _productService; private readonly IStaticCacheManager _staticCacheManager; public PartnerDbTable Partners { get; set; } public ShippingDbTable Shippings { get; set; } + public ShippingItemDbTable ShippingItems { get; set; } //public EntityRepository Auctions2 { get; set; } //public IRepository AuctionBids2 { get; set; } - public FruitBankDbContext(INopDataProvider dataProvider, PartnerDbTable partnerDbTable, ShippingDbTable shippingDbTable, IProductService productService, IStaticCacheManager staticCacheManager, ILogger logger) : base(dataProvider, logger) + public FruitBankDbContext(INopDataProvider dataProvider, PartnerDbTable partnerDbTable, ShippingDbTable shippingDbTable, ShippingItemDbTable shippingItemDbTable, IProductService productService, IStaticCacheManager staticCacheManager, ILogger logger) : base(dataProvider, logger) { _productService = productService; _staticCacheManager = staticCacheManager; Partners = partnerDbTable; Shippings = shippingDbTable; + ShippingItems = shippingItemDbTable; //Auctions.Table //var auctions = DataProvider.GetTable().Where(x => x.Closed); } + public async Task GetMeasuringModelByShippingId(int shippingId) + { + var query = + from p in Partners.Table + join s in Shippings.Table on p.Id equals s.PartnerId + where s.Id == shippingId + select new MeasuringModel(p.Name); + + return await query.FirstOrDefaultAsync(); + } + ////public AuctionDbContext(IRepository _auctionRepository, IRepository _auctionBidRepository) ////{ //// Auctions2 = _auctionRepository as EntityRepository; diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/Interfaces/IShippingItemDbSet.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/Interfaces/IShippingItemDbSet.cs new file mode 100644 index 0000000..31d4793 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/Interfaces/IShippingItemDbSet.cs @@ -0,0 +1,10 @@ +using FruitBank.Common.Entities; +using Mango.Nop.Core.Interfaces; +using Nop.Data; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer.Interfaces; + +public interface IShippingItemDbSet : IMgDbTableBase where TDbTable : IRepository +{ + public TDbTable ShippingItems { get; set; } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingItemDbTable.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingItemDbTable.cs new file mode 100644 index 0000000..7a1c164 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingItemDbTable.cs @@ -0,0 +1,17 @@ +using FruitBank.Common.Entities; +using Mango.Nop.Core.Repositories; +using Nop.Core.Caching; +using Nop.Core.Configuration; +using Nop.Core.Events; +using Nop.Data; +using Nop.Services.Logging; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; + +public class ShippingItemDbTable : MgDbTableBase +{ + public ShippingItemDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings, ILogger logger) + : base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings, logger) + { + } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs index fa43257..d7c5903 100644 --- a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs +++ b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs @@ -44,6 +44,7 @@ public class PluginNopStartup : INopStartup services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddScoped(); services.AddScoped();