ASC.AuditTrail: refactoring

This commit is contained in:
Alexey Bannov 2022-02-08 15:00:07 +03:00
parent 45b6e59350
commit 93506010b8
7 changed files with 80 additions and 82 deletions

View File

@ -20,7 +20,7 @@ global using ASC.Web.Core.Files;
global using ASC.Web.Files.Classes;
global using ASC.Web.Files.Utils;
global using ASC.AuditTrail.Models;
global using ASC.AuditTrail.Models.Mapping;
global using ASC.AuditTrail.Models.Mappings;
global using ASC.Common.Mapping;
global using Autofac;

View File

@ -49,6 +49,6 @@ public class AuditEvent : BaseEvent, IMapFrom<AuditEventQuery>
profile.CreateMap<DbAuditEvent, AuditEvent>();
profile.CreateMap<AuditEventQuery, AuditEvent>()
.ConvertUsing<EventsConverter>();
.ConvertUsing<EventTypeConverter>();
}
}

View File

@ -23,8 +23,6 @@
*
*/
using ASC.AuditTrail.Models.Mapping;
namespace ASC.AuditTrail.Models;
public class LoginEvent : BaseEvent, IMapFrom<LoginEventQuery>
@ -37,6 +35,6 @@ public class LoginEvent : BaseEvent, IMapFrom<LoginEventQuery>
profile.CreateMap<DbLoginEvent, LoginEvent>();
profile.CreateMap<LoginEventQuery, LoginEvent>()
.ConvertUsing<EventsConverter>();
.ConvertUsing<EventTypeConverter>();
}
}

View File

@ -1,74 +0,0 @@
namespace ASC.AuditTrail.Models.Mapping
{
public class EventsConverter : ITypeConverter<LoginEventQuery, LoginEvent>, ITypeConverter<AuditEventQuery, AuditEvent>
{
private readonly UserFormatter _userFormatter;
private readonly AuditActionMapper _auditActionMapper;
private readonly MessageTarget _messageTarget;
public EventsConverter(
UserFormatter userFormatter,
AuditActionMapper actionMapper,
MessageTarget messageTarget)
{
_userFormatter = userFormatter;
_auditActionMapper = actionMapper;
_messageTarget = messageTarget;
}
public LoginEvent Convert(LoginEventQuery source, LoginEvent destination, ResolutionContext context)
{
var result = context.Mapper.Map<LoginEvent>(source.Event);
if (source.Event.DescriptionRaw != null)
{
result.Description = JsonConvert.DeserializeObject<IList<string>>(source.Event.DescriptionRaw,
new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
});
}
result.UserName = (!string.IsNullOrEmpty(source.FirstName) && !string.IsNullOrEmpty(source.LastName))
? _userFormatter.GetUserName(source.FirstName, source.LastName)
: !string.IsNullOrWhiteSpace(source.Event.Login)
? source.Event.Login
: source.Event.UserId == Core.Configuration.Constants.Guest.ID
? AuditReportResource.GuestAccount
: AuditReportResource.UnknownAccount;
result.ActionText = _auditActionMapper.GetActionText(result);
return result;
}
public AuditEvent Convert(AuditEventQuery source, AuditEvent destination, ResolutionContext context)
{
var result = context.Mapper.Map<AuditEvent>(source.Event);
if (source.Event.DescriptionRaw != null)
{
result.Description = JsonConvert.DeserializeObject<IList<string>>(
JsonConvert.ToString(source.Event.DescriptionRaw),
new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
});
}
result.Target = _messageTarget.Parse(source.Event.Target);
result.UserName = (source.FirstName != null && source.LastName != null) ? _userFormatter.GetUserName(source.FirstName, source.LastName) :
source.Event.UserId == Core.Configuration.Constants.CoreSystem.ID ? AuditReportResource.SystemAccount :
source.Event.UserId == Core.Configuration.Constants.Guest.ID ? AuditReportResource.GuestAccount :
source.Event.Initiator ?? AuditReportResource.UnknownAccount;
result.ActionText = _auditActionMapper.GetActionText(result);
result.ActionTypeText = _auditActionMapper.GetActionTypeText(result);
result.Product = _auditActionMapper.GetProductText(result);
result.Module = _auditActionMapper.GetModuleText(result);
return result;
}
}
}

View File

@ -0,0 +1,74 @@
namespace ASC.AuditTrail.Models.Mappings;
public class EventTypeConverter : ITypeConverter<LoginEventQuery, LoginEvent>,
ITypeConverter<AuditEventQuery, AuditEvent>
{
private readonly UserFormatter _userFormatter;
private readonly AuditActionMapper _auditActionMapper;
private readonly MessageTarget _messageTarget;
public EventTypeConverter(
UserFormatter userFormatter,
AuditActionMapper actionMapper,
MessageTarget messageTarget)
{
_userFormatter = userFormatter;
_auditActionMapper = actionMapper;
_messageTarget = messageTarget;
}
public LoginEvent Convert(LoginEventQuery source, LoginEvent destination, ResolutionContext context)
{
var result = context.Mapper.Map<LoginEvent>(source.Event);
if (source.Event.DescriptionRaw != null)
{
result.Description = JsonConvert.DeserializeObject<IList<string>>(source.Event.DescriptionRaw,
new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
});
}
result.UserName = (!string.IsNullOrEmpty(source.FirstName) && !string.IsNullOrEmpty(source.LastName))
? _userFormatter.GetUserName(source.FirstName, source.LastName)
: !string.IsNullOrWhiteSpace(source.Event.Login)
? source.Event.Login
: source.Event.UserId == Core.Configuration.Constants.Guest.ID
? AuditReportResource.GuestAccount
: AuditReportResource.UnknownAccount;
result.ActionText = _auditActionMapper.GetActionText(result);
return result;
}
public AuditEvent Convert(AuditEventQuery source, AuditEvent destination, ResolutionContext context)
{
var result = context.Mapper.Map<AuditEvent>(source.Event);
if (source.Event.DescriptionRaw != null)
{
result.Description = JsonConvert.DeserializeObject<IList<string>>(
JsonConvert.ToString(source.Event.DescriptionRaw),
new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Utc
});
}
result.Target = _messageTarget.Parse(source.Event.Target);
result.UserName = (source.FirstName != null && source.LastName != null) ? _userFormatter.GetUserName(source.FirstName, source.LastName) :
source.Event.UserId == Core.Configuration.Constants.CoreSystem.ID ? AuditReportResource.SystemAccount :
source.Event.UserId == Core.Configuration.Constants.Guest.ID ? AuditReportResource.GuestAccount :
source.Event.Initiator ?? AuditReportResource.UnknownAccount;
result.ActionText = _auditActionMapper.GetActionText(result);
result.ActionTypeText = _auditActionMapper.GetActionTypeText(result);
result.Product = _auditActionMapper.GetProductText(result);
result.Module = _auditActionMapper.GetModuleText(result);
return result;
}
}

View File

@ -90,6 +90,6 @@ public class AuditEventsRepository
query = query.Take((int)limit);
}
return _mapper.Map<List<AuditEventQuery>, List<AuditEvent>>(query.ToList());
return _mapper.Map<List<AuditEventQuery>, IEnumerable<AuditEvent>>(query.ToList());
}
}

View File

@ -57,7 +57,7 @@ public class LoginEventsRepository
})
.Take(chunk);
return _mapper.Map<List<LoginEventQuery>, List<LoginEvent>>(query.ToList());
return _mapper.Map<List<LoginEventQuery>, IEnumerable<LoginEvent>>(query.ToList());
}
public IEnumerable<LoginEvent> Get(int tenant, DateTime fromDate, DateTime to)
@ -77,7 +77,7 @@ public class LoginEventsRepository
LastName = p.LastName
};
return _mapper.Map<List<LoginEventQuery>, List<LoginEvent>>(query.ToList());
return _mapper.Map<List<LoginEventQuery>, IEnumerable<LoginEvent>>(query.ToList());
}
public int GetCount(int tenant, DateTime? from = null, DateTime? to = null)