SPM 流程配置以及修改
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-12-18 15:14:23 +08:00
parent e73c775296
commit 3cd3315964
17 changed files with 18462 additions and 56 deletions
@@ -21,6 +21,7 @@ using System.Text.RegularExpressions;
using static MassTransit.ValidationResultExtensions;
using DocumentFormat.OpenXml.Vml.Spreadsheet;
using IdentityModel.OidcClient;
using IRaCIS.Core.Domain.Models;
namespace IRaCIS.Core.Application.Contracts
{
@@ -90,11 +91,11 @@ namespace IRaCIS.Core.Application.Contracts
DoctorID = userinfo.DoctorId
};
}
else
else
{
Doctor doctor = new Doctor()
{
};
var info = await _doctorRepository.AddAsync(doctor, true);
@@ -112,7 +113,7 @@ namespace IRaCIS.Core.Application.Contracts
};
}
}
/// <summary>
@@ -125,7 +126,7 @@ namespace IRaCIS.Core.Application.Contracts
{
var dockerInfo = await _doctorRepository.Where(t => t.EMail == inDto.EmailOrPhone || t.Phone == inDto.EmailOrPhone).FirstOrDefaultAsync();
if (dockerInfo != null)
{
@@ -149,7 +150,7 @@ namespace IRaCIS.Core.Application.Contracts
EMail = inDto.EmailOrPhone,
IsVirtual = isVirtual,
AcceptingNewTrial = false,
ActivelyReading =false,
ActivelyReading = false,
ResumeStatus = ResumeStatusEnum.Pass,
CooperateStatus = ContractorStatusEnum.Noncooperation,
@@ -216,14 +217,14 @@ namespace IRaCIS.Core.Application.Contracts
{
EMail = inDto.EmailOrPhone,
IsVirtual = isVirtual,
AcceptingNewTrial=false,
ActivelyReading=false,
CooperateStatus= ContractorStatusEnum.Noncooperation,
ReviewStatus= ReviewerInformationConfirmStatus.ConfirmRefuse
AcceptingNewTrial = false,
ActivelyReading = false,
CooperateStatus = ContractorStatusEnum.Noncooperation,
ReviewStatus = ReviewerInformationConfirmStatus.ConfirmRefuse
};
var info=await _doctorRepository.AddAsync(doctor,true);
var info = await _doctorRepository.AddAsync(doctor, true);
//await _userRepository.BatchUpdateNoTrackingAsync(x => x.EMail == inDto.EmailOrPhone, x => new User()
//{
@@ -235,7 +236,7 @@ namespace IRaCIS.Core.Application.Contracts
result.ReviewStatus = info.ReviewStatus;
}
result.Token = _tokenService.GetToken(IRaCISClaims.Create(new UserBasicInfo() { Id= Guid.NewGuid() }));
result.Token = _tokenService.GetToken(IRaCISClaims.Create(new UserBasicInfo() { Id = Guid.NewGuid() }));
}
}
@@ -282,7 +283,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpPost]
[UnitOfWork]
[AllowAnonymous]
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
[TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> VerifySendCode(LoginDto userInfo, [FromServices] ITokenService _tokenService)
{
@@ -516,7 +517,7 @@ namespace IRaCIS.Core.Application.Contracts
/// </summary>
/// <param name="addOrEditTrialSiteSurvey"></param>
/// <returns></returns>
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
[TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> AddOrUpdateTrialSiteSurvey(TrialSiteSurveyAddOrEdit addOrEditTrialSiteSurvey)
{
@@ -661,7 +662,7 @@ namespace IRaCIS.Core.Application.Contracts
/// 驳回 New
/// </summary>
/// <returns></returns>
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
[TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> SubmissionRejection(TrialSiteSubmitBackCommand trialSiteSubmitBackCommand, [FromServices] IMailVerificationService _IMailVerificationService)
{
@@ -691,9 +692,12 @@ namespace IRaCIS.Core.Application.Contracts
}
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)
{
var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId && t.IsSPMJoinSiteSurvey);
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
if (hasSPMOrCPM)
var isSPMjoin= isTrialSPMJoin && hasSPMOrCPM;
if (isSPMjoin)
{
////PM 给SPM发 (初审人)
@@ -735,7 +739,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpPut("{trialId:guid}/{trialSiteSurveyId:guid}")]
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
[TrialGlobalLimit("AfterStopCannNotOpt")]
public async Task<IResponseOutput> AbandonSiteSurvey(Guid trialSiteSurveyId)
{
@@ -763,7 +767,7 @@ namespace IRaCIS.Core.Application.Contracts
/// <param name="siteSurvyeSubmit"></param>
/// <returns></returns>
[HttpPost]
[TrialGlobalLimit( "AfterStopCannNotOpt" )]
[TrialGlobalLimit("AfterStopCannNotOpt")]
[UnitOfWork]
public async Task<IResponseOutput> TrialSurveySubmit(TrialSiteSurvyeSubmitDTO siteSurvyeSubmit)
{
@@ -811,12 +815,15 @@ namespace IRaCIS.Core.Application.Contracts
}
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.Undefined || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
{
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
if (hasSPMOrCPM)
var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialId && t.IsSPMJoinSiteSurvey);
var isSPMjoin = isTrialSPMJoin && hasSPMOrCPM;
if (isSPMjoin)
{
await _trialSiteSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });