Add CargoPartner/CargoTruck relations and eager loading

- Updated controllers and DbTables to support eager loading of CargoPartner and CargoTruck relations.
- Enhanced Shipping and ShippingDocument queries to include related transport entities.
- Extended SCHEMA.md with CargoPartner, CargoTruck, and updated Shipping schema details.
This commit is contained in:
Loretta 2026-05-31 14:01:58 +02:00
parent 1b8d2a6aa0
commit 2442094a08
5 changed files with 75 additions and 9 deletions

View File

@ -142,14 +142,14 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
{ {
_logger.Detail($"GetCargoPartners invoked"); _logger.Detail($"GetCargoPartners invoked");
return await ctx.CargoPartners.GetAll().ToListAsync(); return await ctx.CargoPartners.GetAll(true).ToListAsync();
} }
[SignalR(SignalRTags.GetCargoPartnerById)] [SignalR(SignalRTags.GetCargoPartnerById)]
public async Task<CargoPartner> GetCargoPartnerById(int id) public async Task<CargoPartner> GetCargoPartnerById(int id)
{ {
_logger.Detail($"GetCargoPartnerById invoked; id: {id}"); _logger.Detail($"GetCargoPartnerById invoked; id: {id}");
return await ctx.CargoPartners.GetByIdAsync(id); return await ctx.CargoPartners.GetByIdAsync(id, true);
} }
[SignalR(SignalRTags.AddCargoPartner)] [SignalR(SignalRTags.AddCargoPartner)]
@ -180,7 +180,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
{ {
_logger.Detail($"GetCargoTrucks invoked"); _logger.Detail($"GetCargoTrucks invoked");
return await ctx.CargoTrucks.GetAll().ToListAsync(); return await ctx.CargoTrucks.GetAll(true).ToListAsync();
} }
[SignalR(SignalRTags.GetCargoTruckById)] [SignalR(SignalRTags.GetCargoTruckById)]

View File

@ -19,7 +19,11 @@ public class CargoPartnerDbTable : MgDbTableBase<CargoPartner>
public IQueryable<CargoPartner> GetAll(bool loadRelations) public IQueryable<CargoPartner> GetAll(bool loadRelations)
{ {
return loadRelations ? GetAll().LoadWith(sd => sd.CargoTrucks) : GetAll(); return loadRelations ?
GetAll()
.LoadWith(sd => sd.CargoTrucks)
//.LoadWith(sd => sd.Shippings)
: GetAll();
} }
public Task<CargoPartner> GetByIdAsync(int id, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(p => p.Id == id); public Task<CargoPartner> GetByIdAsync(int id, bool loadRelations) => GetAll(loadRelations).FirstOrDefaultAsync(p => p.Id == id);

View File

@ -23,11 +23,14 @@ public class ShippingDbTable : MgDbTableBase<Shipping>
{ {
return loadRelations return loadRelations
? GetAll() ? GetAll()
.LoadWith(s => s.CargoPartner)
.LoadWith(s => s.CargoTruck)
.LoadWith(s => s.CargoTrailer)
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.Partner)
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.ShippingItemPallets) .LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.ShippingItemPallets)
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.Pallet) .LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.Pallet)
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.ProductDto).ThenLoad(prod => prod.GenericAttributes) .LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingItems).ThenLoad(si => si.ProductDto).ThenLoad(prod => prod.GenericAttributes)
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile) .LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile)
.LoadWith(s => s.ShippingDocuments).ThenLoad(sd => sd.Partner)
: GetAll(); : GetAll();
} }

View File

@ -24,6 +24,9 @@ public class ShippingDocumentDbTable : MgDbTableBase<ShippingDocument>
return loadRelations return loadRelations
? GetAll() ? GetAll()
.LoadWith(sd => sd.Shipping) .LoadWith(sd => sd.Shipping)
.LoadWith(sd => sd.Shipping).ThenLoad(s => s.CargoPartner)
.LoadWith(sd => sd.Shipping).ThenLoad(s => s.CargoTruck)
.LoadWith(sd => sd.Shipping).ThenLoad(s => s.CargoTrailer)
.LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.Pallet) .LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.Pallet)
.LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.ProductDto).ThenLoad(prod => prod.GenericAttributes) .LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.ProductDto).ThenLoad(prod => prod.GenericAttributes)
.LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.ShippingItemPallets) .LoadWith(sd => sd.ShippingItems).ThenLoad(si => si.ShippingItemPallets)

File diff suppressed because one or more lines are too long