Add CargoPartner and CargoTruck support (API & DB)
- Introduced CargoPartnerDbTable and CargoTruckDbTable with DI registration. - Extended FruitBankDbContext for new entities. - Added CRUD SignalR endpoints for CargoPartner and CargoTruck. - Renamed PartnerDbTable.GetByIdNameAsync to GetByNameAsync. - Minor code style improvements.
This commit is contained in:
parent
8020131c0e
commit
2a8dfeaca9
|
|
@ -137,21 +137,19 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
|
|||
return await ctx.Partners.GetByIdAsync(partner.Id, partner.ShippingDocuments != null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
[SignalR(SignalRTags.GetCargoPartners)]
|
||||
public async Task<List<CargoPartner>> GetCargoPartners()
|
||||
{
|
||||
_logger.Detail($"GetCargoPartners invoked");
|
||||
|
||||
return [];// await ctx.CargoPartners.GetAll().ToListAsync();
|
||||
return await ctx.CargoPartners.GetAll().ToListAsync();
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.GetCargoPartnerById)]
|
||||
public async Task<CargoPartner> GetCargoPartnerById(int id)
|
||||
{
|
||||
_logger.Detail($"GetCargoPartnerById invoked; id: {id}");
|
||||
return null;//await ctx.CargoPartners.GetByIdAsync(id);
|
||||
return await ctx.CargoPartners.GetByIdAsync(id);
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.AddCargoPartner)]
|
||||
|
|
@ -161,8 +159,8 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
|
|||
|
||||
_logger.Detail($"AddCargoPartner invoked; id: {cargoPartner.Id}");
|
||||
|
||||
//await ctx.CargoPartners.InsertAsync(cargoPartner);
|
||||
return null;// await ctx.Partners.GetByIdAsync(cargoPartner.Id, cargoPartner.ShippingDocuments != null);
|
||||
await ctx.CargoPartners.InsertAsync(cargoPartner);
|
||||
return await ctx.CargoPartners.GetByIdAsync(cargoPartner.Id, cargoPartner.CargoTrucks != null);
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.UpdateCargoPartner)]
|
||||
|
|
@ -172,11 +170,47 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
|
|||
|
||||
_logger.Detail($"UpdateCargoPartner invoked; id: {cargoPartner.Id}");
|
||||
|
||||
//await ctx.CargoPartners.UpdateAsync(cargoPartner);
|
||||
return null;//await ctx.CargoPartners.GetByIdAsync(cargoPartner.Id, cargoPartner.ShippingDocuments != null);
|
||||
await ctx.CargoPartners.UpdateAsync(cargoPartner);
|
||||
return await ctx.CargoPartners.GetByIdAsync(cargoPartner.Id, cargoPartner.CargoTrucks != null);
|
||||
}
|
||||
|
||||
|
||||
[SignalR(SignalRTags.GetCargoTrucks)]
|
||||
public async Task<List<CargoTruck>> GetCargoTrucks()
|
||||
{
|
||||
_logger.Detail($"GetCargoTrucks invoked");
|
||||
|
||||
return await ctx.CargoTrucks.GetAll().ToListAsync();
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.GetCargoTruckById)]
|
||||
public async Task<CargoTruck> GetCargoTruckById(int id)
|
||||
{
|
||||
_logger.Detail($"GetCargoTruckById invoked; id: {id}");
|
||||
return await ctx.CargoTrucks.GetByIdAsync(id);
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.AddCargoTruck)]
|
||||
public async Task<CargoTruck> AddCargoTruck(CargoTruck cargoTruck)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(cargoTruck);
|
||||
|
||||
_logger.Detail($"AddCargoTruck invoked; id: {cargoTruck.Id}");
|
||||
|
||||
await ctx.CargoTrucks.InsertAsync(cargoTruck);
|
||||
return await ctx.CargoTrucks.GetByIdAsync(cargoTruck.Id);
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.UpdateCargoTruck)]
|
||||
public async Task<CargoTruck> UpdateCargoTruck(CargoTruck cargoTruck)
|
||||
{
|
||||
ArgumentNullException.ThrowIfNull(cargoTruck);
|
||||
|
||||
_logger.Detail($"UpdateCargoTruck invoked; id: {cargoTruck.Id}");
|
||||
|
||||
await ctx.CargoTrucks.UpdateAsync(cargoTruck);
|
||||
return await ctx.CargoTrucks.GetByIdAsync(cargoTruck.Id);
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.GetShippings)]
|
||||
public async Task<List<Shipping>> GetShippings()
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
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 CargoPartnerDbTable : MgDbTableBase<CargoPartner>
|
||||
{
|
||||
public CargoPartnerDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings)
|
||||
: base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings)
|
||||
{
|
||||
}
|
||||
|
||||
public override IOrderedQueryable<CargoPartner> GetAll() => base.GetAll().OrderBy(p => p.Name);
|
||||
|
||||
public IQueryable<CargoPartner> GetAll(bool loadRelations)
|
||||
{
|
||||
return loadRelations ? GetAll().LoadWith(sd => sd.CargoTrucks) : GetAll();
|
||||
}
|
||||
|
||||
public Task<CargoPartner> GetByIdAsync(int id, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(p => p.Id == id);
|
||||
|
||||
public Task<CargoPartner> GetByNameAsync(string name, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(p => p.Name == name);
|
||||
}
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
using FruitBank.Common.Entities;
|
||||
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 CargoTruckDbTable : MgDbTableBase<CargoTruck>
|
||||
{
|
||||
public CargoTruckDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings)
|
||||
: base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings)
|
||||
{
|
||||
}
|
||||
|
||||
public override IOrderedQueryable<CargoTruck> GetAll() => base.GetAll().OrderBy(p => p.CargoPartnerId);
|
||||
|
||||
public IQueryable<CargoTruck> GetAll(bool loadRelations)
|
||||
{
|
||||
return GetAll();
|
||||
//return loadRelations ? GetAll().LoadWith(sd => sd.CargoTrucks) : GetAll();
|
||||
}
|
||||
|
||||
public Task<CargoTruck> GetByIdAsync(int id, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(p => p.Id == id);
|
||||
}
|
||||
|
|
@ -55,6 +55,9 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
public OrderItemDtoDbTable OrderItemDtos { get; set; }
|
||||
|
||||
public PartnerDbTable Partners { get; set; }
|
||||
public CargoPartnerDbTable CargoPartners { get; set; }
|
||||
public CargoTruckDbTable CargoTrucks{ get; set; }
|
||||
|
||||
public ShippingDbTable Shippings { get; set; }
|
||||
public ShippingDocumentDbTable ShippingDocuments { get; set; }
|
||||
public ShippingItemDbTable ShippingItems { get; set; }
|
||||
|
|
@ -78,7 +81,7 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
public IRepository<StockQuantityHistoryExt> StockQuantityHistoriesExt { get; set; }
|
||||
|
||||
public FruitBankDbContext(INopDataProvider dataProvider, ILockService lockService, FruitBankAttributeService fruitBankAttributeService, IStoreContext storeContext,
|
||||
PartnerDbTable partnerDbTable, ShippingDbTable shippingDbTable, ShippingDocumentDbTable shippingDocumentDbTable, ShippingItemDbTable shippingItemDbTable,
|
||||
CargoPartnerDbTable cargoPartnerDbTable, CargoTruckDbTable cargoTruckDbTable, PartnerDbTable partnerDbTable, ShippingDbTable shippingDbTable, ShippingDocumentDbTable shippingDocumentDbTable, ShippingItemDbTable shippingItemDbTable,
|
||||
ShippingItemPalletDbTable shippingItemPalletDbTable, FilesDbTable filesDbTable, ShippingDocumentToFilesDbTable shippingDocumentToFilesDbTable,
|
||||
ProductDtoDbTable productDtoDbTable, OrderDtoDbTable orderDtoDbTable, OrderItemDtoDbTable orderItemDtoDbTable, OrderItemPalletDbTable orderItemPalletDbTable,
|
||||
StockQuantityHistoryDtoDbTable stockQuantityHistoryDtos, CustomerCreditDbTable customerCreditDbTable,
|
||||
|
|
@ -105,7 +108,9 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
|
||||
Files = filesDbTable;
|
||||
Partners = partnerDbTable;
|
||||
|
||||
CargoPartners = cargoPartnerDbTable;
|
||||
CargoTrucks = cargoTruckDbTable;
|
||||
|
||||
ProductDtos = productDtoDbTable;
|
||||
|
||||
OrderDtos = orderDtoDbTable;
|
||||
|
|
@ -225,8 +230,7 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
return Task.FromResult(false);
|
||||
}
|
||||
|
||||
public Task<bool> AddShippingItemSafeAsync(ShippingItem shippingItem)
|
||||
=> TransactionSafeAsync(async _ => await AddShippingItemAsync(shippingItem));
|
||||
public Task<bool> AddShippingItemSafeAsync(ShippingItem shippingItem) => TransactionSafeAsync(async _ => await AddShippingItemAsync(shippingItem));
|
||||
|
||||
public async Task<bool> AddShippingItemAsync(ShippingItem shippingItem)
|
||||
{
|
||||
|
|
@ -251,8 +255,7 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
return true;
|
||||
}
|
||||
|
||||
public Task<bool> UpdateShippingItemSafeAsync(ShippingItem shippingItem)
|
||||
=> TransactionSafeAsync(async _ => await UpdateShippingItemAsync(shippingItem));
|
||||
public Task<bool> UpdateShippingItemSafeAsync(ShippingItem shippingItem) => TransactionSafeAsync(async _ => await UpdateShippingItemAsync(shippingItem));
|
||||
|
||||
public async Task<bool> UpdateShippingItemAsync(ShippingItem shippingItem)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,8 +16,7 @@ public class PartnerDbTable : MgDbTableBase<Partner>
|
|||
{
|
||||
}
|
||||
|
||||
public override IOrderedQueryable<Partner> GetAll()
|
||||
=> base.GetAll().OrderBy(p => p.Name);
|
||||
public override IOrderedQueryable<Partner> GetAll() => base.GetAll().OrderBy(p => p.Name);
|
||||
|
||||
public IQueryable<Partner> GetAll(bool loadRelations)
|
||||
{
|
||||
|
|
@ -29,10 +28,7 @@ public class PartnerDbTable : MgDbTableBase<Partner>
|
|||
: GetAll();
|
||||
}
|
||||
|
||||
public Task<Partner> GetByIdAsync(int id, bool loadRelations)
|
||||
=> GetAll(loadRelations).FirstOrDefaultAsync(p => p.Id == id);
|
||||
|
||||
|
||||
public Task<Partner> GetByIdNameAsync(string name, bool loadRelations)
|
||||
=> GetAll(loadRelations).FirstOrDefaultAsync(p => p.Name == name);
|
||||
public Task<Partner> GetByIdAsync(int id, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(p => p.Id == id);
|
||||
|
||||
public Task<Partner> GetByNameAsync(string name, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(p => p.Name == name);
|
||||
}
|
||||
|
|
@ -78,6 +78,9 @@ public class PluginNopStartup : INopStartup
|
|||
services.AddScoped<OrderItemPalletDbTable>();
|
||||
|
||||
services.AddScoped<PartnerDbTable>();
|
||||
services.AddScoped<CargoPartnerDbTable>();
|
||||
services.AddScoped<CargoTruckDbTable>();
|
||||
|
||||
services.AddScoped<ShippingDbTable>();
|
||||
services.AddScoped<ShippingDocumentDbTable>();
|
||||
services.AddScoped<ShippingItemDbTable>();
|
||||
|
|
|
|||
Loading…
Reference in New Issue