修改提示
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using EntityFrameworkCore.Triggered;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
|
||||
namespace IRaCIS.Core.Application.Triggers
|
||||
{
|
||||
public class ChallengeStateTrigger : IAfterSaveTrigger<QCChallenge>
|
||||
{
|
||||
private readonly IRepository _repository;
|
||||
|
||||
public ChallengeStateTrigger(IRepository repository)
|
||||
{
|
||||
_repository = repository;
|
||||
}
|
||||
|
||||
public async Task AfterSave(ITriggerContext<QCChallenge> context, CancellationToken cancellationToken)
|
||||
{
|
||||
var subjectVisitId = context.Entity.SubjectVisitId;
|
||||
|
||||
ChallengeStateEnum subjectVisitChallengeState = default;
|
||||
|
||||
|
||||
var closedStateList = await _repository.Where<QCChallenge>(t => t.SubjectVisitId == subjectVisitId).Select(t => t.IsClosed).ToListAsync();
|
||||
|
||||
if (closedStateList.Count == 0)
|
||||
{
|
||||
subjectVisitChallengeState = ChallengeStateEnum.No;
|
||||
}
|
||||
else if (closedStateList.All(t => t is true))
|
||||
{
|
||||
subjectVisitChallengeState = ChallengeStateEnum.HaveAndAllClosed;
|
||||
}
|
||||
else
|
||||
{
|
||||
subjectVisitChallengeState = ChallengeStateEnum.HaveAndHaveNotClosed;
|
||||
}
|
||||
|
||||
|
||||
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.Id == subjectVisitId,
|
||||
u => new SubjectVisit() { ChallengeState = subjectVisitChallengeState });
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user