48 lines
1.5 KiB
C#
48 lines
1.5 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 _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == visitTask.SubjectId , t=>new Subject() { ClaimUserId=null});
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
} |