improvements, fixes, etc...
This commit is contained in:
parent
38aaab1236
commit
c179a75ba2
|
|
@ -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()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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}");
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue