diff --git a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs index 2a12772..f76f438 100644 --- a/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs +++ b/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs @@ -1,4 +1,5 @@ using AyCode.Services.SignalRs; +using FruitBank.Common.Interfaces; using FruitBank.Common.Server.Interfaces; using FruitBank.Common.SignalRs; using Microsoft.AspNetCore.Mvc; @@ -14,7 +15,7 @@ using Nop.Web.Framework.Mvc.Filters; namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers { - public class CustomOrderService(IOrderService orderService, IOrderModelFactory orderModelFactory) : ICustomOrderControllerServer + public class CustomOrderSignalREndpoint(IOrderService orderService, IOrderModelFactory orderModelFactory) : ICustomOrderSignalREndpointServer { private readonly IOrderService _orderService = orderService; private readonly CustomOrderModelFactory _orderModelFactory = orderModelFactory as CustomOrderModelFactory; @@ -46,19 +47,19 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers [Area(AreaNames.ADMIN)] [AuthorizeAdmin] - public class CustomOrderController : BaseAdminController, ICustomOrderControllerServer + public class CustomOrderController : BaseAdminController, ICustomOrderSignalREndpointServer { private readonly IOrderService _orderService; private readonly CustomOrderModelFactory _orderModelFactory; - private readonly ICustomOrderControllerServer _customOrderService; + private readonly ICustomOrderSignalREndpointServer _customOrderSignalREndpoint; private readonly IPermissionService _permissionService; // ... other dependencies - public CustomOrderController(IOrderService orderService, IOrderModelFactory orderModelFactory, ICustomOrderControllerServer customOrderService, IPermissionService permissionService) + public CustomOrderController(IOrderService orderService, IOrderModelFactory orderModelFactory, ICustomOrderSignalREndpointServer customOrderSignalREndpoint, IPermissionService permissionService) { _orderService = orderService; _orderModelFactory = orderModelFactory as CustomOrderModelFactory; - _customOrderService = customOrderService; + _customOrderSignalREndpoint = customOrderSignalREndpoint; _permissionService = permissionService; // ... initialize other deps } diff --git a/Nop.Plugin.Misc.AIPlugin/Domains/EventConsumers/FruitBankEventConsumer.cs b/Nop.Plugin.Misc.AIPlugin/Domains/EventConsumers/FruitBankEventConsumer.cs index 1cfcb62..bbb2a94 100644 --- a/Nop.Plugin.Misc.AIPlugin/Domains/EventConsumers/FruitBankEventConsumer.cs +++ b/Nop.Plugin.Misc.AIPlugin/Domains/EventConsumers/FruitBankEventConsumer.cs @@ -61,28 +61,35 @@ public class FruitBankEventConsumer(IHttpContextAccessor httpContextAccessor, Fr return; var form = httpContextAccessor.HttpContext?.Request?.Form; - if (form == null || !form.Any()) + if (form == null || form.Count == 0) return; + //TODO: nameof(IMeasurable) - J. var isMeasurable = form["IsMeasurable"].ToString().Contains("true"); // Save IsMeasurable if (form.ContainsKey("IsMeasurable")) { await genericAttributeService.SaveAttributeAsync(product, "IsMeasurable", isMeasurable); + //Akkor ez kell? - Á. - //await fruitBankAttributeService.InsertOrUpdateMeasuringAttributeValuesAsync(product.Id, 0, 0, isMeasurable, false); + //Igen, csak true kell a végére és mehet egy lépésben a NetWeight és az IsMeasurable - J. + + //await fruitBankAttributeService.InsertOrUpdateMeasuringAttributeValuesAsync(product.Id, netWeight, 0, isMeasurable, true); } // Save NetWeight - if (form.ContainsKey("NetWeight")) + if (form.ContainsKey("NetWeight")) //TODO: nameof(IMeasuringNetWeight) - J. { var netWeightStr = form["NetWeight"].ToString(); - if (!string.IsNullOrWhiteSpace(netWeightStr) && decimal.TryParse(netWeightStr, out var netWeight)) + if (!string.IsNullOrWhiteSpace(netWeightStr) && double.TryParse(netWeightStr, out var netWeight)) { await genericAttributeService.SaveAttributeAsync(product, "NetWeight", netWeight); + //Akkor ez kell? - Á. - //await fruitBankAttributeService.InsertOrUpdateMeasuringAttributeValuesAsync(product.Id, 0, 0, , false); + //Igen, csak true kell a végére és mehet egy lépésben a NetWeight és az IsMeasurable - J. + + //await fruitBankAttributeService.InsertOrUpdateMeasuringAttributeValuesAsync(product.Id, netWeight, 0, isMeasurable, true); } } @@ -93,6 +100,8 @@ public class FruitBankEventConsumer(IHttpContextAccessor httpContextAccessor, Fr if (!string.IsNullOrWhiteSpace(incomingQtyStr) && int.TryParse(incomingQtyStr, out var incomingQuantity)) { await genericAttributeService.SaveAttributeAsync(product, "IncomingQuantity", incomingQuantity); + + //await fruitBankAttributeService.InsertOrUpdateGenericAttributeAsync(product.Id, "IncomingQuantity", incomingQuantity); } } } diff --git a/Nop.Plugin.Misc.AIPlugin/Factories/CustomOrderModelFactory.cs b/Nop.Plugin.Misc.AIPlugin/Factories/CustomOrderModelFactory.cs index fb77286..2631089 100644 --- a/Nop.Plugin.Misc.AIPlugin/Factories/CustomOrderModelFactory.cs +++ b/Nop.Plugin.Misc.AIPlugin/Factories/CustomOrderModelFactory.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.Mvc.Infrastructure; +using AyCode.Core.Extensions; +using Microsoft.AspNetCore.Mvc.Infrastructure; using Microsoft.AspNetCore.Mvc.Routing; using Microsoft.AspNetCore.Mvc.TagHelpers; using Nop.Core; @@ -175,12 +176,12 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Factories var orderListModelExtended = new OrderListModelExtended(); var extendedRows = new List(orderListModel.RecordsFiltered); - CopyModelHelper.CopyPublicProperties(orderListModel, orderListModelExtended); + PropertyHelper.CopyPublicProperties(orderListModel, orderListModelExtended); foreach (var orderModel in orderListModel.Data) { var orderModelExtended = new OrderModelExtended(); - CopyModelHelper.CopyPublicProperties(orderModel, orderModelExtended); + PropertyHelper.CopyPublicProperties(orderModel, orderModelExtended); orderModelExtended.IsMeasurable = await ShouldMarkAsNeedsMeasurementAsync(orderModel); diff --git a/Nop.Plugin.Misc.AIPlugin/Helpers/CopyModelHelper.cs b/Nop.Plugin.Misc.AIPlugin/Helpers/CopyModelHelper.cs deleted file mode 100644 index 6db71bd..0000000 --- a/Nop.Plugin.Misc.AIPlugin/Helpers/CopyModelHelper.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; - -namespace Nop.Plugin.Misc.FruitBankPlugin.Helpers -{ - public static class CopyModelHelper - { - public static TDestination CopyPublicProperties(TSource src, TDestination dest) - { - if (src == null || dest == null) return dest; - - var srcProps = typeof(TSource) - .GetProperties(BindingFlags.Public | BindingFlags.Instance) - .Where(p => p.CanRead); - - foreach (var sp in srcProps) - { - var dp = typeof(TDestination).GetProperty(sp.Name, BindingFlags.Public | BindingFlags.Instance); - if (dp == null || !dp.CanWrite) continue; - dp.SetValue(dest, sp.GetValue(src)); - } - - return dest; - } - } -} diff --git a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs index 48a5883..64d1f45 100644 --- a/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs +++ b/Nop.Plugin.Misc.AIPlugin/Infrastructure/PluginNopStartup.cs @@ -29,6 +29,7 @@ using Nop.Web.Areas.Admin.Models.Catalog; using Nop.Web.Areas.Admin.Models.Orders; using FruitBank.Common.Server.Interfaces; using Nop.Plugin.Misc.FruitBankPlugin.Controllers; +using Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers; namespace Nop.Plugin.Misc.FruitBankPlugin.Infrastructure; @@ -67,7 +68,8 @@ public class PluginNopStartup : INopStartup services.AddScoped(); services.AddScoped(); - + services.AddScoped(); + //services.AddScoped(); services.AddScoped(); services.AddScoped(); diff --git a/Nop.Plugin.Misc.AIPlugin/Services/FruitBankAttributeService.cs b/Nop.Plugin.Misc.AIPlugin/Services/FruitBankAttributeService.cs index c35463c..aed08e1 100644 --- a/Nop.Plugin.Misc.AIPlugin/Services/FruitBankAttributeService.cs +++ b/Nop.Plugin.Misc.AIPlugin/Services/FruitBankAttributeService.cs @@ -121,6 +121,20 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute } } + public Task InsertOrUpdateGenericAttributeAsync(int entityId, string key, TPropType value) + => InsertOrUpdateGenericAttributeAsync(entityId, key, value, storeContext.GetCurrentStore().Id); + + public async Task InsertOrUpdateGenericAttributeAsync(int entityId, string key, TPropType value, int storeId) + { + var ga = await GetGenericAttributeAsync(entityId, key, storeId); + + if (ga == null) await InsertGenericAttributeAsync(entityId, key, value, storeId); + else await UpdateGenericAttributeAsync(ga, value); + } + + public Task InsertGenericAttributeAsync(int entityId, string key, TPropType value) + => InsertGenericAttributeAsync(entityId, key, value, storeContext.GetCurrentStore().Id); + public async Task InsertGenericAttributeAsync(int entityId, string key, TPropType value, int storeId) { var genericAttribute = new GenericAttribute @@ -135,6 +149,9 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute await genericAttributeService.InsertAttributeAsync(genericAttribute); } + public Task UpdateGenericAttributeAsync(int entityId, string key, TPropType value) + => UpdateGenericAttributeAsync(entityId, key, value, storeContext.GetCurrentStore().Id); + public async Task UpdateGenericAttributeAsync(int entityId, string key, TPropType newValue, int storeId) { var ga = await GetGenericAttributeAsync(entityId, key, storeId); @@ -147,6 +164,9 @@ public class FruitBankAttributeService(IGenericAttributeService genericAttribute await genericAttributeService.UpdateAttributeAsync(genericAttribute); } + public Task DeleteGenericAttributeAsync(int entityId, string key) + => DeleteGenericAttributeAsync(entityId, key, storeContext.GetCurrentStore().Id); + public async Task DeleteGenericAttributeAsync(int entityId, string key, int storeId) { var ga = await GetGenericAttributeAsync(entityId, key, storeId);