50 lines
1.6 KiB
C#
50 lines
1.6 KiB
C#
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<VisitTask>
|
|
{
|
|
|
|
private readonly IRepository<VisitTask> _visitTaskRepository;
|
|
|
|
private readonly IRepository<Subject> _subjectRepository;
|
|
|
|
|
|
|
|
public VisitTaskIAfterSignTrigger(IRepository<VisitTask> visitTaskRepository, IRepository<Subject> subjectRepository)
|
|
{
|
|
_visitTaskRepository = visitTaskRepository;
|
|
_subjectRepository = subjectRepository;
|
|
}
|
|
|
|
|
|
//添加任务的时候 如果需要签名 并且已经签名了
|
|
public async Task AfterSave(ITriggerContext<VisitTask> 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.SubjectId == visitTask.SubjectId && t.TrialReadingCriterionId==visitTask.TrialReadingCriterionId , t=>new VisitTask() { SubjectCriterionClaimUserId=null});
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
} |