国际化修改

Uat_Study
he 2023-03-29 14:01:01 +08:00
parent cb2aa0cfa4
commit f04d20f57d
10 changed files with 85 additions and 52 deletions

View File

@ -212,11 +212,12 @@ namespace IRaCIS.Core.API.Controllers
private readonly IRepository _repository; private readonly IRepository _repository;
private readonly IEasyCachingProvider _provider; private readonly IEasyCachingProvider _provider;
private readonly QCCommon _qCCommon;
public StudyController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IMediator mediator, IEasyCachingProvider provider, public StudyController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IMediator mediator, IEasyCachingProvider provider,
QCCommon qCCommon,
IRepository repository) IRepository repository)
{ {
_qCCommon = qCCommon;
_provider = provider; _provider = provider;
_hostEnvironment = hostEnvironment; _hostEnvironment = hostEnvironment;
_mediator = mediator; _mediator = mediator;
@ -439,7 +440,7 @@ namespace IRaCIS.Core.API.Controllers
public async Task<IResponseOutput> UploadVisitClinicalData(Guid subjectVisitId) public async Task<IResponseOutput> UploadVisitClinicalData(Guid subjectVisitId)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
var sv = _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefault().IfNullThrowException(); var sv = _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefault().IfNullThrowException();
await FileUploadAsync(async (fileName) => await FileUploadAsync(async (fileName) =>
@ -677,7 +678,7 @@ namespace IRaCIS.Core.API.Controllers
[FromServices] IRepository<NoneDicomStudy> _noneDicomStudyRepository, [FromServices] IRepository<StudyMonitor> _studyMonitorRepository) [FromServices] IRepository<NoneDicomStudy> _noneDicomStudyRepository, [FromServices] IRepository<StudyMonitor> _studyMonitorRepository)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
var sv = (await _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException(); var sv = (await _repository.Where<SubjectVisit>(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException();

View File

@ -258,7 +258,7 @@
"User_EmailDup": "A user with the same email already exists in this user type.", "User_EmailDup": "A user with the same email already exists in this user type.",
"User_NewOldPwdSame": "The new password is the same as the old one.", "User_NewOldPwdSame": "The new password is the same as the old one.",
"User_OldPwdInvalid": "Failed to verify the old password. ", "User_OldPwdInvalid": "Failed to verify the old password. ",
//UserService "User_LegalEmail": "Please input a legal email",
"User_VerificationCodeError": "The verification code is wrong.", "User_VerificationCodeError": "The verification code is wrong.",
"User_VerificationCodeExpired": "The verification code has expired.", "User_VerificationCodeExpired": "The verification code has expired.",
"User_CreateFailed": "Check the email address or contact maintainers. The email fails to be sent and the account cannot be created", "User_CreateFailed": "Check the email address or contact maintainers. The email fails to be sent and the account cannot be created",
@ -270,6 +270,7 @@
"UserType_InUse": "User already exists in that user type, and it cannot be deleted.", "UserType_InUse": "User already exists in that user type, and it cannot be deleted.",
// ------------------------------------------------------------QC-------------------------------------------------------------------- // ------------------------------------------------------------QC--------------------------------------------------------------------
//QCCommon //QCCommon
"QCCommon_CannotOperate": "CRC has submitted the image and it cannot be operated.", "QCCommon_CannotOperate": "CRC has submitted the image and it cannot be operated.",

View File

@ -241,7 +241,7 @@
"User_EmailDup": "该用户类型中已存在具有相同邮箱的用户。", "User_EmailDup": "该用户类型中已存在具有相同邮箱的用户。",
"User_NewOldPwdSame": "新密码与旧密码相同。", "User_NewOldPwdSame": "新密码与旧密码相同。",
"User_OldPwdInvalid": "旧密码验证失败。", "User_OldPwdInvalid": "旧密码验证失败。",
//UserService "User_LegalEmail": "请输入合法的电子邮件",
"User_VerificationCodeError": "验证码错误。", "User_VerificationCodeError": "验证码错误。",
"User_VerificationCodeExpired": "验证码已经过期。", "User_VerificationCodeExpired": "验证码已经过期。",
"User_CreateFailed": "请检查邮箱地址或者联系维护人员, 邮件发送失败, 未能创建账户成功", "User_CreateFailed": "请检查邮箱地址或者联系维护人员, 邮件发送失败, 未能创建账户成功",
@ -252,6 +252,7 @@
//UserTypeService //UserTypeService
"UserType_InUse": "该用户类型中已存在用户,不能删除。", "UserType_InUse": "该用户类型中已存在用户,不能删除。",
// ------------------------------------------------------------QC-------------------------------------------------------------------- // ------------------------------------------------------------QC--------------------------------------------------------------------
//QCCommon //QCCommon
"QCCommon_CannotOperate": "CRC 已提交影像,不能进行操作。", "QCCommon_CannotOperate": "CRC 已提交影像,不能进行操作。",

View File

@ -27,7 +27,8 @@ namespace IRaCIS.Application.Services
var exp = new EntityVerifyExp<Menu>() var exp = new EntityVerifyExp<Menu>()
{ {
VerifyExp = u => u.ParentId == menuAddOrUpdateModel.ParentId && u.MenuName == menuAddOrUpdateModel.MenuName, VerifyExp = u => u.ParentId == menuAddOrUpdateModel.ParentId && u.MenuName == menuAddOrUpdateModel.MenuName,
VerifyMsg = "该父节点下已经存在同名的子节点。" //---该父节点下已经存在同名的子节点。
VerifyMsg = _localizer["Menu_ParentDupChild"]
}; };
var menu = await _repository.InsertOrUpdateAsync<Menu, MenuCommand>(menuAddOrUpdateModel, true, exp); var menu = await _repository.InsertOrUpdateAsync<Menu, MenuCommand>(menuAddOrUpdateModel, true, exp);
@ -91,7 +92,8 @@ namespace IRaCIS.Application.Services
{ {
if (await menuRepository.AnyAsync(t => t.ParentId == menuId)) if (await menuRepository.AnyAsync(t => t.ParentId == menuId))
{ {
return ResponseOutput.NotOk("该节点存在子节点,请在删除子节点后,再删除该节点。"); //---该节点存在子节点,请在删除子节点后,再删除该节点。
return ResponseOutput.NotOk(_localizer["Menu_ChildExist"]);
} }
var success =await menuRepository.BatchDeleteNoTrackingAsync(u => u.Id == menuId); var success =await menuRepository.BatchDeleteNoTrackingAsync(u => u.Id == menuId);

View File

@ -49,7 +49,8 @@ namespace IRaCIS.Application.Services
{ {
if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => t.UserName == userName)) if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => t.UserName == userName))
{ {
throw new BusinessValidationFailedException("用户名已经存在。"); //---用户名已经存在。
throw new BusinessValidationFailedException(_localizer["User_UsernameExist"]);
} }
} }
@ -57,7 +58,8 @@ namespace IRaCIS.Application.Services
{ {
if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => (t.Phone == phone && t.UserTypeId == userTypeId))) if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => (t.Phone == phone && t.UserTypeId == userTypeId)))
{ {
throw new BusinessValidationFailedException("该用户类型中已存在具有相同的电话的用户。"); //---该用户类型中已存在具有相同的电话的用户。
throw new BusinessValidationFailedException(_localizer["User_PhoneDup"]);
} }
} }
@ -66,7 +68,8 @@ namespace IRaCIS.Application.Services
{ {
if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => (t.EMail == email && t.UserTypeId == userTypeId))) if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => (t.EMail == email && t.UserTypeId == userTypeId)))
{ {
throw new BusinessValidationFailedException("该用户类型中已存在具有相同邮箱的用户。"); //---该用户类型中已存在具有相同邮箱的用户。
throw new BusinessValidationFailedException(_localizer["User_EmailDup"]);
} }
} }
@ -79,7 +82,8 @@ namespace IRaCIS.Application.Services
if (oldPwd != null && oldPwd == newPwd) if (oldPwd != null && oldPwd == newPwd)
{ {
throw new BusinessValidationFailedException("新密码与旧密码相同。"); //---新密码与旧密码相同。
throw new BusinessValidationFailedException(_localizer["User_NewOldPwdSame"]);
} }
@ -87,12 +91,14 @@ namespace IRaCIS.Application.Services
if (oldPwd != null && dbUser.Password != oldPwd) if (oldPwd != null && dbUser.Password != oldPwd)
{ {
throw new BusinessValidationFailedException("旧密码验证失败。"); //---旧密码验证失败。
throw new BusinessValidationFailedException(_localizer["User_OldPwdInvalid"]);
} }
if (dbUser.Password == newPwd) if (dbUser.Password == newPwd)
{ {
throw new BusinessValidationFailedException("新密码与旧密码相同。"); //---新密码与旧密码相同。
throw new BusinessValidationFailedException(_localizer["User_NewOldPwdSame"]);
} }
@ -113,7 +119,8 @@ namespace IRaCIS.Application.Services
//检查手机或者邮箱是否有效 //检查手机或者邮箱是否有效
if (!Regex.IsMatch(email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$")) if (!Regex.IsMatch(email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"))
{ {
return ResponseOutput.NotOk("Please input a legal email"); //---Please input a legal email
return ResponseOutput.NotOk(_localizer["User_LegalEmail"]);
} }
@ -140,7 +147,8 @@ namespace IRaCIS.Application.Services
if (verificationRecord == null) if (verificationRecord == null)
{ {
return ResponseOutput.NotOk("验证码错误。"); //---验证码错误。
return ResponseOutput.NotOk(_localizer["User_VerificationCodeError"]);
} }
else else
@ -148,7 +156,8 @@ namespace IRaCIS.Application.Services
//检查验证码是否失效 //检查验证码是否失效
if (verificationRecord.ExpirationTime < DateTime.Now) if (verificationRecord.ExpirationTime < DateTime.Now)
{ {
return ResponseOutput.NotOk("验证码已经过期。"); //---验证码已经过期。
return ResponseOutput.NotOk(_localizer["User_VerificationCodeExpired"]);
} }
else //验证码正确 并且 没有超时 else //验证码正确 并且 没有超时
@ -267,7 +276,8 @@ namespace IRaCIS.Application.Services
} }
catch (Exception ex) catch (Exception ex)
{ {
throw new BusinessValidationFailedException("请检查邮箱地址或者联系维护人员, 邮件发送失败, 未能创建账户成功"); //---请检查邮箱地址或者联系维护人员, 邮件发送失败, 未能创建账户成功
throw new BusinessValidationFailedException(_localizer["User_CreateFailed"]);
} }
@ -296,7 +306,8 @@ namespace IRaCIS.Application.Services
if (!Regex.IsMatch(email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$")) if (!Regex.IsMatch(email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"))
{ {
return ResponseOutput.NotOk("请输入一个正确的邮箱。"); //---请输入一个正确的邮箱。
return ResponseOutput.NotOk(_localizer["User_InvalidEmail"]);
} }
@ -305,7 +316,8 @@ namespace IRaCIS.Application.Services
if (!exist) if (!exist)
{ {
return ResponseOutput.NotOk("邮箱错误。"); //---邮箱错误。
return ResponseOutput.NotOk(_localizer["User_EmailError"]);
} }
@ -337,7 +349,8 @@ namespace IRaCIS.Application.Services
if (verificationRecord == null) if (verificationRecord == null)
{ {
throw new BusinessValidationFailedException("验证码错误。"); //---验证码错误。
throw new BusinessValidationFailedException(_localizer["User_VerificationCodeError"]);
} }
else else
{ {
@ -345,7 +358,8 @@ namespace IRaCIS.Application.Services
if (verificationRecord.ExpirationTime < DateTime.Now) if (verificationRecord.ExpirationTime < DateTime.Now)
{ {
throw new BusinessValidationFailedException("验证码已经过期。"); //---验证码已经过期。
throw new BusinessValidationFailedException(_localizer["User_VerificationCodeExpired"]);
} }
else //验证码正确 并且 没有超时 else //验证码正确 并且 没有超时
{ {
@ -561,7 +575,8 @@ namespace IRaCIS.Application.Services
{ {
if (await _userTrialRepository.AnyAsync(t => t.Id == userId)) if (await _userTrialRepository.AnyAsync(t => t.Id == userId))
{ {
return ResponseOutput.NotOk("该用户已经参加项目,不能够删除。"); //---该用户已经参加项目,不能够删除。
return ResponseOutput.NotOk(_localizer["User_InProject"]);
} }
var success = await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == userId); var success = await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == userId);
@ -625,7 +640,8 @@ namespace IRaCIS.Application.Services
if (loginUser.Status == 0) if (loginUser.Status == 0)
{ {
return ResponseOutput.NotOk("该用户已经被禁用。", new LoginReturnDTO()); //---该用户已经被禁用。
return ResponseOutput.NotOk(_localizer["User_Disabled"], new LoginReturnDTO());
} }
userLoginReturnModel.BasicInfo = loginUser; userLoginReturnModel.BasicInfo = loginUser;

View File

@ -1,4 +1,4 @@
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918 // 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2021-11-03 09:38:11 // 生成时间 2021-11-03 09:38:11
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
@ -79,7 +79,8 @@ namespace IRaCIS.Core.Application.Contracts
{ {
if ( await _repository.AnyAsync<User>(t => t.UserTypeId == userTypeId)) if ( await _repository.AnyAsync<User>(t => t.UserTypeId == userTypeId))
{ {
return ResponseOutput.NotOk("该用户类型中已存在用户,不能删除"); //---该用户类型中已存在用户,不能删除
return ResponseOutput.NotOk(_localizer["UserType_InUse"]);
} }
var success = await userTypeServiceRepository.BatchDeleteNoTrackingAsync(t => t.Id == userTypeId); var success = await userTypeServiceRepository.BatchDeleteNoTrackingAsync(t => t.Id == userTypeId);

View File

@ -1,4 +1,4 @@
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// 此代码由T4模板自动生成 byzhouhang 20210918 // 此代码由T4模板自动生成 byzhouhang 20210918
// 生成时间 2021-11-22 11:29:44 // 生成时间 2021-11-22 11:29:44
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
@ -19,15 +19,17 @@ namespace IRaCIS.Core.Application.Contracts
private readonly IRepository<PreviousSurgery> _previousSurgeryRepository; private readonly IRepository<PreviousSurgery> _previousSurgeryRepository;
private readonly IRepository<PreviousPDF> _previousPdfRepository; private readonly IRepository<PreviousPDF> _previousPdfRepository;
private readonly IRepository<SubjectVisit> _subjectVisitRepository; private readonly IRepository<SubjectVisit> _subjectVisitRepository;
private readonly QCCommon _qCCommon;
public ClinicalDataService(IRepository<PreviousHistory> previousHistoryRepository,
public ClinicalDataService(IRepository<PreviousHistory> previousHistoryRepository,
IRepository<PreviousOther> previousOtherRepository, IRepository<PreviousOther> previousOtherRepository,
IRepository<PreviousSurgery> previousSurgeryRepository, IRepository<PreviousSurgery> previousSurgeryRepository,
IRepository<PreviousPDF> previousPDFRepository, IRepository<PreviousPDF> previousPDFRepository,
IRepository<SubjectVisit> subjectVisitRepository IRepository<SubjectVisit> subjectVisitRepository,
QCCommon qCCommon
) )
{ {
_qCCommon = qCCommon;
_previousOtherRepository = previousOtherRepository; _previousOtherRepository = previousOtherRepository;
_previousHistoryRepository = previousHistoryRepository; _previousHistoryRepository = previousHistoryRepository;
_previousSurgeryRepository = previousSurgeryRepository; _previousSurgeryRepository = previousSurgeryRepository;
@ -96,7 +98,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpPost("{trialId:guid}")] [HttpPost("{trialId:guid}")]
public async Task<IResponseOutput<Guid>> AddOrUpdatePreviousHistory(PreviousHistoryAddOrEdit addOrEditPreviousHistory) public async Task<IResponseOutput<Guid>> AddOrUpdatePreviousHistory(PreviousHistoryAddOrEdit addOrEditPreviousHistory)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousHistory.SubjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousHistory.SubjectVisitId);
var entity = await _previousHistoryRepository.InsertOrUpdateAsync(addOrEditPreviousHistory, true); var entity = await _previousHistoryRepository.InsertOrUpdateAsync(addOrEditPreviousHistory, true);
return ResponseOutput.Ok(entity.Id); return ResponseOutput.Ok(entity.Id);
@ -106,7 +108,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousHistoryId:guid}")] [HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousHistoryId:guid}")]
public async Task<IResponseOutput> DeletePreviousHistory(Guid previousHistoryId,Guid subjectVisitId) public async Task<IResponseOutput> DeletePreviousHistory(Guid previousHistoryId,Guid subjectVisitId)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
await _previousHistoryRepository.DeleteFromQueryAsync(t => t.Id == previousHistoryId,true); await _previousHistoryRepository.DeleteFromQueryAsync(t => t.Id == previousHistoryId,true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
@ -123,7 +125,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpPost("{trialId:guid}")] [HttpPost("{trialId:guid}")]
public async Task<IResponseOutput<Guid>> AddOrUpdatePreviousOther(PreviousOtherAddOrEdit addOrEditPreviousOther) public async Task<IResponseOutput<Guid>> AddOrUpdatePreviousOther(PreviousOtherAddOrEdit addOrEditPreviousOther)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousOther.SubjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousOther.SubjectVisitId);
var entity = await _previousOtherRepository.InsertOrUpdateAsync(addOrEditPreviousOther, true); var entity = await _previousOtherRepository.InsertOrUpdateAsync(addOrEditPreviousOther, true);
return ResponseOutput.Ok(entity.Id); return ResponseOutput.Ok(entity.Id);
@ -133,7 +135,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousOtherId:guid}")] [HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousOtherId:guid}")]
public async Task<IResponseOutput> DeletePreviousOther(Guid previousOtherId, Guid subjectVisitId) public async Task<IResponseOutput> DeletePreviousOther(Guid previousOtherId, Guid subjectVisitId)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
await _previousOtherRepository.DeleteFromQueryAsync(t => t.Id == previousOtherId,true); await _previousOtherRepository.DeleteFromQueryAsync(t => t.Id == previousOtherId,true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
@ -151,7 +153,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpPost("{trialId:guid}")] [HttpPost("{trialId:guid}")]
public async Task<IResponseOutput<Guid>> AddOrUpdatePreviousSurgery(PreviousSurgeryAddOrEdit addOrEditPreviousSurgery) public async Task<IResponseOutput<Guid>> AddOrUpdatePreviousSurgery(PreviousSurgeryAddOrEdit addOrEditPreviousSurgery)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousSurgery.SubjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousSurgery.SubjectVisitId);
var entity = await _previousSurgeryRepository.InsertOrUpdateAsync(addOrEditPreviousSurgery, true); var entity = await _previousSurgeryRepository.InsertOrUpdateAsync(addOrEditPreviousSurgery, true);
return ResponseOutput.Ok(entity.Id); return ResponseOutput.Ok(entity.Id);
} }
@ -160,7 +162,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousSurgeryId:guid}")] [HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousSurgeryId:guid}")]
public async Task<IResponseOutput> DeletePreviousSurgery(Guid previousSurgeryId, Guid subjectVisitId) public async Task<IResponseOutput> DeletePreviousSurgery(Guid previousSurgeryId, Guid subjectVisitId)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
var success = await _previousSurgeryRepository.DeleteFromQueryAsync(t => t.Id == previousSurgeryId,true); var success = await _previousSurgeryRepository.DeleteFromQueryAsync(t => t.Id == previousSurgeryId,true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
@ -177,7 +179,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task<IResponseOutput> AddOrUpdatePreviousPDF(PreviousPDFAddOrEdit addOrEditPreviousPDF) public async Task<IResponseOutput> AddOrUpdatePreviousPDF(PreviousPDFAddOrEdit addOrEditPreviousPDF)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousPDF.SubjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditPreviousPDF.SubjectVisitId);
var entity = await _previousPdfRepository.InsertOrUpdateAsync(addOrEditPreviousPDF, true); var entity = await _previousPdfRepository.InsertOrUpdateAsync(addOrEditPreviousPDF, true);
return ResponseOutput.Ok(entity.Id); return ResponseOutput.Ok(entity.Id);
@ -186,7 +188,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousPDFId:guid}")] [HttpDelete("{trialId:guid}/{subjectVisitId:guid}/{previousPDFId:guid}")]
public async Task<IResponseOutput> DeletePreviousPDF(Guid previousPDFId, Guid subjectVisitId) public async Task<IResponseOutput> DeletePreviousPDF(Guid previousPDFId, Guid subjectVisitId)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
await _previousPdfRepository.DeleteFromQueryAsync(t => t.Id == previousPDFId,true); await _previousPdfRepository.DeleteFromQueryAsync(t => t.Id == previousPDFId,true);
return ResponseOutput.Ok(); return ResponseOutput.Ok();

View File

@ -21,12 +21,14 @@ namespace IRaCIS.Core.Application.Contracts
private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository; private readonly IRepository<NoneDicomStudy> _noneDicomStudyRepository;
private readonly IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository; private readonly IRepository<NoneDicomStudyFile> _noneDicomStudyFileRepository;
private readonly AsyncLock _mutex = new AsyncLock(); private readonly AsyncLock _mutex = new AsyncLock();
private readonly QCCommon _qCCommon;
public NoneDicomStudyService(IRepository<NoneDicomStudy> noneDicomStudyRepository, public NoneDicomStudyService(IRepository<NoneDicomStudy> noneDicomStudyRepository,
QCCommon qCCommon,
IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository) IRepository<NoneDicomStudyFile> noneDicomStudyFileRepository)
{ {
_qCCommon = qCCommon;
_noneDicomStudyRepository = noneDicomStudyRepository; _noneDicomStudyRepository = noneDicomStudyRepository;
_noneDicomStudyFileRepository = noneDicomStudyFileRepository; _noneDicomStudyFileRepository = noneDicomStudyFileRepository;
@ -51,11 +53,11 @@ namespace IRaCIS.Core.Application.Contracts
public async Task<IResponseOutput<NoneDicomStudyAddReturnDto>> AddOrUpdateNoneDicomStudy(NoneDicomStudyAddOrEdit addOrEditNoneDicomStudy) public async Task<IResponseOutput<NoneDicomStudyAddReturnDto>> AddOrUpdateNoneDicomStudy(NoneDicomStudyAddOrEdit addOrEditNoneDicomStudy)
{ {
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditNoneDicomStudy.SubjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, addOrEditNoneDicomStudy.SubjectVisitId);
if (_repository.Where<Trial>(t => t.Id == addOrEditNoneDicomStudy.TrialId).Any(t => t.IsVerifyVisitImageDate==true)) if (_repository.Where<Trial>(t => t.Id == addOrEditNoneDicomStudy.TrialId).Any(t => t.IsVerifyVisitImageDate==true))
{ {
await QCCommon.VerifyStudyImageDataAsync(_repository, addOrEditNoneDicomStudy.SubjectId, addOrEditNoneDicomStudy.SubjectVisitId, addOrEditNoneDicomStudy.ImageDate); await _qCCommon.VerifyStudyImageDataAsync(_repository, addOrEditNoneDicomStudy.SubjectId, addOrEditNoneDicomStudy.SubjectVisitId, addOrEditNoneDicomStudy.ImageDate);
} }
@ -99,7 +101,7 @@ namespace IRaCIS.Core.Application.Contracts
//提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除 //提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
await _noneDicomStudyRepository.DeleteFromQueryAsync(noneDicomStudyId); await _noneDicomStudyRepository.DeleteFromQueryAsync(noneDicomStudyId);
@ -119,7 +121,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task<IResponseOutput> DeleteNoneDicomStudyFile(Guid noneDicomStudyFileId, Guid subjectVisitId) public async Task<IResponseOutput> DeleteNoneDicomStudyFile(Guid noneDicomStudyFileId, Guid subjectVisitId)
{ {
//提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除 //提交了 但是IQC同意的时候 是可以删除的 | 普通提交后也不能删除
await QCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId);
var noneDicomStudyFile = await _noneDicomStudyFileRepository.FirstOrDefaultAsync(t => t.Id == noneDicomStudyFileId); var noneDicomStudyFile = await _noneDicomStudyFileRepository.FirstOrDefaultAsync(t => t.Id == noneDicomStudyFileId);

View File

@ -1,11 +1,15 @@
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Infrastructure;
using Microsoft.Extensions.Localization;
using System.Linq.Expressions; using System.Linq.Expressions;
namespace IRaCIS.Core.Application.Service namespace IRaCIS.Core.Application.Service
{ {
public static class QCCommon public class QCCommon: BaseService
{ {
/// <summary> /// <summary>
/// 验证CRC 是否已提交 已提交 就不允许进行任何操作如果是IQC 那么还验证是否是当前任务领取人 /// 验证CRC 是否已提交 已提交 就不允许进行任何操作如果是IQC 那么还验证是否是当前任务领取人
/// </summary> /// </summary>
@ -14,7 +18,7 @@ namespace IRaCIS.Core.Application.Service
/// <param name="subjectVisitId"></param> /// <param name="subjectVisitId"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="BusinessValidationFailedException"></exception> /// <exception cref="BusinessValidationFailedException"></exception>
public static async Task VerifyIsCRCSubmmitAsync(IRepository _repository, IUserInfo _userInfo, Guid? subjectVisitId = null) public async Task VerifyIsCRCSubmmitAsync(IRepository _repository, IUserInfo _userInfo, Guid? subjectVisitId = null)
{ {
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator) if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
{ {
@ -24,7 +28,8 @@ namespace IRaCIS.Core.Application.Service
if (await _repository.AnyAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted && if (await _repository.AnyAsync<SubjectVisit>(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted &&
(!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload)))) (!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload))))
{ {
throw new BusinessValidationFailedException("CRC 已提交影像,不能进行操作。"); //---CRC 已提交影像,不能进行操作。
throw new BusinessValidationFailedException(_localizer["QCCommon_CannotOperate"]);
} }
} }
} }
@ -40,22 +45,22 @@ namespace IRaCIS.Core.Application.Service
} }
public static async Task VerifyIsCanQCAsync(IRepository _repository, IUserInfo _userInfo, SubjectVisit? subjectVisit = null, Guid? subjectVisitId = null) public async Task VerifyIsCanQCAsync(IRepository _repository, IUserInfo _userInfo, SubjectVisit? subjectVisit = null, Guid? subjectVisitId = null)
{ {
if (subjectVisitId != null) if (subjectVisitId != null)
{ {
subjectVisit = (await _repository.FirstOrDefaultAsync<SubjectVisit>(t => t.Id == subjectVisitId)).IfNullThrowException(); subjectVisit = (await _repository.FirstOrDefaultAsync<SubjectVisit>(t => t.Id == subjectVisitId)).IfNullThrowException();
} }
if (subjectVisit!.CurrentActionUserId != _userInfo.Id) if (subjectVisit!.CurrentActionUserId != _userInfo.Id)
{ {
throw new BusinessValidationFailedException("您不是该质控任务当前领取人,没有操作权限!"); //---您不是该质控任务当前领取人,没有操作权限!
throw new BusinessValidationFailedException(_localizer["QCCommon_NoPermission"]);
} }
} }
public static async Task VerifyStudyImageDataAsync(IRepository _repository, Guid subjectId, Guid subjectVisitId, DateTime imageDate) public async Task VerifyStudyImageDataAsync(IRepository _repository, Guid subjectId, Guid subjectVisitId, DateTime imageDate)
{ {
var visitList = await _repository.Where<SubjectVisit>(t => t.SubjectId == subjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToListAsync(); var visitList = await _repository.Where<SubjectVisit>(t => t.SubjectId == subjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToListAsync();
@ -68,7 +73,8 @@ namespace IRaCIS.Core.Application.Service
if (before != null && before > imageDate) if (before != null && before > imageDate)
{ {
throw new BusinessValidationFailedException($"当前访视检查时间{imageDate.ToString("yyyy-MM-dd")}不能早于前序访视检查时间{before?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"); //当前访视检查时间{imageDate.ToString("yyyy-MM-dd")}不能早于前序访视检查时间{before?.ToString("yyyy-MM-dd")},请核对检查数据是否有误
throw new BusinessValidationFailedException(_localizer["QCCommon_CheckTimeEarly", imageDate.ToString("yyyy-MM-dd"), before?.ToString("yyyy-MM-dd")]);
} }
@ -77,7 +83,8 @@ namespace IRaCIS.Core.Application.Service
if (after != null && after < imageDate) if (after != null && after < imageDate)
{ {
throw new BusinessValidationFailedException($"当前访视检查时间{imageDate.ToString("yyyy-MM-dd")}不能晚于该访视之后的检查时间{after?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"); //$"当前访视检查时间{imageDate.ToString("yyyy-MM-dd")}不能晚于该访视之后的检查时间{after?.ToString("yyyy-MM-dd")},请核对检查数据是否有误"
throw new BusinessValidationFailedException(_localizer["QCCommon_CheckTimeLate", imageDate.ToString("yyyy-MM-dd"), after?.ToString("yyyy-MM-dd")]);
} }
} }

Binary file not shown.