improvements, fixes, etc...

This commit is contained in:
Loretta 2025-10-09 07:29:38 +02:00
parent 38aaab1236
commit c179a75ba2
3 changed files with 76 additions and 16 deletions

View File

@ -167,6 +167,24 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
return await ctx.UpdateShippingItemPalletAsync(shippingItemPallet);
}
[SignalR(SignalRTags.AddOrUpdateMeasuredShippingItemPallets)]
public async Task<ShippingItem> AddOrUpdateMeasuredShippingItemPallets(List<ShippingItemPallet> shippingItemPallets)
{
ArgumentNullException.ThrowIfNull(shippingItemPallets);
_logger.Detail($"AddOrUpdateMeasuredShippingItemPallets invoked; count: {shippingItemPallets.Count}");
if (shippingItemPallets.Count == 0) return null;
var shippingItemId = shippingItemPallets.FirstOrDefault()!.ShippingItemId;
if (shippingItemId <= 0 || shippingItemPallets.Any(x => x.ShippingItemId != shippingItemId)) return null;
var shippingItem = await ctx.ShippingItems.GetByIdAsync(shippingItemId, false);
shippingItem.ShippingItemPallets = shippingItemPallets.Where(sip => sip.IsValidMeasuringValues(shippingItem.IsMeasurable)).ToList();
return await UpdateMeasuredShippingItem(shippingItem);
}
[SignalR(SignalRTags.GetShippingDocuments)]
public async Task<List<ShippingDocument>> GetShippingDocuments()
{

View File

@ -161,8 +161,7 @@ public class FruitBankDbContext : MgDbContextBase,
public Task<bool> UpdateMeasuredShippingItemSafeAsync(ShippingItem shippingItem)
{
if (shippingItem.IsValidMeasuringValues() && shippingItem.ShippingItemPallets?.Count == shippingItem.PalletsOnDocument)
return UpdateShippingItemSafeAsync(shippingItem);
if (shippingItem.IsValidMeasuringValues()) return UpdateShippingItemSafeAsync(shippingItem);
Logger.Error("shippingItem.IsMeasurable && !shippingItem.IsValidMeasuringValues()");
return Task.FromResult(false);
@ -198,6 +197,7 @@ public class FruitBankDbContext : MgDbContextBase,
shippingItem.IsMeasurable = productIsMeasurable;
if (shippingItem.ShippingItemPallets is { Count: > 0 }) await AddOrUpdateShippingItemPalletAsync(shippingItem);
//await AddOrUpdateShippingItemPalletAsync(shippingItem.ShippingItemPallets.Where(x => x.IsValidMeasuringValues(shippingItem.IsMeasurable)), shippingItem);
//Nem tudhatjuk, h minden Pallet-et tartalmaz-e a shippingItem paraméter! A Biztonság kedvéért lekérjük db-ből! - J.
shippingItem.ShippingItemPallets = await ShippingItemPallets.GetAllByShippingItemIdAsync(shippingItem.Id, false).ToListAsync();
@ -207,7 +207,7 @@ public class FruitBankDbContext : MgDbContextBase,
if (dbShippingItem == null) throw new Exception($"dbShippingItem == null; shippingItem.Id: {shippingItem.Id}");
var isMeasuredPrerequisite = product != null && shippingItem.PalletsOnDocument == shippingItem.ShippingItemPallets.Count
&& shippingItem.ShippingItemPallets.All(x => x.IsMeasured && x.IsValidMeasuringValues(shippingItem.IsMeasurable));
&& shippingItem.ShippingItemPallets.All(x => x.IsMeasuredAndValid(shippingItem.IsMeasurable));
SetupShippingItemMeasuringValues(shippingItem, isMeasuredPrerequisite);
shippingItem.IsMeasured = isMeasuredPrerequisite && shippingItem.IsValidMeasuringValues();
@ -305,6 +305,20 @@ public class FruitBankDbContext : MgDbContextBase,
return shippingItemPallet;
}
public Task<bool> AddShippingItemPalletSafeAsync(ShippingItemPallet shippingItemPallet)
{
return TransactionSafeAsync(async tr =>
{
try
{
return (await AddShippingItemPalletAsync(shippingItemPallet)) != null;
}
catch (Exception ex)
{
throw new Exception($"AddShippingItemPalletSafeAsync->TransactionSafeAsync error! shippingItemPallet: {shippingItemPallet}; ex: {ex.Message}", ex);
}
});
}
public async Task<ShippingItemPallet?> UpdateShippingItemPalletAsync(ShippingItemPallet shippingItemPallet)
{
if (!await SetupShippingItemPalletMeauringValues(shippingItemPallet)) return null;
@ -313,7 +327,40 @@ public class FruitBankDbContext : MgDbContextBase,
return shippingItemPallet;
}
public async Task AddOrUpdateShippingItemPalletAsync(List<ShippingItemPallet> shippingItemPallets, ShippingItem parentShippingItem)
public Task<bool> UpdateShippingItemPalletSafeAsync(ShippingItemPallet shippingItemPallet)
{
return TransactionSafeAsync(async tr =>
{
try
{
return (await UpdateShippingItemPalletAsync(shippingItemPallet)) != null;
}
catch (Exception ex)
{
throw new Exception($"UpdateShippingItemPalletSafeAsync->TransactionSafeAsync error! shippingItemPallet: {shippingItemPallet}; ex: {ex.Message}", ex);
}
});
}
public Task AddOrUpdateShippingItemPalletSafeAsync(ShippingItem shippingItem) => AddOrUpdateShippingItemPalletSafeAsync(shippingItem.ShippingItemPallets!, shippingItem);
public Task<bool> AddOrUpdateShippingItemPalletSafeAsync(IEnumerable<ShippingItemPallet> shippingItemPallets, ShippingItem parentShippingItem)
{
return TransactionSafeAsync(async tr =>
{
try
{
await AddOrUpdateShippingItemPalletAsync(shippingItemPallets, parentShippingItem);
return true;
}
catch (Exception ex)
{
throw new Exception($"AddOrUpdateShippingItemPalletSafeAsync->TransactionSafeAsync error! ex: {ex.Message}", ex);
}
});
}
public Task AddOrUpdateShippingItemPalletAsync(ShippingItem shippingItem) => AddOrUpdateShippingItemPalletAsync(shippingItem.ShippingItemPallets!, shippingItem);
public async Task AddOrUpdateShippingItemPalletAsync(IEnumerable<ShippingItemPallet> shippingItemPallets, ShippingItem parentShippingItem)
{
foreach (var shippingItemPallet in shippingItemPallets)
{
@ -324,9 +371,6 @@ public class FruitBankDbContext : MgDbContextBase,
}
}
public Task AddOrUpdateShippingItemPalletAsync(ShippingItem shippingItem)
=> AddOrUpdateShippingItemPalletAsync(shippingItem.ShippingItemPallets!, shippingItem);
public async Task<ShippingItemPallet?> AddOrUpdateShippingItemPalletAsync(ShippingItemPallet shippingItemPallet)
{
if (shippingItemPallet.Id <= 0) return await AddShippingItemPalletAsync(shippingItemPallet);
@ -341,12 +385,10 @@ public class FruitBankDbContext : MgDbContextBase,
if (!shippingItem.IsMeasurable)
{
shippingItemPallet.NetWeight = 0;
shippingItemPallet.PalletWeight = 0;
shippingItemPallet.GrossWeight = 0;
}
if (shippingItemPallet.Quantity < 0 || shippingItemPallet.NetWeight < 0 || shippingItemPallet.GrossWeight < 0) return false;
shippingItemPallet.IsMeasured = shippingItemPallet.IsValidMeasuringValues(shippingItem.IsMeasurable);
return true;
}

View File

@ -18,13 +18,13 @@ public class ShippingItemPalletDbTable : MgDbTableBase<ShippingItemPallet>
protected override void OnUpdate(ShippingItemPallet entity)
{
RoundMeasuredValue(entity);
BeforeInsertOrUpdate(entity);
base.OnUpdate(entity);
}
protected override void OnInsert(ShippingItemPallet entity)
{
RoundMeasuredValue(entity);
BeforeInsertOrUpdate(entity);
base.OnInsert(entity);
}
@ -48,10 +48,10 @@ public class ShippingItemPalletDbTable : MgDbTableBase<ShippingItemPallet>
public IQueryable<ShippingItemPallet> GetAllByShippingItemIdAsync(int shippingItemId, bool loadRelations)
=> GetAll(loadRelations).Where(sip => sip.ShippingItemId == shippingItemId);
private static void RoundMeasuredValue(ShippingItemPallet shippingItemPallet)
private static void BeforeInsertOrUpdate(ShippingItemPallet shippingItemPallet)
{
shippingItemPallet.PalletWeight = double.Round(shippingItemPallet.PalletWeight, 1);
shippingItemPallet.NetWeight = double.Round(shippingItemPallet.NetWeight, 1);
shippingItemPallet.GrossWeight = double.Round(shippingItemPallet.GrossWeight, 1);
if (shippingItemPallet.IsValidSafeMeasuringValues()) return;
throw new Exception($"ShippingItemPalletDbTable->BeforeInsertOrUpdate(); Invalid measuring value(s); shippingItemPallet: {shippingItemPallet}");
}
}