Implement CheckAndUpdateProductManageInventoryMethodToManageStock to MgEventConsumer; improvements;

This commit is contained in:
Loretta 2025-10-24 08:12:35 +02:00
parent 56927f50ea
commit 7fb047fd28
5 changed files with 23 additions and 4 deletions

View File

@ -3,7 +3,7 @@ using Nop.Core;
namespace Mango.Nop.Core.Entities;
public class MgEntityBase : BaseEntity, IEntityInt
public abstract class MgEntityBase : BaseEntity, IEntityInt
{
public override string ToString()
{

View File

@ -1,4 +1,5 @@
using Mango.Nop.Core.Loggers;
using Nop.Core.Domain.Catalog;
using Nop.Data;
using System.Transactions;
@ -9,6 +10,8 @@ public interface IMgDbContextBase //: IAcDbContextBase
ILogger Logger { get; init; }
INopDataProvider DataProvider { get; init; }
IRepository<Product> Products { get; set; }
bool Transaction(Func<TransactionScope, bool> callbackTransactionBody, bool throwException = false);
bool TransactionSafe(Func<TransactionScope, bool> callbackTransactionBody, bool throwException = false);

View File

@ -10,7 +10,7 @@ using Nop.Data.DataProviders;
namespace Mango.Nop.Core.Repositories;
public class MgDalBase<TDbContext> : IMgDalBase<TDbContext> where TDbContext : IMgDbContextBase
public abstract class MgDalBase<TDbContext> : IMgDalBase<TDbContext> where TDbContext : IMgDbContextBase
{
public string Name { get; }
public TDbContext Context { get; }

View File

@ -7,6 +7,7 @@ using Mango.Nop.Core.Interfaces;
using Mango.Nop.Core.Loggers;
using Mango.Nop.Services;
using Nop.Core.Caching;
using Nop.Core.Domain.Catalog;
using Nop.Data;
namespace Mango.Nop.Core.Repositories;
@ -23,14 +24,17 @@ public abstract class MgDbContextBase : IMgDbContextBase
public ILogger Logger { get; init; }
public INopDataProvider DataProvider { get; init; }
public IRepository<Product> Products { get; set; }
//public IHttpContextAccessor HttpContextAccessor { get; init; }
public MgDbContextBase(INopDataProvider dataProvider, IMgLockService lockService, ILogger logger)
public MgDbContextBase(IRepository<Product> productRepository, INopDataProvider dataProvider, IMgLockService lockService, ILogger logger)
{
LockService = lockService;
Logger = logger;// new Logger<MgDbContextBase>(logWriters.ToArray());
DataProvider = dataProvider;
Products = productRepository;
}
private static TransactionScope CreateTransactionScope(TransactionScopeOption transactionScopeOption = TransactionScopeOption.Required)

View File

@ -1,5 +1,7 @@
using AyCode.Core.Loggers;
using Mango.Nop.Core.Interfaces;
using Mango.Nop.Core.Loggers;
using Mango.Nop.Core.Repositories;
using Microsoft.AspNetCore.Http;
using Nop.Core.Domain.Catalog;
using Nop.Core.Domain.Customers;
@ -13,7 +15,7 @@ namespace Mango.Nop.Services;
/// <summary>
/// Represents plugin event consumer
/// </summary>
public class MgEventConsumer(IHttpContextAccessor httpContextAccessor, IEnumerable<IAcLogWriterBase> logWriters) :
public abstract class MgEventConsumer(IMgDbContextBase ctx, IHttpContextAccessor httpContextAccessor, IEnumerable<IAcLogWriterBase> logWriters) :
IConsumer<EntityUpdatedEvent<Product>>,
IConsumer<EntityInsertedEvent<Product>>,
IConsumer<CustomerRegisteredEvent>,
@ -30,6 +32,16 @@ public class MgEventConsumer(IHttpContextAccessor httpContextAccessor, IEnumerab
protected readonly IHttpContextAccessor HttpContextAccessor = httpContextAccessor;
#endregion
protected virtual async Task<Product> CheckAndUpdateProductManageInventoryMethodToManageStock(Product product)
{
if (product.ManageInventoryMethod == ManageInventoryMethod.ManageStock) return product;
product.ManageInventoryMethod = ManageInventoryMethod.ManageStock;
await ctx.Products.UpdateAsync(product, false);
return product;
}
public virtual async Task HandleEventAsync(EntityUpdatedEvent<Product> eventMessage)
{ }