修改 CRO Sponsor 部位
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-06-05 14:54:37 +08:00
parent facd9e0e5f
commit c95ea8c547
5 changed files with 46 additions and 4 deletions
@@ -11,6 +11,7 @@ using static IRaCIS.Core.Domain.Share.StaticData;
using Microsoft.AspNetCore.Authorization;
using System.Linq.Expressions;
using System.Linq;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Application.Services
{
@@ -221,6 +222,19 @@ namespace IRaCIS.Application.Services
var success = await _repository.SaveChangesAsync();
//维护CRO Sponsor
await DealSponsorAndCROAsync(trial);
//维护部位到项目表
var searchList = await _repository.Where<Dictionary>(t => t.Parent.Code == "BodyPart" && t.ParentId != null && t.IsEnable).ProjectTo<BasicDicSelect>(_mapper.ConfigurationProvider).ToListAsync();
var needAddBodyPartList = searchList.Select(t => new TrialBodyPart() { Code = t.Code, Name = t.Value, NameCN = t.ValueCN });
needAddBodyPartList.ForEach(t => t.TrialId = trial.Id);
await _repository.AddRangeAsync(needAddBodyPartList);
_provider.Set(trial.Id.ToString(), StaticData.TrialState.TrialInitializing, TimeSpan.FromDays(7));
return ResponseOutput.Ok(trial);
@@ -268,12 +282,35 @@ namespace IRaCIS.Application.Services
trial.AttendedReviewerTypes = $"|{string.Join('|', updateModel.AttendedReviewerTypeEnumList.Select(x => ((int)x).ToString()).ToList())}|";
var success = await _repository.SaveChangesAsync();
//维护CRO Sponsor
await DealSponsorAndCROAsync(trial);
return ResponseOutput.Ok(trial);
}
}
private async Task DealSponsorAndCROAsync(Trial trial)
{
if (trial.SponsorId != null)
{
if (await _repository.AnyAsync<Sponsor>(t => t.Id == trial.SponsorId && t.IsTrialLevel))
{
await _repository.BatchUpdateAsync<Sponsor>(t => t.Id == trial.SponsorId, u => new Sponsor() { TrialId = trial.Id });
}
}
if (trial.CROId != null)
{
if (await _repository.AnyAsync<Sponsor>(t => t.Id == trial.SponsorId && t.IsTrialLevel))
{
await _repository.BatchUpdateAsync<Sponsor>(t => t.Id == trial.SponsorId, u => new Sponsor() { TrialId = trial.Id });
}
}
}
// TODO: 需要优化,嵌套两层 switch case
[NonDynamicMethod]
private async Task TrialExpeditedStatusChange(Guid trialId, int oldState, int newState)