修改项目删除
parent
7da5cb8c42
commit
0d020df8a8
|
@ -15,7 +15,9 @@
|
||||||
|
|
||||||
"OpenUserComplexPassword": true,
|
"OpenUserComplexPassword": true,
|
||||||
|
|
||||||
"OpenSignDocumentBeforeWork": true
|
"OpenSignDocumentBeforeWork": true,
|
||||||
|
|
||||||
|
"OpenTrialRelationDelete":true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,9 @@
|
||||||
|
|
||||||
"OpenUserComplexPassword": true,
|
"OpenUserComplexPassword": true,
|
||||||
|
|
||||||
"OpenSignDocumentBeforeWork": true
|
"OpenSignDocumentBeforeWork": true,
|
||||||
|
|
||||||
|
"OpenTrialRelationDelete": false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@
|
||||||
|
|
||||||
"OpenUserComplexPassword": false,
|
"OpenUserComplexPassword": false,
|
||||||
|
|
||||||
"OpenSignDocumentBeforeWork": false
|
"OpenSignDocumentBeforeWork": false,
|
||||||
|
|
||||||
|
"OpenTrialRelationDelete": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2553,7 +2553,7 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Application.Services.TrialService.GetTrialEnrollmentReviewerIds(System.Guid)">
|
<member name="M:IRaCIS.Application.Services.TrialService.GetTrialEnrollmentReviewerIds(System.Guid)">
|
||||||
<summary>
|
<summary>
|
||||||
根据项目Id 获取医生Id,用于出发计算费用
|
根据项目Id 获取医生Id,用于触发计算费用
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:IRaCIS.Application.Services.TrialService.GetTrialListByReviewer(IRaCIS.Application.Contracts.ReviewerTrialQueryDTO)">
|
<member name="M:IRaCIS.Application.Services.TrialService.GetTrialListByReviewer(IRaCIS.Application.Contracts.ReviewerTrialQueryDTO)">
|
||||||
|
|
|
@ -3,11 +3,10 @@ using IRaCIS.Application.Contracts;
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
using EasyCaching.Core;
|
using EasyCaching.Core;
|
||||||
using IRaCIS.Core.Application.Filter;
|
using IRaCIS.Core.Application.Filter;
|
||||||
using IRaCIS.Core.Infra.EFCore;
|
|
||||||
using MassTransit;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Panda.DynamicWebApi.Attributes;
|
using Panda.DynamicWebApi.Attributes;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -20,14 +19,16 @@ namespace IRaCIS.Application.Services
|
||||||
private readonly IEasyCachingProvider _provider;
|
private readonly IEasyCachingProvider _provider;
|
||||||
private readonly IRepository<Trial> _trialRepository;
|
private readonly IRepository<Trial> _trialRepository;
|
||||||
private readonly IRepository<TrialUser> _trialUserRepository;
|
private readonly IRepository<TrialUser> _trialUserRepository;
|
||||||
|
private readonly IOptionsMonitor<ServiceVerifyConfigOption> _verifyConfig;
|
||||||
|
|
||||||
public bool TrialExpeditedChange { get; set; } = false;
|
public bool TrialExpeditedChange { get; set; } = false;
|
||||||
|
|
||||||
|
|
||||||
public TrialService(IEasyCachingProvider provider,IRepository<Trial> trialRepository,
|
public TrialService(IEasyCachingProvider provider, IRepository<Trial> trialRepository,
|
||||||
IRepository<TrialUser> trialUserRepository
|
IRepository<TrialUser> trialUserRepository, IOptionsMonitor<ServiceVerifyConfigOption> verifyConfig
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
_verifyConfig = verifyConfig;
|
||||||
_provider = provider;
|
_provider = provider;
|
||||||
_trialRepository = trialRepository;
|
_trialRepository = trialRepository;
|
||||||
this._trialUserRepository = trialUserRepository;
|
this._trialUserRepository = trialUserRepository;
|
||||||
|
@ -131,12 +132,10 @@ namespace IRaCIS.Application.Services
|
||||||
public virtual async Task<IResponseOutput<Trial>> AddOrUpdateTrial(TrialCommand trialAddModel)
|
public virtual async Task<IResponseOutput<Trial>> AddOrUpdateTrial(TrialCommand trialAddModel)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
// 到时候 策略授权 统一改 归类
|
// 到时候 策略授权 统一改 归类
|
||||||
if (!(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin))
|
if (!(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.SuperAdmin))
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("仅PM/APM可以操作!");
|
throw new BusinessValidationFailedException("仅PM/APM可以操作!");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trialAddModel.Id == Guid.Empty || trialAddModel.Id == null)
|
if (trialAddModel.Id == Guid.Empty || trialAddModel.Id == null)
|
||||||
|
@ -176,7 +175,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
//如果是PM, 则需要将该人员添加到 运维人员表
|
//如果是PM, 则需要将该人员添加到 运维人员表
|
||||||
//添加运维人员PM
|
//添加运维人员PM
|
||||||
await _repository.AddAsync(new TrialUser() { TrialId = trial.Id, UserId = _userInfo.Id ,JoinTime = DateTime.Now});
|
await _repository.AddAsync(new TrialUser() { TrialId = trial.Id, UserId = _userInfo.Id, JoinTime = DateTime.Now });
|
||||||
|
|
||||||
// 添加扩展信息表记录
|
// 添加扩展信息表记录
|
||||||
await _repository.AddAsync(new TrialPaymentPrice() { TrialId = trial.Id });
|
await _repository.AddAsync(new TrialPaymentPrice() { TrialId = trial.Id });
|
||||||
|
@ -232,8 +231,6 @@ namespace IRaCIS.Application.Services
|
||||||
var success = await _repository.SaveChangesAsync();
|
var success = await _repository.SaveChangesAsync();
|
||||||
return ResponseOutput.Ok(trial);
|
return ResponseOutput.Ok(trial);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,50 +345,110 @@ namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
var trial = await _trialRepository.FirstOrDefaultAsync(u => u.Id == trialId);
|
var trial = (await _trialRepository.FirstOrDefaultAsync(u => u.Id == trialId)).IfNullThrowException();
|
||||||
if (trial == null) return Null404NotFound(trial);
|
|
||||||
|
|
||||||
if (trial.VisitPlanConfirmed)
|
|
||||||
{
|
|
||||||
return ResponseOutput.NotOk("Trial访视计划已经确认,无法删除");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (await _repository.AnyAsync<Enroll>(u => u.TrialId == trialId))
|
if (_verifyConfig.CurrentValue.OpenTrialRelationDelete )
|
||||||
{
|
|
||||||
return ResponseOutput.NotOk("该Trial有医生入组或在入组流程中,无法删除");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (await _repository.AnyAsync<TrialSite>(u => u.TrialId == trialId))
|
|
||||||
{
|
|
||||||
return ResponseOutput.NotOk("该Trial下面有Site,无法删除");
|
|
||||||
}
|
|
||||||
|
|
||||||
//PM 可以删除项目 仅仅在没有site 参与者只有他自己的时候
|
|
||||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
|
|
||||||
{
|
|
||||||
//参与者仅有他自己时,可以删除
|
|
||||||
if (await _trialUserRepository.CountAsync(t => t.TrialId == trialId) == 1)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
var success1 = await _repository.BatchDeleteAsync<Trial>(o => o.Id == trialId) ||
|
#region 项目真删除废弃
|
||||||
await _repository.BatchDeleteAsync<TrialUser>(t => t.TrialId == trialId) ||
|
|
||||||
await _repository.BatchDeleteAsync<TrialDictionary>(t => t.TrialId == trialId);
|
//if (trial.VisitPlanConfirmed)
|
||||||
|
//{
|
||||||
|
// return ResponseOutput.NotOk("Trial访视计划已经确认,无法删除");
|
||||||
|
//}
|
||||||
|
|
||||||
|
//if (await _repository.AnyAsync<Enroll>(u => u.TrialId == trialId))
|
||||||
|
//{
|
||||||
|
// return ResponseOutput.NotOk("该Trial有医生入组或在入组流程中,无法删除");
|
||||||
|
//}
|
||||||
|
|
||||||
|
//if (await _repository.AnyAsync<TrialSite>(u => u.TrialId == trialId))
|
||||||
|
//{
|
||||||
|
// return ResponseOutput.NotOk("该Trial下面有Site,无法删除");
|
||||||
|
//}
|
||||||
|
|
||||||
|
////PM 可以删除项目 仅仅在没有site 参与者只有他自己的时候
|
||||||
|
//if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
|
||||||
|
//{
|
||||||
|
// //参与者仅有他自己时,可以删除
|
||||||
|
// if (await _trialUserRepository.CountAsync(t => t.TrialId == trialId) == 1)
|
||||||
|
// {
|
||||||
|
|
||||||
|
// var success1 = await _repository.BatchDeleteAsync<Trial>(o => o.Id == trialId) ||
|
||||||
|
// await _repository.BatchDeleteAsync<TrialUser>(t => t.TrialId == trialId) ||
|
||||||
|
// await _repository.BatchDeleteAsync<TrialDictionary>(t => t.TrialId == trialId);
|
||||||
|
|
||||||
|
// return ResponseOutput.Result(success1);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//if (await _repository.AnyAsync<TrialUser>(u => u.TrialId == trialId))
|
||||||
|
//{
|
||||||
|
// return ResponseOutput.NotOk("该Trial下面有参与者,无法删除");
|
||||||
|
//}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
return ResponseOutput.Result(success1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (await _repository.AnyAsync<TrialUser>(u => u.TrialId == trialId))
|
|
||||||
{
|
|
||||||
return ResponseOutput.NotOk("该Trial下面有参与者,无法删除");
|
|
||||||
}
|
|
||||||
var success = await _repository.BatchDeleteAsync<Trial>(o => o.Id == trialId) ||
|
var success = await _repository.BatchDeleteAsync<Trial>(o => o.Id == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialStateChange>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialPaymentPrice>(t => t.TrialId == trialId) ||
|
||||||
|
|
||||||
await _repository.BatchDeleteAsync<TrialUser>(t => t.TrialId == trialId) ||
|
await _repository.BatchDeleteAsync<TrialUser>(t => t.TrialId == trialId) ||
|
||||||
await _repository.BatchDeleteAsync<TrialDictionary>(t => t.TrialId == trialId) ||
|
await _repository.BatchDeleteAsync<TrialDictionary>(t => t.TrialId == trialId) ||
|
||||||
await _repository.BatchDeleteAsync<TrialSiteUser>(t => t.TrialId == trialId);
|
await _repository.BatchDeleteAsync<TrialSiteUser>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<VisitStage>(t => t.TrialId == trialId) ||
|
||||||
|
|
||||||
|
|
||||||
|
await _repository.BatchDeleteAsync<TrialDocument>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialDocNeedConfirmedUserType>(t => t.TrialDocument.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialDocUserTypeConfirmedUser>(t => t.TrialDocument.TrialId == trialId) ||
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
await _repository.BatchDeleteAsync<TrialPaymentPrice>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialQCQuestion>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialQCQuestionAnswer>(t => t.TrialId == trialId) ||
|
||||||
|
|
||||||
|
|
||||||
|
await _repository.BatchDeleteAsync<TrialSiteSurvey>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialSiteUserSurvey>(t => t.TrialSiteSurvey.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialSiteEquipmentSurvey>(t => t.TrialSiteSurvey.TrialId == trialId) ||
|
||||||
|
|
||||||
|
|
||||||
|
await _repository.BatchDeleteAsync<Subject>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<SubjectVisit>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialQCQuestion>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<TrialQCQuestionAnswer>(t => t.TrialId == trialId) ||
|
||||||
|
|
||||||
|
|
||||||
|
await _repository.BatchDeleteAsync<DicomStudy>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<StudyMonitor>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<DicomSeries>(t => t.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<DicomInstance>(t => t.TrialId == trialId) ||
|
||||||
|
|
||||||
|
await _repository.BatchDeleteAsync<StudyMonitor>(t => t.TrialId == trialId) ||
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
await _repository.BatchDeleteAsync<PreviousHistory>(t => t.SubjectVisit.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<PreviousOther>(t => t.SubjectVisit.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<PreviousPDF>(t => t.SubjectVisit.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<NoneDicomStudyFile>(t => t.NoneDicomStudy.TrialId == trialId) ||
|
||||||
|
await _repository.BatchDeleteAsync<NoneDicomStudy>(t => t.TrialId == trialId)
|
||||||
|
;
|
||||||
|
|
||||||
return ResponseOutput.Result(success);
|
return ResponseOutput.Result(success);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ResponseOutput.NotOk("该环境不允许真删除项目数据");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -414,7 +471,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 根据项目Id 获取医生Id,用于出发计算费用
|
/// 根据项目Id 获取医生Id,用于触发计算费用
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async Task<List<Guid>> GetTrialEnrollmentReviewerIds(Guid trialId)
|
public async Task<List<Guid>> GetTrialEnrollmentReviewerIds(Guid trialId)
|
||||||
{
|
{
|
||||||
|
|
|
@ -10,5 +10,8 @@ namespace IRaCIS.Core.Domain.Share
|
||||||
public bool OpenUserComplexPassword { get; set; }
|
public bool OpenUserComplexPassword { get; set; }
|
||||||
|
|
||||||
public bool OpenSignDocumentBeforeWork { get; set; }
|
public bool OpenSignDocumentBeforeWork { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public bool OpenTrialRelationDelete { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue