feat(dal): BaseService - доделал ведение истории
This commit is contained in:
@@ -40,12 +40,6 @@ namespace PARR.DAL.Services.Abstracts
|
||||
|
||||
public async Task<bool> CommitAsync(HistoryInitiator? initiator = null)
|
||||
{
|
||||
//todo: remove initiator
|
||||
//проверить что инициатор сохраняется в родительской таблице
|
||||
// что с родительской переписывается в историю
|
||||
// входной initiator не переписывает историю
|
||||
initiator = new HistoryInitiator { InitiatorComment = "Comment", InitiatorIp = "10.10.10.10", InitiatorParrComponentId = Constants.ParrComponentsEnum.Api };
|
||||
|
||||
#region Изменения
|
||||
var modifiedEntrities = EntitiContext.ChangeTracker.Entries()
|
||||
.Where(t => t.State == EntityState.Modified/* || t.State == EntityState.Deleted*/);
|
||||
@@ -60,8 +54,7 @@ namespace PARR.DAL.Services.Abstracts
|
||||
}
|
||||
#endregion
|
||||
|
||||
if (initiator != null)
|
||||
SetInitiator(initiator);
|
||||
SetInitiator(initiator);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -80,7 +73,7 @@ namespace PARR.DAL.Services.Abstracts
|
||||
/// Установить инициатора
|
||||
/// </summary>
|
||||
/// <param name="initiator"></param>
|
||||
private void SetInitiator(IHistoryInitiator initiator)
|
||||
private void SetInitiator(IHistoryInitiator? initiator)
|
||||
{
|
||||
// Задваем иницатора только для новых и измененных записей
|
||||
var entrities = EntitiContext.ChangeTracker.Entries()
|
||||
@@ -92,9 +85,9 @@ namespace PARR.DAL.Services.Abstracts
|
||||
// для всех объектов которые наследуются от IHistoryInitiator и не являются наследниками IHistoryTable
|
||||
if (obj.Entity is IHistoryInitiator && obj.Entity is IHistoryTable == false)
|
||||
{
|
||||
(obj.Entity as IHistoryInitiator)!.InitiatorIp = initiator.InitiatorIp;
|
||||
(obj.Entity as IHistoryInitiator)!.InitiatorParrComponentId = initiator.InitiatorParrComponentId;
|
||||
(obj.Entity as IHistoryInitiator)!.InitiatorComment = initiator.InitiatorComment;
|
||||
(obj.Entity as IHistoryInitiator)!.InitiatorIp = initiator?.InitiatorIp ?? null;
|
||||
(obj.Entity as IHistoryInitiator)!.InitiatorParrComponentId = initiator?.InitiatorParrComponentId ?? null;
|
||||
(obj.Entity as IHistoryInitiator)!.InitiatorComment = initiator?.InitiatorComment ?? null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -198,7 +191,7 @@ namespace PARR.DAL.Services.Abstracts
|
||||
/// <param name="instanceObj"></param>
|
||||
/// <param name="propName"></param>
|
||||
/// <param name="value"></param>
|
||||
private void FillHistoryProp<T>(ref object instanceObj, string propName, T value)
|
||||
private void FillHistoryProp<TValue>(ref object instanceObj, string propName, TValue value)
|
||||
{
|
||||
var histProp = instanceObj.GetType().GetProperty(propName);
|
||||
if (histProp == null)
|
||||
@@ -208,9 +201,9 @@ namespace PARR.DAL.Services.Abstracts
|
||||
}
|
||||
|
||||
// сравним типы
|
||||
if (histProp.PropertyType != typeof(T))
|
||||
if (histProp.PropertyType != typeof(TValue))
|
||||
{
|
||||
logger.LogError($"При изменении объекта для БД, не совпадают типы у свойства {propName}, {histProp.PropertyType.Name}!={typeof(T).Name}");
|
||||
logger.LogError($"При изменении объекта для БД, не совпадают типы у свойства {propName}, {histProp.PropertyType.Name}!={typeof(TValue).Name}");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user