diff --git a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs index d7dcf78..78e9b2d 100644 --- a/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Controllers/FruitBankDataController.cs @@ -219,6 +219,50 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers return await ctx.CargoTrucks.GetByIdAsync(cargoTruck.Id, true); } + [SignalR(SignalRTags.GetPartnerDepots)] + public async Task> GetPartnerDepots() + { + _logger.Detail($"GetPartnerDepots invoked"); + + return await ctx.PartnerDepots.GetAll(true).ToListAsync(); + } + + [SignalR(SignalRTags.GetPartnerDepotById)] + public async Task GetPartnerDepotById(int id) + { + _logger.Detail($"GetPartnerDepotById invoked; id: {id}"); + return await ctx.PartnerDepots.GetByIdAsync(id, true); + } + + [SignalR(SignalRTags.GetPartnerDepotsByPartnerId)] + public async Task> GetPartnerDepotsByPartnerId(int partnerId) + { + _logger.Detail($"GetPartnerDepotsByPartnerId invoked; partnerId: {partnerId}"); + return await ctx.PartnerDepots.GetByPartnerId(partnerId, true).ToListAsync(); + } + + [SignalR(SignalRTags.AddPartnerDepot)] + public async Task AddPartnerDepot(PartnerDepot partnerDepot) + { + ArgumentNullException.ThrowIfNull(partnerDepot); + + _logger.Detail($"AddPartnerDepot invoked; id: {partnerDepot.Id}"); + + await ctx.PartnerDepots.InsertAsync(partnerDepot); + return await ctx.PartnerDepots.GetByIdAsync(partnerDepot.Id, true); + } + + [SignalR(SignalRTags.UpdatePartnerDepot)] + public async Task UpdatePartnerDepot(PartnerDepot partnerDepot) + { + ArgumentNullException.ThrowIfNull(partnerDepot); + + _logger.Detail($"UpdatePartnerDepot invoked; id: {partnerDepot.Id}"); + + await ctx.PartnerDepots.UpdateAsync(partnerDepot); + return await ctx.PartnerDepots.GetByIdAsync(partnerDepot.Id, true); + } + [SignalR(SignalRTags.GetShippings)] public async Task> GetShippings() { diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs index 4186529..f3b9ffc 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs @@ -55,6 +55,7 @@ public class FruitBankDbContext : MgDbContextBase, public OrderItemDtoDbTable OrderItemDtos { get; set; } public PartnerDbTable Partners { get; set; } + public PartnerDepotDbTable PartnerDepots { get; set; } public CargoPartnerDbTable CargoPartners { get; set; } public CargoTruckDbTable CargoTrucks{ get; set; } @@ -81,7 +82,7 @@ public class FruitBankDbContext : MgDbContextBase, public IRepository StockQuantityHistoriesExt { get; set; } public FruitBankDbContext(INopDataProvider dataProvider, ILockService lockService, FruitBankAttributeService fruitBankAttributeService, IStoreContext storeContext, - CargoPartnerDbTable cargoPartnerDbTable, CargoTruckDbTable cargoTruckDbTable, PartnerDbTable partnerDbTable, ShippingDbTable shippingDbTable, ShippingDocumentDbTable shippingDocumentDbTable, ShippingItemDbTable shippingItemDbTable, + CargoPartnerDbTable cargoPartnerDbTable, CargoTruckDbTable cargoTruckDbTable, PartnerDbTable partnerDbTable, PartnerDepotDbTable partnerDepotDbTable, ShippingDbTable shippingDbTable, ShippingDocumentDbTable shippingDocumentDbTable, ShippingItemDbTable shippingItemDbTable, ShippingItemPalletDbTable shippingItemPalletDbTable, FilesDbTable filesDbTable, ShippingDocumentToFilesDbTable shippingDocumentToFilesDbTable, ProductDtoDbTable productDtoDbTable, OrderDtoDbTable orderDtoDbTable, OrderItemDtoDbTable orderItemDtoDbTable, OrderItemPalletDbTable orderItemPalletDbTable, StockQuantityHistoryDtoDbTable stockQuantityHistoryDtos, CustomerCreditDbTable customerCreditDbTable, @@ -108,6 +109,7 @@ public class FruitBankDbContext : MgDbContextBase, Files = filesDbTable; Partners = partnerDbTable; + PartnerDepots = partnerDepotDbTable; CargoPartners = cargoPartnerDbTable; CargoTrucks = cargoTruckDbTable; diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/PartnerDbTable.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/PartnerDbTable.cs index 15444e4..b768bc1 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/PartnerDbTable.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/PartnerDbTable.cs @@ -22,9 +22,10 @@ public class PartnerDbTable : MgDbTableBase { return loadRelations ? GetAll() - .LoadWith(sd => sd.ShippingDocuments).ThenLoad(s => s.Shipping) - .LoadWith(sd => sd.ShippingDocuments).ThenLoad(si => si.ShippingItems).ThenLoad(sip => sip.ShippingItemPallets) - .LoadWith(sd => sd.ShippingDocuments).ThenLoad(sdtof => sdtof.ShippingDocumentToFiles).ThenLoad(f => f.ShippingDocumentFile) + .LoadWith(p => p.PartnerDepots) + .LoadWith(p => p.ShippingDocuments).ThenLoad(sd => sd.Shipping) + .LoadWith(p => p.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.ShippingItemPallets) + .LoadWith(p => p.ShippingDocuments).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile) : GetAll(); } diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/PartnerDepotDbTable.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/PartnerDepotDbTable.cs new file mode 100644 index 0000000..83d0c63 --- /dev/null +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/PartnerDepotDbTable.cs @@ -0,0 +1,27 @@ +using FruitBank.Common.Entities; +using LinqToDB; +using Mango.Nop.Data.Repositories; +using Nop.Core.Caching; +using Nop.Core.Configuration; +using Nop.Core.Events; +using Nop.Data; + +namespace Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; + +public class PartnerDepotDbTable : MgDbTableBase +{ + public PartnerDepotDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings) + : base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings) + { + } + + public override IOrderedQueryable GetAll() => base.GetAll().OrderBy(p => p.PartnerId); + + public IQueryable GetAll(bool loadRelations) + { + return loadRelations ? GetAll().LoadWith(sd => sd.Partner) : GetAll(); + } + + public Task GetByIdAsync(int id, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(p => p.Id == id); + public IQueryable GetByPartnerId(int partnerId, bool loadRelations) => GetAll(loadRelations).Where(p => p.PartnerId == partnerId); +} diff --git a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs index 9c11b76..20a7476 100644 --- a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs +++ b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs @@ -83,6 +83,7 @@ public class PluginNopStartup : INopStartup 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 ee7dc2f..e9d6ba0 100644 --- a/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs +++ b/Nop.Plugin.Misc.AIPlugin/Mapping/NameCompatibility.cs @@ -49,6 +49,9 @@ public partial class NameCompatibility : INameCompatibility { typeof(CargoPartner), FruitBankConstClient.CargoPartnerDbTableName}, { typeof(CargoTruck), FruitBankConstClient.CargoTruckDbTableName}, + + { typeof(PartnerDepot), FruitBankConstClient.PartnerDepotDbTableName}, + { typeof(EkaerHistory), FruitBankConstClient.EkaerHistoryDbTableName}, };