using System; using System.Threading; using System.Threading.Tasks; using EntityFrameworkCore.Triggered; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Application.Triggers { public class AuditAddTrigger: IBeforeSaveTrigger { private readonly IUserInfo _userInfo; public AuditAddTrigger(IUserInfo userInfo) { _userInfo = userInfo; } public Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { if (context.ChangeType == ChangeType.Added) { context.Entity.CreateUserId = _userInfo.Id; if (context.Entity.CreateTime == default(DateTime)) { context.Entity.CreateTime = DateTime.UtcNow.AddHours(8); } } return Task.CompletedTask; } } public class AuditAddWithUsernameTrigger : IBeforeSaveTrigger { private readonly IUserInfo _userInfo; public AuditAddWithUsernameTrigger(IUserInfo userInfo) { _userInfo = userInfo; } public Task BeforeSave(ITriggerContext context, CancellationToken cancellationToken) { if (context.ChangeType == ChangeType.Added) { context.Entity.CreateUserId = _userInfo.Id; context.Entity.CreateUser = _userInfo.UserName; if (context.Entity.CreateTime == default(DateTime)) { context.Entity.CreateTime = DateTime.UtcNow.AddHours(8); } } return Task.CompletedTask; } } }