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 _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.Id == visitTask.SubjectId && t.TrialReadingCriterionId==visitTask.TrialReadingCriterionId , t=>new VisitTask() { SubjectCriterionClaimUserId=null}); } } } }