From 53a336cb3e8883d854e6484e90391ea8d2f4aa17 Mon Sep 17 00:00:00 2001 From: Loretta Date: Tue, 30 Sep 2025 07:24:36 +0200 Subject: [PATCH] improvements, fixes, etc... --- .../Domains/DataLayer/FruitBankDbContext.cs | 125 +++++++++--------- .../Domains/DataLayer/ShippingItemDbTable.cs | 22 ++- .../EventConsumers/FruitBankEventConsumer.cs | 17 ++- Nop.Plugin.Misc.AIPlugin/FruitBankPlugin.cs | 2 +- .../Services/EventConsumer.cs | 3 +- .../Services/FruitBankAttributeService.cs | 59 +++++---- 6 files changed, 126 insertions(+), 102 deletions(-) diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs index 07425e2..64b0bf3 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/FruitBankDbContext.cs @@ -127,119 +127,114 @@ public class FruitBankDbContext : MgDbContextBase, IPartnerDbSet { //Mi van ha nem jött meg a termék? Nem fogják tudni menteni... - J. - if (shippingItem.MeasuredQuantity <= 0) shippingItem.MeasuredQuantity = null; + Product? product = null; + var productIsMeasurable = false; - if (!shippingItem.IsMeasurable || shippingItem.MeasuredNetWeight <= 0) shippingItem.MeasuredNetWeight = null; - if (!shippingItem.IsMeasurable || shippingItem.MeasuredGrossWeight <= 0) shippingItem.MeasuredGrossWeight = null; - - //Update elÅ‘tt kivesszük a korábbi ShippingItem-et a db-bÅ‘l! - J. - var dbShippingItem = await ShippingItems.GetByIdAsync(shippingItem.Id); - if (dbShippingItem == null) - { - throw new Exception("dbShippingItem == null"); - } - - Product product = null; if (shippingItem.ProductId > 0) { product = await Products.GetByIdAsync(shippingItem.ProductId); if (product == null) - { throw new Exception($"shippingItem.ProductId > 0 && product == null; shippingItem.ProductId: {shippingItem.ProductId}"); - //shippingItem.ProductId = null; - - //if (!dbShippingItem.IsMeasured) shippingItem.ProductId = null; - //else return await Task.FromResult(false); - } + productIsMeasurable = await _fruitBankAttributeService.IsMeasurableEntityAsync(product.Id); } + shippingItem.IsMeasurable = productIsMeasurable; + + if (shippingItem.MeasuredQuantity <= 0) shippingItem.MeasuredQuantity = null; + if (!shippingItem.IsMeasurable || shippingItem.MeasuredNetWeight <= 0) shippingItem.MeasuredNetWeight = null; + if (!shippingItem.IsMeasurable || shippingItem.MeasuredGrossWeight <= 0) shippingItem.MeasuredGrossWeight = null; + + //Update elÅ‘tt kivesszük a korábbi ShippingItem-et a db-bÅ‘l! - J. + var dbShippingItem = await ShippingItems.GetByIdAsync(shippingItem.Id); + if (dbShippingItem == null) throw new Exception($"dbShippingItem == null; shippingItem.Id: {shippingItem.Id}"); + shippingItem.IsMeasured = product != null && shippingItem.IsValidMeasuringValues(); - await ShippingItems.UpdateAsync(shippingItem); + await ShippingItems.UpdateAsync(shippingItem, shippingItem.IsMeasured != dbShippingItem.IsMeasured); - if (shippingItem.ProductId != dbShippingItem.ProductId || - shippingItem.IsMeasured != dbShippingItem.IsMeasured || shippingItem.IsMeasurable != dbShippingItem.IsMeasurable || - shippingItem.MeasuredQuantity != dbShippingItem.MeasuredQuantity || - shippingItem.MeasuredNetWeight != dbShippingItem.MeasuredNetWeight || shippingItem.MeasuredGrossWeight != dbShippingItem.MeasuredGrossWeight) + if (shippingItem.ProductId == dbShippingItem.ProductId && + shippingItem.IsMeasured == dbShippingItem.IsMeasured && shippingItem.IsMeasurable == dbShippingItem.IsMeasurable && + shippingItem.MeasuredQuantity == dbShippingItem.MeasuredQuantity && + // ReSharper disable once CompareOfFloatsByEqualityOperator + shippingItem.MeasuredNetWeight == dbShippingItem.MeasuredNetWeight && + // ReSharper disable once CompareOfFloatsByEqualityOperator + shippingItem.MeasuredGrossWeight == dbShippingItem.MeasuredGrossWeight) { - var productIdUnchanged = shippingItem.ProductId == dbShippingItem.ProductId; + return true; + } - if (shippingItem.IsMeasured) + var productIdUnchanged = shippingItem.ProductId == dbShippingItem.ProductId; + + if (shippingItem.IsMeasured) + { + product!.StockQuantity += productIdUnchanged ? shippingItem.MeasuredQuantity!.Value - dbShippingItem.MeasuredQuantity.GetValueOrDefault(0) : shippingItem.MeasuredQuantity!.Value; + + if (!await UpdateProductStockQuantityAsync(product, true)) + throw new Exception($"UpdateProductStockQuantity() == false; shippingItem! product.Id: {product.Id}"); + + if (productIsMeasurable) { - product!.StockQuantity += shippingItem.MeasuredQuantity.GetValueOrDefault(0) - dbShippingItem.MeasuredQuantity.GetValueOrDefault(0); - - //IsMeasurable - //TODO: ROUND!!!! - J. var measuringValues = new MeasuringAttributeValues { - NetWeight = shippingItem.MeasuredNetWeight - dbShippingItem.MeasuredNetWeight, - GrossWeight = shippingItem.MeasuredGrossWeight- dbShippingItem.MeasuredGrossWeight, + NetWeight = productIdUnchanged ? shippingItem.MeasuredNetWeight - dbShippingItem.MeasuredNetWeight.GetValueOrDefault(0) : shippingItem.MeasuredNetWeight, + GrossWeight = productIdUnchanged ? shippingItem.MeasuredGrossWeight - dbShippingItem.MeasuredGrossWeight.GetValueOrDefault(0) : shippingItem.MeasuredGrossWeight, IsMeasurable = shippingItem.IsMeasurable }; - if (!await UpdateProductStockQuantityAsync(product)) - { - throw new Exception($"UpdateProductStockQuantity() == false; shippingItem! id: {product.Id}"); - } - - //var measuringValues = new MeasuringAttributeValues(shippingItem.MeasuredNetWeight, shippingItem.MeasuredGrossWeight, shippingItem.IsMeasurable); await _fruitBankAttributeService.InsertOrUpdateMeasuringAttributeValuesAsync(product.Id, measuringValues, true); } - - if (productIdUnchanged) return true; - - if (dbShippingItem.IsMeasured) - { - product = await Products.GetByIdAsync(dbShippingItem.ProductId); - - if (product != null) - { - product.StockQuantity -= dbShippingItem.MeasuredQuantity.GetValueOrDefault(0); - - if (!await UpdateProductStockQuantityAsync(product)) - { - throw new Exception($"UpdateProductStockQuantity() == false; dbShippingItem! id: {product.Id}"); - //return await Task.FromResult(false); - } - - var measuringValues = new MeasuringAttributeValues(-dbShippingItem.MeasuredNetWeight, -dbShippingItem.MeasuredGrossWeight, dbShippingItem.IsMeasurable); - await _fruitBankAttributeService.InsertOrUpdateMeasuringAttributeValuesAsync(product.Id, measuringValues, true); - - } - else Logger.Warning($"product == null; dbShippingItem.ProductId: {dbShippingItem.ProductId}"); - } } + + if (productIdUnchanged || !dbShippingItem.IsMeasured) return true; + + product = await Products.GetByIdAsync(dbShippingItem.ProductId); + + if (product != null) + { + productIsMeasurable = await _fruitBankAttributeService.IsMeasurableEntityAsync(product.Id); + product.StockQuantity -= dbShippingItem.MeasuredQuantity.GetValueOrDefault(0); + + if (!await UpdateProductStockQuantityAsync(product, true)) + throw new Exception($"UpdateProductStockQuantity() == false; dbShippingItem! product.Id: {product.Id}"); + + if (!productIsMeasurable) return true; + + var measuringValues = new MeasuringAttributeValues(-dbShippingItem.MeasuredNetWeight.GetValueOrDefault(0), -dbShippingItem.MeasuredGrossWeight.GetValueOrDefault(0), dbShippingItem.IsMeasurable); + await _fruitBankAttributeService.InsertOrUpdateMeasuringAttributeValuesAsync(product.Id, measuringValues, true); + + } + else Logger.Warning($"product == null; dbShippingItem.ProductId: {dbShippingItem.ProductId}"); //else //TODO: productIdUnchanged-et lekezelni! - J. return true; } catch (Exception ex) { - throw new Exception($"UpdateShippingItemAsync Transaction ERROR! Id: {shippingItem?.Id}; ex: {ex.Message}", ex); + throw new Exception($"UpdateShippingItemAsync->TransactionSafeAsync error! shippingItem.Id: {shippingItem.Id}; ex: {ex.Message}", ex); } }); } - private async Task UpdateProductStockQuantityAsync(int productId) + private async Task UpdateProductStockQuantityAsync(int productId, bool publishEvent) { var product = await Products.GetByIdAsync(productId); - if (product != null) return await UpdateProductStockQuantityAsync(product); + if (product != null) return await UpdateProductStockQuantityAsync(product, publishEvent); Logger.Error($"product == null; id: {productId}"); return await Task.FromResult(false); } - private async Task UpdateProductStockQuantityAsync(Product product) + private async Task UpdateProductStockQuantityAsync(Product product, bool publishEvent) { //Itt mi legyen? RollBack? - J. if (product.StockQuantity < 0) Logger.Error($"product.StockQuantity < 0; Id: {product.Id}; StockQuantity: {product.StockQuantity}"); - await Products.UpdateAsync(product, true); + await Products.UpdateAsync(product, publishEvent); return await Task.FromResult(true); //var updatedRowsCount = await DataProvider.ExecuteNonQueryAsync($"update product set {nameof(Product.StockQuantity)} = {product.StockQuantity} where {nameof(Product.Id)} = {product.Id}"); diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingItemDbTable.cs b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingItemDbTable.cs index 3fb5b89..142afbd 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingItemDbTable.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/DataLayer/ShippingItemDbTable.cs @@ -16,8 +16,19 @@ public class ShippingItemDbTable : MgDbTableBase { } - public override IQueryable GetAll() - => base.GetAll(); + protected override void OnUpdate(ShippingItem entity) + { + RoundMeasuredValue(entity); + base.OnUpdate(entity); + } + + protected override void OnInsert(ShippingItem entity) + { + RoundMeasuredValue(entity); + base.OnInsert(entity); + } + + public override IQueryable GetAll() => base.GetAll(); public IQueryable GetAll(bool loadRelations) { @@ -41,4 +52,11 @@ public class ShippingItemDbTable : MgDbTableBase public IQueryable GetAllByShippingDocumentIdAsync(int shippingDocumentId, bool loadRelations) => GetAll(loadRelations).Where(si => si.ShippingDocumentId == shippingDocumentId); + + private static void RoundMeasuredValue(ShippingItem shippingItem) + { + if (shippingItem.MeasuredNetWeight.HasValue) shippingItem.MeasuredNetWeight = double.Round(shippingItem.MeasuredNetWeight.Value, 1); + if (shippingItem.MeasuredGrossWeight.HasValue) shippingItem.MeasuredGrossWeight = double.Round(shippingItem.MeasuredGrossWeight.Value, 1); + + } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/EventConsumers/FruitBankEventConsumer.cs b/Nop.Plugin.Misc.AIPlugin/Domains/EventConsumers/FruitBankEventConsumer.cs index 7fa9c37..ceb7026 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/EventConsumers/FruitBankEventConsumer.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/EventConsumers/FruitBankEventConsumer.cs @@ -11,20 +11,25 @@ using Nop.Core.Domain.Catalog; using Nop.Core.Events; using Nop.Plugin.Misc.FruitBankPlugin.Controllers; using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer; +using Nop.Plugin.Misc.FruitBankPlugin.Services; using Nop.Services.Common; using Nop.Services.Events; namespace Nop.Plugin.Misc.FruitBankPlugin.Domains.EventConsumers; -public class FruitBankEventConsumer(IHttpContextAccessor httpContextAccessor, FruitBankDbContext ctx, IGenericAttributeService genericAttributeService, IStoreContext storeContext, IEnumerable logWriters) : - MgEventConsumer(httpContextAccessor, logWriters), - IConsumer>, - IConsumer> +public class FruitBankEventConsumer(IHttpContextAccessor httpContextAccessor, FruitBankDbContext ctx, FruitBankAttributeService fruitBankAttributeService, IStoreContext storeContext, IEnumerable logWriters) : + MgEventConsumer(httpContextAccessor, logWriters), IConsumer>, IConsumer> { public override async Task HandleEventAsync(EntityUpdatedEvent eventMessage) { - var isMeasurableProduct = await genericAttributeService.GetAttributeAsync(eventMessage.Entity, FruitBankConst.IsMeasureableAttributeName, storeContext.GetCurrentStore().Id); + var product = eventMessage.Entity; + var isMeasurableProduct = await fruitBankAttributeService.IsMeasurableEntityAsync(product.Id); + var shippingItems = await ctx.ShippingItems.Table + .Where(si => si.ProductId == product.Id && !si.IsMeasured && si.IsMeasurable != isMeasurableProduct) + .ToListAsync(); + + await ctx.ShippingItems.UpdateAsync(shippingItems, false); await base.HandleEventAsync(eventMessage); } @@ -53,7 +58,7 @@ public class FruitBankEventConsumer(IHttpContextAccessor httpContextAccessor, Fr private async Task UpdateShippingDocumentIsAllMeasuredAsync(ShippingItem shippingItem) { - //TODO: where: && IsMeasureable!!!! - J. + //TODO: where: && IsMeasurable!!!! - J. var isAllShippingItemMeasured = ctx.ShippingItems.GetAll(false).Where(si => si.ShippingDocumentId == shippingItem.ShippingDocumentId).All(si => si.IsMeasured); var shippingDocument = await ctx.ShippingDocuments.GetByIdAsync(shippingItem.ShippingDocumentId); diff --git a/Nop.Plugin.Misc.AIPlugin/FruitBankPlugin.cs b/Nop.Plugin.Misc.AIPlugin/FruitBankPlugin.cs index 0ae795d..d582035 100644 --- a/Nop.Plugin.Misc.AIPlugin/FruitBankPlugin.cs +++ b/Nop.Plugin.Misc.AIPlugin/FruitBankPlugin.cs @@ -56,7 +56,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin //TODO: Add "Measuring" role - FruitBankConst.MeasuringRoleSystemName //TODO: Add "MeasuringRevisor" role - FruitBankConst.MeasuringRevisorRoleSystemName - //TODO: Add "IsMeasurable" product attribute - FruitBankConst.IsMeasureableAttributeName + //TODO: Add "IsMeasurable" product attribute - FruitBankConst.IsMeasurableAttributeName //TODO: Add "NeedsToBeMeasured" product attribute if not exists //TODO: Add unique index to GenericAttribute[EntityId, KeyGroup, Key]???!? ÁTGONDOLNI, mert lehet esetleg lista is a visszaadott, de a nopcommerce kódban felülírja ha azonos key-el vannak! - J. diff --git a/Nop.Plugin.Misc.AIPlugin/Services/EventConsumer.cs b/Nop.Plugin.Misc.AIPlugin/Services/EventConsumer.cs index c124fd2..55e4b9e 100644 --- a/Nop.Plugin.Misc.AIPlugin/Services/EventConsumer.cs +++ b/Nop.Plugin.Misc.AIPlugin/Services/EventConsumer.cs @@ -1,4 +1,5 @@ using System.Linq; +using FruitBank.Common.Interfaces; using Nop.Core; using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Orders; @@ -96,7 +97,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services System.Diagnostics.Debug.WriteLine($"Spec Attribute: {specificationAttribute.Name}, Option: {specificationAttributeOption.Name}"); // Check if this is your "NeedsToBeMeasured" specification attribute - if (specificationAttribute.Name == "Measureable" && + if (specificationAttribute.Name == "Measureable" && //nameof(MeasuringAttributeValues.IsMeasurable) specificationAttributeOption.Name == "Yes") // or whatever value you set { requiresMeasurement = true; diff --git a/Nop.Plugin.Misc.AIPlugin/Services/FruitBankAttributeService.cs b/Nop.Plugin.Misc.AIPlugin/Services/FruitBankAttributeService.cs index 20bc6d8..75410a3 100644 --- a/Nop.Plugin.Misc.AIPlugin/Services/FruitBankAttributeService.cs +++ b/Nop.Plugin.Misc.AIPlugin/Services/FruitBankAttributeService.cs @@ -9,14 +9,14 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Services; public class FruitBankAttributeService(IGenericAttributeService genericAttributeService, IStoreContext storeContext) { - public async Task GetGenericAttributeAsync(int entityId, string key, int storeId) + public async Task GetGenericAttributeAsync(int entityId, string key, int storeId) { - return (await genericAttributeService.GetAttributesForEntityAsync(entityId, typeof(TEntityType).Name)).SingleOrDefault(ga => ga.StoreId == storeId && ga.Key == key); + return (await genericAttributeService.GetAttributesForEntityAsync(entityId, typeof(TEntity).Name)).SingleOrDefault(ga => ga.StoreId == storeId && ga.Key == key); } - public async Task> GetMeasuringAttributesAsync(int entityId, int storeId) + public async Task> GetMeasuringAttributesAsync(int entityId, int storeId) { - var measuringAttributes = (await genericAttributeService.GetAttributesForEntityAsync(entityId, typeof(TEntityType).Name)) + var measuringAttributes = (await genericAttributeService.GetAttributesForEntityAsync(entityId, typeof(TEntity).Name)) .Where(ga => ga.StoreId == storeId && (ga.Key is nameof(MeasuringAttributeValues.NetWeight) or nameof(MeasuringAttributeValues.GrossWeight) or nameof(MeasuringAttributeValues.IsMeasurable))) .ToList(); @@ -24,12 +24,12 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute return measuringAttributes; } - public Task GetMeasuringAttributeValuesAsync(int entityId) - => GetMeasuringAttributeValuesAsync(entityId, storeContext.GetCurrentStore().Id); + public Task GetMeasuringAttributeValuesAsync(int entityId) + => GetMeasuringAttributeValuesAsync(entityId, storeContext.GetCurrentStore().Id); - public async Task GetMeasuringAttributeValuesAsync(int entityId, int storeId) + public async Task GetMeasuringAttributeValuesAsync(int entityId, int storeId) { - var measuringAttributes = await GetMeasuringAttributesAsync(entityId, storeId); + var measuringAttributes = await GetMeasuringAttributesAsync(entityId, storeId); if (measuringAttributes.Count == 0) return null; @@ -41,28 +41,33 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute return measuringAttributeValues; } - public Task InsertOrUpdateMeasuringAttributeValuesAsync(int entityId, MeasuringAttributeValues measuringAttributeValues, bool cumulativeWeightUpdate) - => InsertOrUpdateMeasuringAttributeValuesAsync(entityId, storeContext.GetCurrentStore().Id, measuringAttributeValues, cumulativeWeightUpdate); - - public async Task InsertOrUpdateMeasuringAttributeValuesAsync(int entityId, int storeId, MeasuringAttributeValues measuringAttributeValues, bool cumulativeWeightUpdate) + public Task IsMeasurableEntityAsync(int entityId) => IsMeasurableEntityAsync(entityId, storeContext.GetCurrentStore().Id); + public async Task IsMeasurableEntityAsync(int entityId, int storeId) { - if (!measuringAttributeValues.HasValues()) return false; + var measurableAttribute = await GetGenericAttributeAsync(entityId, nameof(MeasuringAttributeValues.IsMeasurable), storeId); + return measurableAttribute != null && CommonHelper.To(measurableAttribute.Value); + } - var measuringAttributes = await GetMeasuringAttributesAsync(entityId, storeId); + public Task InsertOrUpdateMeasuringAttributeValuesAsync(int entityId, MeasuringAttributeValues measuringAttributeValues, bool cumulativeWeightUpdate) + => InsertOrUpdateMeasuringAttributeValuesAsync(entityId, storeContext.GetCurrentStore().Id, measuringAttributeValues, cumulativeWeightUpdate); + + public async Task InsertOrUpdateMeasuringAttributeValuesAsync(int entityId, int storeId, MeasuringAttributeValues measuringAttributeValues, bool cumulativeWeightUpdate) + { + if (!measuringAttributeValues.HasValues()) throw new Exception($"FruitBankAttributeService->InsertOrUpdateMeasuringAttributeValuesAsync; measuringAttributeValues.HasValues() == false; entityId: {entityId}; values: {measuringAttributeValues}"); + + var measuringAttributes = await GetMeasuringAttributesAsync(entityId, storeId); var netWeightAttribute = measuringAttributes.FirstOrDefault(ma => ma.Key == nameof(MeasuringAttributeValues.NetWeight)); if (netWeightAttribute != null) await UpdateMeasuringWeightAttributeValueAsync(netWeightAttribute, measuringAttributeValues.NetWeight!.Value, cumulativeWeightUpdate); - else await InsertGenericAttributeAsync(entityId, nameof(MeasuringAttributeValues.NetWeight), measuringAttributeValues.NetWeight!.Value, storeId); + else await InsertGenericAttributeAsync(entityId, nameof(MeasuringAttributeValues.NetWeight), measuringAttributeValues.NetWeight!.Value, storeId); var grossWeightAttribute = measuringAttributes.FirstOrDefault(ma => ma.Key == nameof(MeasuringAttributeValues.GrossWeight)); if (grossWeightAttribute != null) await UpdateMeasuringWeightAttributeValueAsync(grossWeightAttribute, measuringAttributeValues.GrossWeight!.Value, cumulativeWeightUpdate); - else await InsertGenericAttributeAsync(entityId, nameof(MeasuringAttributeValues.GrossWeight), measuringAttributeValues.GrossWeight!.Value, storeId); + else await InsertGenericAttributeAsync(entityId, nameof(MeasuringAttributeValues.GrossWeight), measuringAttributeValues.GrossWeight!.Value, storeId); var isMeasurableAttribute = measuringAttributes.FirstOrDefault(ma => ma.Key == nameof(MeasuringAttributeValues.IsMeasurable)); if (isMeasurableAttribute != null) await UpdateGenericAttributeAsync(isMeasurableAttribute, measuringAttributeValues.IsMeasurable!.Value); - else await InsertGenericAttributeAsync(entityId, nameof(MeasuringAttributeValues.IsMeasurable), measuringAttributeValues.IsMeasurable!.Value, storeId); - - return true; + else await InsertGenericAttributeAsync(entityId, nameof(MeasuringAttributeValues.IsMeasurable), measuringAttributeValues.IsMeasurable!.Value, storeId); } private async Task UpdateMeasuringWeightAttributeValueAsync(GenericAttribute genericAttribute, double newWeightValue, bool cumulativeWeightUpdate) @@ -70,9 +75,9 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute await UpdateGenericAttributeAsync(genericAttribute, cumulativeWeightUpdate ? CommonHelper.To(genericAttribute.Value) + newWeightValue : newWeightValue); } - public async Task DeleteAllMeasuringAttributesAsync(int entityId, int storeId) + public async Task DeleteAllMeasuringAttributesAsync(int entityId, int storeId) { - var measuringAttributes = await GetMeasuringAttributesAsync(entityId, storeId); + var measuringAttributes = await GetMeasuringAttributesAsync(entityId, storeId); if (measuringAttributes.Count == 0) return; foreach (var measuringAttribute in measuringAttributes) @@ -81,13 +86,13 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute } } - public async Task InsertGenericAttributeAsync(int entityId, string key, TPropType value, int storeId) + public async Task InsertGenericAttributeAsync(int entityId, string key, TPropType value, int storeId) { var genericAttribute = new GenericAttribute { Key = key, EntityId = entityId, - KeyGroup = typeof(TEntityType).Name, + KeyGroup = typeof(TEntity).Name, Value = CommonHelper.To(value), StoreId = storeId }; @@ -95,9 +100,9 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute await genericAttributeService.InsertAttributeAsync(genericAttribute); } - public async Task UpdateGenericAttributeAsync(int entityId, string key, TPropType newValue, int storeId) + public async Task UpdateGenericAttributeAsync(int entityId, string key, TPropType newValue, int storeId) { - var ga = await GetGenericAttributeAsync(entityId, key, storeId); + var ga = await GetGenericAttributeAsync(entityId, key, storeId); await UpdateGenericAttributeAsync(ga!, newValue); } @@ -107,9 +112,9 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute await genericAttributeService.UpdateAttributeAsync(genericAttribute); } - public async Task DeleteGenericAttributeAsync(int entityId, string key, int storeId) + public async Task DeleteGenericAttributeAsync(int entityId, string key, int storeId) { - var ga = await GetGenericAttributeAsync(entityId, key, storeId); + var ga = await GetGenericAttributeAsync(entityId, key, storeId); if (ga == null) return; await genericAttributeService.DeleteAttributeAsync(ga);