diff --git a/Mango.Nop.Core/Repositories/MgDbTableBase.cs b/Mango.Nop.Core/Repositories/MgDbTableBase.cs index 84e81fa..6d74d77 100644 --- a/Mango.Nop.Core/Repositories/MgDbTableBase.cs +++ b/Mango.Nop.Core/Repositories/MgDbTableBase.cs @@ -23,6 +23,7 @@ public class MgDbTableBase(IEventPublisher eventPublisher, INopDataProv public virtual IQueryable GetAll() => Table; #region SetTimeStampInfos + private static void SetTimeStampCreated(TEntity entity) { if (typeof(TEntity).GetInterface(nameof(ITimeStampCreated)) != null) @@ -38,10 +39,13 @@ public class MgDbTableBase(IEventPublisher eventPublisher, INopDataProv ((entity as ITimeStampModified)!).Modified = DateTime.UtcNow; } } + #endregion SetTimeStampInfos //TODO: Transaction-be tenni az event-eket! - J. + #region OnCrudEvents + private void OnInsert(IList entities) { foreach (var entity in entities) OnInsert(entity); @@ -82,6 +86,7 @@ public class MgDbTableBase(IEventPublisher eventPublisher, INopDataProv //_staticCacheManager.RemoveByPrefix(MgDbContextBase.AUCTION_PATTERN_KEY); } + #endregion OnCrudEvents #region Insert @@ -109,9 +114,11 @@ public class MgDbTableBase(IEventPublisher eventPublisher, INopDataProv OnInsert(entities); return base.InsertAsync(entities, publishEvent); } + #endregion Insert #region Update + public override void Update(TEntity entity, bool publishEvent = true) { OnUpdate(entity); @@ -135,9 +142,11 @@ public class MgDbTableBase(IEventPublisher eventPublisher, INopDataProv OnUpdate(entities); return base.UpdateAsync(entities, publishEvent); } + #endregion Update #region Delete + protected override IQueryable AddDeletedFilter(IQueryable query, in bool includeDeleted) { foreach (var entity in query) OnDelete(entity); @@ -145,6 +154,12 @@ public class MgDbTableBase(IEventPublisher eventPublisher, INopDataProv return base.AddDeletedFilter(query, in includeDeleted); } + public virtual async Task DeleteAsync(int entityId, bool publishEvent = true) + { + var entity = await GetByIdAsync(entityId); + await DeleteAsync(entity, publishEvent); + } + public override Task DeleteAsync(TEntity entity, bool publishEvent = true) { OnDelete(entity); @@ -157,12 +172,29 @@ public class MgDbTableBase(IEventPublisher eventPublisher, INopDataProv return base.DeleteAsync(entities, publishEvent); } + /// + /// It does not call the PublishEvent() and OnDelete() functions! + /// + /// + /// public override Task DeleteAsync(Expression> predicate) { - //TODO:ide mit kéne?! - J. return base.DeleteAsync(predicate); } + public async Task DeleteAsync(Expression> predicate, bool publishEvent) + { + if (publishEvent) + { + var deletingEntities = await Table.Where(predicate).ToListAsync(); + await base.DeleteAsync(deletingEntities, true); + + return; + } + + await DeleteAsync(predicate); + } + public override void Delete(TEntity entity, bool publishEvent = true) { OnDelete(entity); @@ -180,5 +212,6 @@ public class MgDbTableBase(IEventPublisher eventPublisher, INopDataProv //TODO:ide mit kéne?! - J. return base.Delete(predicate); } + #endregion Delete } \ No newline at end of file