using AutoMapper; using EasyCaching.Core; using EntityFrameworkCore.Triggered; using IRaCIS.Core.Application.Service; using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure; using System.Linq.Expressions; namespace IRaCIS.Core.Application.Triggers { public class VisitTaskIAfterSignTrigger : IAfterSaveTrigger { private readonly IRepository _visitTaskRepository; private readonly IRepository _subjectRepository; public VisitTaskIAfterSignTrigger(IRepository visitTaskRepository, IRepository subjectRepository) { _visitTaskRepository = visitTaskRepository; _subjectRepository = subjectRepository; } //添加任务的时候 如果需要签名 并且已经签名了 public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) { var visitTask = context.Entity; if (visitTask.SignTime != null && visitTask.ReadingTaskState == ReadingTaskState.HaveSigned && _subjectRepository.Where(t=>t.Id==visitTask.SubjectId).SelectMany(c=>c.SubjectVisitList) .Any(t=>t.Id==visitTask.SourceSubjectVisitId && t.IsBaseLine)) { await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == visitTask.SubjectId , t=>new Subject() { ClaimUserId=null}); } } } }