HIR 用户调整,初步修改
continuous-integration/drone/push Build is passing Details

Test_HIR_Net8
hang 2025-08-14 16:11:00 +08:00
parent 55c87d673c
commit 9f10af6654
92 changed files with 21802 additions and 1256 deletions

View File

@ -205,7 +205,7 @@ namespace IRaCIS.Api.Controllers
//验证MFA 编码是否有问题 ,前端要拆开,自己调用验证的逻辑 //验证MFA 编码是否有问题 ,前端要拆开,自己调用验证的逻辑
//await _userService.VerifyMFACodeAsync(userId, loginUser.MFACode); //await _userService.VerifyMFACodeAsync(userId, loginUser.MFACode);
//var loginUser = await _userRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); //var loginUser = await _userRoleRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
var basicInfo = await _userService.GetUserBasicInfo(userId, loginUser.Password); var basicInfo = await _userService.GetUserBasicInfo(userId, loginUser.Password);
@ -502,7 +502,7 @@ namespace IRaCIS.Api.Controllers
[HttpGet("User/UserRedirect")] [HttpGet("User/UserRedirect")]
[AllowAnonymous] [AllowAnonymous]
public async Task<IActionResult> UserRedirect([FromServices] IRepository<User> _userRepository, string url, [FromServices] ILogger<ExtraController> _logger) public async Task<IActionResult> UserRedirect([FromServices] IRepository<UserRole> _userRoleRepository, string url, [FromServices] ILogger<ExtraController> _logger)
{ {
var decodeUrl = System.Web.HttpUtility.UrlDecode(url); var decodeUrl = System.Web.HttpUtility.UrlDecode(url);
@ -518,7 +518,7 @@ namespace IRaCIS.Api.Controllers
var errorUrl = domainStrList[0] + "//" + domainStrList[2] + "/error"; var errorUrl = domainStrList[0] + "//" + domainStrList[2] + "/error";
if (!await _userRepository.AnyAsync(t => t.Id == Guid.Parse(userId) && t.EmailToken == token && t.IsFirstAdd)) if (!await _userRoleRepository.AnyAsync(t => t.Id == Guid.Parse(userId) && t.EmailToken == token && t.IsFirstAdd))
{ {
decodeUrl = errorUrl + $"?lang={lang}&ErrorMessage={System.Web.HttpUtility.UrlEncode(lang == "zh" ? "" : "ErrorThe initialization link has expired. Return")} "; decodeUrl = errorUrl + $"?lang={lang}&ErrorMessage={System.Web.HttpUtility.UrlEncode(lang == "zh" ? "" : "ErrorThe initialization link has expired. Return")} ";
} }

View File

@ -147,7 +147,7 @@ public static class AppSettings
case nameof(Doctor): case nameof(Doctor):
return IRaCISBasicConfig.DoctorCodePrefix + codeInt.ToString("D4"); return IRaCISBasicConfig.DoctorCodePrefix + codeInt.ToString("D4");
case nameof(User): case nameof(UserRole):
return IRaCISBasicConfig.UserCodePrefix + codeInt.ToString("D4"); return IRaCISBasicConfig.UserCodePrefix + codeInt.ToString("D4");
case nameof(QCChallenge): case nameof(QCChallenge):

View File

@ -116,7 +116,7 @@
分配规则 分配规则
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.TaskAllocationRuleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskAllocationRule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectCanceDoctor},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.TaskAllocationRuleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskAllocationRule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectCanceDoctor},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
分配规则 分配规则
</summary> </summary>
@ -147,7 +147,7 @@
一致性分析配置表 一致性分析配置表
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.TaskConsistentRuleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskConsistentRule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Application.Contracts.IReadingClinicalDataService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},Medallion.Threading.IDistributedLockProvider,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialVirtualSiteCodeUpdate},IRaCIS.Core.Application.Service.IVisitTaskHelpeService,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.TaskConsistentRuleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskConsistentRule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Application.Contracts.IReadingClinicalDataService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},Medallion.Threading.IDistributedLockProvider,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialVirtualSiteCodeUpdate},IRaCIS.Core.Application.Service.IVisitTaskHelpeService,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
一致性分析配置表 一致性分析配置表
</summary> </summary>
@ -237,7 +237,7 @@
医学审核生成规则 废弃 医学审核生成规则 废弃
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewRuleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReviewRule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewRuleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReviewRule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
医学审核生成规则 废弃 医学审核生成规则 废弃
</summary> </summary>
@ -247,7 +247,7 @@
任务医学审核 任务医学审核
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.TaskMedicalReviewService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
任务医学审核 任务医学审核
</summary> </summary>
@ -700,7 +700,7 @@
<param name="eventId"></param> <param name="eventId"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.TrialUserListExport(IRaCIS.Application.Contracts.TrialMaintenanceExportQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser})"> <member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.TrialUserListExport(IRaCIS.Application.Contracts.TrialMaintenanceExportQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole})">
<summary> <summary>
项目参与人员导出 项目参与人员导出
</summary> </summary>
@ -708,7 +708,7 @@
<param name="_commonDocumentRepository"></param> <param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param> <param name="_dictionaryService"></param>
<param name="_trialRepository"></param> <param name="_trialRepository"></param>
<param name="_trialUseRepository"></param> <param name="_trialUseRoleRepository"></param>
<returns></returns> <returns></returns>
<exception cref="T:System.Exception"></exception> <exception cref="T:System.Exception"></exception>
</member> </member>
@ -1326,7 +1326,7 @@
TrialEmailNoticeConfigService TrialEmailNoticeConfigService
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailBlackUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingGlobalTaskInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},IRaCIS.Core.Application.Service.IEmailSendService,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer,Microsoft.AspNetCore.Hosting.IWebHostEnvironment)"> <member name="M:IRaCIS.Core.Application.Service.TrialEmailNoticeConfigService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailBlackUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingGlobalTaskInfo},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModule},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTableQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingTaskQuestionAnswer},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},IRaCIS.Core.Application.Service.IEmailSendService,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer,Microsoft.AspNetCore.Hosting.IWebHostEnvironment)">
<summary> <summary>
TrialEmailNoticeConfigService TrialEmailNoticeConfigService
</summary> </summary>
@ -1938,7 +1938,7 @@
FrontAuditConfigService FrontAuditConfigService
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.FrontAuditConfigService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.FrontAuditConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DataInspection},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CheckChallengeDialog},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.FrontAuditConfigService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.FrontAuditConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DataInspection},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CheckChallengeDialog},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
FrontAuditConfigService FrontAuditConfigService
</summary> </summary>
@ -13391,7 +13391,7 @@
生成的阅片模块(在大列表上展示的) 阅片期 生成的阅片模块(在大列表上展示的) 阅片期
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.ReadModuleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataTrialSet},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModuleView},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingClinicalData},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingPeriodSet},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModule},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.ReadModuleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Subject},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Application.Service.IVisitTaskHelpeService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ClinicalDataTrialSet},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModuleView},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.DicomInstance},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.NoneDicomStudyFile},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingClinicalData},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingPeriodSet},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadModule},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
生成的阅片模块(在大列表上展示的) 阅片期 生成的阅片模块(在大列表上展示的) 阅片期
</summary> </summary>
@ -13486,7 +13486,7 @@
用户WL模板 用户WL模板
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.UserWLTemplateService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserWLTemplate},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.UserWLTemplateService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserWLTemplate},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
用户WL模板 用户WL模板
</summary> </summary>
@ -13530,7 +13530,7 @@
Dashboard统计、全局工作量统计、入组两个维度统计按照项目、按照人 Dashboard统计、全局工作量统计、入组两个维度统计按照项目、按照人
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.StatisticsService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Doctor},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Workload},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CRO},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Hospital},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EnrollDetail},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.StatisticsService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Doctor},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Enroll},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Workload},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CRO},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Hospital},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EnrollDetail},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
Dashboard统计、全局工作量统计、入组两个维度统计按照项目、按照人 Dashboard统计、全局工作量统计、入组两个维度统计按照项目、按照人
</summary> </summary>
@ -13643,7 +13643,7 @@
项目外部人员 录入流程相关 项目外部人员 录入流程相关
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.TrialExternalUserService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialExternalUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserType},IRaCIS.Core.Application.Service.IMailVerificationService,Medallion.Threading.IDistributedLockProvider,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Service.TrialExternalUserService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialExternalUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserType},IRaCIS.Core.Application.Service.IMailVerificationService,Medallion.Threading.IDistributedLockProvider,AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
项目外部人员 录入流程相关 项目外部人员 录入流程相关
</summary> </summary>
@ -13868,7 +13868,7 @@
入组流程-CRO确定医生名单 [ Approve] 入组流程-CRO确定医生名单 [ Approve]
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.EnrollService.ConfirmReviewer(IRaCIS.Core.Application.Service.WorkLoad.DTO.ConfirmReviewerCommand,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskAllocationRule})"> <member name="M:IRaCIS.Core.Application.Service.EnrollService.ConfirmReviewer(IRaCIS.Core.Application.Service.WorkLoad.DTO.ConfirmReviewerCommand,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskAllocationRule})">
<summary> <summary>
入组流程-后台确认医生入组[Confirm] 入组流程-后台确认医生入组[Confirm]
</summary> </summary>
@ -13893,6 +13893,35 @@
<param name="_readingConsistentClinicalDataRepository"></param> <param name="_readingConsistentClinicalDataRepository"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Core.Application.Service.TestService.OldTrialDeleteUser(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Management.TrialIdentityUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole})">
<summary>
项目退出历史数据维护
</summary>
<param name="_trialIdentityUserRepository"></param>
<param name="_trialUserRoleReposiotry"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TestService.UserMutiAccount(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Management.IdentityUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserPassWordLog})">
<summary>
用户多账号,初次维护数据
</summary>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TestService.UserTrialUser(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Management.TrialIdentityUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole})">
<summary>
项目用户 维护数据
</summary>
<param name="_trialIdentityUserRepository"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TestService.ExternalTrialUser(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialExternalUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole})">
<summary>
外部人员 中心调研人员维护
</summary>
<param name="_trialIdentityUserRepository"></param>
<param name="_trialUserRoleReposiotry"></param>
<returns></returns>
</member>
<member name="M:IRaCIS.Core.Application.Service.TestService.ModifyClinicalDataTable"> <member name="M:IRaCIS.Core.Application.Service.TestService.ModifyClinicalDataTable">
<summary> <summary>
维护临床数据 --一定要在同步表前同步数据才行 维护临床数据 --一定要在同步表前同步数据才行
@ -14084,7 +14113,7 @@
加急的医学反馈任务 通知MIM 加急的医学反馈任务 通知MIM
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMedicalReviewAddedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
加急的医学反馈任务 通知MIM 加急的医学反馈任务 通知MIM
</summary> </summary>
@ -14102,7 +14131,7 @@
MIM 回复医学返回通知IR MIM 回复医学返回通知IR
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMIMRepliedMedicalReviewConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentMIMRepliedMedicalReviewConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
MIM 回复医学返回通知IR MIM 回复医学返回通知IR
</summary> </summary>
@ -14119,7 +14148,7 @@
加急阅片 IR 申请重阅 或者PM 申请重阅 加急阅片 IR 申请重阅 或者PM 申请重阅
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentIRApplyedReReadingConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UrgentIRApplyedReReadingConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TaskMedicalReview},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
加急阅片 IR 申请重阅 或者PM 申请重阅 加急阅片 IR 申请重阅 或者PM 申请重阅
</summary> </summary>
@ -14129,7 +14158,7 @@
用户提交 发送邮件 通知SPM 或者PM 用户提交 发送邮件 通知SPM 或者PM
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UserSiteSurveySubmitedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.UserSiteSurveySubmitedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
用户提交 发送邮件 通知SPM 或者PM 用户提交 发送邮件 通知SPM 或者PM
</summary> </summary>
@ -14139,7 +14168,7 @@
调研表初审通过,进行复审发送邮件 调研表初审通过,进行复审发送邮件
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.SiteSurveySPMSubmitedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.SiteSurveySPMSubmitedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
调研表初审通过,进行复审发送邮件 调研表初审通过,进行复审发送邮件
</summary> </summary>
@ -14149,7 +14178,7 @@
调研表驳回发送邮件 之前已有,需要迁移过来 调研表驳回发送邮件 之前已有,需要迁移过来
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.SiteSurverRejectedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.SiteSurverRejectedEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
调研表驳回发送邮件 之前已有,需要迁移过来 调研表驳回发送邮件 之前已有,需要迁移过来
</summary> </summary>
@ -14159,7 +14188,7 @@
CRC 提交了 通知QC进行质控 Code005006 CRC 提交了 通知QC进行质控 Code005006
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CRCSubmitedAndQCToAuditEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CRCSubmitedAndQCToAuditEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
CRC 提交了 通知QC进行质控 Code005006 CRC 提交了 通知QC进行质控 Code005006
</summary> </summary>
@ -14169,7 +14198,7 @@
CRC 回复质控质疑 通知QC Code012013 CRC 回复质控质疑 通知QC Code012013
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CRCRepliedQCChallengeEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CRCRepliedQCChallengeEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
CRC 回复质控质疑 通知QC Code012013 CRC 回复质控质疑 通知QC Code012013
</summary> </summary>
@ -14179,7 +14208,7 @@
QC回复 质控质疑通知CRC (014015) QC回复 质控质疑通知CRC (014015)
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.QCRepliedQCChallengeEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.QCRepliedQCChallengeEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
QC回复 质控质疑通知CRC (014015) QC回复 质控质疑通知CRC (014015)
</summary> </summary>
@ -14189,19 +14218,19 @@
CRC 回复一致性核查质疑 通知PM (019,020) CRC 回复一致性核查质疑 通知PM (019,020)
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CRCRepliedCheckChallengeEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CRCRepliedCheckChallengeEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
CRC 回复一致性核查质疑 通知PM (019,020) CRC 回复一致性核查质疑 通知PM (019,020)
</summary> </summary>
</member> </member>
<!-- Badly formed XML comment ignored for member "T:IRaCIS.Core.Application.MassTransit.Consumer.PMRepliedCheckChallengeEventConsumer" --> <!-- Badly formed XML comment ignored for member "T:IRaCIS.Core.Application.MassTransit.Consumer.PMRepliedCheckChallengeEventConsumer" -->
<!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.MassTransit.Consumer.PMRepliedCheckChallengeEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CheckChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})" --> <!-- Badly formed XML comment ignored for member "M:IRaCIS.Core.Application.MassTransit.Consumer.PMRepliedCheckChallengeEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CheckChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})" -->
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.CheckStateChangedToAuditEventConsumer"> <member name="T:IRaCIS.Core.Application.MassTransit.Consumer.CheckStateChangedToAuditEventConsumer">
<summary> <summary>
通知PM 进行一致性核查 (018,030) 通知PM 进行一致性核查 (018,030)
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CheckStateChangedToAuditEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CheckStateChangedToAuditEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
通知PM 进行一致性核查 (018,030) 通知PM 进行一致性核查 (018,030)
</summary> </summary>
@ -14211,7 +14240,7 @@
QC 领取了质控任务 (007008) QC 领取了质控任务 (007008)
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.QCClaimTaskEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.QCClaimTaskEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SubjectVisit},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallenge},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.QCChallengeDialog},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
QC 领取了质控任务 (007008) QC 领取了质控任务 (007008)
</summary> </summary>
@ -14222,22 +14251,22 @@
publish 请求流不会先到消费者,发布后,直接执行后续代码 publish 请求流不会先到消费者,发布后,直接执行后续代码
</summary> </summary>
<param name="_userRepository"></param> <param name="_userRoleRepository"></param>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.MasstransitTestConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.MasstransitTestConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole})">
<summary> <summary>
meditor send 的时候,请求流会先到消费者,返回后才会执行后续代码 meditor send 的时候,请求流会先到消费者,返回后才会执行后续代码
publish 请求流不会先到消费者,发布后,直接执行后续代码 publish 请求流不会先到消费者,发布后,直接执行后续代码
</summary> </summary>
<param name="_userRepository"></param> <param name="_userRoleRepository"></param>
</member> </member>
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.QCImageQuestionRecurringEventConsumer"> <member name="T:IRaCIS.Core.Application.MassTransit.Consumer.QCImageQuestionRecurringEventConsumer">
<summary> <summary>
QC 影像质疑 QC 影像质疑
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.QCImageQuestionRecurringEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUser},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.QCImageQuestionRecurringEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUser},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
QC 影像质疑 QC 影像质疑
</summary> </summary>
@ -14247,7 +14276,7 @@
CRC 影像质疑 CRC 影像质疑
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CRCImageQuestionRecurringEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUser},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.CRCImageQuestionRecurringEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUser},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
CRC 影像质疑 CRC 影像质疑
</summary> </summary>
@ -14257,7 +14286,7 @@
影像质控 发送给QC的 影像质控 发送给QC的
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Consumer.ImageQCRecurringEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUser},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Consumer.ImageQCRecurringEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialEmailNoticeConfig},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUser},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
影像质控 发送给QC的 影像质控 发送给QC的
</summary> </summary>
@ -14297,7 +14326,7 @@
10分钟检测通知IR 已通知的进行标注,下次不会再通知 10分钟检测通知IR 已通知的进行标注,下次不会再通知
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.MassTransit.Recurring.UrgentIRUnReadTaskRecurringEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})"> <member name="M:IRaCIS.Core.Application.MassTransit.Recurring.UrgentIRUnReadTaskRecurringEventConsumer.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VisitTask},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.EmailNoticeConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig})">
<summary> <summary>
10分钟检测通知IR 已通知的进行标注,下次不会再通知 10分钟检测通知IR 已通知的进行标注,下次不会再通知
</summary> </summary>
@ -15755,7 +15784,7 @@
UserTypeRoleService UserTypeRoleService
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Contracts.UserTypeRoleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserType},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Contracts.UserTypeRoleService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserType},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
UserTypeRoleService UserTypeRoleService
</summary> </summary>
@ -16188,7 +16217,7 @@
TrialSiteSurveyService TrialSiteSurveyService
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Doctor},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VerificationCode},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUser},Medallion.Threading.IDistributedLockProvider,IRaCIS.Core.Application.Auth.ITokenService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserType},IRaCIS.Core.Application.Service.IMailVerificationService,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSite},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Doctor},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.VerificationCode},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUser},Medallion.Threading.IDistributedLockProvider,IRaCIS.Core.Application.Auth.ITokenService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserType},IRaCIS.Core.Application.Service.IMailVerificationService,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
TrialSiteSurveyService TrialSiteSurveyService
</summary> </summary>
@ -16287,7 +16316,7 @@
TrialSiteUserSurveyService TrialSiteUserSurveyService
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteUserSurveyService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Contracts.TrialSiteUserSurveyService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteUserSurvey},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialSiteSurvey},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
TrialSiteUserSurveyService TrialSiteUserSurveyService
</summary> </summary>
@ -16808,7 +16837,7 @@
SystemDocumentService SystemDocumentService
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Services.SystemDocumentService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.User},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocConfirmedUser},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Services.SystemDocumentService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocConfirmedUser},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
SystemDocumentService SystemDocumentService
</summary> </summary>
@ -16831,7 +16860,7 @@
TrialDocumentService TrialDocumentService
</summary> </summary>
</member> </member>
<member name="M:IRaCIS.Core.Application.Services.TrialDocumentService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocConfirmedUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Application.Contracts.ISystemDocumentService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocConfirmedUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocNeedConfirmedUserType},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocNeedConfirmedUserType},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocConfirmedUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)"> <member name="M:IRaCIS.Core.Application.Services.TrialDocumentService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocConfirmedUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Application.Contracts.ISystemDocumentService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocConfirmedUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocNeedConfirmedUserType},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocNeedConfirmedUserType},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.SystemDocument},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDocConfirmedUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.ReadingQuestionCriterionTrial},AutoMapper.IMapper,IRaCIS.Core.Domain.Share.IUserInfo,Microsoft.Extensions.Localization.IStringLocalizer)">
<summary> <summary>
TrialDocumentService TrialDocumentService
</summary> </summary>
@ -18564,7 +18593,7 @@
<param name="inQuery"></param> <param name="inQuery"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:IRaCIS.Application.Services.PatientService.AddOrUpdateTrial(IRaCIS.Application.Contracts.AddOrUpdateTrialCommand,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Application.Contracts.SystemHospitalOption},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser},ZiggyCreatures.Caching.Fusion.IFusionCache)"> <member name="M:IRaCIS.Application.Services.PatientService.AddOrUpdateTrial(IRaCIS.Application.Contracts.AddOrUpdateTrialCommand,Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.SystemEmailSendConfig},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Core.Domain.Share.ServiceVerifyConfigOption},Microsoft.Extensions.Options.IOptionsMonitor{IRaCIS.Application.Contracts.SystemHospitalOption},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialDictionary},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUserRole},ZiggyCreatures.Caching.Fusion.IFusionCache)">
<summary> <summary>
添加更新项目 添加更新项目
</summary> </summary>

View File

@ -22,7 +22,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
/// 加急的医学反馈任务 通知MIM /// 加急的医学反馈任务 通知MIM
/// </summary> /// </summary>
public class UrgentMedicalReviewAddedEventConsumer( public class UrgentMedicalReviewAddedEventConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TaskMedicalReview> _taskMedicalReviewRepository, IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
@ -58,7 +58,7 @@ public class UrgentMedicalReviewAddedEventConsumer(
return; return;
} }
var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId); var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId);
var userinfo = await _userRepository.Where(x => x.Id == medicalReview.MedicalManagerUserId).FirstOrDefaultAsync(); var userinfo = await _userRoleRepository.Where(x => x.Id == medicalReview.MedicalManagerUserId).FirstOrDefaultAsync();
var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReview.VisitTaskId).Include(x=>x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync(); var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReview.VisitTaskId).Include(x=>x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync();
@ -128,7 +128,7 @@ public class UrgentMedicalReviewAddedEventConsumer(
//IR 回复医学反馈通知MIM //IR 回复医学反馈通知MIM
public class UrgentIRRepliedMedicalReviewConsumer( public class UrgentIRRepliedMedicalReviewConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TaskMedicalReview> _taskMedicalReviewRepository, IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
@ -159,7 +159,7 @@ public class UrgentIRRepliedMedicalReviewConsumer(
return; return;
} }
var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId); var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId);
var userinfo = await _userRepository.Where(x => x.Id == medicalReview.MedicalManagerUserId).FirstOrDefaultAsync(); var userinfo = await _userRoleRepository.Where(x => x.Id == medicalReview.MedicalManagerUserId).FirstOrDefaultAsync();
var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReview.VisitTaskId).Include(x => x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync(); var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReview.VisitTaskId).Include(x => x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync();
@ -231,7 +231,7 @@ public class UrgentIRRepliedMedicalReviewConsumer(
/// MIM 回复医学返回通知IR /// MIM 回复医学返回通知IR
/// </summary> /// </summary>
public class UrgentMIMRepliedMedicalReviewConsumer( public class UrgentMIMRepliedMedicalReviewConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TaskMedicalReview> _taskMedicalReviewRepository, IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
@ -268,7 +268,7 @@ public class UrgentMIMRepliedMedicalReviewConsumer(
var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId); var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == medicalReview.VisitTask.TrialReadingCriterionId);
var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReview.VisitTaskId).Include(x => x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync(); var taskInfo = await _visitTaskRepository.Where(x => x.Id == medicalReview.VisitTaskId).Include(x => x.SourceSubjectVisit).Include(x => x.ReadModule).Include(x => x.Subject).FirstNotNullAsync();
var userinfo = await _userRepository.Where(x => x.Id == taskInfo.DoctorUserId).FirstOrDefaultAsync(); var userinfo = await _userRoleRepository.Where(x => x.Id == taskInfo.DoctorUserId).FirstOrDefaultAsync();
@ -346,8 +346,8 @@ public class UrgentMIMRepliedMedicalReviewConsumer(
/// 加急阅片 IR 申请重阅 或者PM 申请重阅 /// 加急阅片 IR 申请重阅 或者PM 申请重阅
/// </summary> /// </summary>
public class UrgentIRApplyedReReadingConsumer( public class UrgentIRApplyedReReadingConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUseRepository, IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<TaskMedicalReview> _taskMedicalReviewRepository, IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
@ -370,9 +370,9 @@ public class UrgentIRApplyedReReadingConsumer(
var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == taskInfo.TrialReadingCriterionId); var criterion = await _readingQuestionCriterionTrialRepository.FirstOrDefaultAsync(x => x.Id == taskInfo.TrialReadingCriterionId);
var doctorInfo = await _userRepository.Where(x => x.Id == taskInfo.DoctorUserId).FirstOrDefaultAsync(); var doctorInfo = await _userRoleRepository.Where(x => x.Id == taskInfo.DoctorUserId).FirstOrDefaultAsync();
var trialUser = await _trialUseRepository.Where(x => x.TrialId == taskInfo.TrialId).Include(x => x.User).Select(x=>x.User).ToListAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == taskInfo.TrialId).Include(x => x.UserRole).Select(x=>x.UserRole).ToListAsync();
var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.ProjectManager||x.UserTypeEnum==UserTypeEnum.APM).ToList(); var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.ProjectManager||x.UserTypeEnum==UserTypeEnum.APM).ToList();
if (context.Message.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed) if (context.Message.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed)

View File

@ -30,7 +30,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
public class UserSiteSurveySubmitedEventConsumer( public class UserSiteSurveySubmitedEventConsumer(
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<TrialSite> _trialSiteRepository, IRepository<TrialSite> _trialSiteRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<TrialSiteSurvey> _trialSiteSurveyRepository, IRepository<TrialSiteSurvey> _trialSiteSurveyRepository,
IRepository<EmailNoticeConfig> _emailNoticeConfigrepository, IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig
@ -48,8 +48,8 @@ public class UserSiteSurveySubmitedEventConsumer(
var trialId = siteSurveyInfo.TrialId; var trialId = siteSurveyInfo.TrialId;
var trialUserList = await _trialUserRepository.Where(t => t.TrialId == siteSurveyInfo.TrialId) var trialUserList = await _trialUserRepository.Where(t => t.TrialId == siteSurveyInfo.TrialId)
.Where(t => t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM) .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserRole.UserTypeEnum == UserTypeEnum.APM)
.Select(t => new { t.User.FullName, t.User.EMail, t.User.UserTypeEnum }).ToListAsync(); .Select(t => new { t.UserRole.FullName, t.UserRole.EMail, t.UserRole.UserTypeEnum }).ToListAsync();
var sPMOrCPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.SPM || t.UserTypeEnum == UserTypeEnum.CPM).ToList(); var sPMOrCPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.SPM || t.UserTypeEnum == UserTypeEnum.CPM).ToList();
var pmAndAPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserTypeEnum == UserTypeEnum.APM).ToList(); var pmAndAPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserTypeEnum == UserTypeEnum.APM).ToList();
@ -125,7 +125,7 @@ public class UserSiteSurveySubmitedEventConsumer(
/// </summary> /// </summary>
public class SiteSurveySPMSubmitedEventConsumer( public class SiteSurveySPMSubmitedEventConsumer(
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<TrialSite> _trialSiteRepository, IRepository<TrialSite> _trialSiteRepository,
IRepository<TrialSiteSurvey> _trialSiteSurveyRepository, IRepository<TrialSiteSurvey> _trialSiteSurveyRepository,
IRepository<EmailNoticeConfig> _emailNoticeConfigrepository, IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
@ -146,8 +146,8 @@ public class SiteSurveySPMSubmitedEventConsumer(
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
var trialUserList = _trialUserRepository.Where(t => t.TrialId == trialId) var trialUserList = _trialUserRepository.Where(t => t.TrialId == trialId)
.Where(t => t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM) .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserRole.UserTypeEnum == UserTypeEnum.APM)
.Select(t => new { t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToList(); .Select(t => new { t.UserRole.EMail, t.UserRole.FullName, t.UserRole.UserTypeEnum }).ToList();
var sPMOrCPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.SPM || t.UserTypeEnum == UserTypeEnum.CPM).ToList(); var sPMOrCPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.SPM || t.UserTypeEnum == UserTypeEnum.CPM).ToList();
var pmAndAPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserTypeEnum == UserTypeEnum.APM).ToList(); var pmAndAPMList = trialUserList.Where(t => t.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserTypeEnum == UserTypeEnum.APM).ToList();
@ -200,7 +200,7 @@ public class SiteSurveySPMSubmitedEventConsumer(
/// 调研表驳回发送邮件 之前已有,需要迁移过来 /// 调研表驳回发送邮件 之前已有,需要迁移过来
/// </summary> /// </summary>
public class SiteSurverRejectedEventConsumer( public class SiteSurverRejectedEventConsumer(
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<TrialSite> _trialSiteRepository, IRepository<TrialSite> _trialSiteRepository,
IRepository<TrialSiteSurvey> _trialSiteSurveyRepository, IRepository<TrialSiteSurvey> _trialSiteSurveyRepository,
@ -229,13 +229,13 @@ public class SiteSurverRejectedEventConsumer(
//PM 驳回到SPM //PM 驳回到SPM
if (siteSurveyInfo.State == TrialSiteSurveyEnum.CRCSubmitted) if (siteSurveyInfo.State == TrialSiteSurveyEnum.CRCSubmitted)
{ {
//var user = await _userRepository.FirstOrDefaultAsync(t => t.Id == siteSurveyInfo.PreliminaryUserId); //var user = await _userRoleRepository.FirstOrDefaultAsync(t => t.Id == siteSurveyInfo.PreliminaryUserId);
//name = user.FullName; //name = user.FullName;
var sPMOrCPMList = _trialUserRepository.Where(t => t.TrialId == trialId) var sPMOrCPMList = _trialUserRepository.Where(t => t.TrialId == trialId)
.Where(t => t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM) .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM)
.Select(t => new { t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToList(); .Select(t => new { t.UserRole.EMail, t.UserRole.FullName, t.UserRole.UserTypeEnum }).ToList();
foreach (var user in sPMOrCPMList) foreach (var user in sPMOrCPMList)

View File

@ -23,8 +23,8 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
/// CRC 提交了 通知QC进行质控 Code005006 /// CRC 提交了 通知QC进行质控 Code005006
/// </summary> /// </summary>
public class CRCSubmitedAndQCToAuditEventConsumer( public class CRCSubmitedAndQCToAuditEventConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUseRepository, IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
@ -43,7 +43,7 @@ public class CRCSubmitedAndQCToAuditEventConsumer(
var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstOrDefaultAsync(); var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstOrDefaultAsync();
var trialUser = await _trialUseRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.User).Select(x => x.User).ToListAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.IQC).ToList(); var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.IQC).ToList();
@ -122,8 +122,8 @@ public class CRCSubmitedAndQCToAuditEventConsumer(
/// CRC 回复质控质疑 通知QC Code012013 /// CRC 回复质控质疑 通知QC Code012013
/// </summary> /// </summary>
public class CRCRepliedQCChallengeEventConsumer( public class CRCRepliedQCChallengeEventConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUseRepository, IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<QCChallenge> _qCChallengeRepository, IRepository<QCChallenge> _qCChallengeRepository,
@ -148,7 +148,7 @@ public class CRCRepliedQCChallengeEventConsumer(
var trialUser = await _trialUseRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.User).Select(x => x.User).ToListAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
@ -219,8 +219,8 @@ public class CRCRepliedQCChallengeEventConsumer(
/// QC回复 质控质疑通知CRC (014015) /// QC回复 质控质疑通知CRC (014015)
/// </summary> /// </summary>
public class QCRepliedQCChallengeEventConsumer( public class QCRepliedQCChallengeEventConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUseRepository, IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<QCChallenge> _qCChallengeRepository, IRepository<QCChallenge> _qCChallengeRepository,
@ -254,7 +254,7 @@ public class QCRepliedQCChallengeEventConsumer(
var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync();
var trialUser = await _trialUseRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.User).Select(x => x.User).ToListAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).ToList(); var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).ToList();
@ -328,8 +328,8 @@ public class QCRepliedQCChallengeEventConsumer(
/// CRC 回复一致性核查质疑 通知PM (019,020) /// CRC 回复一致性核查质疑 通知PM (019,020)
/// </summary> /// </summary>
public class CRCRepliedCheckChallengeEventConsumer( public class CRCRepliedCheckChallengeEventConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUseRepository, IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<QCChallenge> _qCChallengeRepository, IRepository<QCChallenge> _qCChallengeRepository,
@ -349,7 +349,7 @@ public class CRCRepliedCheckChallengeEventConsumer(
var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync();
var trialUser = await _trialUseRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.User).Select(x => x.User).ToListAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList(); var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList();
@ -420,8 +420,8 @@ public class CRCRepliedCheckChallengeEventConsumer(
/// </summary> /// </summary>
public class PMRepliedCheckChallengeEventConsumer( public class PMRepliedCheckChallengeEventConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUseRepository, IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<CheckChallengeDialog> _checkChallengeDialogRepository, IRepository<CheckChallengeDialog> _checkChallengeDialogRepository,
@ -441,7 +441,7 @@ public class PMRepliedCheckChallengeEventConsumer(
var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.NoneDicomStudyList).Include(x => x.StudyList).Include(x => x.Subject).FirstNotNullAsync(); var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.NoneDicomStudyList).Include(x => x.StudyList).Include(x => x.Subject).FirstNotNullAsync();
var trialUser = await _trialUseRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.User).Select(x => x.User).ToListAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).ToList(); var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).ToList();
@ -519,8 +519,8 @@ public class PMRepliedCheckChallengeEventConsumer(
/// 通知PM 进行一致性核查 (018,030) /// 通知PM 进行一致性核查 (018,030)
/// </summary> /// </summary>
public class CheckStateChangedToAuditEventConsumer( public class CheckStateChangedToAuditEventConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUseRepository, IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<QCChallenge> _qCChallengeRepository, IRepository<QCChallenge> _qCChallengeRepository,
@ -539,7 +539,7 @@ public class CheckStateChangedToAuditEventConsumer(
var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync(); var subjectVisit = await _subjectVisitRepository.Where(x => x.Id == subjectVisitId).Include(x => x.Subject).FirstNotNullAsync();
var trialUser = await _trialUseRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.User).Select(x => x.User).ToListAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();
var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList(); var userinfoList = trialUser.Where(x => x.UserTypeEnum == UserTypeEnum.APM || x.UserTypeEnum == UserTypeEnum.ProjectManager).ToList();
@ -607,8 +607,8 @@ public class CheckStateChangedToAuditEventConsumer(
/// QC 领取了质控任务 (007008) /// QC 领取了质控任务 (007008)
/// </summary> /// </summary>
public class QCClaimTaskEventConsumer( public class QCClaimTaskEventConsumer(
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUseRepository, IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<QCChallenge> _qCChallengeRepository, IRepository<QCChallenge> _qCChallengeRepository,
@ -634,7 +634,7 @@ public class QCClaimTaskEventConsumer(
var trialUser = await _trialUseRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.User).Select(x => x.User).ToListAsync(); var trialUser = await _trialUseRoleRepository.Where(x => x.TrialId == subjectVisit.TrialId).Include(x => x.UserRole).Select(x => x.UserRole).ToListAsync();

View File

@ -30,13 +30,13 @@ public class MasstransiTestCommand
/// publish 请求流不会先到消费者,发布后,直接执行后续代码 /// publish 请求流不会先到消费者,发布后,直接执行后续代码
/// ///
/// </summary> /// </summary>
/// <param name="_userRepository"></param> /// <param name="_userRoleRepository"></param>
public class MasstransitTestConsumer(IRepository<User> _userRepository) : IConsumer<MasstransiTestCommand> public class MasstransitTestConsumer(IRepository<UserRole> _userRoleRepository) : IConsumer<MasstransiTestCommand>
{ {
public async Task Consume(ConsumeContext<MasstransiTestCommand> context) public async Task Consume(ConsumeContext<MasstransiTestCommand> context)
{ {
Console.WriteLine(_userRepository._dbContext.GetHashCode()); Console.WriteLine(_userRoleRepository._dbContext.GetHashCode());
Console.WriteLine("Now is " + DateTime.Now.ToString()); Console.WriteLine("Now is " + DateTime.Now.ToString());
Console.WriteLine($"MassTransit.Consumer :{context.Message.value}"); Console.WriteLine($"MassTransit.Consumer :{context.Message.value}");

View File

@ -26,7 +26,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository, IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<EmailNoticeConfig> _emailNoticeConfigrepository, IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig) : IConsumer<UrgentIRUnReadTaskRecurringEvent> IOptionsMonitor<SystemEmailSendConfig> systemEmailConfig) : IConsumer<UrgentIRUnReadTaskRecurringEvent>
{ {
@ -55,9 +55,9 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
var trialUserList = _trialUserRepository.Where(t => t.TrialId == trialId).Select(t => new var trialUserList = _trialUserRepository.Where(t => t.TrialId == trialId).Select(t => new
{ {
t.UserId, t.UserId,
t.User.FullName, t.UserRole.FullName,
t.User.EMail, t.UserRole.EMail,
t.User.UserName, t.UserRole.UserName,
t.Trial.TrialCode, t.Trial.TrialCode,
t.Trial.ResearchProgramNo t.Trial.ResearchProgramNo
//TrialReadingCriterionList = t.Trial.TrialReadingCriterionList.Select(t => new { t.CriterionName, TrialReadingCriterionId = t.Id }).ToList() //TrialReadingCriterionList = t.Trial.TrialReadingCriterionList.Select(t => new { t.CriterionName, TrialReadingCriterionId = t.Id }).ToList()

View File

@ -22,7 +22,7 @@ public static class OldRecurringEmailHelper
public static async Task SendTrialEmailAsync( public static async Task SendTrialEmailAsync(
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository, IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository, IRepository<TrialSiteUser> _trialSiteUserRepository,
@ -59,7 +59,7 @@ public static class OldRecurringEmailHelper
var allUserTypeEnumList = toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList(); var allUserTypeEnumList = toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList();
var allUserList = await _trialUserRepository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.UserId, t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToListAsync(); var allUserList = await _trialUserRepository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.UserRole.UserTypeEnum)).Select(t => new { t.UserId, t.UserRole.EMail, t.UserRole.FullName, t.UserRole.UserTypeEnum }).ToListAsync();
var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum)) var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum))

View File

@ -23,7 +23,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
public class QCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepository, public class QCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepository,
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository, IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository, IRepository<TrialSiteUser> _trialSiteUserRepository,
IOptionsMonitor<SystemEmailSendConfig> _SystemEmailSendConfig) : IConsumer<QCImageQuestionRecurringEvent> IOptionsMonitor<SystemEmailSendConfig> _SystemEmailSendConfig) : IConsumer<QCImageQuestionRecurringEvent>
@ -37,7 +37,7 @@ public class QCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepo
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync(); var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
//找到 该项目的CRC 用户Id //找到 该项目的CRC 用户Id
var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => new { t.UserId, t.UserRole.FullName }).ToListAsync();
//判断是否任务可以领取 ,可以的话 发送邮件 //判断是否任务可以领取 ,可以的话 发送邮件
@ -88,7 +88,7 @@ public class QCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepo
/// </summary> /// </summary>
public class CRCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepository, public class CRCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepository,
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository, IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository, IRepository<TrialSiteUser> _trialSiteUserRepository,
IOptionsMonitor<SystemEmailSendConfig> _SystemEmailSendConfig) : IConsumer<CRCImageQuestionRecurringEvent> IOptionsMonitor<SystemEmailSendConfig> _SystemEmailSendConfig) : IConsumer<CRCImageQuestionRecurringEvent>
@ -101,7 +101,7 @@ public class CRCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRep
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync(); var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr, t.DeclarationTypeEnumList }).FirstNotNullAsync();
//找到 该项目的IQC 用户Id //找到 该项目的IQC 用户Id
var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.UserRole.FullName }).ToListAsync();
//判断是否任务可以领取 ,可以的话 发送邮件 //判断是否任务可以领取 ,可以的话 发送邮件
@ -155,7 +155,7 @@ public class CRCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRep
/// </summary> /// </summary>
public class ImageQCRecurringEventConsumer(IRepository<Trial> _trialRepository, public class ImageQCRecurringEventConsumer(IRepository<Trial> _trialRepository,
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository, IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository, IRepository<TrialSiteUser> _trialSiteUserRepository,
IOptionsMonitor<SystemEmailSendConfig> _SystemEmailSendConfig) : IConsumer<ImageQCRecurringEvent> IOptionsMonitor<SystemEmailSendConfig> _SystemEmailSendConfig) : IConsumer<ImageQCRecurringEvent>
@ -169,7 +169,7 @@ public class ImageQCRecurringEventConsumer(IRepository<Trial> _trialRepository,
var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync(); var trialInfo = await _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.ResearchProgramNo, t.ExperimentName, t.TrialCode, t.TrialStatusStr }).FirstNotNullAsync();
//找到 该项目的IQC 用户Id //找到 该项目的IQC 用户Id
var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.User.FullName }).ToListAsync(); var userList = await _trialUserRepository.Where(t => t.TrialId == trialId).Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.IQC).Select(t => new { t.UserId, t.UserRole.FullName }).ToListAsync();
//判断是否任务可以领取 ,可以的话 发送邮件 //判断是否任务可以领取 ,可以的话 发送邮件
var userIdList = userList.Select(t => t.UserId).ToList(); var userIdList = userList.Select(t => t.UserId).ToList();

View File

@ -18,7 +18,7 @@ namespace IRaCIS.Core.Application.Service
/// </summary> /// </summary>
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class TaskAllocationRuleService(IRepository<TaskAllocationRule> _taskAllocationRuleRepository, public class TaskAllocationRuleService(IRepository<TaskAllocationRule> _taskAllocationRuleRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<Enroll> _enrollRepository, IRepository<Enroll> _enrollRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<SubjectCanceDoctor> _subjectCanceDoctorRepository, IRepository<SubjectCanceDoctor> _subjectCanceDoctorRepository,
@ -124,7 +124,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<List<TrialDoctorUserSelectView>> GetDoctorUserSelectList(Guid trialId, [FromServices] IRepository<Enroll> _enrollRepository) public async Task<List<TrialDoctorUserSelectView>> GetDoctorUserSelectList(Guid trialId, [FromServices] IRepository<Enroll> _enrollRepository)
{ {
var query = from enroll in _enrollRepository.Where(t => t.TrialId == trialId && t.EnrollStatus >= EnrollStatus.ConfirmIntoGroup) var query = from enroll in _enrollRepository.Where(t => t.TrialId == trialId && t.EnrollStatus >= EnrollStatus.ConfirmIntoGroup)
join user in _userRepository.AsQueryable() on enroll.DoctorId equals user.DoctorId join user in _userRoleRepository.AsQueryable() on enroll.DoctorId equals user.DoctorId
select new TrialDoctorUserSelectView() select new TrialDoctorUserSelectView()
{ {
TrialId = enroll.TrialId, TrialId = enroll.TrialId,
@ -151,7 +151,7 @@ namespace IRaCIS.Core.Application.Service
.WhereIf(selectQuery.TrialReadingCriterionId != null && selectQuery.ReadingCategory == null, t => t.Enroll.EnrollReadingCategoryList.Any(t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId)) .WhereIf(selectQuery.TrialReadingCriterionId != null && selectQuery.ReadingCategory == null, t => t.Enroll.EnrollReadingCategoryList.Any(t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId))
.WhereIf(selectQuery.TrialReadingCriterionId != null && selectQuery.ReadingCategory != null, .WhereIf(selectQuery.TrialReadingCriterionId != null && selectQuery.ReadingCategory != null,
t => t.Enroll.EnrollReadingCategoryList.Any(t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId && t.ReadingCategory == selectQuery.ReadingCategory)) t => t.Enroll.EnrollReadingCategoryList.Any(t => t.TrialReadingCriterionId == selectQuery.TrialReadingCriterionId && t.ReadingCategory == selectQuery.ReadingCategory))
join user in _userRepository.AsQueryable() on allocationRule.DoctorUserId equals user.Id join user in _userRoleRepository.AsQueryable() on allocationRule.DoctorUserId equals user.Id
select new TrialDoctorUserSelectView() select new TrialDoctorUserSelectView()
{ {
TrialId = allocationRule.TrialId, TrialId = allocationRule.TrialId,

View File

@ -30,7 +30,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<TrialSite> _trialSiteRepository, IRepository<TrialSite> _trialSiteRepository,
IRepository<Enroll> _enrollRepository, IRepository<Enroll> _enrollRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialVirtualSiteCodeUpdate> _trialVirtualSiteCodeUpdateRepository, IRepository<TrialVirtualSiteCodeUpdate> _trialVirtualSiteCodeUpdateRepository,
IVisitTaskHelpeService _visitTaskCommonService, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITaskConsistentRuleService IVisitTaskHelpeService _visitTaskCommonService, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITaskConsistentRuleService
{ {
@ -369,7 +369,7 @@ namespace IRaCIS.Core.Application.Service
var doctorUserIdQuery = from enroll in _enrollRepository.Where(t => t.TrialId == trialId).Where(t => t.EnrollReadingCategoryList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(c => c.ReadingCategory == ReadingCategory.Global || c.ReadingCategory == ReadingCategory.Visit)) var doctorUserIdQuery = from enroll in _enrollRepository.Where(t => t.TrialId == trialId).Where(t => t.EnrollReadingCategoryList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId).Any(c => c.ReadingCategory == ReadingCategory.Global || c.ReadingCategory == ReadingCategory.Visit))
.Where(t => t.EnrollReadingCriteriaList.Any(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsJoinAnalysis == true)) .Where(t => t.EnrollReadingCriteriaList.Any(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.IsJoinAnalysis == true))
join user in _userRepository.Where() on enroll.DoctorId equals user.DoctorId join user in _userRoleRepository.Where() on enroll.DoctorId equals user.DoctorId
select user.Id; select user.Id;
var configDoctorUserIdList = await doctorUserIdQuery.ToListAsync(); var configDoctorUserIdList = await doctorUserIdQuery.ToListAsync();
@ -784,7 +784,7 @@ namespace IRaCIS.Core.Application.Service
var taskConsistentRuleQueryable = from enroll in _enrollRepository.Where(t => t.TrialId == trialId && t.EnrollStatus == EnrollStatus.ConfirmIntoGroup var taskConsistentRuleQueryable = from enroll in _enrollRepository.Where(t => t.TrialId == trialId && t.EnrollStatus == EnrollStatus.ConfirmIntoGroup
&& t.EnrollReadingCriteriaList.Any(c => c.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && c.IsJoinAnalysis)) && t.EnrollReadingCriteriaList.Any(c => c.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && c.IsJoinAnalysis))
join user in _userRepository.Where() on enroll.DoctorUserId equals user.Id join user in _userRoleRepository.Where() on enroll.DoctorUserId equals user.Id
join taskConsistentRule in _taskConsistentRuleRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.IsSelfAnalysis) on enroll.TrialId equals taskConsistentRule.TrialId join taskConsistentRule in _taskConsistentRuleRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.IsSelfAnalysis) on enroll.TrialId equals taskConsistentRule.TrialId
select new TaskConsistentRuleView() select new TaskConsistentRuleView()
{ {

View File

@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service
/// </summary> /// </summary>
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class TaskMedicalReviewRuleService(IRepository<TaskMedicalReviewRule> _taskMedicalReviewRuleRepository, public class TaskMedicalReviewRuleService(IRepository<TaskMedicalReviewRule> _taskMedicalReviewRuleRepository,
IRepository<TrialUser> _trialUserRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITaskMedicalReviewRuleService IRepository<TrialUserRole> _trialUserRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITaskMedicalReviewRuleService
{ {
@ -29,7 +29,7 @@ namespace IRaCIS.Core.Application.Service
var taskTaskMedicalReviewRuleQueryable = _taskMedicalReviewRuleRepository.Where(t => t.TrialId == inQuery.TrialId) var taskTaskMedicalReviewRuleQueryable = _taskMedicalReviewRuleRepository.Where(t => t.TrialId == inQuery.TrialId)
.ProjectTo<TaskMedicalReviewRuleView>(_mapper.ConfigurationProvider); .ProjectTo<TaskMedicalReviewRuleView>(_mapper.ConfigurationProvider);
var isHaveMIM = await _trialUserRepository.AnyAsync(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId == inQuery.TrialId); var isHaveMIM = await _trialUserRepository.AnyAsync(t => t.UserRole.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId == inQuery.TrialId);
return (await taskTaskMedicalReviewRuleQueryable.ToListAsync(), new { IsHaveMIM = isHaveMIM }); return (await taskTaskMedicalReviewRuleQueryable.ToListAsync(), new { IsHaveMIM = isHaveMIM });
} }

View File

@ -18,7 +18,7 @@ namespace IRaCIS.Core.Application.Service
/// </summary> /// </summary>
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class TaskMedicalReviewService(IRepository<TaskMedicalReview> _taskMedicalReviewRepository, public class TaskMedicalReviewService(IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<VisitTask> _visitTaskRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITaskMedicalReviewService IRepository<VisitTask> _visitTaskRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITaskMedicalReviewService
{ {
@ -328,7 +328,7 @@ namespace IRaCIS.Core.Application.Service
[HttpGet("{trialId:guid}")] [HttpGet("{trialId:guid}")]
public async Task<List<UserSimpleInfo>> GetMIMUserList(Guid trialId) public async Task<List<UserSimpleInfo>> GetMIMUserList(Guid trialId)
{ {
var query = _trialUserRepository.Where(t => (t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM || t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MC) && t.TrialId == trialId).Select(t => t.User).ProjectTo<UserSimpleInfo>(_mapper.ConfigurationProvider); var query = _trialUserRepository.Where(t => (t.UserRole.UserTypeEnum == Domain.Share.UserTypeEnum.MIM || t.UserRole.UserTypeEnum == Domain.Share.UserTypeEnum.MC) && t.TrialId == trialId).Select(t => t.UserRole).ProjectTo<UserSimpleInfo>(_mapper.ConfigurationProvider);
return await query.ToListAsync(); return await query.ToListAsync();
} }

View File

@ -2921,7 +2921,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
{ {
// IR 申请 PM 同意 // IR 申请 PM 同意
if (((IsPMOrAPm() && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.IndependentReviewer)) if (((IsPMOrAPm() && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUserRole.UserTypeEnum == UserTypeEnum.IndependentReviewer))
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null))) || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)))
{ {
@ -2964,7 +2964,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
//IR 申请 PM 同意 仅仅影响自己 //IR 申请 PM 同意 仅仅影响自己
if ((IsPMOrAPm() && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUser.UserTypeEnum == UserTypeEnum.IndependentReviewer)) if ((IsPMOrAPm() && applyId != null && await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && t.CreateUserRole.UserTypeEnum == UserTypeEnum.IndependentReviewer))
|| (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null)) || (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer && applyId == null))
{ {
@ -3083,7 +3083,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
//PM 影响所有阅片人 仅仅针对访视 SPM CPM 调用 //PM 影响所有阅片人 仅仅针对访视 SPM CPM 调用
else if (((IsSpmOrCPM()) && applyId != null && else if (((IsSpmOrCPM()) && applyId != null &&
await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && (t.CreateUser.UserTypeEnum == UserTypeEnum.ProjectManager || t.CreateUser.UserTypeEnum == UserTypeEnum.APM)) && filterObj.IsAnalysisCreate == false && filterObj.ReadingCategory == ReadingCategory.Visit) await _visitTaskReReadingRepository.AnyAsync(t => t.Id == applyId && (t.CreateUserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.CreateUserRole.UserTypeEnum == UserTypeEnum.APM)) && filterObj.IsAnalysisCreate == false && filterObj.ReadingCategory == ReadingCategory.Visit)
|| (IsPMOrAPm() && applyId == null)) || (IsPMOrAPm() && applyId == null))
{ {

View File

@ -19,8 +19,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<PIAuditTaskCommand, PIAudit>(); CreateMap<PIAuditTaskCommand, PIAudit>();
CreateMap<PIAudit, PIAuditDialogListView>() CreateMap<PIAudit, PIAuditDialogListView>()
.ForMember(o => o.CreateUserName, t => t.MapFrom(u => u.CreateUser.UserName)) .ForMember(o => o.CreateUserName, t => t.MapFrom(u => u.CreateUserRole.UserName))
.ForMember(o => o.UserTypeEnum, t => t.MapFrom(u => u.CreateUser.UserTypeEnum)) .ForMember(o => o.UserTypeEnum, t => t.MapFrom(u => u.CreateUserRole.UserTypeEnum))
//.ForMember(o => o.PIAuditState, t => t.MapFrom(u => u.VisitTask.PIAuditState)) //.ForMember(o => o.PIAuditState, t => t.MapFrom(u => u.VisitTask.PIAuditState))
; ;
#endregion #endregion
@ -222,7 +222,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TaskAllocationRuleAddOrEdit, TaskAllocationRule>(); CreateMap<TaskAllocationRuleAddOrEdit, TaskAllocationRule>();
CreateMap<User, TrialDoctorUserSelectView>() CreateMap<UserRole, TrialDoctorUserSelectView>()
.ForMember(o => o.DoctorUserId, t => t.MapFrom(u => u.Id)) .ForMember(o => o.DoctorUserId, t => t.MapFrom(u => u.Id))
.ForMember(o => o.FullName, t => t.MapFrom(u => u.FullName)); .ForMember(o => o.FullName, t => t.MapFrom(u => u.FullName));
@ -267,7 +267,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<User, UserSimpleInfo>() CreateMap<UserRole, UserSimpleInfo>()
.ForMember(o => o.UserId, t => t.MapFrom(u => u.Id)) .ForMember(o => o.UserId, t => t.MapFrom(u => u.Id))
.ForMember(o => o.UserCode, t => t.MapFrom(u => u.UserCode)) .ForMember(o => o.UserCode, t => t.MapFrom(u => u.UserCode))

View File

@ -22,7 +22,7 @@ namespace IRaCIS.Core.Application.Service.Common
{ {
[ApiExplorerSettings(GroupName = "Common")] [ApiExplorerSettings(GroupName = "Common")]
public class ExcelExportService(IRepository<TrialUser> _trialUserRepository, public class ExcelExportService(IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<SystemDocNeedConfirmedUserType> _systemDocNeedConfirmedUserTypeRepository, IRepository<SystemDocNeedConfirmedUserType> _systemDocNeedConfirmedUserTypeRepository,
@ -51,7 +51,7 @@ namespace IRaCIS.Core.Application.Service.Common
/// <param name="_commonDocumentRepository"></param> /// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param> /// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param> /// <param name="_trialRepository"></param>
/// <param name="_trialUseRepository"></param> /// <param name="_trialUseRoleRepository"></param>
/// <returns></returns> /// <returns></returns>
/// <exception cref="Exception"></exception> /// <exception cref="Exception"></exception>
[HttpPost] [HttpPost]
@ -60,7 +60,7 @@ namespace IRaCIS.Core.Application.Service.Common
[FromServices] IRepository<CommonDocument> _commonDocumentRepository, [FromServices] IRepository<CommonDocument> _commonDocumentRepository,
[FromServices] IDictionaryService _dictionaryService, [FromServices] IDictionaryService _dictionaryService,
[FromServices] IRepository<Trial> _trialRepository, [FromServices] IRepository<Trial> _trialRepository,
[FromServices] IRepository<TrialUser> _trialUseRepository [FromServices] IRepository<TrialUserRole> _trialUseRoleRepository
) )
{ {
@ -68,15 +68,15 @@ namespace IRaCIS.Core.Application.Service.Common
var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo<ExcelExportInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
var list = await _trialUseRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters() var list = await _trialUseRoleRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters()
.WhereIf(param.UserTypeId != null, t => t.User.UserTypeId == param.UserTypeId) .WhereIf(param.UserTypeId != null, t => t.UserRole.UserTypeId == param.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(param.UserName), t => t.User.UserName.Contains(param.UserName)) .WhereIf(!string.IsNullOrWhiteSpace(param.UserName), t => t.UserRole.UserName.Contains(param.UserName))
.WhereIf(param.IsDeleted != null, t => t.IsDeleted == param.IsDeleted) .WhereIf(param.IsDeleted != null, t => t.IsDeleted == param.IsDeleted)
.WhereIf(!string.IsNullOrWhiteSpace(param.OrganizationName), .WhereIf(!string.IsNullOrWhiteSpace(param.OrganizationName),
t => t.User.OrganizationName.Contains(param.OrganizationName)) t => t.UserRole.OrganizationName.Contains(param.OrganizationName))
.WhereIf(!string.IsNullOrWhiteSpace(param.UserRealName), .WhereIf(!string.IsNullOrWhiteSpace(param.UserRealName),
t => (t.User.FullName).Contains(param.UserRealName)) t => (t.UserRole.FullName).Contains(param.UserRealName))
.ProjectTo<TrialMaintenanceDTO>(_mapper.ConfigurationProvider).ToListAsync(); .ProjectTo<TrialMaintenanceDTO>(_mapper.ConfigurationProvider).ToListAsync();
exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId); exportInfo.List = ExportExcelConverterDate.ConvertToClientTimeInObject(list, _userInfo.TimeZoneId);
@ -222,7 +222,7 @@ namespace IRaCIS.Core.Application.Service.Common
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName))
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OP, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false) .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OP, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false)
.WhereIf(inQuery.CriterionType != null, o => o.TrialReadingCriterionList.Any(t => t.CriterionType == inQuery.CriterionType && t.IsSigned && t.IsConfirm)) .WhereIf(inQuery.CriterionType != null, o => o.TrialReadingCriterionList.Any(t => t.CriterionType == inQuery.CriterionType && t.IsSigned && t.IsConfirm))
.WhereIf(!string.IsNullOrEmpty(inQuery.PM_EMail), o => o.TrialUserList.Any(t => t.User.EMail.Contains(inQuery.PM_EMail) && (t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM))) .WhereIf(!string.IsNullOrEmpty(inQuery.PM_EMail), o => o.TrialUserList.Any(t => t.UserRole.EMail.Contains(inQuery.PM_EMail) && (t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserRole.UserTypeEnum == UserTypeEnum.APM)))
.Select(t => new TrialToBeDoneDto() .Select(t => new TrialToBeDoneDto()
{ {
TrialId = t.Id, TrialId = t.Id,
@ -283,7 +283,7 @@ namespace IRaCIS.Core.Application.Service.Common
IR_ReadingCriterionList = isIR ? t.TrialReadingCriterionList.Where(t => t.IsConfirm && t.IsSigned).OrderBy(t => t.CriterionName).Select(t => t.CriterionName).ToList() : null, IR_ReadingCriterionList = isIR ? t.TrialReadingCriterionList.Where(t => t.IsConfirm && t.IsSigned).OrderBy(t => t.CriterionName).Select(t => t.CriterionName).ToList() : null,
IR_PMEmailList = isIR ? t.TrialUserList.Where(t => t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM).OrderBy(t => t.User.EMail).Select(t => t.User.EMail).ToList() : null, IR_PMEmailList = isIR ? t.TrialUserList.Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserRole.UserTypeEnum == UserTypeEnum.APM).OrderBy(t => t.UserRole.EMail).Select(t => t.UserRole.EMail).ToList() : null,
IR_TotalReadCount = isIR ? t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() : 0, IR_TotalReadCount = isIR ? t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() : 0,
@ -347,8 +347,8 @@ namespace IRaCIS.Core.Application.Service.Common
var trialDocQuery = from trialDocumentNeedConfirmedUserType in _trialDocNeedConfirmedUserTypeRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) var trialDocQuery = from trialDocumentNeedConfirmedUserType in _trialDocNeedConfirmedUserTypeRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId)
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId) .WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId)
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId) .WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.UserRole.UserTypeId
join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on
new { trialUser.UserId, TrialDocumentId = trialDocumentNeedConfirmedUserType.TrialDocumentId } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc new { trialUser.UserId, TrialDocumentId = trialDocumentNeedConfirmedUserType.TrialDocumentId } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc
@ -372,10 +372,10 @@ namespace IRaCIS.Core.Application.Service.Common
//ConfirmUserId = confirm.ConfirmUserId, //ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime, ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName, RealName = trialUser.UserRole.FullName,
UserName = trialUser.User.UserName, UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.User.UserTypeId, UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName, UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
//FullFilePath = trialDocumentNeedConfirmedUserType.TrialDocument.Path //FullFilePath = trialDocumentNeedConfirmedUserType.TrialDocument.Path
}; };
@ -386,7 +386,7 @@ namespace IRaCIS.Core.Application.Service.Common
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId) .WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId)
on needConfirmEdUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId on needConfirmEdUserType.NeedConfirmUserTypeId equals trialUser.UserRole.UserTypeId
join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
from confirm in cc.DefaultIfEmpty() from confirm in cc.DefaultIfEmpty()
select new TrainingRecordExportDTO() select new TrainingRecordExportDTO()
@ -406,10 +406,10 @@ namespace IRaCIS.Core.Application.Service.Common
//ConfirmUserId = confirm.ConfirmUserId, //ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime, ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName, RealName = trialUser.UserRole.FullName,
UserName = trialUser.User.UserName, UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.User.UserTypeId, UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName, UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
//FullFilePath = needConfirmEdUserType.SystemDocument.Path //FullFilePath = needConfirmEdUserType.SystemDocument.Path
}; };
@ -815,7 +815,7 @@ namespace IRaCIS.Core.Application.Service.Common
.WhereIf(inQuery.SubjectVisitId != null, t => t.SubjectId == inQuery.SubjectVisitId) .WhereIf(inQuery.SubjectVisitId != null, t => t.SubjectId == inQuery.SubjectVisitId)
.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId) .WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
.WhereIf(inQuery.IsDicom != null, t => t.IsDicom == inQuery.IsDicom) .WhereIf(inQuery.IsDicom != null, t => t.IsDicom == inQuery.IsDicom)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Uploader), t => t.CreateUser.UserName.Contains(inQuery.Uploader)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Uploader), t => t.CreateUserRole.UserName.Contains(inQuery.Uploader))
.WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess) .WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.StudyCode), t => t.StudyCode.Contains(inQuery.StudyCode)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.StudyCode), t => t.StudyCode.Contains(inQuery.StudyCode))
.Select(t => new UnionStudyMonitorExportDto() .Select(t => new UnionStudyMonitorExportDto()
@ -832,7 +832,7 @@ namespace IRaCIS.Core.Application.Service.Common
IsDicom = t.IsDicom, IsDicom = t.IsDicom,
Uploader = t.CreateUser.UserName, Uploader = t.CreateUserRole.UserName,
IP = t.IP, IP = t.IP,
@ -1230,9 +1230,9 @@ namespace IRaCIS.Core.Application.Service.Common
var query = _trialImageDownloadRepository.Where(t => t.TrialId == inQuery.TrialId) var query = _trialImageDownloadRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.SubjectCode.Contains(inQuery.SubjectCode)) .WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.SubjectCode.Contains(inQuery.SubjectCode))
.WhereIf(inQuery.IP.IsNotNullOrEmpty(), t => t.IP.Contains(inQuery.IP)) .WhereIf(inQuery.IP.IsNotNullOrEmpty(), t => t.IP.Contains(inQuery.IP))
.WhereIf(inQuery.Name.IsNotNullOrEmpty(), t => t.CreateUser.UserName.Contains(inQuery.Name) || t.CreateUser.FullName.Contains(inQuery.Name)) .WhereIf(inQuery.Name.IsNotNullOrEmpty(), t => t.CreateUserRole.UserName.Contains(inQuery.Name) || t.CreateUserRole.FullName.Contains(inQuery.Name))
.WhereIf(inQuery.ImageType != null, t => t.ImageType == inQuery.ImageType) .WhereIf(inQuery.ImageType != null, t => t.ImageType == inQuery.ImageType)
.WhereIf(inQuery.UserType != null, t => t.CreateUser.UserTypeEnum == inQuery.UserType) .WhereIf(inQuery.UserType != null, t => t.CreateUserRole.UserTypeEnum == inQuery.UserType)
.WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess) .WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess)
.WhereIf(inQuery.DownloadStartTime != null, t => t.DownloadStartTime >= inQuery.DownloadStartTime) .WhereIf(inQuery.DownloadStartTime != null, t => t.DownloadStartTime >= inQuery.DownloadStartTime)
.WhereIf(inQuery.DownloadEndTime != null, t => t.DownloadEndTime <= inQuery.DownloadEndTime) .WhereIf(inQuery.DownloadEndTime != null, t => t.DownloadEndTime <= inQuery.DownloadEndTime)

View File

@ -42,7 +42,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<SystemBasicData> _systemBasicDatarepository, IRepository<SystemBasicData> _systemBasicDatarepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSite> _trialSiteRepository, IRepository<TrialSite> _trialSiteRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<UserFeedBack> _userFeedBackRepository, IRepository<UserFeedBack> _userFeedBackRepository,
ITokenService _tokenService, ITokenService _tokenService,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
@ -338,7 +338,7 @@ namespace IRaCIS.Core.Application.Service
public async Task AddUserSendEmailAsync(Guid userId, string baseUrl, string routeUrl) public async Task AddUserSendEmailAsync(Guid userId, string baseUrl, string routeUrl)
{ {
var sysUserInfo = (await _userRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException(); var sysUserInfo = (await _userRoleRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException();
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
@ -352,7 +352,7 @@ namespace IRaCIS.Core.Application.Service
var token = _tokenService.GetToken(IRaCISClaims.Create(_mapper.Map<UserBasicInfo>(sysUserInfo))); var token = _tokenService.GetToken(IRaCISClaims.Create(_mapper.Map<UserBasicInfo>(sysUserInfo)));
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new User() { EmailToken = token }); await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new UserRole() { EmailToken = token });
routeUrl = routeUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&UserType=" + sysUserInfo.UserTypeRole.UserTypeShortName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token; routeUrl = routeUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&UserType=" + sysUserInfo.UserTypeRole.UserTypeShortName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
@ -388,7 +388,7 @@ namespace IRaCIS.Core.Application.Service
//管理员重置密码发送邮件 //管理员重置密码发送邮件
public async Task AdminResetPwdSendEmailAsync(Guid userId, string pwdNotMd5 = "123456") public async Task AdminResetPwdSendEmailAsync(Guid userId, string pwdNotMd5 = "123456")
{ {
var sysUserInfo = (await _userRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException(); var sysUserInfo = (await _userRoleRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException();
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
//发件地址 //发件地址
@ -425,7 +425,7 @@ namespace IRaCIS.Core.Application.Service
//Site调研 用户加入项目 //Site调研 用户加入项目
public async Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl) public async Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl)
{ {
var sysUserInfo = (await _userRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException(); var sysUserInfo = (await _userRoleRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException();
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
@ -442,7 +442,7 @@ namespace IRaCIS.Core.Application.Service
if (sysUserInfo.IsFirstAdd) if (sysUserInfo.IsFirstAdd)
{ {
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new User() { EmailToken = token }); await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new UserRole() { EmailToken = token });
} }
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&UserType=" + sysUserInfo.UserTypeRole.UserTypeShortName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token; var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&UserType=" + sysUserInfo.UserTypeRole.UserTypeShortName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
@ -486,7 +486,7 @@ namespace IRaCIS.Core.Application.Service
{ {
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId)).IfNullThrowException(); var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId)).IfNullThrowException();
var sysUserInfo = (await _userRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException(); var sysUserInfo = (await _userRoleRepository.Where(t => t.Id == userId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException();
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
@ -502,7 +502,7 @@ namespace IRaCIS.Core.Application.Service
var token = _tokenService.GetToken(IRaCISClaims.Create(_mapper.Map<UserBasicInfo>(sysUserInfo))); var token = _tokenService.GetToken(IRaCISClaims.Create(_mapper.Map<UserBasicInfo>(sysUserInfo)));
if (sysUserInfo.IsFirstAdd) if (sysUserInfo.IsFirstAdd)
{ {
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new User() { EmailToken = token }); await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new UserRole() { EmailToken = token });
} }
var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login")); var domain = baseUrl.Substring(0, baseUrl.IndexOf("/login"));
@ -545,7 +545,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<Guid> DoctorJoinTrialEmail(Guid trialId, Guid doctorId, string baseUrl, string rootUrl) public async Task<Guid> DoctorJoinTrialEmail(Guid trialId, Guid doctorId, string baseUrl, string rootUrl)
{ {
var doctor = await _doctorTypeRepository.FindAsync(doctorId); var doctor = await _doctorTypeRepository.FindAsync(doctorId);
User sysUserInfo = new User(); UserRole sysUserInfo = new UserRole();
var userType = await _userTypeRepository.FirstAsync(t => t.UserTypeEnum == UserTypeEnum.IndependentReviewer); var userType = await _userTypeRepository.FirstAsync(t => t.UserTypeEnum == UserTypeEnum.IndependentReviewer);
@ -553,13 +553,13 @@ namespace IRaCIS.Core.Application.Service
using (await @lock.AcquireAsync()) using (await @lock.AcquireAsync())
{ {
var isDoctorHaveAccount = await _userRepository.AnyAsync(t => t.DoctorId == doctorId); var isDoctorHaveAccount = await _userRoleRepository.AnyAsync(t => t.DoctorId == doctorId);
if (!isDoctorHaveAccount) if (!isDoctorHaveAccount)
{ {
var saveItem = new User() { FirstName = doctor.FirstName, LastName = doctor.LastName, EMail = doctor.EMail }; var saveItem = new UserRole() { FirstName = doctor.FirstName, LastName = doctor.LastName, EMail = doctor.EMail };
var trialType = await _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefaultAsync(); var trialType = await _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefaultAsync();
@ -569,9 +569,9 @@ namespace IRaCIS.Core.Application.Service
} }
saveItem.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1; saveItem.Code = _userRoleRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User)); saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(UserRole));
saveItem.UserName = saveItem.UserCode; saveItem.UserName = saveItem.UserCode;
@ -580,19 +580,19 @@ namespace IRaCIS.Core.Application.Service
saveItem.DoctorId = doctorId; saveItem.DoctorId = doctorId;
saveItem.UserTypeId = userType.Id; saveItem.UserTypeId = userType.Id;
var savedUser = await _userRepository.AddAsync(saveItem); var savedUser = await _userRoleRepository.AddAsync(saveItem);
//下面获取Token 需要这部分信息 //下面获取Token 需要这部分信息
sysUserInfo = savedUser.Clone(); sysUserInfo = savedUser.Clone();
sysUserInfo.UserTypeRole = userType; sysUserInfo.UserTypeRole = userType;
await _userRepository.SaveChangesAsync(); await _userRoleRepository.SaveChangesAsync();
} }
else else
{ {
sysUserInfo = (await _userRepository.Where(t => t.DoctorId == doctorId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException(); sysUserInfo = (await _userRoleRepository.Where(t => t.DoctorId == doctorId).Include(t => t.UserTypeRole).FirstOrDefaultAsync()).IfNullThrowException();
} }
} }
@ -617,7 +617,7 @@ namespace IRaCIS.Core.Application.Service
if (sysUserInfo.IsFirstAdd) if (sysUserInfo.IsFirstAdd)
{ {
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new User() { EmailToken = token }); await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id, u => new UserRole() { EmailToken = token });
} }
var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&UserType=" + userType.UserTypeShortName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token; var routeUrl = rootUrl + "?UserId=" + sysUserInfo.Id + "&Email=" + sysUserInfo.EMail + "&UserName=" + sysUserInfo.UserName + "&UserType=" + userType.UserTypeShortName + "&lang=" + (_userInfo.IsEn_Us ? "en" : "zh") + "&access_token=" + token;
@ -664,7 +664,7 @@ namespace IRaCIS.Core.Application.Service
public async Task UserFeedBackMail(Guid feedBackId) public async Task UserFeedBackMail(Guid feedBackId)
{ {
var feedBack = await _userFeedBackRepository.Where(t => t.Id == feedBackId).Include(t => t.CreateUser).ThenInclude(t => t.UserTypeRole).FirstNotNullAsync(); var feedBack = await _userFeedBackRepository.Where(t => t.Id == feedBackId).Include(t => t.CreateUserRole).ThenInclude(t => t.UserTypeRole).FirstNotNullAsync();
var messageToSend = new MimeMessage(); var messageToSend = new MimeMessage();
//发件地址 //发件地址
@ -680,7 +680,7 @@ namespace IRaCIS.Core.Application.Service
var userTypeEnumList = emailConfigInfo.EmailNoticeUserTypeList.Where(t => t.EmailUserType == EmailUserType.To).Select(t => t.UserType).ToList(); var userTypeEnumList = emailConfigInfo.EmailNoticeUserTypeList.Where(t => t.EmailUserType == EmailUserType.To).Select(t => t.UserType).ToList();
var emailList = await _userRepository.Where(t => userTypeEnumList.Contains(t.UserTypeEnum) && var emailList = await _userRoleRepository.Where(t => userTypeEnumList.Contains(t.UserTypeEnum) &&
(isHaveTrialId ? t.UserTrials.Any(t => t.TrialId == feedBack.TrialId) : true)).Select(t => new { t.EMail, t.UserTypeEnum, t.FullName }).ToListAsync(); (isHaveTrialId ? t.UserTrials.Any(t => t.TrialId == feedBack.TrialId) : true)).Select(t => new { t.EMail, t.UserTypeEnum, t.FullName }).ToListAsync();
@ -709,8 +709,8 @@ namespace IRaCIS.Core.Application.Service
info.TrialCode, info.TrialCode,
info.SubejctCode, info.SubejctCode,
info.VisitName, info.VisitName,
feedBack.CreateUser.UserTypeRole.UserTypeShortName, feedBack.CreateUserRole.UserTypeRole.UserTypeShortName,
feedBack.CreateUser.FullName, feedBack.CreateUserRole.FullName,
emailType, emailType,
feedBack.QuestionDescription, feedBack.QuestionDescription,
_systemEmailConfig.SiteUrl _systemEmailConfig.SiteUrl
@ -739,8 +739,8 @@ namespace IRaCIS.Core.Application.Service
info.TrialCode, info.TrialCode,
info.SubejctCode, info.SubejctCode,
info.VisitName, info.VisitName,
feedBack.CreateUser.UserTypeRole.UserTypeShortName, feedBack.CreateUserRole.UserTypeRole.UserTypeShortName,
feedBack.CreateUser.FullName, feedBack.CreateUserRole.FullName,
emailType, emailType,
feedBack.QuestionDescription, feedBack.QuestionDescription,
_systemEmailConfig.SiteUrl _systemEmailConfig.SiteUrl
@ -768,8 +768,8 @@ namespace IRaCIS.Core.Application.Service
var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr),
userNames, userNames,
info.TrialCode, info.TrialCode,
feedBack.CreateUser.UserTypeRole.UserTypeShortName, feedBack.CreateUserRole.UserTypeRole.UserTypeShortName,
feedBack.CreateUser.FullName, feedBack.CreateUserRole.FullName,
emailType, emailType,
feedBack.QuestionDescription, feedBack.QuestionDescription,
_systemEmailConfig.SiteUrl _systemEmailConfig.SiteUrl
@ -793,8 +793,8 @@ namespace IRaCIS.Core.Application.Service
var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr), var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr),
userNames, userNames,
feedBack.CreateUser.UserTypeRole.UserTypeShortName, feedBack.CreateUserRole.UserTypeRole.UserTypeShortName,
feedBack.CreateUser.FullName, feedBack.CreateUserRole.FullName,
feedBack.QuestionDescription, feedBack.QuestionDescription,
_systemEmailConfig.SiteUrl _systemEmailConfig.SiteUrl
); );

View File

@ -95,9 +95,9 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialImageDownload, TrialImageDownloadExportDto>() CreateMap<TrialImageDownload, TrialImageDownloadExportDto>()
.ForMember(d => d.UserFullName, u => u.MapFrom(s => s.CreateUser.FullName)) .ForMember(d => d.UserFullName, u => u.MapFrom(s => s.CreateUserRole.FullName))
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUser.UserTypeEnum)) .ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUserRole.UserTypeEnum))
.ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUserRole.UserName))
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteCode)); .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteCode));
CreateMap<InternationalizationAddOrEdit, IRCGlobalInfoDTO>(); CreateMap<InternationalizationAddOrEdit, IRCGlobalInfoDTO>();

View File

@ -93,7 +93,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<DoctorDTO, SelectionReviewerDTO>() CreateMap<DoctorDTO, SelectionReviewerDTO>()
; ;
CreateMap<User, UserBasicInfo>() CreateMap<UserRole, UserBasicInfo>()
.ForMember(d => d.UserTypeShortName, u => u.MapFrom(t => t.UserTypeRole.UserTypeShortName)) .ForMember(d => d.UserTypeShortName, u => u.MapFrom(t => t.UserTypeRole.UserTypeShortName))
.ForMember(d => d.Code, u => u.MapFrom(t => t.UserCode)) .ForMember(d => d.Code, u => u.MapFrom(t => t.UserCode))
.ForMember(d => d.PermissionStr, u => u.MapFrom(t => t.UserTypeRole.PermissionStr)) .ForMember(d => d.PermissionStr, u => u.MapFrom(t => t.UserTypeRole.PermissionStr))
@ -176,7 +176,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<EnrollDetail, DoctorStateModelDTO>() CreateMap<EnrollDetail, DoctorStateModelDTO>()
.ForMember(d => d.IntoGroupState, u => u.MapFrom(s => s.EnrollStatus)) .ForMember(d => d.IntoGroupState, u => u.MapFrom(s => s.EnrollStatus))
.ForMember(d => d.OptTime, u => u.MapFrom(s => s.CreateTime)) .ForMember(d => d.OptTime, u => u.MapFrom(s => s.CreateTime))
.ForMember(d => d.OptUserName, u => u.MapFrom(s => s.CreateUser.UserName)); .ForMember(d => d.OptUserName, u => u.MapFrom(s => s.CreateUserRole.UserName));
CreateMap<Enroll, ConfirmationReviewerDTO>().IncludeMembers(t => t.Doctor, t => t.Doctor.Hospital) CreateMap<Enroll, ConfirmationReviewerDTO>().IncludeMembers(t => t.Doctor, t => t.Doctor.Hospital)
.ForMember(o => o.DictionaryList, t => t.MapFrom(u => u.Doctor.DoctorDicRelationList.Where(t => t.KeyName == StaticData.ReadingType || t.KeyName == StaticData.Subspeciality).Select(t => t.Dictionary).OrderBy(t => t.ShowOrder))) .ForMember(o => o.DictionaryList, t => t.MapFrom(u => u.Doctor.DoctorDicRelationList.Where(t => t.KeyName == StaticData.ReadingType || t.KeyName == StaticData.Subspeciality).Select(t => t.Dictionary).OrderBy(t => t.ShowOrder)))

View File

@ -20,7 +20,7 @@ namespace IRaCIS.Core.Application.Service
public class EmailSendService(IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository, public class EmailSendService(IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository, IRepository<TrialSiteUser> _trialSiteUserRepository,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
@ -215,7 +215,7 @@ namespace IRaCIS.Core.Application.Service
var allUserTypeEnumList = toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList(); var allUserTypeEnumList = toUserTypeEnumList.Union(copyUserTypeEnumList).Distinct().ToList();
var allUserList = await _trialUserRepository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.UserId, t.User.EMail, t.User.FullName, t.User.UserTypeEnum }).ToListAsync(); var allUserList = await _trialUserRepository.Where(t => t.TrialId == trialId && allUserTypeEnumList.Contains(t.UserRole.UserTypeEnum)).Select(t => new { t.UserId, t.UserRole.EMail, t.UserRole.FullName, t.UserRole.UserTypeEnum }).ToListAsync();
var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum)) var toUserList = allUserList.Where(t => toUserTypeEnumList.Contains(t.UserTypeEnum))

View File

@ -6,7 +6,7 @@
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using User = IRaCIS.Core.Domain.Models.User; using UserRole = IRaCIS.Core.Domain.Models.UserRole;
namespace IRaCIS.Core.Application.Services namespace IRaCIS.Core.Application.Services
{ {
@ -15,7 +15,7 @@ namespace IRaCIS.Core.Application.Services
/// </summary> /// </summary>
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class SystemDocumentService(IRepository<SystemDocument> _systemDocumentRepository, public class SystemDocumentService(IRepository<SystemDocument> _systemDocumentRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<SystemDocConfirmedUser> _systemDocConfirmedUserRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ISystemDocumentService IRepository<SystemDocConfirmedUser> _systemDocConfirmedUserRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ISystemDocumentService
{ {
@ -154,7 +154,7 @@ namespace IRaCIS.Core.Application.Services
join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = _userInfo.Id, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = _userInfo.Id, SystemDocumentId = sysDoc.Id } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
from confirm in cc.DefaultIfEmpty() from confirm in cc.DefaultIfEmpty()
join user in _userRepository.Where() on _userInfo.Id equals user.Id join user in _userRoleRepository.Where() on _userInfo.Id equals user.Id
select new UnionDocumentWithConfirmInfoView() select new UnionDocumentWithConfirmInfoView()
{ {

View File

@ -23,7 +23,7 @@ namespace IRaCIS.Core.Application.Services
IRepository<SystemDocNeedConfirmedUserType> _systemDocNeedConfirmedUserTypeRepository, IRepository<SystemDocNeedConfirmedUserType> _systemDocNeedConfirmedUserTypeRepository,
IRepository<TrialDocNeedConfirmedUserType> _trialDocNeedConfirmedUserTypeRepository, IRepository<TrialDocNeedConfirmedUserType> _trialDocNeedConfirmedUserTypeRepository,
IRepository<SystemDocument> _systemDocumentRepository, IRepository<SystemDocument> _systemDocumentRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<TrialDocConfirmedUser> _trialDocConfirmedUserRepository, IRepository<TrialDocConfirmedUser> _trialDocConfirmedUserRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialDocumentService IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialDocumentService
{ {
@ -82,10 +82,10 @@ namespace IRaCIS.Core.Application.Services
//IsConfirmed = confirm.ConfirmTime != null, //IsConfirmed = confirm.ConfirmTime != null,
ConfirmUserId = confirm.ConfirmUserId, ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime, ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName, RealName = trialUser.UserRole.FullName,
UserName = trialUser.User.UserName, UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.User.UserTypeId, UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName
}; };
@ -224,7 +224,7 @@ namespace IRaCIS.Core.Application.Services
.WhereIf(!_userInfo.IsAdmin, t => t.SystemDocument.IsDeleted == false || (t.SystemDocument.IsDeleted == true && t.SystemDocument.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id))) .WhereIf(!_userInfo.IsAdmin, t => t.SystemDocument.IsDeleted == false || (t.SystemDocument.IsDeleted == true && t.SystemDocument.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id)))
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId && t.UserId == _userInfo.Id) join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId && t.UserId == _userInfo.Id)
on needConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId on needConfirmedUserType.NeedConfirmUserTypeId equals trialUser.UserRole.UserTypeId
join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmedUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmedUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
from confirm in cc.DefaultIfEmpty() from confirm in cc.DefaultIfEmpty()
select new UnionDocumentWithConfirmInfoView() select new UnionDocumentWithConfirmInfoView()
@ -246,10 +246,10 @@ namespace IRaCIS.Core.Application.Services
//IsConfirmed = confirm.ConfirmTime != null, //IsConfirmed = confirm.ConfirmTime != null,
ConfirmUserId = confirm.ConfirmUserId, ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime, ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName, RealName = trialUser.UserRole.FullName,
UserName = trialUser.User.UserName, UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.User.UserTypeId, UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName
}; };
//项目文档查询 //项目文档查询
@ -278,10 +278,10 @@ namespace IRaCIS.Core.Application.Services
//IsConfirmed = confirm.ConfirmTime != null, //IsConfirmed = confirm.ConfirmTime != null,
ConfirmUserId = confirm.ConfirmUserId, ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime, ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName, RealName = trialUser.UserRole.FullName,
UserName = trialUser.User.UserName, UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.User.UserTypeId, UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName
}; };
@ -392,8 +392,8 @@ namespace IRaCIS.Core.Application.Services
var trialDocQuery = from trialDocumentNeedConfirmedUserType in _trialDocNeedConfirmedUserTypeRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) var trialDocQuery = from trialDocumentNeedConfirmedUserType in _trialDocNeedConfirmedUserTypeRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId)
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId) .WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId)
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId) .WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.UserRole.UserTypeId
join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on join confirm in _trialDocConfirmedUserRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId) on
new { trialUser.UserId, TrialDocumentId = trialDocumentNeedConfirmedUserType.TrialDocumentId } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc new { trialUser.UserId, TrialDocumentId = trialDocumentNeedConfirmedUserType.TrialDocumentId } equals new { UserId = confirm.ConfirmUserId, confirm.TrialDocumentId } into cc
@ -417,10 +417,10 @@ namespace IRaCIS.Core.Application.Services
ConfirmUserId = confirm.ConfirmUserId, ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime, ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName, RealName = trialUser.UserRole.FullName,
UserName = trialUser.User.UserName, UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.User.UserTypeId, UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName, UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
FullFilePath = trialDocumentNeedConfirmedUserType.TrialDocument.Path FullFilePath = trialDocumentNeedConfirmedUserType.TrialDocument.Path
}; };
@ -431,7 +431,7 @@ namespace IRaCIS.Core.Application.Services
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId) .WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId)
on needConfirmEdUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId on needConfirmEdUserType.NeedConfirmUserTypeId equals trialUser.UserRole.UserTypeId
join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc join confirm in _systemDocConfirmedUserRepository.Where() on new { ConfirmUserId = trialUser.UserId, SystemDocumentId = needConfirmEdUserType.SystemDocumentId } equals new { confirm.ConfirmUserId, confirm.SystemDocumentId } into cc
from confirm in cc.DefaultIfEmpty() from confirm in cc.DefaultIfEmpty()
select new UnionDocumentWithConfirmInfoView() select new UnionDocumentWithConfirmInfoView()
@ -451,10 +451,10 @@ namespace IRaCIS.Core.Application.Services
ConfirmUserId = confirm.ConfirmUserId, ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime, ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName, RealName = trialUser.UserRole.FullName,
UserName = trialUser.User.UserName, UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.User.UserTypeId, UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName, UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
FullFilePath = needConfirmEdUserType.SystemDocument.Path FullFilePath = needConfirmEdUserType.SystemDocument.Path
}; };
@ -493,7 +493,7 @@ namespace IRaCIS.Core.Application.Services
public async Task<List<TrialUserDto>> GetTrialUserSelect(Guid trialId) public async Task<List<TrialUserDto>> GetTrialUserSelect(Guid trialId)
{ {
return await _trialUserRepository.Where(t => t.TrialId == trialId) return await _trialUserRepository.Where(t => t.TrialId == trialId)
.Select(t => new TrialUserDto() { UserId = t.UserId, RealName = t.User.FullName, UserName = t.User.UserName }) .Select(t => new TrialUserDto() { UserId = t.UserId, RealName = t.UserRole.FullName, UserName = t.UserRole.UserName })
.ToListAsync(); .ToListAsync();
} }
@ -778,16 +778,16 @@ namespace IRaCIS.Core.Application.Services
.Select(t => new TrialUserUnionDocumentView() .Select(t => new TrialUserUnionDocumentView()
{ {
UserId = t.UserId, UserId = t.UserId,
UserName = t.User.UserName, UserName = t.UserRole.UserName,
RealName = t.User.FullName, RealName = t.UserRole.FullName,
UserTypeShortName = t.User.UserTypeRole.UserTypeShortName, UserTypeShortName = t.UserRole.UserTypeRole.UserTypeShortName,
TrialDocumentCount = t.Trial.TrialDocumentList.Count(u => u.NeedConfirmedUserTypeList.Any(k => k.NeedConfirmUserTypeId == t.User.UserTypeId)), TrialDocumentCount = t.Trial.TrialDocumentList.Count(u => u.NeedConfirmedUserTypeList.Any(k => k.NeedConfirmUserTypeId == t.UserRole.UserTypeId)),
TrialDocumentConfirmedCount = t.Trial.TrialDocumentList.SelectMany(u => u.TrialDocConfirmedUserList).Count(k => k.ConfirmUserId == t.UserId), TrialDocumentConfirmedCount = t.Trial.TrialDocumentList.SelectMany(u => u.TrialDocConfirmedUserList).Count(k => k.ConfirmUserId == t.UserId),
SystemDocumentConfirmedCount = t.User.SystemDocConfirmedList.Count(), SystemDocumentConfirmedCount = t.UserRole.SystemDocConfirmedList.Count(),
//这样写不行 //这样写不行
//SystemDocumentCount = _systemDocumentRepository.Where(s => s.NeedConfirmedUserTypeList.Any(kk => kk.NeedConfirmUserTypeId == t.User.UserTypeId)) //SystemDocumentCount = _systemDocumentRepository.Where(s => s.NeedConfirmedUserTypeList.Any(kk => kk.NeedConfirmUserTypeId == t.User.UserTypeId))
// .WhereIf(!_userInfo.IsAdmin, s => s.IsAbandon == false || (s.IsAbandon == true && s.SystemDocConfirmedUserList.Any(uu => uu.ConfirmUserId == t.UserId))).Count() // .WhereIf(!_userInfo.IsAdmin, s => s.IsAbandon == false || (s.IsAbandon == true && s.SystemDocConfirmedUserList.Any(uu => uu.ConfirmUserId == t.UserId))).Count()
SystemDocumentCount = t.User.UserTypeRole.SystemDocNeedConfirmedUserTypeList.Where(cc => cc.NeedConfirmUserTypeId == t.User.UserTypeId).Select(y => y.SystemDocument).Count() SystemDocumentCount = t.UserRole.UserTypeRole.SystemDocNeedConfirmedUserTypeList.Where(cc => cc.NeedConfirmUserTypeId == t.UserRole.UserTypeId).Select(y => y.SystemDocument).Count()
}); });
return query.ToList(); return query.ToList();
@ -837,7 +837,7 @@ namespace IRaCIS.Core.Application.Services
SignViewMinimumMinutes = t.SignViewMinimumMinutes, SignViewMinimumMinutes = t.SignViewMinimumMinutes,
DocumentConfirmedUserCount = t.TrialDocConfirmedUserList.Count(), DocumentConfirmedUserCount = t.TrialDocConfirmedUserList.Count(),
DocumentUserCount = t.Trial.TrialUserList.Count(cc => t.NeedConfirmedUserTypeList.Any(k => k.NeedConfirmUserTypeId == cc.User.UserTypeId)) DocumentUserCount = t.Trial.TrialUserList.Count(cc => t.NeedConfirmedUserTypeList.Any(k => k.NeedConfirmUserTypeId == cc.UserRole.UserTypeId))
}); });

View File

@ -33,7 +33,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<TaskMedicalReview> _taskMedicalReviewRepository, IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<ReadingGlobalTaskInfo> _readingGlobalTaskInfoRepository, IRepository<ReadingGlobalTaskInfo> _readingGlobalTaskInfoRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<TrialEmailNoticeUser> _trialEmailNoticeUserRepository, IRepository<TrialEmailNoticeUser> _trialEmailNoticeUserRepository,
IRepository<Subject> _subjectRepository, IRepository<Subject> _subjectRepository,
IRepository<ReadModule> _readModuleRepository, IRepository<ReadModule> _readModuleRepository,
@ -300,7 +300,7 @@ namespace IRaCIS.Core.Application.Service
var answer = "否"; var answer = "否";
var isNeedSend = true; var isNeedSend = true;
var minUserIdList = _trialUserRepository.Where(t => t.User.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId == taskInfo.TrialId).Select(t => t.UserId).ToList(); var minUserIdList = _trialUserRepository.Where(t => t.UserRole.UserTypeEnum == Domain.Share.UserTypeEnum.MIM && t.TrialId == taskInfo.TrialId).Select(t => t.UserId).ToList();
@ -1199,7 +1199,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<List<TrialUserType>> GetTrialUserTypeSelectList(Guid trialId) public async Task<List<TrialUserType>> GetTrialUserTypeSelectList(Guid trialId)
{ {
var query = _trialUserRepository.Where(t => t.TrialId == trialId, false, true).IgnoreQueryFilters().Select(t => t.User.UserTypeRole).Distinct() var query = _trialUserRepository.Where(t => t.TrialId == trialId, false, true).IgnoreQueryFilters().Select(t => t.UserRole.UserTypeRole).Distinct()
.ProjectTo<TrialUserType>(_mapper.ConfigurationProvider); .ProjectTo<TrialUserType>(_mapper.ConfigurationProvider);
@ -1222,13 +1222,13 @@ namespace IRaCIS.Core.Application.Service
var userTypeList = trialEmailNoticeConfig.TrialEmailNoticeUserList.Select(t => t.UserType).ToList(); var userTypeList = trialEmailNoticeConfig.TrialEmailNoticeUserList.Select(t => t.UserType).ToList();
var query = _trialUserRepository.Where(t => t.TrialId == trialId && userTypeList.Contains(t.User.UserTypeEnum), false, true).IgnoreQueryFilters() var query = _trialUserRepository.Where(t => t.TrialId == trialId && userTypeList.Contains(t.UserRole.UserTypeEnum), false, true).IgnoreQueryFilters()
.Select(t => new TrialSelectUser() .Select(t => new TrialSelectUser()
{ {
UserId = t.UserId, UserId = t.UserId,
UserName = t.User.UserName, UserName = t.UserRole.UserName,
RealName = t.User.FullName, RealName = t.UserRole.FullName,
UserTypeEnum = t.User.UserTypeEnum UserTypeEnum = t.UserRole.UserTypeEnum
}).Distinct(); }).Distinct();
return await query.ToListAsync(); return await query.ToListAsync();

View File

@ -49,7 +49,7 @@ namespace IRaCIS.Core.Application.Service
// .ForMember(d => d.RealName, c => c.MapFrom(t => t.User.LastName + " / " + t.User.FirstName)); // .ForMember(d => d.RealName, c => c.MapFrom(t => t.User.LastName + " / " + t.User.FirstName));
CreateMap<TrialUser, TrialDocumentUserConfirmView>(); CreateMap<TrialUserRole, TrialDocumentUserConfirmView>();
CreateMap<BatchAddTrialEmailNoticeConfig, TrialEmailNoticeConfig>(); CreateMap<BatchAddTrialEmailNoticeConfig, TrialEmailNoticeConfig>();
@ -78,11 +78,11 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialEmailNoticeConfigAddOrEdit, TrialEmailNoticeConfig>(); CreateMap<TrialEmailNoticeConfigAddOrEdit, TrialEmailNoticeConfig>();
CreateMap<TrialUser, TrialUserSelct>() CreateMap<TrialUserRole, TrialUserSelct>()
.ForMember(d => d.Phone, c => c.MapFrom(t => t.User.Phone)) .ForMember(d => d.Phone, c => c.MapFrom(t => t.UserRole.Phone))
.ForMember(d => d.Email, c => c.MapFrom(t => t.User.EMail)) .ForMember(d => d.Email, c => c.MapFrom(t => t.UserRole.EMail))
.ForMember(d => d.RealName, c => c.MapFrom(t => t.User.FullName)) .ForMember(d => d.RealName, c => c.MapFrom(t => t.UserRole.FullName))
.ForMember(d => d.UserName, c => c.MapFrom(t => t.User.UserName)); .ForMember(d => d.UserName, c => c.MapFrom(t => t.UserRole.UserName));
CreateMap<TrialEmailNoticeUser, EmailUserInfoDto>(); CreateMap<TrialEmailNoticeUser, EmailUserInfoDto>();

View File

@ -1129,9 +1129,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
var query = _trialImageDownloadRepository.Where(t => t.TrialId == inQuery.TrialId) var query = _trialImageDownloadRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.SubjectCode.Contains(inQuery.SubjectCode)) .WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.SubjectCode.Contains(inQuery.SubjectCode))
.WhereIf(inQuery.IP.IsNotNullOrEmpty(), t => t.IP.Contains(inQuery.IP)) .WhereIf(inQuery.IP.IsNotNullOrEmpty(), t => t.IP.Contains(inQuery.IP))
.WhereIf(inQuery.Name.IsNotNullOrEmpty(), t => t.CreateUser.UserName.Contains(inQuery.Name) || t.CreateUser.FullName.Contains(inQuery.Name)) .WhereIf(inQuery.Name.IsNotNullOrEmpty(), t => t.CreateUserRole.UserName.Contains(inQuery.Name) || t.CreateUserRole.FullName.Contains(inQuery.Name))
.WhereIf(inQuery.ImageType != null, t => t.ImageType == inQuery.ImageType) .WhereIf(inQuery.ImageType != null, t => t.ImageType == inQuery.ImageType)
.WhereIf(inQuery.UserType != null, t => t.CreateUser.UserTypeEnum == inQuery.UserType) .WhereIf(inQuery.UserType != null, t => t.CreateUserRole.UserTypeEnum == inQuery.UserType)
.WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess) .WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess)
.WhereIf(inQuery.DownloadStartTime != null, t => t.DownloadStartTime >= inQuery.DownloadStartTime) .WhereIf(inQuery.DownloadStartTime != null, t => t.DownloadStartTime >= inQuery.DownloadStartTime)
.WhereIf(inQuery.DownloadEndTime != null, t => t.DownloadEndTime <= inQuery.DownloadEndTime) .WhereIf(inQuery.DownloadEndTime != null, t => t.DownloadEndTime <= inQuery.DownloadEndTime)

View File

@ -394,7 +394,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, TrialSiteCode = t.Subject.TrialSite.TrialSiteCode,
Uploader = t.CreateUser.UserName, Uploader = t.CreateUserRole.UserName,
UploadTime = t.CreateTime UploadTime = t.CreateTime
@ -444,7 +444,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, TrialSiteCode = t.Subject.TrialSite.TrialSiteCode,
Uploader = t.CreateUser.UserName, Uploader = t.CreateUserRole.UserName,
UploadTime = t.CreateTime UploadTime = t.CreateTime
@ -476,7 +476,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
.WhereIf(inQuery.SubjectVisitId != null, t => t.SubjectId == inQuery.SubjectVisitId) .WhereIf(inQuery.SubjectVisitId != null, t => t.SubjectId == inQuery.SubjectVisitId)
.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId) .WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
.WhereIf(inQuery.IsDicom != null, t => t.IsDicom == inQuery.IsDicom) .WhereIf(inQuery.IsDicom != null, t => t.IsDicom == inQuery.IsDicom)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Uploader), t => t.CreateUser.UserName.Contains(inQuery.Uploader)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Uploader), t => t.CreateUserRole.UserName.Contains(inQuery.Uploader))
.WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess) .WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.StudyCode), t => t.StudyCode.Contains(inQuery.StudyCode)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.StudyCode), t => t.StudyCode.Contains(inQuery.StudyCode))
.WhereIf(inQuery.UploadStartTime != null, t => t.UploadStartTime >= inQuery.UploadStartTime) .WhereIf(inQuery.UploadStartTime != null, t => t.UploadStartTime >= inQuery.UploadStartTime)
@ -499,7 +499,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, TrialSiteCode = t.Subject.TrialSite.TrialSiteCode,
Uploader = t.CreateUser.UserName, Uploader = t.CreateUserRole.UserName,
UploadTime = t.CreateTime, UploadTime = t.CreateTime,

View File

@ -40,8 +40,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<DicomStudy, StudyDTO>().IncludeMembers(t => t.Subject, u => u.SubjectVisit) CreateMap<DicomStudy, StudyDTO>().IncludeMembers(t => t.Subject, u => u.SubjectVisit)
.ForMember(d => d.SiteName, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteName)) .ForMember(d => d.SiteName, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteName))
.ForMember(d => d.UploaderFirstName, u => u.MapFrom(s => s.CreateUser.FirstName)) .ForMember(d => d.UploaderFirstName, u => u.MapFrom(s => s.CreateUserRole.FirstName))
.ForMember(d => d.UploaderLastName, u => u.MapFrom(s => s.CreateUser.LastName)) .ForMember(d => d.UploaderLastName, u => u.MapFrom(s => s.CreateUserRole.LastName))
.ForMember(d => d.UploadedTime, u => u.MapFrom(s => s.CreateTime)); .ForMember(d => d.UploadedTime, u => u.MapFrom(s => s.CreateTime));
CreateMap<Subject, StudyDTO>(); CreateMap<Subject, StudyDTO>();
@ -66,7 +66,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<DicomStudy, QAStudyInfoDTO>() CreateMap<DicomStudy, QAStudyInfoDTO>()
.ForMember(o => o.IsCompleteClinicalData, t => t.MapFrom(u => !u.ReadingClinicalDataList.Any(x => x.ReadingClinicalDataPDFList.Count() == 0))) .ForMember(o => o.IsCompleteClinicalData, t => t.MapFrom(u => !u.ReadingClinicalDataList.Any(x => x.ReadingClinicalDataPDFList.Count() == 0)))
.ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime)) .ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime))
.ForMember(o => o.Uploader, t => t.MapFrom(u => u.CreateUser.LastName + " / " + u.CreateUser.FirstName)) .ForMember(o => o.Uploader, t => t.MapFrom(u => u.CreateUserRole.LastName + " / " + u.CreateUserRole.FirstName))
.ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id)) .ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id))
.ForMember(o => o.IsHaveUploadFailed, t => t.MapFrom(u => u.DicomStudyMonitorList.Any(t => t.FailedFileCount > 0))) .ForMember(o => o.IsHaveUploadFailed, t => t.MapFrom(u => u.DicomStudyMonitorList.Any(t => t.FailedFileCount > 0)))
.ForMember(o => o.Modalities, t => t.MapFrom(u => string.Join('、', u.SeriesList.Select(t => t.Modality).Distinct()))); .ForMember(o => o.Modalities, t => t.MapFrom(u => string.Join('、', u.SeriesList.Select(t => t.Modality).Distinct())));
@ -141,9 +141,9 @@ namespace IRaCIS.Core.Application.Service
; ;
CreateMap<TrialImageDownload, TrialImageDownloadView>() CreateMap<TrialImageDownload, TrialImageDownloadView>()
.ForMember(d => d.UserFullName, u => u.MapFrom(s => s.CreateUser.FullName)) .ForMember(d => d.UserFullName, u => u.MapFrom(s => s.CreateUserRole.FullName))
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUser.UserTypeEnum)) .ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUserRole.UserTypeEnum))
.ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUserRole.UserName))
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteCode)) .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteCode))
; ;

View File

@ -29,7 +29,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<QCChallenge> _qCChallengeRepository, IRepository<QCChallenge> _qCChallengeRepository,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<CheckChallengeDialog> _checkChallengeDialogRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IFrontAuditConfigService IRepository<CheckChallengeDialog> _checkChallengeDialogRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IFrontAuditConfigService
{ {
@ -60,19 +60,19 @@ namespace IRaCIS.Core.Application.Service
{ {
case AccessToDialogueEnum.Question: case AccessToDialogueEnum.Question:
AccessToDialogueOutDto title = (await _qCChallengeRepository.Where(x => x.Id == inDto.Id).Include(x => x.CreateUser).Select(x => new AccessToDialogueOutDto() AccessToDialogueOutDto title = (await _qCChallengeRepository.Where(x => x.Id == inDto.Id).Include(x => x.CreateUserRole).Select(x => new AccessToDialogueOutDto()
{ {
CreateTime = x.CreateTime, CreateTime = x.CreateTime,
CreateUserName = x.CreateUser.UserName, CreateUserName = x.CreateUserRole.UserName,
TalkContent = x.Content, TalkContent = x.Content,
IsTitle = true, IsTitle = true,
}).FirstOrDefaultAsync()) ?? new AccessToDialogueOutDto(); }).FirstOrDefaultAsync()) ?? new AccessToDialogueOutDto();
data = await _qCChallengeDialogRepository.Where(x => x.QCChallengeId == inDto.Id && x.CreateTime <= inDto.Createtime).Include(x => x.CreateUser).Select( data = await _qCChallengeDialogRepository.Where(x => x.QCChallengeId == inDto.Id && x.CreateTime <= inDto.Createtime).Include(x => x.CreateUserRole).Select(
x => new AccessToDialogueOutDto() x => new AccessToDialogueOutDto()
{ {
CreateTime = x.CreateTime, CreateTime = x.CreateTime,
CreateUserName = x.CreateUser.UserName, CreateUserName = x.CreateUserRole.UserName,
TalkContent = x.TalkContent TalkContent = x.TalkContent
} }
).OrderBy(x => x.CreateTime).ToListAsync(); ).OrderBy(x => x.CreateTime).ToListAsync();
@ -81,11 +81,11 @@ namespace IRaCIS.Core.Application.Service
break; break;
case AccessToDialogueEnum.Consistency: case AccessToDialogueEnum.Consistency:
data = await _checkChallengeDialogRepository.Where(x => x.SubjectVisitId == inDto.Id && x.CreateTime <= inDto.Createtime).Include(x => x.CreateUser).Select( data = await _checkChallengeDialogRepository.Where(x => x.SubjectVisitId == inDto.Id && x.CreateTime <= inDto.Createtime).Include(x => x.CreateUserRole).Select(
x => new AccessToDialogueOutDto() x => new AccessToDialogueOutDto()
{ {
CreateTime = x.CreateTime, CreateTime = x.CreateTime,
CreateUserName = x.CreateUser.UserName, CreateUserName = x.CreateUserRole.UserName,
TalkContent = x.TalkContent TalkContent = x.TalkContent
} }
).OrderBy(x => x.CreateTime).ToListAsync(); ).OrderBy(x => x.CreateTime).ToListAsync();
@ -401,7 +401,7 @@ namespace IRaCIS.Core.Application.Service
//用户的数据稽查没有 临时处理 //用户的数据稽查没有 临时处理
var userObj = await _userRepository.Where(t => t.Id == objectRelationParentId).Select(t => new { UserRealName = t.FullName, t.Phone, t.UserName, UserType = t.UserTypeRole.UserTypeShortName, t.EMail, t.OrganizationName }).FirstOrDefaultAsync(); var userObj = await _userRoleRepository.Where(t => t.Id == objectRelationParentId).Select(t => new { UserRealName = t.FullName, t.Phone, t.UserName, UserType = t.UserTypeRole.UserTypeShortName, t.EMail, t.OrganizationName }).FirstOrDefaultAsync();
if (userObj != null) if (userObj != null)
{ {

View File

@ -12,7 +12,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
public class InspectionService(IRepository<DataInspection> _dataInspectionRepository, public class InspectionService(IRepository<DataInspection> _dataInspectionRepository,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
IRepository<TrialSign> _trialSignRepository, IRepository<TrialSign> _trialSignRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialSite> _trialSiteRepository, IRepository<TrialSite> _trialSiteRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<Subject> _subjectRepository, IRepository<Subject> _subjectRepository,
@ -53,7 +53,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
from leftsubjectVisit in subjectVisittemp.DefaultIfEmpty() from leftsubjectVisit in subjectVisittemp.DefaultIfEmpty()
join parent in _dataInspectionRepository.Where() on data.ParentId equals parent.Id into parenttemp join parent in _dataInspectionRepository.Where() on data.ParentId equals parent.Id into parenttemp
from leftparent in parenttemp.DefaultIfEmpty() from leftparent in parenttemp.DefaultIfEmpty()
join user in _userRepository.Where().IgnoreQueryFilters() on data.CreateUserId equals user.Id into usertemp join user in _userRoleRepository.Where().IgnoreQueryFilters() on data.CreateUserId equals user.Id into usertemp
from leftuser in usertemp.DefaultIfEmpty() from leftuser in usertemp.DefaultIfEmpty()
join usertype in _userTypeRepository.Where().IgnoreQueryFilters() on leftuser.UserTypeId equals usertype.Id into usertypetemp join usertype in _userTypeRepository.Where().IgnoreQueryFilters() on leftuser.UserTypeId equals usertype.Id into usertypetemp
from leftusertype in usertypetemp.DefaultIfEmpty() from leftusertype in usertypetemp.DefaultIfEmpty()
@ -259,7 +259,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
/// <summary> 验证用户签名信息 </summary> /// /// <summary> 验证用户签名信息 </summary> ///
public async Task<IResponseOutput> VerifySignatureAsync(SignDTO signDTO) public async Task<IResponseOutput> VerifySignatureAsync(SignDTO signDTO)
{ {
var user = await _userRepository.FirstOrDefaultAsync(u => u.UserName == signDTO.UserName && u.Password == signDTO.PassWord); var user = await _userRoleRepository.FirstOrDefaultAsync(u => u.UserName == signDTO.UserName && u.Password == signDTO.PassWord);
if (user == null) if (user == null)
{ {
throw new BusinessValidationFailedException(_localizer["User_CheckNameOrPw"]); throw new BusinessValidationFailedException(_localizer["User_CheckNameOrPw"]);

View File

@ -65,7 +65,7 @@ namespace IRaCIS.Core.Application.Service
//---该CRO已经参与项目不能被删除。 //---该CRO已经参与项目不能被删除。
return ResponseOutput.NotOk(_localizer["CRO_InProject"]); return ResponseOutput.NotOk(_localizer["CRO_InProject"]);
} }
//if (_userRepository.Find().Any(t => t.OrganizationId == cROCompanyId)) //if (_userRoleRepository.Find().Any(t => t.OrganizationId == cROCompanyId))
//{ //{
// return ResponseOutput.NotOk("该CRO下存在用户暂时无法删除。"); // return ResponseOutput.NotOk("该CRO下存在用户暂时无法删除。");
//} //}

View File

@ -4,6 +4,7 @@
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//-------------------------------------------------------------------- //--------------------------------------------------------------------
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using Newtonsoft.Json;
namespace IRaCIS.Core.Application.ViewModel namespace IRaCIS.Core.Application.ViewModel
{ {
/// <summary> UserLogView 列表视图模型 </summary> /// <summary> UserLogView 列表视图模型 </summary>
@ -12,52 +13,95 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid? Id { get; set; } public Guid? Id { get; set; }
public string IP { get; set; } public string IP { get; set; }
public string LoginFaildName { get; set; } public string ActionUserType { get; set; }
public int OptType { get; set; } public UserOptType OptType { get; set; }
public string? ActionUserName { get; set; }
public string? LoginUserName { get; set; } //public string ActionUserRoleShortName { get; set; }
public UserTypeEnum? LoginUserTypeEnum { get; set; }
public DateTime CreateTime { get; set; } public DateTime CreateTime { get; set; }
public Guid CreateUserId { get; set; } public Guid CreateUserId { get; set; }
public string TargetIdentityUserName { get; set; }
public bool IsLoginUncommonly { get; set; }
public string? OptUserName { get; set; } public bool IsIgnoreUncommonly { get; set; }
public UserTypeEnum? OptUserTypeEnum { get; set; } public string JsonObj { get; set; }
public Guid? LoginUserId { get; set; }
public Guid? OptUserId { get; set; }
public string IPRegion { get; set; } public string IPRegion { get; set; }
[JsonIgnore]
public UserLogJsonObj UserObj => JsonObj.IsNotNullOrEmpty() ? JsonConvert.DeserializeObject<UserLogJsonObj>(JsonObj) : new UserLogJsonObj();
} }
public class UserLogJsonObj
{
public string FullName => LastName + " / " + FirstName;
public string UserCode { get; set; }
public string UserName { get; set; }
public string EMail { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public int? Sex { get; set; }
public UserStateEnum Status { get; set; } = UserStateEnum.Enable;
public string OrganizationName { get; set; }
public string PositionName { get; set; }
public string DepartmentName { get; set; }
public List<UserRoleLogObj> UserRoleList { get; set; }
}
public class UserRoleLogObj
{
public string UserTypeShortName { get; set; }
public UserTypeEnum UserTypeEnum { get; set; }
public bool IsUserRoleDisabled { get; set; }
}
///<summary>UserLogQuery 列表查询参数模型</summary> ///<summary>UserLogQuery 列表查询参数模型</summary>
public class UserLogQuery : PageInput public class UserLogQuery : PageInput
{ {
public Guid? TrialId { get; set; } public Guid? TrialId { get; set; }
public UserOptType? OptType { get; set; } public List<UserOptType>? OptTypeList { get; set; }
public string? IP { get; set; } public string? IP { get; set; }
public string? LoginFaildName { get; set; } public string? LoginFaildName { get; set; }
public string? LoginUserName { get; set; } public string? LoginUserName { get; set; }
public DateTime? BeginDate { get; set; } public DateTime? BeginDate { get; set; }
public DateTime? EndDate { get; set; } public DateTime? EndDate { get; set; }
public UserTypeEnum? LoginUserTypeEnum { get; set; } public string? LoginUserType { get; set; }
public Guid? UserTypeId { get; set; } public Guid? UserTypeId { get; set; }
public Guid? UserId { get; set; } public Guid? IdentityUserId { get; set; }
public Guid? TargetIdentityUserId { get; set; }
public bool? IsLoginUncommonly { get; set; }
} }

View File

@ -39,8 +39,8 @@ namespace IRaCIS.Core.Application.Service
.WhereIf(inQuery.BeginCreatime != null, t => t.CreateTime >= inQuery.BeginCreatime) .WhereIf(inQuery.BeginCreatime != null, t => t.CreateTime >= inQuery.BeginCreatime)
.WhereIf(inQuery.EndCreatime != null, t => t.CreateTime == inQuery.EndCreatime) .WhereIf(inQuery.EndCreatime != null, t => t.CreateTime == inQuery.EndCreatime)
.WhereIf(inQuery.UserTypeEnum != null, t => t.CreateUser.UserTypeEnum == inQuery.UserTypeEnum) .WhereIf(inQuery.UserTypeEnum != null, t => t.CreateUserRole.UserTypeEnum == inQuery.UserTypeEnum)
.WhereIf(!string.IsNullOrEmpty(inQuery.FeedBackUserKeyInfo), t => t.CreateUser.FullName.Contains(inQuery.FeedBackUserKeyInfo) || t.CreateUser.UserName.Contains(inQuery.FeedBackUserKeyInfo)) .WhereIf(!string.IsNullOrEmpty(inQuery.FeedBackUserKeyInfo), t => t.CreateUserRole.FullName.Contains(inQuery.FeedBackUserKeyInfo) || t.CreateUserRole.UserName.Contains(inQuery.FeedBackUserKeyInfo))
.WhereIf(!string.IsNullOrEmpty(inQuery.QuestionDescription), t => t.QuestionDescription.Contains(inQuery.QuestionDescription)) .WhereIf(!string.IsNullOrEmpty(inQuery.QuestionDescription), t => t.QuestionDescription.Contains(inQuery.QuestionDescription))
.WhereIf(!string.IsNullOrEmpty(inQuery.TrialKeyInfo), t => t.Trial.ExperimentName.Contains(inQuery.TrialKeyInfo) || t.Trial.TrialCode.Contains(inQuery.TrialKeyInfo)) .WhereIf(!string.IsNullOrEmpty(inQuery.TrialKeyInfo), t => t.Trial.ExperimentName.Contains(inQuery.TrialKeyInfo) || t.Trial.TrialCode.Contains(inQuery.TrialKeyInfo))
.WhereIf(!string.IsNullOrEmpty(inQuery.SubejctAndVisitKeyInfo), t => t.Subject.Code.Contains(inQuery.SubejctAndVisitKeyInfo) || t.SubjectVisit.VisitName.Contains(inQuery.SubejctAndVisitKeyInfo)) .WhereIf(!string.IsNullOrEmpty(inQuery.SubejctAndVisitKeyInfo), t => t.Subject.Code.Contains(inQuery.SubejctAndVisitKeyInfo) || t.SubjectVisit.VisitName.Contains(inQuery.SubejctAndVisitKeyInfo))

View File

@ -21,10 +21,10 @@ using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO;
namespace IRaCIS.Core.Application.Service namespace IRaCIS.Core.Application.Service
{ {
[ApiExplorerSettings(GroupName = "Management")] [ApiExplorerSettings(GroupName = "Management")]
public class UserService(IRepository<User> _userRepository, public class UserService(IRepository<UserRole> _userRoleRepository,
IMailVerificationService _mailVerificationService, IMailVerificationService _mailVerificationService,
IRepository<VerificationCode> _verificationCodeRepository, IRepository<VerificationCode> _verificationCodeRepository,
IRepository<TrialUser> _userTrialRepository, IRepository<TrialUserRole> _userTrialRepository,
IRepository<UserLog> _userLogRepository, IRepository<UserLog> _userLogRepository,
IRepository<UserPassWordLog> _userPassWordLogRepository, IRepository<UserPassWordLog> _userPassWordLogRepository,
IDistributedLockProvider _distributedLockProvider, IDistributedLockProvider _distributedLockProvider,
@ -41,7 +41,7 @@ namespace IRaCIS.Core.Application.Service
private async Task VerifyUserNameAsync(Guid? userId, string userName) private async Task VerifyUserNameAsync(Guid? userId, string userName)
{ {
if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => t.UserName == userName)) if (await _userRoleRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => t.UserName == userName))
{ {
//---用户名已经存在。 //---用户名已经存在。
throw new BusinessValidationFailedException(_localizer["User_UsernameExist"]); throw new BusinessValidationFailedException(_localizer["User_UsernameExist"]);
@ -50,7 +50,7 @@ namespace IRaCIS.Core.Application.Service
private async Task VerifyUserPhoneAsync(Guid? userId, Guid userTypeId, string phone) private async Task VerifyUserPhoneAsync(Guid? userId, Guid userTypeId, string phone)
{ {
if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => (t.Phone == phone && t.UserTypeId == userTypeId))) if (await _userRoleRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => (t.Phone == phone && t.UserTypeId == userTypeId)))
{ {
//---该用户类型中已存在具有相同的电话的用户。 //---该用户类型中已存在具有相同的电话的用户。
throw new BusinessValidationFailedException(_localizer["User_PhoneDup"]); throw new BusinessValidationFailedException(_localizer["User_PhoneDup"]);
@ -60,7 +60,7 @@ namespace IRaCIS.Core.Application.Service
private async Task VerifyUserEmailAsync(Guid? userId, Guid userTypeId, string email) private async Task VerifyUserEmailAsync(Guid? userId, Guid userTypeId, string email)
{ {
if (await _userRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => (t.EMail == email && t.UserTypeId == userTypeId))) if (await _userRoleRepository.WhereIf(userId != null, t => t.Id != userId).AnyAsync(t => (t.EMail == email && t.UserTypeId == userTypeId)))
{ {
//---该用户类型中已存在具有相同邮箱的用户。 //---该用户类型中已存在具有相同邮箱的用户。
throw new BusinessValidationFailedException(_localizer["User_EmailDup"]); throw new BusinessValidationFailedException(_localizer["User_EmailDup"]);
@ -69,7 +69,7 @@ namespace IRaCIS.Core.Application.Service
private async Task VerifyUserPwdAsync(Guid userId, string newPwd, string? oldPwd = null) private async Task VerifyUserPwdAsync(Guid userId, string newPwd, string? oldPwd = null)
{ {
//var dbUser = (await _userRepository.FirstOrDefaultAsync(t => t.Id == userId)).IfNullThrowException(); //var dbUser = (await _userRoleRepository.FirstOrDefaultAsync(t => t.Id == userId)).IfNullThrowException();
if (_verifyConfig.CurrentValue.OpenUserComplexPassword) if (_verifyConfig.CurrentValue.OpenUserComplexPassword)
{ {
@ -80,7 +80,7 @@ namespace IRaCIS.Core.Application.Service
} }
var dbUser = (await _userRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException(); var dbUser = (await _userRoleRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException();
if (oldPwd != null && dbUser.Password != oldPwd) if (oldPwd != null && dbUser.Password != oldPwd)
{ {
@ -105,7 +105,7 @@ namespace IRaCIS.Core.Application.Service
if (oldPwd == null) if (oldPwd == null)
{ {
oldPwd = await _userRepository.Where(x => x.Id == userId).Select(x => x.Password).FirstOrDefaultAsync(); oldPwd = await _userRoleRepository.Where(x => x.Id == userId).Select(x => x.Password).FirstOrDefaultAsync();
} }
if (oldPwd.IsNotNullOrEmpty()) if (oldPwd.IsNotNullOrEmpty())
@ -119,7 +119,7 @@ namespace IRaCIS.Core.Application.Service
}); });
} }
await _userRepository.BatchUpdateNoTrackingAsync(x => x.Id == userId, x => new User() await _userRoleRepository.BatchUpdateNoTrackingAsync(x => x.Id == userId, x => new UserRole()
{ {
LastChangePassWordTime = DateTime.Now, LastChangePassWordTime = DateTime.Now,
}); });
@ -193,7 +193,7 @@ namespace IRaCIS.Core.Application.Service
await VerifyUserEmailAsync(_userInfo.Id, _userInfo.UserTypeId, newEmail); await VerifyUserEmailAsync(_userInfo.Id, _userInfo.UserTypeId, newEmail);
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.Id, u => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(_userInfo.Id, u => new UserRole()
{ {
EMail = newEmail EMail = newEmail
}); });
@ -216,7 +216,7 @@ namespace IRaCIS.Core.Application.Service
await VerifyUserPhoneAsync(_userInfo.Id, _userInfo.UserTypeId, newPhone); await VerifyUserPhoneAsync(_userInfo.Id, _userInfo.UserTypeId, newPhone);
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.Id, u => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(_userInfo.Id, u => new UserRole()
{ {
Phone = newPhone Phone = newPhone
}); });
@ -233,7 +233,7 @@ namespace IRaCIS.Core.Application.Service
await VerifyUserNameAsync(_userInfo.Id, newUserName); await VerifyUserNameAsync(_userInfo.Id, newUserName);
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.Id, u => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(_userInfo.Id, u => new UserRole()
{ {
UserName = newUserName UserName = newUserName
}); });
@ -252,7 +252,7 @@ namespace IRaCIS.Core.Application.Service
await VerifyUserNameAsync(userId, newUserName); await VerifyUserNameAsync(userId, newUserName);
await _userRepository.UpdatePartialFromQueryAsync(userId, u => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(userId, u => new UserRole()
{ {
UserName = newUserName, UserName = newUserName,
@ -291,13 +291,13 @@ namespace IRaCIS.Core.Application.Service
await _mailVerificationService.AdminResetPwdSendEmailAsync(userId, pwd); await _mailVerificationService.AdminResetPwdSendEmailAsync(userId, pwd);
} }
await _userRepository.UpdatePartialFromQueryAsync(userId, u => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(userId, u => new UserRole()
{ {
Password = MD5Helper.Md5(pwd), Password = MD5Helper.Md5(pwd),
IsFirstAdd = true IsFirstAdd = true
}); });
var userName = _userRepository.Where(t => t.Id == userId).Select(t => t.UserName).FirstOrDefault(); var userName = _userRoleRepository.Where(t => t.Id == userId).Select(t => t.UserName).FirstOrDefault();
await _fusionCache.RemoveAsync(CacheKeys.UserLoginError(userName)); await _fusionCache.RemoveAsync(CacheKeys.UserLoginError(userName));
@ -328,7 +328,7 @@ namespace IRaCIS.Core.Application.Service
} }
////查找改邮箱或者手机的用户 ////查找改邮箱或者手机的用户
var exist = await _userRepository.AnyAsync(t => t.EMail == email); var exist = await _userRoleRepository.AnyAsync(t => t.EMail == email);
if (!exist) if (!exist)
{ {
@ -363,7 +363,7 @@ namespace IRaCIS.Core.Application.Service
await VerifyUserPwdAsync(userId, newPwd); await VerifyUserPwdAsync(userId, newPwd);
await _userRepository.UpdatePartialFromQueryAsync(t => t.Id == userId, u => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(t => t.Id == userId, u => new UserRole()
{ {
Password = newPwd, Password = newPwd,
IsFirstAdd = false IsFirstAdd = false
@ -387,7 +387,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPost] [HttpPost]
public async Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO inQuery) public async Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO inQuery)
{ {
var userQueryable = _userRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin) var userQueryable = _userRoleRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.RealName), t => t.FullName.Contains(inQuery.RealName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.RealName), t => t.FullName.Contains(inQuery.RealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Phone), t => t.Phone.Contains(inQuery.Phone)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Phone), t => t.Phone.Contains(inQuery.Phone))
@ -416,10 +416,10 @@ namespace IRaCIS.Core.Application.Service
[HttpGet("{id:guid}")] [HttpGet("{id:guid}")]
public async Task<UserDetailDTO> GetUser(Guid id) public async Task<UserDetailDTO> GetUser(Guid id)
{ {
var userQuery = _userRepository.Where(t => t.Id == id).ProjectTo<UserDetailDTO>(_mapper.ConfigurationProvider); var userQuery = _userRoleRepository.Where(t => t.Id == id).ProjectTo<UserDetailDTO>(_mapper.ConfigurationProvider);
var result = await (userQuery.FirstOrDefaultAsync()).IfNullThrowException(); var result = await (userQuery.FirstOrDefaultAsync()).IfNullThrowException();
result.AccountList = _userRepository.Where(t => t.EMail == result.EMail && t.UserTypeEnum != UserTypeEnum.SuperAdmin) result.AccountList = _userRoleRepository.Where(t => t.EMail == result.EMail && t.UserTypeEnum != UserTypeEnum.SuperAdmin)
.ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).OrderBy(t => t.UserTypeShortName).ToList(); .ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).OrderBy(t => t.UserTypeShortName).ToList();
return result; return result;
@ -446,15 +446,15 @@ namespace IRaCIS.Core.Application.Service
//await VerifyUserPhoneAsync(null, userAddModel.UserTypeId, userAddModel.Phone); //await VerifyUserPhoneAsync(null, userAddModel.UserTypeId, userAddModel.Phone);
var saveItem = _mapper.Map<User>(userAddModel); var saveItem = _mapper.Map<UserRole>(userAddModel);
var @lock = _distributedLockProvider.CreateLock($"UserAccount"); var @lock = _distributedLockProvider.CreateLock($"UserAccount");
using (await @lock.AcquireAsync()) using (await @lock.AcquireAsync())
{ {
saveItem.Code = await _userRepository.Select(t => t.Code).DefaultIfEmpty().MaxAsync() + 1; saveItem.Code = await _userRoleRepository.Select(t => t.Code).DefaultIfEmpty().MaxAsync() + 1;
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User)); saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(UserRole));
//if (saveItem.IsZhiZhun) //if (saveItem.IsZhiZhun)
//{ //{
@ -467,9 +467,9 @@ namespace IRaCIS.Core.Application.Service
saveItem.Password = MD5Helper.Md5("123456"); saveItem.Password = MD5Helper.Md5("123456");
await _userRepository.AddAsync(saveItem); await _userRoleRepository.AddAsync(saveItem);
var success = await _userRepository.SaveChangesAsync(); var success = await _userRoleRepository.SaveChangesAsync();
} }
if (hospitalInfo.IsCanConnectInternet) if (hospitalInfo.IsCanConnectInternet)
@ -498,7 +498,7 @@ namespace IRaCIS.Core.Application.Service
//await VerifyUserPhoneAsync(model.Id, model.UserTypeId, model.Phone); //await VerifyUserPhoneAsync(model.Id, model.UserTypeId, model.Phone);
var user = await _userRepository.FirstOrDefaultAsync(t => t.Id == model.Id); var user = await _userRoleRepository.FirstOrDefaultAsync(t => t.Id == model.Id);
if (user == null) return Null404NotFound(user); if (user == null) return Null404NotFound(user);
@ -520,7 +520,7 @@ namespace IRaCIS.Core.Application.Service
var success = await _userRepository.SaveChangesAsync(); var success = await _userRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok(success); return ResponseOutput.Ok(success);
@ -542,7 +542,7 @@ namespace IRaCIS.Core.Application.Service
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = userId, OptType = UserOptType.DeleteUser }, true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = userId, OptType = UserOptType.DeleteUser }, true);
var success = await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == userId); var success = await _userRoleRepository.BatchDeleteNoTrackingAsync(t => t.Id == userId);
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -560,7 +560,7 @@ namespace IRaCIS.Core.Application.Service
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = userId, OptType = state == UserStateEnum.Enable ? UserOptType.AccountEnable : UserOptType.AccountLocked }, true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = _userInfo.Id, OptUserId = userId, OptType = state == UserStateEnum.Enable ? UserOptType.AccountEnable : UserOptType.AccountLocked }, true);
var success = await _userRepository.BatchUpdateNoTrackingAsync(u => u.Id == userId, t => new User var success = await _userRoleRepository.BatchUpdateNoTrackingAsync(u => u.Id == userId, t => new UserRole
{ {
Status = state Status = state
}); });
@ -570,7 +570,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<UserBasicInfo> GetUserBasicInfo(Guid userId, string pwd) public async Task<UserBasicInfo> GetUserBasicInfo(Guid userId, string pwd)
{ {
var info = await _userRepository.Where(u => u.Id == userId && u.Password == pwd).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstNotNullAsync(); var info = await _userRoleRepository.Where(u => u.Id == userId && u.Password == pwd).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstNotNullAsync();
return info; return info;
} }
@ -584,7 +584,7 @@ namespace IRaCIS.Core.Application.Service
[AllowAnonymous] [AllowAnonymous]
public async Task<IResponseOutput> SendMFAEmail(Guid userId, int mfaType) public async Task<IResponseOutput> SendMFAEmail(Guid userId, int mfaType)
{ {
var userInfo = await _userRepository.Where(u => u.Id == userId).Select(t => new { t.FullName, t.EMail }).FirstOrDefaultAsync(); var userInfo = await _userRoleRepository.Where(u => u.Id == userId).Select(t => new { t.FullName, t.EMail }).FirstOrDefaultAsync();
int verificationCode = new Random().Next(100000, 1000000); int verificationCode = new Random().Next(100000, 1000000);
@ -723,11 +723,11 @@ namespace IRaCIS.Core.Application.Service
var userTypeId = userType.Id; var userTypeId = userType.Id;
if (!_userRepository.Any(t => t.ThirdUserCode == thirdUId && t.UserTypeId == userTypeId)) if (!_userRoleRepository.Any(t => t.ThirdUserCode == thirdUId && t.UserTypeId == userTypeId))
{ {
var newCode = await _userRepository.Select(t => t.Code).DefaultIfEmpty().MaxAsync() + 1; var newCode = await _userRoleRepository.Select(t => t.Code).DefaultIfEmpty().MaxAsync() + 1;
var newUser = new User() var newUser = new UserRole()
{ {
FirstName = $"{tjUserInfo.Data.UserName}", FirstName = $"{tjUserInfo.Data.UserName}",
LastName = "tj", LastName = "tj",
@ -738,7 +738,7 @@ namespace IRaCIS.Core.Application.Service
Code = newCode, Code = newCode,
Password = MD5Helper.Md5("123456"), Password = MD5Helper.Md5("123456"),
CheckCode = "123456", CheckCode = "123456",
UserCode = AppSettings.GetCodeStr(newCode, nameof(User)), UserCode = AppSettings.GetCodeStr(newCode, nameof(UserRole)),
UserTypeId = userTypeId, UserTypeId = userTypeId,
UserTypeEnum = userType.UserTypeEnum, UserTypeEnum = userType.UserTypeEnum,
@ -748,17 +748,17 @@ namespace IRaCIS.Core.Application.Service
ThirdUserCode = thirdUId, ThirdUserCode = thirdUId,
}; };
await _userRepository.AddAsync(newUser); await _userRoleRepository.AddAsync(newUser);
} }
} }
await _userRepository.SaveChangesAsync(); await _userRoleRepository.SaveChangesAsync();
} }
//返回该账号的在系统的中的所有角色,如果单个角色,就直接登录,如果是多个角色,那么前端进行选择后进行登录 //返回该账号的在系统的中的所有角色,如果单个角色,就直接登录,如果是多个角色,那么前端进行选择后进行登录
var accountList = _userRepository.Where(t => t.EMail == email && t.UserTypeEnum != UserTypeEnum.SuperAdmin) var accountList = _userRoleRepository.Where(t => t.EMail == email && t.UserTypeEnum != UserTypeEnum.SuperAdmin)
.ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).OrderBy(t => t.UserTypeShortName).ToList(); .ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).OrderBy(t => t.UserTypeShortName).ToList();
var hirToken = _tokenService.GetToken(IRaCISClaims.Create(new UserBasicInfo() { Id = Guid.NewGuid(), UserName = tjUserInfo.Data.UserName })); var hirToken = _tokenService.GetToken(IRaCISClaims.Create(new UserBasicInfo() { Id = Guid.NewGuid(), UserName = tjUserInfo.Data.UserName }));
@ -785,7 +785,7 @@ namespace IRaCIS.Core.Application.Service
[NonDynamicMethod] [NonDynamicMethod]
public async Task<IResponseOutput<LoginReturnDTO>> LoginSelectUserType(Guid userId, Guid userTypeId) public async Task<IResponseOutput<LoginReturnDTO>> LoginSelectUserType(Guid userId, Guid userTypeId)
{ {
var userNamePwd = await _userRepository.Where(t => t.Id == userId && t.UserTypeId == userTypeId).Select(t => new { t.UserName, t.Password }).FirstNotNullAsync(); var userNamePwd = await _userRoleRepository.Where(t => t.Id == userId && t.UserTypeId == userTypeId).Select(t => new { t.UserName, t.Password }).FirstNotNullAsync();
return await Login(userNamePwd.UserName, userNamePwd.Password); return await Login(userNamePwd.UserName, userNamePwd.Password);
} }
@ -830,7 +830,7 @@ namespace IRaCIS.Core.Application.Service
var userLoginReturnModel = new LoginReturnDTO(); var userLoginReturnModel = new LoginReturnDTO();
var loginUser = await _userRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync(); var loginUser = await _userRoleRepository.Where(u => u.UserName.Equals(userName) && u.Password == password).ProjectTo<UserBasicInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
if (loginUser == null) if (loginUser == null)
{ {
@ -839,7 +839,7 @@ namespace IRaCIS.Core.Application.Service
failCount++; failCount++;
await _fusionCache.SetAsync(cacheKey, failCount, TimeSpan.FromMinutes(lockoutMinutes)); await _fusionCache.SetAsync(cacheKey, failCount, TimeSpan.FromMinutes(lockoutMinutes));
var errorPwdUserId = await _userRepository.Where(u => u.UserName == userName).Select(t => t.Id).FirstOrDefaultAsync(); var errorPwdUserId = await _userRoleRepository.Where(u => u.UserName == userName).Select(t => t.Id).FirstOrDefaultAsync();
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = errorPwdUserId, OptUserId = errorPwdUserId, LoginFaildName = userName, LoginPassword = password, OptType = UserOptType.AccountOrPasswordError }, true); await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, LoginUserId = errorPwdUserId, OptUserId = errorPwdUserId, LoginFaildName = userName, LoginPassword = password, OptType = UserOptType.AccountOrPasswordError }, true);
@ -882,7 +882,7 @@ namespace IRaCIS.Core.Application.Service
if (loginUser.LastChangePassWordTime == null) if (loginUser.LastChangePassWordTime == null)
{ {
await _userRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.Id, x => new User() await _userRoleRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.Id, x => new UserRole()
{ {
LastChangePassWordTime = DateTime.Now LastChangePassWordTime = DateTime.Now
@ -890,14 +890,14 @@ namespace IRaCIS.Core.Application.Service
} }
await _userRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.Id, x => new User() await _userRoleRepository.BatchUpdateNoTrackingAsync(x => x.Id == loginUser.Id, x => new UserRole()
{ {
LastLoginIP = iPRegion, LastLoginIP = iPRegion,
LastLoginTime = DateTime.Now LastLoginTime = DateTime.Now
}); });
userLoginReturnModel.AccountList = _userRepository.Where(t => t.EMail == userLoginReturnModel.BasicInfo.EMail && t.UserTypeEnum != UserTypeEnum.SuperAdmin) userLoginReturnModel.AccountList = _userRoleRepository.Where(t => t.EMail == userLoginReturnModel.BasicInfo.EMail && t.UserTypeEnum != UserTypeEnum.SuperAdmin)
.ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).ToList(); .ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).ToList();
return ResponseOutput.Ok(userLoginReturnModel); return ResponseOutput.Ok(userLoginReturnModel);
@ -909,24 +909,40 @@ namespace IRaCIS.Core.Application.Service
{ {
DateTime? trialCreateTime = inQuery.TrialId != null ? _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => t.CreateTime).FirstOrDefault() : null; DateTime? trialCreateTime = inQuery.TrialId != null ? _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => t.CreateTime).FirstOrDefault() : null;
var userLogQueryable = var userLogQueryable =
_userLogRepository.AsQueryable().IgnoreQueryFilters() _userLogRepository.AsQueryable().IgnoreQueryFilters()
.WhereIf(inQuery.TrialId != null, t => t.LoginUser.UserTrials.Any(c => c.TrialId == inQuery.TrialId && (c.UserId == t.LoginUserId || c.UserId == t.OptUserId))) .WhereIf(inQuery.IdentityUserId != null, t => t.ActionIdentityUserId == inQuery.IdentityUserId)
.WhereIf(inQuery.TargetIdentityUserId != null, t => t.TargetIdentityUserId == inQuery.TargetIdentityUserId)
.WhereIf(inQuery.TrialId != null, t => t.ActionIdentityUser.UserTrialList.Any(c => c.TrialId == inQuery.TrialId) || t.TargetIdentityUser.UserTrialList.Any(c => c.TrialId == inQuery.TrialId))
.WhereIf(trialCreateTime != null, t => t.CreateTime >= trialCreateTime) .WhereIf(trialCreateTime != null, t => t.CreateTime >= trialCreateTime)
.WhereIf(inQuery.OptType != null, t => t.OptType == inQuery.OptType) .WhereIf(inQuery.OptTypeList != null && inQuery.OptTypeList.Count > 0, t => inQuery.OptTypeList.Contains(t.OptType))
.WhereIf(inQuery.UserId != null, t => t.LoginUserId == inQuery.UserId)
.WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate) .WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate)
.WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate) .WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate)
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.LoginUser.UserName.Contains(inQuery.LoginUserName!)) .WhereIf(inQuery.IsLoginUncommonly != null, t => t.IsLoginUncommonly == inQuery.IsLoginUncommonly)
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginFaildName), t => t.LoginFaildName.Contains(inQuery.LoginFaildName!))
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.ActionUserName.Contains(inQuery.LoginUserName!))
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginFaildName), t => t.ActionUserName.Contains(inQuery.LoginFaildName!))
.WhereIf(!string.IsNullOrEmpty(inQuery.IP), t => t.IP.Contains(inQuery.IP!)) .WhereIf(!string.IsNullOrEmpty(inQuery.IP), t => t.IP.Contains(inQuery.IP!))
.WhereIf(inQuery.LoginUserTypeEnum != null, t => t.LoginUser.UserTypeEnum == inQuery.LoginUserTypeEnum) .WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserType), t => t.ActionUserType == inQuery.LoginUserType)
.WhereIf(inQuery.UserTypeId != null, t => t.LoginUser.UserTypeId == inQuery.UserTypeId) .WhereIf(inQuery.UserTypeId != null, t => t.CreateUserRole.UserTypeId == inQuery.UserTypeId)
.ProjectTo<UserLogView>(_mapper.ConfigurationProvider); .ProjectTo<UserLogView>(_mapper.ConfigurationProvider);
var pageList = await userLogQueryable.ToPagedListAsync(inQuery); var pageList = await userLogQueryable.ToPagedListAsync(inQuery);
//项目创建账户的时候没有用户名但是目标用户Id 有值,导致查询出来有名字,所以在此单独处理下
foreach (var item in pageList.CurrentPageData)
{
if (item.OptType == UserOptType.AddUser)
{
item.TargetIdentityUserName = item.UserObj.UserName;
}
}
return pageList; return pageList;
} }
@ -987,7 +1003,7 @@ namespace IRaCIS.Core.Application.Service
} }
else else
{ {
var isPass = _userRepository.Where(t => t.EMail == email).Any(t => t.CheckCode == verifyCode); var isPass = _userRoleRepository.Where(t => t.EMail == email).Any(t => t.CheckCode == verifyCode);
if (!isPass) if (!isPass)
{ {
@ -997,7 +1013,7 @@ namespace IRaCIS.Core.Application.Service
var list = await _userRepository.Where(t => t.EMail == email).Select(t => new UserAccountDto() { UserId = t.Id, UserName = t.UserName, UserRealName = t.FullName, UserType = t.UserTypeRole.UserTypeShortName }).ToListAsync(); var list = await _userRoleRepository.Where(t => t.EMail == email).Select(t => new UserAccountDto() { UserId = t.Id, UserName = t.UserName, UserRealName = t.FullName, UserType = t.UserTypeRole.UserTypeShortName }).ToListAsync();
@ -1008,9 +1024,9 @@ namespace IRaCIS.Core.Application.Service
[HttpPut("{newCheckCode}")] [HttpPut("{newCheckCode}")]
public async Task<IResponseOutput> SetNewCheckCode(string newCheckCode) public async Task<IResponseOutput> SetNewCheckCode(string newCheckCode)
{ {
var user = await _userRepository.FirstOrDefaultNoTrackingAsync(t => t.Id == _userInfo.Id); var user = await _userRoleRepository.FirstOrDefaultNoTrackingAsync(t => t.Id == _userInfo.Id);
await _userRepository.UpdatePartialFromQueryAsync(t => t.EMail == user.EMail, u => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(t => t.EMail == user.EMail, u => new UserRole()
{ {
CheckCode = newCheckCode CheckCode = newCheckCode
}); });
@ -1036,14 +1052,14 @@ namespace IRaCIS.Core.Application.Service
await VerifyUserNameAsync(_userInfo.Id, editPwModel.NewUserName); await VerifyUserNameAsync(_userInfo.Id, editPwModel.NewUserName);
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.Id, u => new User() await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.Id, u => new UserRole()
{ {
UserName = editPwModel.NewUserName, UserName = editPwModel.NewUserName,
}); });
} }
await _userRepository.UpdatePartialFromQueryAsync(t => t.Id == _userInfo.Id, u => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(t => t.Id == _userInfo.Id, u => new UserRole()
{ {
Password = editPwModel.NewPassWord, Password = editPwModel.NewPassWord,
CheckCode = editPwModel.CheckCode, CheckCode = editPwModel.CheckCode,

View File

@ -12,7 +12,7 @@ namespace IRaCIS.Core.Application.Contracts
/// UserTypeRoleService /// UserTypeRoleService
/// </summary> /// </summary>
[ApiExplorerSettings(GroupName = "Management")] [ApiExplorerSettings(GroupName = "Management")]
public class UserTypeRoleService(IRepository<UserType> _userTypeRepository, IRepository<User> _userRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IUserTypeService public class UserTypeRoleService(IRepository<UserType> _userTypeRepository, IRepository<UserRole> _userRoleRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IUserTypeService
{ {
[HttpPost] [HttpPost]
@ -79,7 +79,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{userTypeId:guid}")] [HttpDelete("{userTypeId:guid}")]
public async Task<IResponseOutput> DeleteUserTypeRole(Guid userTypeId) public async Task<IResponseOutput> DeleteUserTypeRole(Guid userTypeId)
{ {
if (await _userRepository.AnyAsync(t => t.UserTypeId == userTypeId)) if (await _userRoleRepository.AnyAsync(t => t.UserTypeId == userTypeId))
{ {
//---该用户类型中已存在用户,不能删除 //---该用户类型中已存在用户,不能删除
return ResponseOutput.NotOk(_localizer["UserType_InUse"]); return ResponseOutput.NotOk(_localizer["UserType_InUse"]);

View File

@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<UserCommand, User>().ForMember(d => d.UserCode, x => x.Ignore()); CreateMap<UserCommand, UserRole>().ForMember(d => d.UserCode, x => x.Ignore());
CreateMap<UserType, UserTypeMenuAddOrEdit>().ReverseMap() CreateMap<UserType, UserTypeMenuAddOrEdit>().ReverseMap()
.ForMember(t => t.UserTypeMenuList, u => u.MapFrom(c => c.MenuIds)) .ForMember(t => t.UserTypeMenuList, u => u.MapFrom(c => c.MenuIds))
.ForMember(t => t.UserTypeGroupList, u => u.MapFrom(c => c.UserTypeGroupIdList)); .ForMember(t => t.UserTypeGroupList, u => u.MapFrom(c => c.UserTypeGroupIdList));
@ -73,14 +73,14 @@ namespace IRaCIS.Core.Application.Service
CreateMap<UserType, TrialUserType>() CreateMap<UserType, TrialUserType>()
.ForMember(d => d.UserType, u => u.MapFrom(t => t.UserTypeName)); .ForMember(d => d.UserType, u => u.MapFrom(t => t.UserTypeName));
CreateMap<User, UserDetailDTO>() CreateMap<UserRole, UserDetailDTO>()
.ForMember(d => d.RealName, u => u.MapFrom(s => s.FullName)) .ForMember(d => d.RealName, u => u.MapFrom(s => s.FullName))
.ForMember(d => d.UserTypeId, u => u.MapFrom(s => s.UserTypeRole.Id)) .ForMember(d => d.UserTypeId, u => u.MapFrom(s => s.UserTypeRole.Id))
.ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeName)) .ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeName))
.ForMember(d => d.UserTypeShortName, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName)) .ForMember(d => d.UserTypeShortName, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
.ForMember(d => d.CanEditUserType, u => u.MapFrom(s => !s.UserTrials.Any())); .ForMember(d => d.CanEditUserType, u => u.MapFrom(s => !s.UserTrials.Any()));
CreateMap<User, UserListDTO>() CreateMap<UserRole, UserListDTO>()
.ForMember(d => d.RealName, u => u.MapFrom(s => s.FullName)) .ForMember(d => d.RealName, u => u.MapFrom(s => s.FullName))
.ForMember(d => d.UserTypeId, u => u.MapFrom(s => s.UserTypeRole.Id)) .ForMember(d => d.UserTypeId, u => u.MapFrom(s => s.UserTypeRole.Id))
.ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName)) .ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
@ -90,7 +90,7 @@ namespace IRaCIS.Core.Application.Service
var userId = Guid.Empty; var userId = Guid.Empty;
CreateMap<SystemNotice, SystemNoticeView>() CreateMap<SystemNotice, SystemNoticeView>()
.ForMember(t => t.PublishUserName, d => d.MapFrom(t => t.PublishedUser.UserName)) .ForMember(t => t.PublishUserName, d => d.MapFrom(t => t.PublishedUser.UserName))
.ForMember(t => t.CreateUserName, d => d.MapFrom(t => t.CreateUser.UserName)) .ForMember(t => t.CreateUserName, d => d.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token)); .ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<SystemNotice, SystemNoticeReadDTO>() CreateMap<SystemNotice, SystemNoticeReadDTO>()
.ForMember(t => t.PublishUserName, d => d.MapFrom(t => t.PublishedUser.UserName)) .ForMember(t => t.PublishUserName, d => d.MapFrom(t => t.PublishedUser.UserName))
.ForMember(t => t.CreateUserName, d => d.MapFrom(t => t.CreateUser.UserName)) .ForMember(t => t.CreateUserName, d => d.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(t => t.IsRead, d => d.MapFrom(t => t.NoticeUserReadList.Any(t => t.CreateUserId == userId))) .ForMember(t => t.IsRead, d => d.MapFrom(t => t.NoticeUserReadList.Any(t => t.CreateUserId == userId)))
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token)); .ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
@ -116,12 +116,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<UserLog, UserLogView>() CreateMap<UserLog, UserLogView>()
.ForMember(d => d.LoginUserName, c => c.MapFrom(t => t.LoginUser.UserName)) //.ForMember(d => d.ActionUserRoleShortName, c => c.MapFrom(t => t.CreateUserRole.UserTypeRole.UserTypeShortName))
.ForMember(d => d.LoginUserTypeEnum, c => c.MapFrom(t => t.LoginUser.UserTypeEnum)) .ForMember(d => d.TargetIdentityUserName, c => c.MapFrom(t => t.TargetIdentityUser.UserName));
.ForMember(d => d.OptUserName, c => c.MapFrom(t => t.OptUser.UserName))
.ForMember(d => d.OptUserTypeEnum, c => c.MapFrom(t => t.OptUser.UserTypeEnum))
;
CreateMap<UserFeedBack, UserFeedBackView>() CreateMap<UserFeedBack, UserFeedBackView>()
.ForMember(d => d.ExperimentName, c => c.MapFrom(t => t.Trial.ExperimentName)) .ForMember(d => d.ExperimentName, c => c.MapFrom(t => t.Trial.ExperimentName))
@ -129,15 +125,15 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.SubjectCode, c => c.MapFrom(t => t.Subject.Code)) .ForMember(d => d.SubjectCode, c => c.MapFrom(t => t.Subject.Code))
.ForMember(d => d.TrialSiteCode, c => c.MapFrom(t => t.VisitTask.IsAnalysisCreate ? t.VisitTask.BlindTrialSiteCode : t.TrialSite.TrialSiteCode)) .ForMember(d => d.TrialSiteCode, c => c.MapFrom(t => t.VisitTask.IsAnalysisCreate ? t.VisitTask.BlindTrialSiteCode : t.TrialSite.TrialSiteCode))
.ForMember(d => d.SubjectVisitName, c => c.MapFrom(t => t.SubjectVisit.VisitName)) .ForMember(d => d.SubjectVisitName, c => c.MapFrom(t => t.SubjectVisit.VisitName))
.ForMember(d => d.FeedBackUserName, c => c.MapFrom(t => t.CreateUser.UserName)) .ForMember(d => d.FeedBackUserName, c => c.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.FeedBackFullName, c => c.MapFrom(t => t.CreateUser.FullName)) .ForMember(d => d.FeedBackFullName, c => c.MapFrom(t => t.CreateUserRole.FullName))
.ForMember(d => d.UserTypeEnum, c => c.MapFrom(t => t.CreateUser.UserTypeEnum)) .ForMember(d => d.UserTypeEnum, c => c.MapFrom(t => t.CreateUserRole.UserTypeEnum))
.ForMember(d => d.ScreenshotList, c => c.MapFrom(t => t.FeedBackScreenshotList)) .ForMember(d => d.ScreenshotList, c => c.MapFrom(t => t.FeedBackScreenshotList))
; ;
CreateMap<UserFeedBackAddOrEdit, UserFeedBack>().ReverseMap(); CreateMap<UserFeedBackAddOrEdit, UserFeedBack>().ReverseMap();
CreateMap<User, UserAccountInfo>() CreateMap<UserRole, UserAccountInfo>()
.ForMember(d => d.UserTypeShortName, c => c.MapFrom(t => t.UserTypeRole.UserTypeShortName)); .ForMember(d => d.UserTypeShortName, c => c.MapFrom(t => t.UserTypeRole.UserTypeShortName));

View File

@ -17,7 +17,7 @@ namespace IRaCIS.Core.Application.Image.QA
IRepository<TrialQCQuestionAnswer> _trialQCQuestionAnswerRepository, IRepository<TrialQCQuestionAnswer> _trialQCQuestionAnswerRepository,
IRepository<TrialQCQuestion> _trialQCQuestionRepository, IRepository<TrialQCQuestion> _trialQCQuestionRepository,
IRepository<DicomStudy> _dicomStudyRepository, IRepository<DicomStudy> _dicomStudyRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<DicomSeries> _dicomSeriesRepository, IRepository<DicomSeries> _dicomSeriesRepository,
IRepository<NoneDicomStudy> _noneDicomStudyRepository, IRepository<NoneDicomStudy> _noneDicomStudyRepository,
IRepository<QCChallenge> _qcChallengeRepository, IRepository<QCChallenge> _qcChallengeRepository,
@ -582,10 +582,10 @@ namespace IRaCIS.Core.Application.Image.QA
public async Task<List<QCChanllengeCreatorDto>> GetQCChallengeCreatorList(Guid trialId) public async Task<List<QCChanllengeCreatorDto>> GetQCChallengeCreatorList(Guid trialId)
{ {
return await _trialUserRepository.Where(t => t.TrialId == trialId && t.User.UserTypeEnum == UserTypeEnum.IQC).Select(t => new QCChanllengeCreatorDto() return await _trialUserRepository.Where(t => t.TrialId == trialId && t.UserRole.UserTypeEnum == UserTypeEnum.IQC).Select(t => new QCChanllengeCreatorDto()
{ {
CreatorRealName = t.User.FullName, CreatorRealName = t.UserRole.FullName,
Creator = t.User.UserName, Creator = t.UserRole.UserName,
CreateUserId = t.UserId CreateUserId = t.UserId
}).ToListAsync(); }).ToListAsync();
@ -599,10 +599,10 @@ namespace IRaCIS.Core.Application.Image.QA
[HttpGet("{trialId:guid}")] [HttpGet("{trialId:guid}")]
public async Task<List<ParticipantDTO>> GetQCParticipantList(Guid trialId) public async Task<List<ParticipantDTO>> GetQCParticipantList(Guid trialId)
{ {
return await _trialUserRepository.Where(t => t.TrialId == trialId && (t.User.UserTypeEnum == UserTypeEnum.IQC || t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)).Select(t => new ParticipantDTO() return await _trialUserRepository.Where(t => t.TrialId == trialId && (t.UserRole.UserTypeEnum == UserTypeEnum.IQC || t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)).Select(t => new ParticipantDTO()
{ {
HandleUserRealName = t.User.FullName, HandleUserRealName = t.UserRole.FullName,
HandleUser = t.User.UserName, HandleUser = t.UserRole.UserName,
HandleUserId = t.UserId HandleUserId = t.UserId
}).ToListAsync(); }).ToListAsync();
} }

View File

@ -29,7 +29,7 @@ namespace IRaCIS.Core.Application.Image.QA
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<SCPPatient> _scpPatientRepository, IRepository<SCPPatient> _scpPatientRepository,
IRepository<SCPStudy> _scpStudyRepository, IRepository<SCPStudy> _scpStudyRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<ReadModule> _readModuleRepository, IRepository<ReadModule> _readModuleRepository,
IRepository<DicomInstance> _dicomInstanceRepository, IRepository<DicomInstance> _dicomInstanceRepository,
IRepository<TrialQCQuestionAnswer> _trialQCQuestionAnswerRepository, IRepository<TrialQCQuestionAnswer> _trialQCQuestionAnswerRepository,

View File

@ -47,7 +47,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<QCChallengeDialog, DialogInfo>() CreateMap<QCChallengeDialog, DialogInfo>()
.ForMember(d => d.CreateTime, u => u.MapFrom(s => s.CreateTime)) .ForMember(d => d.CreateTime, u => u.MapFrom(s => s.CreateTime))
.ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUserRole.UserName))
.ForMember(d => d.Content, u => u.MapFrom(s => s.TalkContent)); .ForMember(d => d.Content, u => u.MapFrom(s => s.TalkContent));
CreateMap<QCChallenge, QCChanllengeExportDto>() CreateMap<QCChallenge, QCChanllengeExportDto>()
@ -56,7 +56,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.SubjectVisit.TrialSite.TrialSiteCode)) .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.SubjectVisit.TrialSite.TrialSiteCode))
.ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName))
.ForMember(d => d.CreateUserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.CreateUserName, u => u.MapFrom(s => s.CreateUserRole.UserName))
.ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName)) .ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName))
.ForMember(d => d.LatestReplyUserFullName, u => u.MapFrom(t => t.LatestReplyUser.FullName)) .ForMember(d => d.LatestReplyUserFullName, u => u.MapFrom(t => t.LatestReplyUser.FullName))
.ForMember(d => d.DialogList, u => u.MapFrom(t => t.DialogList)) .ForMember(d => d.DialogList, u => u.MapFrom(t => t.DialogList))
@ -87,8 +87,8 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.RadiologyClinicalDataCount, u => u.MapFrom(s => s.ClinicalDataList.Count(t => t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead))) .ForMember(d => d.RadiologyClinicalDataCount, u => u.MapFrom(s => s.ClinicalDataList.Count(t => t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead)))
.ForMember(d => d.OncologyClinicalDataCount, u => u.MapFrom(s => s.ClinicalDataList.Count(t => t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead))) .ForMember(d => d.OncologyClinicalDataCount, u => u.MapFrom(s => s.ClinicalDataList.Count(t => t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead)))
.ForMember(d => d.ChallengeWaitReplyCount, u => u.MapFrom(s => s.SubjectVisitList.SelectMany(c => c.QCChallengeList).Count(t => t.IsClosed == false && !t.DialogList.Any(t => t.CreateUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)))) .ForMember(d => d.ChallengeWaitReplyCount, u => u.MapFrom(s => s.SubjectVisitList.SelectMany(c => c.QCChallengeList).Count(t => t.IsClosed == false && !t.DialogList.Any(t => t.CreateUserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator))))
.ForMember(d => d.CheckWaitReplyCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.CheckState == CheckStateEnum.CVIng && t.CheckChallengeState != CheckChanllengeTypeEnum.Closed && !t.CheckChallengeDialogList.Any(t => t.CreateUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)))) .ForMember(d => d.CheckWaitReplyCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t => t.CheckState == CheckStateEnum.CVIng && t.CheckChallengeState != CheckChanllengeTypeEnum.Closed && !t.CheckChallengeDialogList.Any(t => t.CreateUserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator))))
; ;
CreateMap<Subject, SubjectProgressDto>() CreateMap<Subject, SubjectProgressDto>()
@ -122,7 +122,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<CheckChallengeDialog, DialogInfo>() CreateMap<CheckChallengeDialog, DialogInfo>()
.ForMember(d => d.CreateTime, u => u.MapFrom(s => s.CreateTime)) .ForMember(d => d.CreateTime, u => u.MapFrom(s => s.CreateTime))
.ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUserRole.UserName))
.ForMember(d => d.Content, u => u.MapFrom(s => s.TalkContent)); .ForMember(d => d.Content, u => u.MapFrom(s => s.TalkContent));
CreateMap<SubjectVisit, PMKCheckEXportDTO>() CreateMap<SubjectVisit, PMKCheckEXportDTO>()
@ -546,8 +546,8 @@ namespace IRaCIS.Core.Application.Service
//一致性核查 质疑对话 //一致性核查 质疑对话
CreateMap<CheckChallengeDialog, CheckChanllengeDialogDTO>() CreateMap<CheckChallengeDialog, CheckChanllengeDialogDTO>()
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName)) .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName)); .ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUserRole.FullName));
CreateMap<SubjectVisit, CheckDialogDTO>() CreateMap<SubjectVisit, CheckDialogDTO>()
.ForMember(d => d.SubjectVisitCheck, u => u.MapFrom(t => t)) .ForMember(d => d.SubjectVisitCheck, u => u.MapFrom(t => t))
@ -578,13 +578,13 @@ namespace IRaCIS.Core.Application.Service
// 临床数据上传 路径拼接返回 // 临床数据上传 路径拼接返回
CreateMap<PreviousHistory, PreviousHistoryView>() CreateMap<PreviousHistory, PreviousHistoryView>()
.ForMember(d => d.CreateUser, u => u.MapFrom(s => s.CreateUser.FullName)) .ForMember(d => d.CreateUser, u => u.MapFrom(s => s.CreateUserRole.FullName))
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path)); .ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
CreateMap<PreviousOther, PreviousOtherView>() CreateMap<PreviousOther, PreviousOtherView>()
.ForMember(d => d.CreateUser, u => u.MapFrom(s => s.CreateUser.FullName)) .ForMember(d => d.CreateUser, u => u.MapFrom(s => s.CreateUserRole.FullName))
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path)); .ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
CreateMap<PreviousSurgery, PreviousSurgeryView>() CreateMap<PreviousSurgery, PreviousSurgeryView>()
.ForMember(d => d.CreateUser, u => u.MapFrom(s => s.CreateUser.FullName)) .ForMember(d => d.CreateUser, u => u.MapFrom(s => s.CreateUserRole.FullName))
.ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path)); .ForMember(d => d.FullFilePath, u => u.MapFrom(s => s.Path));
@ -594,14 +594,14 @@ namespace IRaCIS.Core.Application.Service
//QC 质疑对话 //QC 质疑对话
var currentUserId = Guid.Empty; var currentUserId = Guid.Empty;
CreateMap<QCChallengeDialog, QCChanllengeDialogDTO>() CreateMap<QCChallengeDialog, QCChanllengeDialogDTO>()
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName)) .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName)) .ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUserRole.FullName))
.ForMember(d => d.IsCurrentUser, u => u.MapFrom(s => s.CreateUserId == currentUserId)); .ForMember(d => d.IsCurrentUser, u => u.MapFrom(s => s.CreateUserId == currentUserId));
//质疑编号 //质疑编号
CreateMap<QCChallenge, QCChallengeWithUser>() CreateMap<QCChallenge, QCChallengeWithUser>()
.ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName)) .ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName))
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName)) .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.CurrentActionUserId, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUserId)) .ForMember(d => d.CurrentActionUserId, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUserId))
.ForMember(d => d.CurrentActionUserName, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUser.UserName)) .ForMember(d => d.CurrentActionUserName, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUser.UserName))
@ -615,7 +615,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<QCChallenge, ChallengeAndDialog>() CreateMap<QCChallenge, ChallengeAndDialog>()
.ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName)) .ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName))
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName)) .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.CurrentActionUserId, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUserId)) .ForMember(d => d.CurrentActionUserId, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUserId))
.ForMember(d => d.CurrentActionUserName, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUser.UserName)) .ForMember(d => d.CurrentActionUserName, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUser.UserName))
@ -631,7 +631,7 @@ namespace IRaCIS.Core.Application.Service
// 一致性核查文件 // 一致性核查文件
CreateMap<InspectionFile, GetUserUploadFileDto>() CreateMap<InspectionFile, GetUserUploadFileDto>()
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.FullName)); .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUserRole.FullName));
//CRC 质疑列表 //CRC 质疑列表
@ -656,7 +656,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.BlindName, u => u.MapFrom(s => s.SubjectVisit.BlindName)) .ForMember(d => d.BlindName, u => u.MapFrom(s => s.SubjectVisit.BlindName))
//.ForMember(d => d.ClosedUserUserName, u => u.MapFrom(s => s.ClosedUser.UserName)) //.ForMember(d => d.ClosedUserUserName, u => u.MapFrom(s => s.ClosedUser.UserName))
.ForMember(d => d.IsQCConfirmedReupload, u => u.MapFrom(s => s.SubjectVisit.IsQCConfirmedReupload)) .ForMember(d => d.IsQCConfirmedReupload, u => u.MapFrom(s => s.SubjectVisit.IsQCConfirmedReupload))
.ForMember(d => d.CreateUserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.CreateUserName, u => u.MapFrom(s => s.CreateUserRole.UserName))
.ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName)) .ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName))
.ForMember(d => d.LatestReplyUserFullName, u => u.MapFrom(t => t.LatestReplyUser.FullName)) .ForMember(d => d.LatestReplyUserFullName, u => u.MapFrom(t => t.LatestReplyUser.FullName))

View File

@ -15,7 +15,7 @@ namespace IRaCIS.Core.Application.Service
[ApiExplorerSettings(GroupName = "Reading")] [ApiExplorerSettings(GroupName = "Reading")]
public class ReadModuleService(IRepository<SubjectVisit> _subjectVisitRepository, public class ReadModuleService(IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Subject> _subjectRepository, IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IVisitTaskHelpeService _visitTaskHelpeService, IVisitTaskHelpeService _visitTaskHelpeService,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
@ -860,7 +860,7 @@ namespace IRaCIS.Core.Application.Service
}; };
readModule.StakeholderIds = stakeholderIds.Distinct().ToList(); readModule.StakeholderIds = stakeholderIds.Distinct().ToList();
readModule.StakeholderNames = await _userRepository.Where(x => readModule.StakeholderIds.Contains(x.Id)).Select(x => x.FirstName + "/" + x.LastName).ToListAsync(); readModule.StakeholderNames = await _userRoleRepository.Where(x => readModule.StakeholderIds.Contains(x.Id)).Select(x => x.FirstName + "/" + x.LastName).ToListAsync();
return readModule; return readModule;
} }

View File

@ -15,7 +15,7 @@ namespace IRaCIS.Core.Application.Service
/// </summary> /// </summary>
[ApiExplorerSettings(GroupName = "Reading")] [ApiExplorerSettings(GroupName = "Reading")]
public class UserWLTemplateService(IRepository<UserWLTemplate> _userWLTemplateRepository, public class UserWLTemplateService(IRepository<UserWLTemplate> _userWLTemplateRepository,
IRepository<User> _userRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService IRepository<UserRole> _userRoleRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
{ {
@ -85,7 +85,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<object> GetAutoCutNextTask() public async Task<object> GetAutoCutNextTask()
{ {
return await _userRepository.Where(x => x.Id == _userInfo.Id).Select(x => new return await _userRoleRepository.Where(x => x.Id == _userInfo.Id).Select(x => new
{ {
AutoCutNextTask = x.AutoCutNextTask AutoCutNextTask = x.AutoCutNextTask
}).FirstNotNullAsync(); }).FirstNotNullAsync();
@ -100,13 +100,13 @@ namespace IRaCIS.Core.Application.Service
[HttpPost] [HttpPost]
public async Task<IResponseOutput> SetAutoCutNextTask(SetAutoCutNextTaskInDto inDto) public async Task<IResponseOutput> SetAutoCutNextTask(SetAutoCutNextTaskInDto inDto)
{ {
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.Id, x => new User() await _userRoleRepository.UpdatePartialFromQueryAsync(_userInfo.Id, x => new UserRole()
{ {
AutoCutNextTask = inDto.AutoCutNextTask AutoCutNextTask = inDto.AutoCutNextTask
}); });
await _userRepository.SaveChangesAsync(); await _userRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -38,21 +38,21 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialClinicalTableQuestionDto, TrialClinicalTableQuestion>(); CreateMap<TrialClinicalTableQuestionDto, TrialClinicalTableQuestion>();
CreateMap<SystemClinicalQuestion, TrialClinicalQuestion>() CreateMap<SystemClinicalQuestion, TrialClinicalQuestion>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.SystemClinicalQuestionId, opt => opt.MapFrom(src => src.Id)); .ForMember(d => d.SystemClinicalQuestionId, opt => opt.MapFrom(src => src.Id));
CreateMap<SystemClinicalQuestion, TrialClinicalQuestionSynchronize>() CreateMap<SystemClinicalQuestion, TrialClinicalQuestionSynchronize>()
.ForMember(d => d.CreateUser, opt => opt.Ignore()) .ForMember(d => d.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.SystemClinicalQuestionId, opt => opt.MapFrom(src => src.Id)); .ForMember(d => d.SystemClinicalQuestionId, opt => opt.MapFrom(src => src.Id));
CreateMap<SystemClinicalTableQuestion, TrialClinicalTableQuestion>() CreateMap<SystemClinicalTableQuestion, TrialClinicalTableQuestion>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.SystemTableQuestionId, u => u.MapFrom(s => s.Id)); .ForMember(d => d.SystemTableQuestionId, u => u.MapFrom(s => s.Id));
CreateMap<SystemClinicalTableQuestion, TrialClinicalTableQuestionSynchronize>() CreateMap<SystemClinicalTableQuestion, TrialClinicalTableQuestionSynchronize>()
.ForMember(d => d.SystemTableQuestionId, opt => opt.MapFrom(src => src.Id)) .ForMember(d => d.SystemTableQuestionId, opt => opt.MapFrom(src => src.Id))
.ForMember(d => d.CreateUser, opt => opt.Ignore()); .ForMember(d => d.CreateUserRole, opt => opt.Ignore());
// 预览 // 预览
@ -67,22 +67,22 @@ namespace IRaCIS.Core.Application.Service
CreateMap<VisitTask, VisitTaskDto>(); CreateMap<VisitTask, VisitTaskDto>();
CreateMap<SubmitTableQuestionInDto, ReadingTableAnswerRowInfo>() CreateMap<SubmitTableQuestionInDto, ReadingTableAnswerRowInfo>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null)); .ForAllMembers(opts => opts.Condition((src, dest, srcMember) => srcMember != null));
CreateMap<ShortcutKey, DefaultShortcutKeyView>(); CreateMap<ShortcutKey, DefaultShortcutKeyView>();
CreateMap<TrialDataFromSystem, ReadingMedicineTrialQuestion>().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<TrialDataFromSystem, ReadingMedicineTrialQuestion>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingCustomTag, ReadingCustomTagDto>(); CreateMap<ReadingCustomTag, ReadingCustomTagDto>();
CreateMap<ReadingCustomTagDto, ReadingCustomTag>().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<ReadingCustomTagDto, ReadingCustomTag>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<UserWLTemplate, UserWLTemplateView>(); CreateMap<UserWLTemplate, UserWLTemplateView>();
CreateMap<UserWLTemplate, UserWLTemplateAddOrEdit>().ReverseMap().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<UserWLTemplate, UserWLTemplateAddOrEdit>().ReverseMap().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingPeriodSetAddOrEdit, ReadingPeriodSet>().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<ReadingPeriodSetAddOrEdit, ReadingPeriodSet>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingTableQuestionAnswer, TableQuestionAnswerInfo>().ReverseMap() CreateMap<ReadingTableQuestionAnswer, TableQuestionAnswerInfo>().ReverseMap()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingTableQuestionAnswer, TableQuestionAnswerInfo>() CreateMap<ReadingTableQuestionAnswer, TableQuestionAnswerInfo>()
@ -149,20 +149,19 @@ namespace IRaCIS.Core.Application.Service
//.ForMember(t=>t.SystemCriterionNameList,u=>u.MapFrom(c=>c.SystemClinicalDataCriterionList.Select(t=>t.SystemReadingCriterion.CriterionName))) //.ForMember(t=>t.SystemCriterionNameList,u=>u.MapFrom(c=>c.SystemClinicalDataCriterionList.Select(t=>t.SystemReadingCriterion.CriterionName)))
//.ForMember(t => t.SystemCriterionIdList, u => u.MapFrom(c => c.SystemClinicalDataCriterionList.Select(t => t.SystemReadingCriterion.Id))); //.ForMember(t => t.SystemCriterionIdList, u => u.MapFrom(c => c.SystemClinicalDataCriterionList.Select(t => t.SystemReadingCriterion.Id)));
CreateMap<PreviousPDF, PreviousPDFAddOrEdit>().ReverseMap().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<PreviousPDF, PreviousPDFAddOrEdit>().ReverseMap().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<PreviousPDF, PreviousPDFView>(); CreateMap<PreviousPDF, PreviousPDFView>();
CreateMap<ReadModuleAddOrEdit, ReadModule>().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<ReadModuleAddOrEdit, ReadModule>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<TumorAssessment_RECIST1Point1, TumorAssessmentView>(); CreateMap<TumorAssessment_RECIST1Point1, TumorAssessmentView>();
CreateMap<CopyTableAnswerRowInfo, ReadingTableAnswerRowInfo>().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<CopyTableAnswerRowInfo, ReadingTableAnswerRowInfo>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingTableAnswerRowInfo, CopyTableAnswerRowInfo>() CreateMap<ReadingTableAnswerRowInfo, CopyTableAnswerRowInfo>()
.ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id)) .ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id));
.ForMember(d => d.LesionType, u => u.MapFrom(s => s.ReadingQuestionTrial.LesionType));
//.ForMember(dest => dest.Instance, opt => opt.Ignore()) //.ForMember(dest => dest.Instance, opt => opt.Ignore())
//.ForMember(dest => dest.ReadingQuestionTrial, opt => opt.Ignore()); //.ForMember(dest => dest.ReadingQuestionTrial, opt => opt.Ignore());
@ -175,7 +174,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName)) .ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName))
.ForMember(d => d.GroupName, u => u.MapFrom(s => isEn_Us ? s.GroupEnName : s.GroupName)) .ForMember(d => d.GroupName, u => u.MapFrom(s => isEn_Us ? s.GroupEnName : s.GroupName))
.ForMember(dest => dest.ReadingCriterionPage, opt => opt.Ignore()) .ForMember(dest => dest.ReadingCriterionPage, opt => opt.Ignore())
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(dest => dest.ParentReadingQuestionTrial, opt => opt.Ignore()) .ForMember(dest => dest.ParentReadingQuestionTrial, opt => opt.Ignore())
.ForMember(dest => dest.RelevanceReadingQuestionTrial, opt => opt.Ignore()) .ForMember(dest => dest.RelevanceReadingQuestionTrial, opt => opt.Ignore())
.ForMember(dest => dest.ReadingQuestionCriterionTrial, opt => opt.Ignore()); .ForMember(dest => dest.ReadingQuestionCriterionTrial, opt => opt.Ignore());
@ -193,20 +192,20 @@ namespace IRaCIS.Core.Application.Service
CreateMap<ReadingTableQuestionTrial, TableQuestionTrial>() CreateMap<ReadingTableQuestionTrial, TableQuestionTrial>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName)); .ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName));
CreateMap<ReadingTableQuestionAnswer, ReadingTableQuestionAnswerInfo>() CreateMap<ReadingTableQuestionAnswer, ReadingTableQuestionAnswerInfo>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.ReadingQuestionTrial.ShowOrder)) .ForMember(d => d.ShowOrder, u => u.MapFrom(s => s.ReadingQuestionTrial.ShowOrder))
.ForMember(d => d.QuestionMark, u => u.MapFrom(s => s.ReadingTableQuestionTrial.QuestionMark)); .ForMember(d => d.QuestionMark, u => u.MapFrom(s => s.ReadingTableQuestionTrial.QuestionMark));
CreateMap<ReadingQuestionTrial, TrialReadQuestionData>() CreateMap<ReadingQuestionTrial, TrialReadQuestionData>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName)) .ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName))
.ForMember(d => d.GroupName, u => u.MapFrom(s => isEn_Us ? s.GroupEnName : s.GroupName)) .ForMember(d => d.GroupName, u => u.MapFrom(s => isEn_Us ? s.GroupEnName : s.GroupName))
.ForMember(d => d.PageShowOrder, u => u.MapFrom(s => s.ReadingCriterionPage.ShowOrder)) .ForMember(d => d.PageShowOrder, u => u.MapFrom(s => s.ReadingCriterionPage.ShowOrder))
.ForMember(d => d.PageName, u => u.MapFrom(s => s.ReadingCriterionPage.PageName)) .ForMember(d => d.PageName, u => u.MapFrom(s => s.ReadingCriterionPage.PageName))
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.IsPublicPage, u => u.MapFrom(s => s.ReadingCriterionPage.IsPublicPage)); .ForMember(d => d.IsPublicPage, u => u.MapFrom(s => s.ReadingCriterionPage.IsPublicPage));
CreateMap<ReadingQuestionSystem, GetSystemReadingQuestionOutDto>() CreateMap<ReadingQuestionSystem, GetSystemReadingQuestionOutDto>()
@ -219,13 +218,13 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName)); .ForMember(d => d.QuestionName, u => u.MapFrom(s => isEn_Us ? s.QuestionEnName : s.QuestionName));
CreateMap<ReadingTableQuestionSystem, ReadingTableQuestionSystemView>() CreateMap<ReadingTableQuestionSystem, ReadingTableQuestionSystemView>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.DependShowOrder, u => u.MapFrom(s => s.DependParentQuestion.ShowOrder)); .ForMember(d => d.DependShowOrder, u => u.MapFrom(s => s.DependParentQuestion.ShowOrder));
CreateMap<ReadingTableQuestionTrial, ReadingTableQuestionSystemView>() CreateMap<ReadingTableQuestionTrial, ReadingTableQuestionSystemView>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.DependShowOrder, u => u.MapFrom(s => s.DependParentQuestion.ShowOrder)); .ForMember(d => d.DependShowOrder, u => u.MapFrom(s => s.DependParentQuestion.ShowOrder));
CreateMap<ReadingQuestionTrial, GetCalculateQuestionsOutDto>(); CreateMap<ReadingQuestionTrial, GetCalculateQuestionsOutDto>();
@ -244,66 +243,66 @@ namespace IRaCIS.Core.Application.Service
CreateMap<ReadingTableQuestionTrial, ReadingTableQuestionTrialView>() CreateMap<ReadingTableQuestionTrial, ReadingTableQuestionTrialView>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.DependShowOrder, u => u.MapFrom(s => s.DependParentQuestion.ShowOrder)) .ForMember(d => d.DependShowOrder, u => u.MapFrom(s => s.DependParentQuestion.ShowOrder))
.ForMember(d => d.CreateUser, u => u.Ignore()); .ForMember(d => d.CreateUserRole, u => u.Ignore());
CreateMap<ReadingTableQuestionSystemAddOrEdit, ReadingTableQuestionSystem>().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<ReadingTableQuestionSystemAddOrEdit, ReadingTableQuestionSystem>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingTableQuestionTrialAddOrEdit, ReadingTableQuestionTrial>().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<ReadingTableQuestionTrialAddOrEdit, ReadingTableQuestionTrial>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingCriterionPageAddOrEdit, ReadingCriterionPage>().ForMember(dest => dest.CreateUser, opt => opt.Ignore()); CreateMap<ReadingCriterionPageAddOrEdit, ReadingCriterionPage>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionTrial, ReadingQuestionSystem>() CreateMap<ReadingQuestionTrial, ReadingQuestionSystem>()
.ForMember(d => d.CreateUser, u => u.Ignore()); .ForMember(d => d.CreateUserRole, u => u.Ignore());
CreateMap<Dictionary, OrganDictionary>() CreateMap<Dictionary, OrganDictionary>()
; ;
CreateMap<ReadingQuestionSystem, ReadingQuestionSystemData>() CreateMap<ReadingQuestionSystem, ReadingQuestionSystemData>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id)); .ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id));
CreateMap<ReadingTableQuestionSystem, ReadingTableQuestionSystemData>() CreateMap<ReadingTableQuestionSystem, ReadingTableQuestionSystemData>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id)); .ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id));
CreateMap<ReadingQuestionSystem, ReadingQuestionTrial>() CreateMap<ReadingQuestionSystem, ReadingQuestionTrial>()
.ForMember(d => d.CreateUser, u => u.Ignore()) .ForMember(d => d.CreateUserRole, u => u.Ignore())
.ForMember(d => d.ReadingTableQuestionTrialList, u => u.Ignore()) .ForMember(d => d.ReadingTableQuestionTrialList, u => u.Ignore())
.ForMember(d => d.ReadingQuestionSystemId, u => u.MapFrom(s => s.Id)); .ForMember(d => d.ReadingQuestionSystemId, u => u.MapFrom(s => s.Id));
CreateMap<ReadingTableAnswerRowInfo, TableAnsweRowInfo>() CreateMap<ReadingTableAnswerRowInfo, TableAnsweRowInfo>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.MergeName, u => u.MapFrom(s => s.MergeRow == null ? string.Empty : s.MergeRow.ReadingQuestionTrial.OrderMark + s.MergeRow.RowIndex.GetLesionMark())) .ForMember(d => d.MergeName, u => u.MapFrom(s => s.MergeRow == null ? string.Empty : s.MergeRow.ReadingQuestionTrial.OrderMark + s.MergeRow.RowIndex.GetLesionMark()))
.ForMember(d => d.SplitName, u => u.MapFrom(s => s.SplitRow == null ? string.Empty : s.SplitRow.ReadingQuestionTrial.OrderMark + s.SplitRow.RowIndex.GetLesionMark())) .ForMember(d => d.SplitName, u => u.MapFrom(s => s.SplitRow == null ? string.Empty : s.SplitRow.ReadingQuestionTrial.OrderMark + s.SplitRow.RowIndex.GetLesionMark()))
.ForMember(d => d.LesionType, u => u.MapFrom(s => s.ReadingQuestionTrial == null ? null : s.ReadingQuestionTrial.LesionType)); .ForMember(d => d.LesionType, u => u.MapFrom(s => s.ReadingQuestionTrial == null ? null : s.ReadingQuestionTrial.LesionType));
CreateMap<ReadingTableQuestionSystem, ReadingTrialTableQuestionData>() CreateMap<ReadingTableQuestionSystem, ReadingTrialTableQuestionData>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(dest => dest.DependParentQuestion, opt => opt.Ignore()) .ForMember(dest => dest.DependParentQuestion, opt => opt.Ignore())
.ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id)) .ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id))
.ForMember(d => d.SystemTableQuestionId, u => u.MapFrom(s => s.Id)); .ForMember(d => d.SystemTableQuestionId, u => u.MapFrom(s => s.Id));
CreateMap<ReadingTableQuestionTrial, ReadingTrialTableQuestionData>() CreateMap<ReadingTableQuestionTrial, ReadingTrialTableQuestionData>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id)); .ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id));
CreateMap<ReadingTrialTableQuestionData, ReadingTableQuestionTrial>() CreateMap<ReadingTrialTableQuestionData, ReadingTableQuestionTrial>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
; ;
CreateMap<ReadingQuestionCriterionSystem, ReadingQuestionCriterionTrial>() CreateMap<ReadingQuestionCriterionSystem, ReadingQuestionCriterionTrial>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(dest => dest.ReadingQuestionTrialList, opt => opt.Ignore()) .ForMember(dest => dest.ReadingQuestionTrialList, opt => opt.Ignore())
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()) .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.ReadingQuestionCriterionSystemId, u => u.MapFrom(s => s.Id)); .ForMember(d => d.ReadingQuestionCriterionSystemId, u => u.MapFrom(s => s.Id));
CreateMap<AddOrUpdateReadingQuestionCriterionSystemInDto, ReadingQuestionCriterionSystem>() CreateMap<AddOrUpdateReadingQuestionCriterionSystemInDto, ReadingQuestionCriterionSystem>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionCriterionSystem, ReadingQuestionCriterionSystemView>() CreateMap<ReadingQuestionCriterionSystem, ReadingQuestionCriterionSystemView>()
.ForMember(d => d.QuestionCount, u => u.MapFrom(s => s.ReadingQuestionSystemList.Count())); .ForMember(d => d.QuestionCount, u => u.MapFrom(s => s.ReadingQuestionSystemList.Count()));
@ -313,7 +312,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<ReadingQuestionSystem, AddOrUpdateReadingQuestionSystemInDto>(); CreateMap<ReadingQuestionSystem, AddOrUpdateReadingQuestionSystemInDto>();
CreateMap<AddOrUpdateReadingQuestionSystemInDto, ReadingQuestionSystem>() CreateMap<AddOrUpdateReadingQuestionSystemInDto, ReadingQuestionSystem>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionSystem, ReadingQuestionSystemView>() CreateMap<ReadingQuestionSystem, ReadingQuestionSystemView>()
.ForMember(d => d.GroupName, u => u.MapFrom(s => s.GroupInfo == null ? s.GroupName : s.GroupInfo.GroupName)) .ForMember(d => d.GroupName, u => u.MapFrom(s => s.GroupInfo == null ? s.GroupName : s.GroupInfo.GroupName))
@ -327,14 +326,14 @@ namespace IRaCIS.Core.Application.Service
CreateMap<AddOrUpdateReadingQuestionCriterionTrialInDto, ReadingQuestionCriterionTrial>() CreateMap<AddOrUpdateReadingQuestionCriterionTrialInDto, ReadingQuestionCriterionTrial>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionCriterionTrial, ReadingQuestionCriterionTrialView>() CreateMap<ReadingQuestionCriterionTrial, ReadingQuestionCriterionTrialView>()
.ForMember(d => d.QuestionCount, u => u.MapFrom(s => s.ReadingQuestionTrialList.Count())); .ForMember(d => d.QuestionCount, u => u.MapFrom(s => s.ReadingQuestionTrialList.Count()));
CreateMap<AddOrUpdateReadingQuestionTrialInDto, ReadingQuestionTrial>() CreateMap<AddOrUpdateReadingQuestionTrialInDto, ReadingQuestionTrial>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionTrial, ReadingQuestionTrialView>() CreateMap<ReadingQuestionTrial, ReadingQuestionTrialView>()
.ForMember(d => d.GroupName, u => u.MapFrom(s => s.GroupInfo == null ? s.GroupName : s.GroupInfo.GroupName)) .ForMember(d => d.GroupName, u => u.MapFrom(s => s.GroupInfo == null ? s.GroupName : s.GroupInfo.GroupName))
@ -364,17 +363,17 @@ namespace IRaCIS.Core.Application.Service
#region 医学审核 #region 医学审核
CreateMap<ReadingMedicineSystemQuestionAddOrEdit, ReadingMedicineSystemQuestion>() CreateMap<ReadingMedicineSystemQuestionAddOrEdit, ReadingMedicineSystemQuestion>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingMedicineSystemQuestion, ReadingMedicineSystemQuestionView>() CreateMap<ReadingMedicineSystemQuestion, ReadingMedicineSystemQuestionView>()
.ForMember(x => x.ParentShowOrder, y => y.MapFrom(n => n.ParentQuestion.ShowOrder)); .ForMember(x => x.ParentShowOrder, y => y.MapFrom(n => n.ParentQuestion.ShowOrder));
CreateMap<TrialDataFromSystem, ReadingMedicineTrialQuestion>() CreateMap<TrialDataFromSystem, ReadingMedicineTrialQuestion>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingMedicineTrialQuestionAddOrEdit, ReadingMedicineTrialQuestion>() CreateMap<ReadingMedicineTrialQuestionAddOrEdit, ReadingMedicineTrialQuestion>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingMedicineTrialQuestion, ReadingMedicineTrialQuestionView>() CreateMap<ReadingMedicineTrialQuestion, ReadingMedicineTrialQuestionView>()
.ForMember(x => x.ParentShowOrder, y => y.MapFrom(n => n.ParentQuestion.ShowOrder)); .ForMember(x => x.ParentShowOrder, y => y.MapFrom(n => n.ParentQuestion.ShowOrder));
@ -387,7 +386,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<ReadingMedicalReviewDialog, GetMedicalReviewDialogOutDto>() CreateMap<ReadingMedicalReviewDialog, GetMedicalReviewDialogOutDto>()
//.ForMember(x => x.FileList, y => y.MapFrom(n => n.FileList)) //.ForMember(x => x.FileList, y => y.MapFrom(n => n.FileList))
.ForMember(x => x.CreateUserName, y => y.MapFrom(n => n.CreateUser.UserName)); .ForMember(x => x.CreateUserName, y => y.MapFrom(n => n.CreateUserRole.UserName));
#endregion #endregion
@ -396,10 +395,10 @@ namespace IRaCIS.Core.Application.Service
CreateMap<CriterionNidusTrial, CriterionNidusView>(); CreateMap<CriterionNidusTrial, CriterionNidusView>();
CreateMap<CriterionNidusSystem, CriterionNidusView>(); CreateMap<CriterionNidusSystem, CriterionNidusView>();
CreateMap<CriterionNidusSystem, CriterionNidusAddOrEdit>().ReverseMap() CreateMap<CriterionNidusSystem, CriterionNidusAddOrEdit>().ReverseMap()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<OrganInfoAddOrEdit, OrganInfo>() CreateMap<OrganInfoAddOrEdit, OrganInfo>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<OrganInfo, OrganInfoView>(); CreateMap<OrganInfo, OrganInfoView>();
#endregion #endregion
@ -412,15 +411,15 @@ namespace IRaCIS.Core.Application.Service
CreateMap<SubjectCriteriaEvaluationAddOrEdit, SubjectCriteriaEvaluation>().ReverseMap(); CreateMap<SubjectCriteriaEvaluationAddOrEdit, SubjectCriteriaEvaluation>().ReverseMap();
CreateMap<SubjectCriteriaEvaluation, SubjectCriteriaEvaluationView>().ReverseMap() CreateMap<SubjectCriteriaEvaluation, SubjectCriteriaEvaluationView>().ReverseMap()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<SubjectCriteriaEvaluationVisitFilter, SubjectCriteriaEvaluationVisitFilterAddOrEdit>().ReverseMap() CreateMap<SubjectCriteriaEvaluationVisitFilter, SubjectCriteriaEvaluationVisitFilterAddOrEdit>().ReverseMap()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore()); .ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<SubjectCriteriaEvaluationVisitStudyFilterAddOrEdit, SubjectCriteriaEvaluationVisitStudyFilter>().ReverseMap(); CreateMap<SubjectCriteriaEvaluationVisitStudyFilterAddOrEdit, SubjectCriteriaEvaluationVisitStudyFilter>().ReverseMap();
CreateMap<DicomStudy, SelectStudyView>() CreateMap<DicomStudy, SelectStudyView>()
.ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime)) .ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime))
.ForMember(o => o.Uploader, t => t.MapFrom(u => u.CreateUser.LastName + " / " + u.CreateUser.FirstName)) .ForMember(o => o.Uploader, t => t.MapFrom(u => u.CreateUserRole.LastName + " / " + u.CreateUserRole.FirstName))
.ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id)); .ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id));
CreateMap<VisitTask, HaveGeneratedTaskDto>() CreateMap<VisitTask, HaveGeneratedTaskDto>()

View File

@ -34,7 +34,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IGeneralCalculateService _generalCalculateService, IGeneralCalculateService _generalCalculateService,
IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository, IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository,
IRepository<Subject> _subjectRepository, IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IServiceProvider ServiceProvider, IServiceProvider ServiceProvider,
IOptionsMonitor<SystemHospitalOption> _hospital, IOptionsMonitor<SystemHospitalOption> _hospital,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
@ -81,7 +81,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
.Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); .Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync(); var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync();
var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.SubjectPatientList).FirstNotNullAsync(); var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.SubjectPatientList).FirstNotNullAsync();
var doctor = await _userRepository.Where(x => x.Id == taskinfo.DoctorUserId).FirstOrDefaultAsync(); var doctor = await _userRoleRepository.Where(x => x.Id == taskinfo.DoctorUserId).FirstOrDefaultAsync();
var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();
var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();

View File

@ -30,7 +30,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository<TumorAssessment_RECIST1Point1> _tumorAssessmentRepository, IRepository<TumorAssessment_RECIST1Point1> _tumorAssessmentRepository,
IGeneralCalculateService _generalCalculateService, IGeneralCalculateService _generalCalculateService,
IRepository<Subject> _subjectRepository, IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IServiceProvider ServiceProvider, IServiceProvider ServiceProvider,
IOptionsMonitor<SystemHospitalOption> _hospital, IOptionsMonitor<SystemHospitalOption> _hospital,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
@ -75,7 +75,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId && x.ReadingCategory == ReadingCategory.Visit).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId && x.ReadingCategory == ReadingCategory.Visit).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync(); var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync();
var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.SubjectPatientList).FirstNotNullAsync(); var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.SubjectPatientList).FirstNotNullAsync();
var doctor = await _userRepository.Where(x => x.Id == taskinfo.DoctorUserId).FirstOrDefaultAsync(); var doctor = await _userRoleRepository.Where(x => x.Id == taskinfo.DoctorUserId).FirstOrDefaultAsync();
var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();
var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();

View File

@ -36,7 +36,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository<TumorAssessment_RECIST1Point1> _tumorAssessmentRepository, IRepository<TumorAssessment_RECIST1Point1> _tumorAssessmentRepository,
IGeneralCalculateService _generalCalculateService, IGeneralCalculateService _generalCalculateService,
IRepository<Subject> _subjectRepository, IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IServiceProvider ServiceProvider, IServiceProvider ServiceProvider,
IOptionsMonitor<SystemHospitalOption> _hospital, IOptionsMonitor<SystemHospitalOption> _hospital,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
@ -285,7 +285,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
.Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); .Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync(); var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync();
var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.SubjectPatientList).FirstNotNullAsync(); var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.SubjectPatientList).FirstNotNullAsync();
var doctor = await _userRepository.Where(x => x.Id == taskinfo.DoctorUserId).FirstOrDefaultAsync(); var doctor = await _userRoleRepository.Where(x => x.Id == taskinfo.DoctorUserId).FirstOrDefaultAsync();
var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();
var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();

View File

@ -31,7 +31,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IRepository<TumorAssessment_RECIST1Point1BM> _tumorAssessment_RECIST1Point1BM, IRepository<TumorAssessment_RECIST1Point1BM> _tumorAssessment_RECIST1Point1BM,
IGeneralCalculateService _generalCalculateService, IGeneralCalculateService _generalCalculateService,
IRepository<Subject> _subjectRepository, IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IServiceProvider ServiceProvider, IServiceProvider ServiceProvider,
IOptionsMonitor<SystemHospitalOption> _hospital, IOptionsMonitor<SystemHospitalOption> _hospital,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
@ -74,7 +74,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId && x.ReadingCategory == ReadingCategory.Visit).Include(x => x.TrialReadingCriterion).FirstNotNullAsync(); var taskinfo = await _visitTaskRepository.Where(x => x.Id == inDto.VisitTaskId && x.ReadingCategory == ReadingCategory.Visit).Include(x => x.TrialReadingCriterion).FirstNotNullAsync();
var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync(); var visitInfo = await _subjectVisitRepository.Where(x => x.Id == taskinfo.SourceSubjectVisitId).Include(x => x.StudyList).FirstNotNullAsync();
var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.SubjectPatientList).FirstNotNullAsync(); var subjectInfo = await _subjectRepository.Where(x => x.Id == taskinfo.SubjectId).Include(x => x.SubjectPatientList).FirstNotNullAsync();
var doctor = await _userRepository.Where(x => x.Id == taskinfo.DoctorUserId).FirstOrDefaultAsync(); var doctor = await _userRoleRepository.Where(x => x.Id == taskinfo.DoctorUserId).FirstOrDefaultAsync();
var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); var trialQuestion = await _readingQuestionTrialRepository.Where(x => x.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();
var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync(); var tableQuestion = await _readingTableQuestionTrialRepository.Where(x => x.ReadingQuestionTrial.ReadingQuestionCriterionTrialId == taskinfo.TrialReadingCriterionId).ToListAsync();

View File

@ -29,12 +29,12 @@ namespace IRaCIS.Core.Application.Contracts
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class TrialSiteSurveyService(IRepository<TrialSiteSurvey> _trialSiteSurveyRepository, public class TrialSiteSurveyService(IRepository<TrialSiteSurvey> _trialSiteSurveyRepository,
IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository, IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<TrialSite> _trialSiteRepository, IRepository<TrialSite> _trialSiteRepository,
IRepository<Doctor> _doctorRepository, IRepository<Doctor> _doctorRepository,
IRepository<VerificationCode> _verificationCodeRepository, IRepository<VerificationCode> _verificationCodeRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository, IRepository<TrialSiteUser> _trialSiteUserRepository,
IDistributedLockProvider _distributedLockProvider, IDistributedLockProvider _distributedLockProvider,
ITokenService _tokenService, ITokenService _tokenService,
@ -79,7 +79,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task<UseUserIDGetDoctorIDOutDto> UseUserIDGetDoctorID(UseUserIDGetDoctorIDInDto inDto) public async Task<UseUserIDGetDoctorIDOutDto> UseUserIDGetDoctorID(UseUserIDGetDoctorIDInDto inDto)
{ {
var userinfo = await _userRepository.Where(x => x.Id == inDto.UserID).FirstOrDefaultAsync(); var userinfo = await _userRoleRepository.Where(x => x.Id == inDto.UserID).FirstOrDefaultAsync();
if (userinfo != null && userinfo.DoctorId != null) if (userinfo != null && userinfo.DoctorId != null)
{ {
@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.Contracts
var info = await _doctorRepository.AddAsync(doctor, true); var info = await _doctorRepository.AddAsync(doctor, true);
await _userRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.UserID, x => new User() await _userRoleRepository.BatchUpdateNoTrackingAsync(x => x.Id == inDto.UserID, x => new UserRole()
{ {
DoctorId = info.Id DoctorId = info.Id
@ -162,7 +162,7 @@ namespace IRaCIS.Core.Application.Contracts
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() //await _userRoleRepository.BatchUpdateNoTrackingAsync(x => x.EMail == inDto.EmailOrPhone, x => new User()
//{ //{
// DoctorId = info.DoctorId, // DoctorId = info.DoctorId,
@ -628,13 +628,13 @@ namespace IRaCIS.Core.Application.Contracts
} }
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM) else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)
{ {
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)); var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Trial.TrialUserList.Any(u => u.UserRole.UserTypeEnum == UserTypeEnum.SPM || u.UserRole.UserTypeEnum == UserTypeEnum.CPM));
if (hasSPMOrCPM) if (hasSPMOrCPM)
{ {
////PM 给SPM发 (初审人) ////PM 给SPM发 (初审人)
//user = await _userRepository.FirstOrDefaultAsync(t => t.Id == survey.PreliminaryUserId); //user = await _userRoleRepository.FirstOrDefaultAsync(t => t.Id == survey.PreliminaryUserId);
//messageToSend.To.Add(new MailboxAddress(String.Empty, survey.PreliminaryUserId == null ? survey.Email : user.EMail)); //messageToSend.To.Add(new MailboxAddress(String.Empty, survey.PreliminaryUserId == null ? survey.Email : user.EMail));
@ -751,7 +751,7 @@ namespace IRaCIS.Core.Application.Contracts
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.Undefined || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator) 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)); var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialId && t.Trial.TrialUserList.Any(u => u.UserRole.UserTypeEnum == UserTypeEnum.SPM || u.UserRole.UserTypeEnum == UserTypeEnum.CPM));
if (hasSPMOrCPM) if (hasSPMOrCPM)
{ {
@ -809,7 +809,7 @@ namespace IRaCIS.Core.Application.Contracts
{ {
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户 //找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync(); var sysUserInfo = await _userRoleRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
if (sysUserInfo == null) if (sysUserInfo == null)
@ -819,7 +819,7 @@ namespace IRaCIS.Core.Application.Contracts
using (await @lock.AcquireAsync()) using (await @lock.AcquireAsync())
{ {
var saveItem = _mapper.Map<User>(item); var saveItem = _mapper.Map<UserRole>(item);
if (trialType == TrialType.NoneOfficial) if (trialType == TrialType.NoneOfficial)
@ -829,9 +829,9 @@ namespace IRaCIS.Core.Application.Contracts
// 中心调研生成账号 都是外部的 // 中心调研生成账号 都是外部的
saveItem.IsZhiZhun = false; saveItem.IsZhiZhun = false;
saveItem.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1; saveItem.Code = _userRoleRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User)); saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(UserRole));
saveItem.UserName = saveItem.UserCode; saveItem.UserName = saveItem.UserCode;
@ -840,10 +840,10 @@ namespace IRaCIS.Core.Application.Contracts
saveItem.UserTypeEnum = _userTypeRepository.Where(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First(); saveItem.UserTypeEnum = _userTypeRepository.Where(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First();
var newUser = _userRepository.AddAsync(saveItem).Result; var newUser = _userRoleRepository.AddAsync(saveItem).Result;
_ = _userRepository.SaveChangesAsync().Result; _ = _userRoleRepository.SaveChangesAsync().Result;
sysUserInfo = newUser; sysUserInfo = newUser;
@ -889,14 +889,14 @@ namespace IRaCIS.Core.Application.Contracts
var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true); var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true);
if (findTrialUser == null) if (findTrialUser == null)
{ {
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now }); await _trialUserRepository.AddAsync(new TrialUserRole() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl); await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl);
} }
else if (findTrialUser.IsDeleted == true) else if (findTrialUser.IsDeleted == true)
{ {
await _trialUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId, c => new TrialUser() await _trialUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId, c => new TrialUserRole()
{ {
IsDeleted = false, IsDeleted = false,
DeletedTime = null, DeletedTime = null,
@ -919,7 +919,7 @@ namespace IRaCIS.Core.Application.Contracts
findTrialSiteUser.DeletedTime = null; findTrialSiteUser.DeletedTime = null;
} }
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable }); await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new UserRole() { Status = UserStateEnum.Enable });
await _trialSiteUserSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == userInfo.Id, u => new TrialSiteUserSurvey() { IsJoin = true }); await _trialSiteUserSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == userInfo.Id, u => new TrialSiteUserSurvey() { IsJoin = true });
@ -927,7 +927,7 @@ namespace IRaCIS.Core.Application.Contracts
await _trialSiteSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == trialSiteSurvey.Id && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now }); await _trialSiteSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == trialSiteSurvey.Id && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now });
await _userRepository.SaveChangesAsync(); await _userRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok(); return ResponseOutput.Ok();
@ -963,7 +963,7 @@ namespace IRaCIS.Core.Application.Contracts
foreach (var item in list) foreach (var item in list)
{ {
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户 //找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync(); var sysUserInfo = await _userRoleRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
if (sysUserInfo == null) if (sysUserInfo == null)
{ {
@ -972,7 +972,7 @@ namespace IRaCIS.Core.Application.Contracts
using (await @lock.AcquireAsync()) using (await @lock.AcquireAsync())
{ {
var saveItem = _mapper.Map<User>(item); var saveItem = _mapper.Map<UserRole>(item);
if (trialType == TrialType.NoneOfficial) if (trialType == TrialType.NoneOfficial)
@ -982,17 +982,17 @@ namespace IRaCIS.Core.Application.Contracts
// 中心调研生成账号 都是外部的 // 中心调研生成账号 都是外部的
saveItem.IsZhiZhun = false; saveItem.IsZhiZhun = false;
saveItem.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1; saveItem.Code = _userRoleRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User)); saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(UserRole));
saveItem.UserName = saveItem.UserCode; saveItem.UserName = saveItem.UserCode;
//saveItem.UserTypeEnum = _userTypeRepository.Where(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First(); //saveItem.UserTypeEnum = _userTypeRepository.Where(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First();
var newUser = _userRepository.AddAsync(saveItem).Result; var newUser = _userRoleRepository.AddAsync(saveItem).Result;
_ = _userRepository.SaveChangesAsync().Result; _ = _userRoleRepository.SaveChangesAsync().Result;
sysUserInfo = newUser; sysUserInfo = newUser;
@ -1009,14 +1009,14 @@ namespace IRaCIS.Core.Application.Contracts
var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true); var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true);
if (findTrialUser == null) if (findTrialUser == null)
{ {
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now }); await _trialUserRepository.AddAsync(new TrialUserRole() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, baseUrl, routeUrl); await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, baseUrl, routeUrl);
} }
else if (findTrialUser.IsDeleted == true) else if (findTrialUser.IsDeleted == true)
{ {
await _trialUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId, c => new TrialUser() await _trialUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId, c => new TrialUserRole()
{ {
IsDeleted = false, IsDeleted = false,
DeletedTime = null, DeletedTime = null,
@ -1040,7 +1040,7 @@ namespace IRaCIS.Core.Application.Contracts
findTrialSiteUser.DeletedTime = null; findTrialSiteUser.DeletedTime = null;
} }
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable }); await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new UserRole() { Status = UserStateEnum.Enable });
await _trialSiteUserRepository.SaveChangesAsync(); await _trialSiteUserRepository.SaveChangesAsync();

View File

@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Contracts
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class TrialSiteUserSurveyService(IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository, public class TrialSiteUserSurveyService(IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialSiteSurvey> _trialSiteSurveyRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialSiteUserSurveyService IRepository<TrialSiteSurvey> _trialSiteSurveyRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialSiteUserSurveyService
{ {
@ -56,7 +56,7 @@ namespace IRaCIS.Core.Application.Contracts
var item = addOrEditTrialSiteUserSurvey; var item = addOrEditTrialSiteUserSurvey;
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户 //找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync(); var sysUserInfo = await _userRoleRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
if (sysUserInfo != null) if (sysUserInfo != null)
{ {
@ -97,7 +97,7 @@ namespace IRaCIS.Core.Application.Contracts
if (addOrEditTrialSiteUserSurvey.UserTypeId != null) if (addOrEditTrialSiteUserSurvey.UserTypeId != null)
{ {
var existSysUser = await _userRepository.Where(t => t.EMail == addOrEditTrialSiteUserSurvey.Email && t.UserTypeId == addOrEditTrialSiteUserSurvey.UserTypeId).Include(d => d.UserTypeRole).FirstOrDefaultAsync(); var existSysUser = await _userRoleRepository.Where(t => t.EMail == addOrEditTrialSiteUserSurvey.Email && t.UserTypeId == addOrEditTrialSiteUserSurvey.UserTypeId).Include(d => d.UserTypeRole).FirstOrDefaultAsync();
if (existSysUser != null) if (existSysUser != null)

View File

@ -35,7 +35,7 @@ namespace IRaCIS.Core.Application.AutoMapper
.ForMember(d => d.IsGenerateSuccess, u => u.MapFrom(c => true)) .ForMember(d => d.IsGenerateSuccess, u => u.MapFrom(c => true))
.ForMember(d => d.SystemUserId, u => u.MapFrom(c => c.UserId)) .ForMember(d => d.SystemUserId, u => u.MapFrom(c => c.UserId))
.ForMember(d => d.IsJoin, u => u.MapFrom(c => !c.IsDeleted)) .ForMember(d => d.IsJoin, u => u.MapFrom(c => !c.IsDeleted))
.ForMember(d => d.CreateUser, u => u.Ignore()); .ForMember(d => d.CreateUserRole, u => u.Ignore());
//列表 //列表
@ -74,16 +74,16 @@ namespace IRaCIS.Core.Application.AutoMapper
CreateMap<TrialSiteUserSurvey, User>(); CreateMap<TrialSiteUserSurvey, UserRole>();
CreateMap<SiteSurveyUserImportDto, User>() CreateMap<SiteSurveyUserImportDto, UserRole>()
.ForMember(d => d.EMail, u => u.MapFrom(s => s.Email)); .ForMember(d => d.EMail, u => u.MapFrom(s => s.Email));
CreateMap<TrialSiteUserSurveyView, User>(); CreateMap<TrialSiteUserSurveyView, UserRole>();
CreateMap<User, UserInfoBasic>().ForMember(d => d.RealName, u => u.MapFrom(s => s.LastName + " / " + s.FirstName)); CreateMap<UserRole, UserInfoBasic>().ForMember(d => d.RealName, u => u.MapFrom(s => s.LastName + " / " + s.FirstName));

View File

@ -18,8 +18,8 @@ namespace IRaCIS.Core.Application.Service
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
IRepository<Hospital> _hospitalRepository, IRepository<Hospital> _hospitalRepository,
IRepository<EnrollDetail> _enrollDetailRepository, IRepository<EnrollDetail> _enrollDetailRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _userTrialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IStatisticsService IRepository<TrialUserRole> _userTrialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IStatisticsService
{ {
@ -370,8 +370,8 @@ namespace IRaCIS.Core.Application.Service
public PageOutput<UserParticipateTrialStat> GetParticipateTrialStat(ParticipateQueryDto param) public PageOutput<UserParticipateTrialStat> GetParticipateTrialStat(ParticipateQueryDto param)
{ {
Expression<Func<User, bool>> userLambda = x => true; Expression<Func<UserRole, bool>> userLambda = x => true;
Expression<Func<TrialUser, bool>> userTrialLambda = x => true; Expression<Func<TrialUserRole, bool>> userTrialLambda = x => true;
if (!string.IsNullOrEmpty(param.UserInfo)) if (!string.IsNullOrEmpty(param.UserInfo))
{ {
var userInfo = param.UserInfo.Trim(); var userInfo = param.UserInfo.Trim();
@ -406,7 +406,7 @@ namespace IRaCIS.Core.Application.Service
}); });
var userQuery = from trialStat in trialStatQuery var userQuery = from trialStat in trialStatQuery
join user in _userRepository.Where(userLambda) on trialStat.UserId equals user.Id join user in _userRoleRepository.Where(userLambda) on trialStat.UserId equals user.Id
select new UserParticipateTrialStat select new UserParticipateTrialStat
{ {
Email = user.EMail, Email = user.EMail,
@ -438,7 +438,7 @@ namespace IRaCIS.Core.Application.Service
public List<UserParticipateTrialDetail> GetParticipateTrialList(Guid userId) public List<UserParticipateTrialDetail> GetParticipateTrialList(Guid userId)
{ {
Expression<Func<TrialUser, bool>> userTrialLambda = x => x.UserId == userId; Expression<Func<TrialUserRole, bool>> userTrialLambda = x => x.UserId == userId;
var userTypeEnum = _userInfo.UserTypeEnumStr; var userTypeEnum = _userInfo.UserTypeEnumStr;
var loginUserId = _userInfo.Id; var loginUserId = _userInfo.Id;
@ -463,7 +463,7 @@ namespace IRaCIS.Core.Application.Service
CROName = cro.CROName, CROName = cro.CROName,
Expedited = trial.Expedited, Expedited = trial.Expedited,
Indication = trial.Indication, Indication = trial.Indication,
UserType = userTrial.User.UserTypeRole.UserTypeShortName, UserType = userTrial.UserRole.UserTypeRole.UserTypeShortName,
TrialId = trial.Id TrialId = trial.Id
}; };

View File

@ -123,7 +123,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
TrialSiteCode = dicomStudy.Subject.TrialSite.TrialSiteCode, TrialSiteCode = dicomStudy.Subject.TrialSite.TrialSiteCode,
Uploader = dicomStudy.CreateUser.UserName, Uploader = dicomStudy.CreateUserRole.UserName,
UploadTime = dicomStudy.CreateTime UploadTime = dicomStudy.CreateTime
}; };

View File

@ -1381,7 +1381,7 @@ namespace IRaCIS.Core.Application
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName))
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OP, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false) .WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OP, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false)
.WhereIf(inQuery.CriterionType != null, o => o.TrialReadingCriterionList.Any(t => t.CriterionType == inQuery.CriterionType && t.IsSigned && t.IsConfirm)) .WhereIf(inQuery.CriterionType != null, o => o.TrialReadingCriterionList.Any(t => t.CriterionType == inQuery.CriterionType && t.IsSigned && t.IsConfirm))
.WhereIf(!string.IsNullOrEmpty(inQuery.PM_EMail), o => o.TrialUserList.Any(t => t.User.EMail.Contains(inQuery.PM_EMail) && (t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM))) .WhereIf(!string.IsNullOrEmpty(inQuery.PM_EMail), o => o.TrialUserList.Any(t => t.UserRole.EMail.Contains(inQuery.PM_EMail) && (t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserRole.UserTypeEnum == UserTypeEnum.APM)))
.Select(t => new TrialToBeDoneDto() .Select(t => new TrialToBeDoneDto()
{ {
TrialId = t.Id, TrialId = t.Id,
@ -1442,7 +1442,7 @@ namespace IRaCIS.Core.Application
IR_ReadingCriterionList = isIR ? t.TrialReadingCriterionList.Where(t => t.IsConfirm && t.IsSigned).OrderBy(t => t.CriterionName).Select(t => t.CriterionName).ToList() : null, IR_ReadingCriterionList = isIR ? t.TrialReadingCriterionList.Where(t => t.IsConfirm && t.IsSigned).OrderBy(t => t.CriterionName).Select(t => t.CriterionName).ToList() : null,
IR_PMEmailList = isIR ? t.TrialUserList.Where(t => t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM).OrderBy(t => t.User.EMail).Select(t => t.User.EMail).ToList() : null, IR_PMEmailList = isIR ? t.TrialUserList.Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserRole.UserTypeEnum == UserTypeEnum.APM).OrderBy(t => t.UserRole.EMail).Select(t => t.UserRole.EMail).ToList() : null,
IR_TotalReadCount = isIR ? t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() : 0, IR_TotalReadCount = isIR ? t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() : 0,
@ -1476,54 +1476,54 @@ namespace IRaCIS.Core.Application
[HttpPost] [HttpPost]
public async Task<IResponseOutput<List<TrialUserToBeDoneDto>>> GetTrialUserToBeDoneList(TrialUserToBeDoneQuery inQuery, public async Task<IResponseOutput<List<TrialUserToBeDoneDto>>> GetTrialUserToBeDoneList(TrialUserToBeDoneQuery inQuery,
[FromServices] IRepository<TrialUser> _trialUserRepository) [FromServices] IRepository<TrialUserRole> _trialUserRepository)
{ {
var query = _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId) var query = _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.Select(t => new TrialUserToBeDoneDto() .Select(t => new TrialUserToBeDoneDto()
{ {
UserName = t.User.UserName, UserName = t.UserRole.UserName,
FullName = t.User.FullName, FullName = t.UserRole.FullName,
UserType = t.User.UserTypeEnum, UserType = t.UserRole.UserTypeEnum,
//SPM 阅片人筛选 //SPM 阅片人筛选
ReviewerSelect_SPM_ToBeApprovalCount = ReviewerSelect_SPM_ToBeApprovalCount =
(t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM) ? (t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM) ?
t.Trial.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO).Count() : 0, t.Trial.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO).Count() : 0,
//PM 阅片人确认 //PM 阅片人确认
ReviewerSelect_PM_ToBeConfirmCount = ReviewerSelect_PM_ToBeConfirmCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ? (t.UserRole.UserTypeEnum == UserTypeEnum.APM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup).Count() : 0, t.Trial.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup).Count() : 0,
//CRC 重传 --区分人 //CRC 重传 --区分人
ImageUpload_CRC_ToBeReUploadCount = ImageUpload_CRC_ToBeReUploadCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ? (t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId)) t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count() : 0, .Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count() : 0,
//CRC加急待提交 需确认?--区分人 //CRC加急待提交 需确认?--区分人
ImageUpload_CRC_ToBeSubmitCount = ImageUpload_CRC_ToBeSubmitCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ? (t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId)) t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count() : 0, .Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count() : 0,
// QC IQC 待领取 // QC IQC 待领取
QC_IQC_ToBeClaimedCount = QC_IQC_ToBeClaimedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ? (t.UserRole.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != _userInfo.Id && u.ReviewAuditUserId == null))).Count() : 0, t.Trial.SubjectVisitList.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != _userInfo.Id && u.ReviewAuditUserId == null))).Count() : 0,
// CRC 质疑待回复 --区分人 // CRC 质疑待回复 --区分人
QC_CRC_ToBeDealedCount = QC_CRC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ? (t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId)) t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.SelectMany(c => c.QCChallengeList).Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count() : 0, .SelectMany(c => c.QCChallengeList).Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count() : 0,
//IQC 质疑待处理 --区分人 //IQC 质疑待处理 --区分人
QC_IQC_ToBeDealedCount = QC_IQC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ? (t.UserRole.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.SelectMany(c => c.QCChallengeList) t.Trial.SubjectVisitList.SelectMany(c => c.QCChallengeList)
.Where(u => u.CreateUserId == t.UserId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0, .Where(u => u.CreateUserId == t.UserId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0,
@ -1531,33 +1531,33 @@ namespace IRaCIS.Core.Application
// IQC 待审核 // IQC 待审核
QC_IQC_ToBeReviewedCount = QC_IQC_ToBeReviewedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ? (t.UserRole.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.Where(u => u.CurrentActionUserId == t.UserId).Count() : 0, t.Trial.SubjectVisitList.Where(u => u.CurrentActionUserId == t.UserId).Count() : 0,
//PM 核查待处理 //PM 核查待处理
Check_PM_ToBeDealedCount = Check_PM_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ? (t.UserRole.UserTypeEnum == UserTypeEnum.APM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.ToCheck).Count() : 0, t.Trial.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.ToCheck).Count() : 0,
//PM 质疑待处理 //PM 质疑待处理
Check_PM_ToBeReplyedCount = Check_PM_ToBeReplyedCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ? (t.UserRole.UserTypeEnum == UserTypeEnum.APM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng && t.Trial.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng &&
u.CheckChallengeDialogList.OrderByDescending(t => t.CreateTime).First().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0, u.CheckChallengeDialogList.OrderByDescending(t => t.CreateTime).First().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0,
// CRC 核查 质疑待处理 --区分人 // CRC 核查 质疑待处理 --区分人
Check_CRC_ToBeDealedCount = Check_CRC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ? (t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId)) t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count() : 0, .Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count() : 0,
//IR 未读 --区分人 //IR 未读 --区分人
Reading_IR_UnReadCount = Reading_IR_UnReadCount =
(t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ? (t.UserRole.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
t.Trial.VisitTaskList t.Trial.VisitTaskList
.Where(c => c.DoctorUserId == t.UserId && c.ReadingTaskState != ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect) .Where(c => c.DoctorUserId == t.UserId && c.ReadingTaskState != ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect)
// 前序 不存在 未一致性核查未通过的 // 前序 不存在 未一致性核查未通过的
@ -1570,30 +1570,30 @@ namespace IRaCIS.Core.Application
//SPM PM重阅审批 //SPM PM重阅审批
Reading_SPM_ToBeApprovalCount = Reading_SPM_ToBeApprovalCount =
(t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM) ? (t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM) ?
t.Trial.VisitTaskReReadingList.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed).Count() : 0, t.Trial.VisitTaskReReadingList.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed).Count() : 0,
//PM IR重阅审批 //PM IR重阅审批
Reading_PM_ToBeApprovalCount = Reading_PM_ToBeApprovalCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ? (t.UserRole.UserTypeEnum == UserTypeEnum.APM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.VisitTaskReReadingList.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed).Count() : 0, t.Trial.VisitTaskReReadingList.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed).Count() : 0,
//IR 医学审核 --区分人 //IR 医学审核 --区分人
Medical_IR_ToBeDealedCount = Medical_IR_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ? (t.UserRole.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
t.Trial.TaskMedicalReviewList t.Trial.TaskMedicalReviewList
.Where(c => c.IsClosedDialog == false && c.VisitTask.DoctorUserId == t.UserId && c.IsInvalid == false) .Where(c => c.IsClosedDialog == false && c.VisitTask.DoctorUserId == t.UserId && c.IsInvalid == false)
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count() : 0, .Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count() : 0,
Medical_MIM_ToBeDealedCount = Medical_MIM_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.MIM) ? (t.UserRole.UserTypeEnum == UserTypeEnum.MIM) ?
t.Trial.TaskMedicalReviewList t.Trial.TaskMedicalReviewList
.Where(t => t.IsClosedDialog == false) .Where(t => t.IsClosedDialog == false)
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count() : 0, .Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count() : 0,
Medical_MIM_ToBeReviewedCount = Medical_MIM_ToBeReviewedCount =
(t.User.UserTypeEnum == UserTypeEnum.MIM) ? (t.UserRole.UserTypeEnum == UserTypeEnum.MIM) ?
t.Trial.TaskMedicalReviewList t.Trial.TaskMedicalReviewList
.Where(t => t.IsClosedDialog == false && t.IsInvalid == false) .Where(t => t.IsClosedDialog == false && t.IsInvalid == false)
.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count() : 0 .Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count() : 0

View File

@ -21,8 +21,8 @@ namespace IRaCIS.Core.Application.Service
/// </summary> /// </summary>
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class TrialExternalUserService(IRepository<TrialExternalUser> _trialExternalUseRepository, public class TrialExternalUserService(IRepository<TrialExternalUser> _trialExternalUseRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<UserType> _userTypeRepository, IRepository<UserType> _userTypeRepository,
IMailVerificationService _mailVerificationService, IMailVerificationService _mailVerificationService,
@ -64,7 +64,7 @@ namespace IRaCIS.Core.Application.Service
using (await @lock.AcquireAsync()) using (await @lock.AcquireAsync())
{ {
var existSysUser = await _userRepository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialExternalUser.Email && t.UserTypeId == addOrEditTrialExternalUser.UserTypeId); var existSysUser = await _userRoleRepository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialExternalUser.Email && t.UserTypeId == addOrEditTrialExternalUser.UserTypeId);
if (existSysUser != null) if (existSysUser != null)
{ {
@ -93,7 +93,7 @@ namespace IRaCIS.Core.Application.Service
await _trialExternalUseRepository.AddAsync(addEntity); await _trialExternalUseRepository.AddAsync(addEntity);
var existUser = await _userRepository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialExternalUser.Email && t.UserTypeId == addOrEditTrialExternalUser.UserTypeId); var existUser = await _userRoleRepository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialExternalUser.Email && t.UserTypeId == addOrEditTrialExternalUser.UserTypeId);
var trialType = await _trialRepository.Where(t => t.Id == addOrEditTrialExternalUser.TrialId).Select(t => t.TrialType).FirstOrDefaultAsync(); var trialType = await _trialRepository.Where(t => t.Id == addOrEditTrialExternalUser.TrialId).Select(t => t.TrialType).FirstOrDefaultAsync();
if (existUser != null) if (existUser != null)
@ -107,7 +107,7 @@ namespace IRaCIS.Core.Application.Service
//生成账户 并插入 //生成账户 并插入
var generateUser = _mapper.Map<User>(addOrEditTrialExternalUser); var generateUser = _mapper.Map<UserRole>(addOrEditTrialExternalUser);
if (trialType == TrialType.NoneOfficial) if (trialType == TrialType.NoneOfficial)
{ {
@ -117,10 +117,10 @@ namespace IRaCIS.Core.Application.Service
// 外部人员生成账号 都是外部的 // 外部人员生成账号 都是外部的
generateUser.IsZhiZhun = false; generateUser.IsZhiZhun = false;
generateUser.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1; generateUser.Code = _userRoleRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
generateUser.UserCode = AppSettings.GetCodeStr(generateUser.Code, nameof(User)); generateUser.UserCode = AppSettings.GetCodeStr(generateUser.Code, nameof(UserRole));
generateUser.UserName = generateUser.UserCode; generateUser.UserName = generateUser.UserCode;
@ -130,7 +130,7 @@ namespace IRaCIS.Core.Application.Service
generateUser.Status = UserStateEnum.Disable; generateUser.Status = UserStateEnum.Disable;
var newAddUser = await _userRepository.AddAsync(generateUser); var newAddUser = await _userRoleRepository.AddAsync(generateUser);
addEntity.IsSystemUser = false; addEntity.IsSystemUser = false;
@ -224,7 +224,7 @@ namespace IRaCIS.Core.Application.Service
if (isSystemUser == false) if (isSystemUser == false)
{ {
await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemUserId); await _userRoleRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemUserId);
} }
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
@ -251,14 +251,14 @@ namespace IRaCIS.Core.Application.Service
if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId, true)) if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId, true))
{ {
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now }); await _trialUserRepository.AddAsync(new TrialUserRole() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable }); await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new UserRole() { Status = UserStateEnum.Enable });
await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == userInfo.Id, u => new TrialExternalUser() { IsJoin = true }); await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == userInfo.Id, u => new TrialExternalUser() { IsJoin = true });
await _userRepository.SaveChangesAsync(); await _userRoleRepository.SaveChangesAsync();
} }
await _mailVerificationService.ExternalUserJoinEmail(trialId, userId, sendEmail.BaseUrl, sendEmail.RouteUrl); await _mailVerificationService.ExternalUserJoinEmail(trialId, userId, sendEmail.BaseUrl, sendEmail.RouteUrl);

View File

@ -8,8 +8,8 @@ using Microsoft.AspNetCore.Mvc;
namespace IRaCIS.Core.Application.Service namespace IRaCIS.Core.Application.Service
{ {
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class TrialMaintenanceService(IRepository<TrialUser> _trialUseRepository, public class TrialMaintenanceService(IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository, IRepository<TrialSiteUser> _trialSiteUserRepository,
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialMaintenanceService IRepository<Trial> _trialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialMaintenanceService
@ -18,8 +18,8 @@ namespace IRaCIS.Core.Application.Service
[HttpGet] [HttpGet]
public async Task<List<TrialUserBasicInfo>> GetTrialUserList(Guid trialId) public async Task<List<TrialUserBasicInfo>> GetTrialUserList(Guid trialId)
{ {
return await _trialUseRepository.Where(t => t.TrialId == trialId, ignoreQueryFilters: true) return await _trialUseRoleRepository.Where(t => t.TrialId == trialId, ignoreQueryFilters: true)
.Select(t => new TrialUserBasicInfo() { FullName = t.User.FullName, UserId = t.UserId, UserTypeId = t.User.UserTypeId, UserName = t.User.UserName }) .Select(t => new TrialUserBasicInfo() { FullName = t.UserRole.FullName, UserId = t.UserId, UserTypeId = t.UserRole.UserTypeId, UserName = t.UserRole.UserName })
.ToListAsync(); .ToListAsync();
} }
@ -32,14 +32,14 @@ namespace IRaCIS.Core.Application.Service
public async Task<PageOutput<TrialMaintenanceDTO>> GetMaintenanceUserList(TrialMaintenanceQuery inQuery) public async Task<PageOutput<TrialMaintenanceDTO>> GetMaintenanceUserList(TrialMaintenanceQuery inQuery)
{ {
var query = _trialUseRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters() var query = _trialUseRoleRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId) .WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.User.UserName.Contains(inQuery.UserName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserRole.UserName.Contains(inQuery.UserName))
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted) .WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.User.OrganizationName.Contains(inQuery.OrganizationName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.UserRole.OrganizationName.Contains(inQuery.OrganizationName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.User.FullName).Contains(inQuery.UserRealName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.UserRole.FullName).Contains(inQuery.UserRealName))
.ProjectTo<TrialMaintenanceDTO>(_mapper.ConfigurationProvider); .ProjectTo<TrialMaintenanceDTO>(_mapper.ConfigurationProvider);
return await query.ToPagedListAsync(inQuery, nameof(TrialMaintenanceDTO.UpdateTime)); return await query.ToPagedListAsync(inQuery, nameof(TrialMaintenanceDTO.UpdateTime));
@ -56,11 +56,11 @@ namespace IRaCIS.Core.Application.Service
{ {
// 最开始过滤site已经选择的用户 现在又改回去。。。 // 最开始过滤site已经选择的用户 现在又改回去。。。
var query = _trialUseRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters() var query = _trialUseRoleRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) .Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA)
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId) .WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.User.FullName).Contains(inQuery.UserRealName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.UserRole.FullName).Contains(inQuery.UserRealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.User.OrganizationName.Contains(inQuery.OrganizationName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.UserRole.OrganizationName.Contains(inQuery.OrganizationName))
.ProjectTo<AssginSiteCRCListDTO>(_mapper.ConfigurationProvider, new { trialSiteId = inQuery.TrialSiteId }); .ProjectTo<AssginSiteCRCListDTO>(_mapper.ConfigurationProvider, new { trialSiteId = inQuery.TrialSiteId });
return await query.ToPagedListAsync(inQuery); return await query.ToPagedListAsync(inQuery);
@ -83,7 +83,7 @@ namespace IRaCIS.Core.Application.Service
//之前已经选择的用户 不放在列表中,现在又要改回去 废弃 //之前已经选择的用户 不放在列表中,现在又要改回去 废弃
var query = _userRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin && t.UserTypeEnum != UserTypeEnum.Admin && t.UserTypeEnum != UserTypeEnum.OA) var query = _userRoleRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin && t.UserTypeEnum != UserTypeEnum.Admin && t.UserTypeEnum != UserTypeEnum.OA)
////正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户 ////正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户
//.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IsTestUser == false && t.IsZhiZhun) //.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IsTestUser == false && t.IsZhiZhun)
@ -120,9 +120,9 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> AddTrialUsers(TrialUserAddCommand[] userTrialCommands) public async Task<IResponseOutput> AddTrialUsers(TrialUserAddCommand[] userTrialCommands)
{ {
var addArray = _mapper.Map<TrialUser[]>(userTrialCommands); var addArray = _mapper.Map<TrialUserRole[]>(userTrialCommands);
var trialUsers = await _trialUseRepository.AddRangeAsync(addArray); var trialUsers = await _trialUseRoleRepository.AddRangeAsync(addArray);
foreach (var item in trialUsers) foreach (var item in trialUsers)
{ {
@ -130,7 +130,7 @@ namespace IRaCIS.Core.Application.Service
} }
var success = await _trialUseRepository.SaveChangesAsync(); var success = await _trialUseRoleRepository.SaveChangesAsync();
return ResponseOutput.Result(success); return ResponseOutput.Result(success);
} }
@ -142,7 +142,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPut] [HttpPut]
public async Task<IResponseOutput> UpdateTrialUser(UpdateTrialUserCommand updateTrialUserCommand) public async Task<IResponseOutput> UpdateTrialUser(UpdateTrialUserCommand updateTrialUserCommand)
{ {
var trialUser = await _trialUseRepository.Where(t => t.Id == updateTrialUserCommand.Id, true, true).FirstOrDefaultAsync(); var trialUser = await _trialUseRoleRepository.Where(t => t.Id == updateTrialUserCommand.Id, true, true).FirstOrDefaultAsync();
if (trialUser == null) return Null404NotFound(trialUser); if (trialUser == null) return Null404NotFound(trialUser);
@ -164,7 +164,7 @@ namespace IRaCIS.Core.Application.Service
_mapper.Map(updateTrialUserCommand, trialUser); _mapper.Map(updateTrialUserCommand, trialUser);
await _trialUseRepository.SaveChangesAsync(); await _trialUseRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok(); return ResponseOutput.Ok();
@ -181,7 +181,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> DeleteMaintenanceUser(Guid id, bool isDelete) public async Task<IResponseOutput> DeleteMaintenanceUser(Guid id, bool isDelete)
{ {
var trialUser = await _trialUseRepository.AsQueryable().IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == id); var trialUser = await _trialUseRoleRepository.AsQueryable().IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == id);
if (trialUser == null) return Null404NotFound(trialUser); if (trialUser == null) return Null404NotFound(trialUser);
@ -196,9 +196,9 @@ namespace IRaCIS.Core.Application.Service
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false }); await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
} }
await _trialUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialUser() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null }); await _trialUseRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialUserRole() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null });
await _trialUseRepository.SaveChangesAsync(); await _trialUseRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }

View File

@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service
[ApiExplorerSettings(GroupName = "Trial")] [ApiExplorerSettings(GroupName = "Trial")]
public class TrialService(IRepository<Trial> _trialRepository, public class TrialService(IRepository<Trial> _trialRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<CRO> _croRepository, IRepository<CRO> _croRepository,
IRepository<EnrollDetail> _enrollDetailRepository, IRepository<EnrollDetail> _enrollDetailRepository,
IRepository<Dictionary> _dictionaryRepository, IRepository<Dictionary> _dictionaryRepository,
@ -208,7 +208,7 @@ namespace IRaCIS.Core.Application.Service
//如果是PM 则需要将该人员添加到 运维人员表 //如果是PM 则需要将该人员添加到 运维人员表
//添加运维人员PM //添加运维人员PM
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trial.Id, UserId = _userInfo.Id, JoinTime = DateTime.Now }); await _trialUserRepository.AddAsync(new TrialUserRole() { TrialId = trial.Id, UserId = _userInfo.Id, JoinTime = DateTime.Now });
// 添加扩展信息表记录 // 添加扩展信息表记录
await _trialPaymentPriceRepository.AddAsync(new TrialPaymentPrice() { TrialId = trial.Id }); await _trialPaymentPriceRepository.AddAsync(new TrialPaymentPrice() { TrialId = trial.Id });
@ -539,7 +539,7 @@ namespace IRaCIS.Core.Application.Service
await _repository.BatchDeleteNoTrackingAsync<TrialSiteUserSurvey>(t => t.TrialSiteSurvey.TrialId == trialId); await _repository.BatchDeleteNoTrackingAsync<TrialSiteUserSurvey>(t => t.TrialSiteSurvey.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<TrialSiteEquipmentSurvey>(t => t.TrialSiteSurvey.TrialId == trialId); await _repository.BatchDeleteNoTrackingAsync<TrialSiteEquipmentSurvey>(t => t.TrialSiteSurvey.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<TrialUser>(t => t.TrialId == trialId); await _repository.BatchDeleteNoTrackingAsync<TrialUserRole>(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<TrialSiteUser>(t => t.TrialId == trialId); await _repository.BatchDeleteNoTrackingAsync<TrialSiteUser>(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<VisitStage>(t => t.TrialId == trialId); await _repository.BatchDeleteNoTrackingAsync<VisitStage>(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<VisitPlanInfluenceStat>(t => t.TrialId == trialId); await _repository.BatchDeleteNoTrackingAsync<VisitPlanInfluenceStat>(t => t.TrialId == trialId);

View File

@ -37,22 +37,22 @@ namespace IRaCIS.Core.Application.Service
CreateMap<UserTrialCommand, TrialUser>(); CreateMap<UserTrialCommand, TrialUserRole>();
CreateMap<TrialSiteCommand, TrialSite>() CreateMap<TrialSiteCommand, TrialSite>()
.ForMember(x => x.Id, x => x.Ignore()); .ForMember(x => x.Id, x => x.Ignore());
CreateMap<EditTrialSiteCommand, TrialSite>(); CreateMap<EditTrialSiteCommand, TrialSite>();
CreateMap<UpdateTrialUserCommand, TrialUser>(); CreateMap<UpdateTrialUserCommand, TrialUserRole>();
CreateMap<AssginSiteCRCCommand, TrialUser>(); CreateMap<AssginSiteCRCCommand, TrialUserRole>();
CreateMap<TrialUserAddCommand, TrialUser>(); CreateMap<TrialUserAddCommand, TrialUserRole>();
CreateMap<SiteCRCCommand, TrialUser>(); CreateMap<SiteCRCCommand, TrialUserRole>();
//临床项目 //临床项目
@ -86,21 +86,21 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialUser, TrialMaintenanceDTO>().IncludeMembers(t => t.User) CreateMap<TrialUserRole, TrialMaintenanceDTO>().IncludeMembers(t => t.UserRole)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName)) .ForMember(d => d.UserRealName, u => u.MapFrom(s => s.UserRole.FullName))
.ForMember(t => t.UserType, u => u.MapFrom(t => t.User.UserTypeRole.UserTypeShortName)); .ForMember(t => t.UserType, u => u.MapFrom(t => t.UserRole.UserTypeRole.UserTypeShortName));
CreateMap<User, TrialMaintenanceDTO>(); CreateMap<UserRole, TrialMaintenanceDTO>();
var trialSiteId = Guid.Empty; var trialSiteId = Guid.Empty;
CreateMap<TrialUser, AssginSiteCRCListDTO>().IncludeMembers(t => t.User) CreateMap<TrialUserRole, AssginSiteCRCListDTO>().IncludeMembers(t => t.UserRole)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName)) .ForMember(d => d.UserRealName, u => u.MapFrom(s => s.UserRole.FullName))
.ForMember(d => d.TrialSiteId, u => u.MapFrom(t => trialSiteId)) .ForMember(d => d.TrialSiteId, u => u.MapFrom(t => trialSiteId))
.ForMember(d => d.UserType, u => u.MapFrom(t => t.User.UserTypeRole.UserTypeShortName)) .ForMember(d => d.UserType, u => u.MapFrom(t => t.UserRole.UserTypeRole.UserTypeShortName))
.ForMember(d => d.IsSelect, u => u.MapFrom(t => t.Trial.TrialSiteUserList.Any(k => k.UserId == t.UserId && k.TrialSiteId== trialSiteId))); .ForMember(d => d.IsSelect, u => u.MapFrom(t => t.Trial.TrialSiteUserList.Any(k => k.UserId == t.UserId && k.TrialSiteId== trialSiteId)));
CreateMap<User, AssginSiteCRCListDTO>(); CreateMap<UserRole, AssginSiteCRCListDTO>();
var trialId = Guid.Empty; var trialId = Guid.Empty;
CreateMap<User, TrialUserScreeningDTO>() CreateMap<UserRole, TrialUserScreeningDTO>()
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.FullName)) .ForMember(d => d.UserRealName, u => u.MapFrom(s => s.FullName))
.ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName)) .ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
.ForMember(d => d.UserId, u => u.MapFrom(s => s.Id)) .ForMember(d => d.UserId, u => u.MapFrom(s => s.Id))
@ -151,7 +151,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialSiteUser, UserTrialDTO>().IncludeMembers(t => t.User) CreateMap<TrialSiteUser, UserTrialDTO>().IncludeMembers(t => t.User)
.ForMember(d => d.UserType, u => u.MapFrom(s => s.User.UserTypeRole.UserTypeShortName)) .ForMember(d => d.UserType, u => u.MapFrom(s => s.User.UserTypeRole.UserTypeShortName))
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName)); .ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName));
CreateMap<User, UserTrialDTO>(); CreateMap<UserRole, UserTrialDTO>();
#endregion #endregion
@ -189,22 +189,22 @@ namespace IRaCIS.Core.Application.Service
CreateMap<SignDTO, TrialSign>(); CreateMap<SignDTO, TrialSign>();
CreateMap<TrialStateChange, TrialStateChangeDTO>() CreateMap<TrialStateChange, TrialStateChangeDTO>()
.ForMember(t => t.UserRealName, u => u.MapFrom(c => c.CreateUser.FullName)) .ForMember(t => t.UserRealName, u => u.MapFrom(c => c.CreateUserRole.FullName))
.ForMember(t => t.UserName, u => u.MapFrom(c => c.CreateUser.UserName)); .ForMember(t => t.UserName, u => u.MapFrom(c => c.CreateUserRole.UserName));
CreateMap<TrialExternalUserAddAndSendEmail, TrialExternalUser>().ReverseMap(); CreateMap<TrialExternalUserAddAndSendEmail, TrialExternalUser>().ReverseMap();
CreateMap<TrialExternalUserAddAndSendEmail, User>(); CreateMap<TrialExternalUserAddAndSendEmail, UserRole>();
CreateMap<TrialExternalUser, TrialExternalUserAddOrEdit>().ReverseMap(); CreateMap<TrialExternalUser, TrialExternalUserAddOrEdit>().ReverseMap();
CreateMap<TrialExternalUserAddOrEdit, User>(); CreateMap<TrialExternalUserAddOrEdit, UserRole>();
CreateMap<TrialExternalUser, TrialExternalUserView>(); CreateMap<TrialExternalUser, TrialExternalUserView>();
CreateMap<User, TrialExternalUser>().ReverseMap(); CreateMap<UserRole, TrialExternalUser>().ReverseMap();
@ -270,7 +270,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(t => t.TrialSiteAliasName, u => u.MapFrom(c => c.TrialSite.TrialSiteAliasName)) .ForMember(t => t.TrialSiteAliasName, u => u.MapFrom(c => c.TrialSite.TrialSiteAliasName))
.ForMember(t => t.UserRealName, u => u.MapFrom(c => c.User.FullName)) .ForMember(t => t.UserRealName, u => u.MapFrom(c => c.User.FullName))
.ForMember(t => t.UserType, u => u.MapFrom(c => c.User.UserTypeRole.UserTypeShortName)); .ForMember(t => t.UserType, u => u.MapFrom(c => c.User.UserTypeRole.UserTypeShortName));
CreateMap<User, SiteUserExportDTO>(); CreateMap<UserRole, SiteUserExportDTO>();

View File

@ -53,7 +53,6 @@ using System.Dynamic;
using System.Threading.Channels; using System.Threading.Channels;
using NPOI.HSSF.Record.Chart; using NPOI.HSSF.Record.Chart;
using IRaCIS.Core.Application.Helper.OtherTool; using IRaCIS.Core.Application.Helper.OtherTool;
using System.Drawing;
namespace IRaCIS.Application.Services namespace IRaCIS.Application.Services
@ -68,7 +67,7 @@ namespace IRaCIS.Application.Services
IRepository<SubjectVisit> _subjectVisitRepository, IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<SubejctVisitDownload> _subejctVisitDownloadRepository, IRepository<SubejctVisitDownload> _subejctVisitDownloadRepository,
IRepository<SCPImageUpload> _SCPImageUploadRepository, IRepository<SCPImageUpload> _SCPImageUploadRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<HIRHospital> _hIRHospitalRepository, IRepository<HIRHospital> _hIRHospitalRepository,
IRepository<DicomAE> _dicomAEReposiotry, IRepository<DicomAE> _dicomAEReposiotry,
IRepository<SCPInstance> _scpInstanceRepository, IRepository<SCPInstance> _scpInstanceRepository,
@ -253,7 +252,7 @@ namespace IRaCIS.Application.Services
[FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig, [FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig,
[FromServices] IOptionsMonitor<SystemHospitalOption> _systemHospitalOption, [FromServices] IOptionsMonitor<SystemHospitalOption> _systemHospitalOption,
[FromServices] IRepository<TrialDictionary> _trialDictionaryRepository, [FromServices] IRepository<TrialDictionary> _trialDictionaryRepository,
[FromServices] IRepository<TrialUser> _trialUserRepository, [FromServices] IRepository<TrialUserRole> _trialUserRepository,
[FromServices] IFusionCache _provider) [FromServices] IFusionCache _provider)
{ {
var code = _systemHospitalOption.CurrentValue.HospitalCode; var code = _systemHospitalOption.CurrentValue.HospitalCode;
@ -310,7 +309,7 @@ namespace IRaCIS.Application.Services
//如果是PM 则需要将该人员添加到 运维人员表 //如果是PM 则需要将该人员添加到 运维人员表
//添加运维人员PM //添加运维人员PM
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trial.Id, UserId = _userInfo.Id, JoinTime = DateTime.Now }); await _trialUserRepository.AddAsync(new TrialUserRole() { TrialId = trial.Id, UserId = _userInfo.Id, JoinTime = DateTime.Now });
//默认采用系统邮件 //默认采用系统邮件
@ -506,7 +505,7 @@ namespace IRaCIS.Application.Services
else else
{ {
//"激活码信息有误!" //"激活码信息有误!"
return ResponseOutput.NotOk(_localizer["Trial_ActivationCodeError"]); return ResponseOutput.NotOk(_localizer["Trial_ActivationCodeError"] );
} }
} }
@ -571,13 +570,13 @@ namespace IRaCIS.Application.Services
await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialId, u => new Trial() { AuthorizationEncrypt = newActivationCode, AuthorizationDate = deadLineDate }); await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialId, u => new Trial() { AuthorizationEncrypt = newActivationCode, AuthorizationDate = deadLineDate });
var caheInfo = new TrialCacheInfo() { TrialId = trialInfo.Id, TrialStatusStr = trialInfo.TrialStatusStr, AuthorizationEncrypt = newActivationCode, CriterionTypes = trialInfo.CriterionTypes, AuthorizationDate = trialInfo.AuthorizationDate, CreateUserId = trialInfo.CreateUserId, TrialCode = trialInfo.TrialCode }; var caheInfo = new TrialCacheInfo() { TrialId = trialInfo.Id, TrialStatusStr = trialInfo.TrialStatusStr, AuthorizationEncrypt = newActivationCode, CriterionTypes = trialInfo.CriterionTypes, AuthorizationDate = trialInfo.AuthorizationDate, CreateUserId = trialInfo.CreateUserId, TrialCode = trialInfo.TrialCode };
await _fusionCache.SetAsync(CacheKeys.Trial(trialInfo.Id.ToString()), caheInfo, TimeSpan.FromDays(7)); await _fusionCache.SetAsync(CacheKeys.Trial(trialInfo.Id.ToString()), caheInfo, TimeSpan.FromDays(7));
} }
else else
{ {
// 激活信息反序列化错误 // 激活信息反序列化错误
return ResponseOutput.NotOk(_localizer["Trial_ActivationCodeDeserializeError"]); return ResponseOutput.NotOk(_localizer["Trial_ActivationCodeDeserializeError"] );
} }
@ -1316,7 +1315,7 @@ namespace IRaCIS.Application.Services
} }
else else
{ {
var identification = find.Status == SubjectStatus.OnVisit ? "Patient_TrialExistSubjectCodeError1" : "Patient_TrialExistSubjectCodeError2"; var identification = find.Status == SubjectStatus.OnVisit ? "Patient_TrialExistSubjectCodeError1" : "Patient_TrialExistSubjectCodeError2";
return ResponseOutput.NotOk(_localizer[identification, find.Code]); return ResponseOutput.NotOk(_localizer[identification, find.Code]);
//subjectId = find.Id; //subjectId = find.Id;
} }
@ -1800,7 +1799,7 @@ namespace IRaCIS.Application.Services
if (!arraysEqual) if (!arraysEqual)
{ {
//_localizer[$"{g.Key.SubjectCode}所提交的访视中的检查时间,不符合后续访视的检查时间比前序检查的时间大的要求"] //_localizer[$"{g.Key.SubjectCode}所提交的访视中的检查时间,不符合后续访视的检查时间比前序检查的时间大的要求"]
return ResponseOutput.NotOk(_localizer["Patient_SubjectVisitSubmmitTimeVerifyError", g.Key.SubjectCode]); return ResponseOutput.NotOk(_localizer["Patient_SubjectVisitSubmmitTimeVerifyError", g.Key.SubjectCode] );
} }
if (DateTime.Now < studyTimeOrderList.Max(t => t.StudyTime)) if (DateTime.Now < studyTimeOrderList.Max(t => t.StudyTime))
@ -2857,8 +2856,8 @@ namespace IRaCIS.Application.Services
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.IP), t => t.IP.Contains(inQuery.IP)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.IP), t => t.IP.Contains(inQuery.IP))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), t => t.SubjectVisit.Subject.Code.Contains(inQuery.SubjectCode)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.SubjectCode), t => t.SubjectVisit.Subject.Code.Contains(inQuery.SubjectCode))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.VisitName), t => t.SubjectVisit.VisitName.Contains(inQuery.VisitName)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.VisitName), t => t.SubjectVisit.VisitName.Contains(inQuery.VisitName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.CreateUser.UserName.Contains(inQuery.Name) || t.CreateUser.FullName.Contains(inQuery.Name)) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.CreateUserRole.UserName.Contains(inQuery.Name) || t.CreateUserRole.FullName.Contains(inQuery.Name))
.WhereIf(inQuery.UserTypeEnum != null, t => t.CreateUser.UserTypeRole.UserTypeEnum == inQuery.UserTypeEnum) .WhereIf(inQuery.UserTypeEnum != null, t => t.CreateUserRole.UserTypeRole.UserTypeEnum == inQuery.UserTypeEnum)
.WhereIf(inQuery.BeginDownloadTime != null, t => t.CreateTime >= inQuery.BeginDownloadTime) .WhereIf(inQuery.BeginDownloadTime != null, t => t.CreateTime >= inQuery.BeginDownloadTime)
.WhereIf(inQuery.EndDownloadTime != null, t => t.CreateTime <= inQuery.EndDownloadTime) .WhereIf(inQuery.EndDownloadTime != null, t => t.CreateTime <= inQuery.EndDownloadTime)
@ -3386,66 +3385,43 @@ namespace IRaCIS.Application.Services
var task = Task.Run(async () => var task = Task.Run(async () =>
{ {
try var client = DicomClientFactory.Create(find.IP, find.Port, false, hirClient.CalledAE, find.CalledAE);
client.NegotiateAsyncOps();
var cmoveRequestList = new List<DicomCMoveRequest>();
foreach (var item in inCommand.StudyInstanceUIDList)
{ {
var client = DicomClientFactory.Create(find.IP, find.Port, false, hirClient.CalledAE, find.CalledAE);
client.NegotiateAsyncOps();
var cmoveRequestList = new List<DicomCMoveRequest>(); var cmoveConfig = _basicSystemConfigConfig.CurrentValue;
var exsitStudyId = await _fusionCache.GetOrDefaultAsync<string>(CacheKeys.CmoveStudyId(item), null);
foreach (var item in inCommand.StudyInstanceUIDList) var latestInstance = latestInstanceList.Where(t => t.StudyInstanceUid == item).FirstOrDefault();
//缓存不存在当前检查或者instance表最新的记录时间与当前时间之差超过1分钟认为完成归档可以重复拉取
if (exsitStudyId == null && (latestInstance == null || latestInstance?.CreateTime.AddMinutes(cmoveConfig.CmoveInstanceIntervalMinutes) < DateTime.Now))
{ {
await _fusionCache.SetAsync(CacheKeys.CmoveStudyId(item), item, TimeSpan.FromMinutes(cmoveConfig.CmoveIntervalMinutes));
var cmoveConfig = _basicSystemConfigConfig.CurrentValue; var cmoveRequest = new DicomCMoveRequest(hirServer.CalledAE, item);
var exsitStudyId = await _fusionCache.GetOrDefaultAsync<string>(CacheKeys.CmoveStudyId(item), null);
var latestInstance = latestInstanceList.Where(t => t.StudyInstanceUid == item).FirstOrDefault(); cmoveRequest.OnResponseReceived += responseDelegate;
//缓存不存在当前检查或者instance表最新的记录时间与当前时间之差超过1分钟认为完成归档可以重复拉取 cmoveRequestList.Add(cmoveRequest);
if (exsitStudyId == null && (latestInstance == null || latestInstance?.CreateTime.AddMinutes(cmoveConfig.CmoveInstanceIntervalMinutes) < DateTime.Now))
{
await _fusionCache.SetAsync(CacheKeys.CmoveStudyId(item), item, TimeSpan.FromMinutes(cmoveConfig.CmoveIntervalMinutes));
var cmoveRequest = new DicomCMoveRequest(hirServer.CalledAE, item); _logger.LogInformation($"执行C-Move StudyInstanceUID{item}");
cmoveRequest.OnResponseReceived += responseDelegate; }
else
#region 测试私有tag 传输信息 {
_logger.LogInformation($"忽略C-Move StudyInstanceUID{item}");
// DICOM 协议里C - MOVE 请求的 Dataset 只会发给 C-MOVE SCP调度方而不是自动传到最终的 C-STORE SCP接收影像方的 Dataset 里。
// 添加私有Tag元素号 >= 0x1000
//var privateTag = new DicomTag(0x9999, 0x1001);
//var groupIdsJson = (new List<string> { "KTGroup1", "KTGroup2" }).ToJsonStr();
//cmoveRequest.Dataset.Add(new DicomLongString(privateTag, groupIdsJson));
#endregion
cmoveRequestList.Add(cmoveRequest);
_logger.LogInformation($"执行C-Move StudyInstanceUID{item}");
}
else
{
_logger.LogInformation($"忽略C-Move StudyInstanceUID{item}");
}
} }
await client.AddRequestsAsync(cmoveRequestList);
await client.SendAsync();
}
catch (Exception ex)
{
_logger.LogError($"cmove error{ex.Message + ex.StackTrace}");
} }
await client.AddRequestsAsync(cmoveRequestList);
await client.SendAsync();
}); });
//await task; //await task;

View File

@ -26,16 +26,16 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.SubjectVisit.Subject.Code)) .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.SubjectVisit.Subject.Code))
.ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName)) .ForMember(d => d.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName))
.ForMember(d => d.DownloadTime, u => u.MapFrom(s => s.CreateTime)) .ForMember(d => d.DownloadTime, u => u.MapFrom(s => s.CreateTime))
.ForMember(d => d.DownloadUserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.DownloadUserName, u => u.MapFrom(s => s.CreateUserRole.UserName))
.ForMember(d => d.StudyCount, u => u.MapFrom(s => s.SubjectVisit.StudyList.Count())) .ForMember(d => d.StudyCount, u => u.MapFrom(s => s.SubjectVisit.StudyList.Count()))
.ForMember(d => d.DownLoadUserFullName, u => u.MapFrom(s => s.CreateUser.FullName)) .ForMember(d => d.DownLoadUserFullName, u => u.MapFrom(s => s.CreateUserRole.FullName))
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUser.UserTypeEnum)); .ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUserRole.UserTypeEnum));
CreateMap<SCPImageUpload, SCPImageUploadView>(); CreateMap<SCPImageUpload, SCPImageUploadView>();
CreateMap<VisitPlanInfluenceStat, VisitPlanInfluenceSubjectVisitStatDTO>() CreateMap<VisitPlanInfluenceStat, VisitPlanInfluenceSubjectVisitStatDTO>()
.ForMember(d => d.CreateUser, u => u.MapFrom(g => g.CreateUser.LastName + " / " + g.CreateUser.FirstName)); .ForMember(d => d.CreateUser, u => u.MapFrom(g => g.CreateUserRole.LastName + " / " + g.CreateUserRole.FirstName));

View File

@ -16,8 +16,8 @@ namespace IRaCIS.Core.Application.Service
IRepository<Doctor> _doctorRepository, IRepository<Doctor> _doctorRepository,
IRepository<EnrollDetail> _enrollDetailRepository, IRepository<EnrollDetail> _enrollDetailRepository,
IRepository<Workload> _workloadRepository, IRepository<Workload> _workloadRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUserRepository, IRepository<TrialUserRole> _trialUserRepository,
IRepository<ReadingQuestionCriterionTrial> _ReadingQuestionCriterionTrialRepository, IRepository<ReadingQuestionCriterionTrial> _ReadingQuestionCriterionTrialRepository,
IRepository<TrialExperience> _trialExperienceRepository, IRepository<TrialExperience> _trialExperienceRepository,
@ -146,7 +146,7 @@ namespace IRaCIS.Core.Application.Service
TrialId = trialId, TrialId = trialId,
EnrollStatus = EnrollStatus.HasApplyDownloadResume, EnrollStatus = EnrollStatus.HasApplyDownloadResume,
DoctorUserId = _userRepository.Where(t => t.DoctorId == doctorId).Select(t => t.Id).FirstOrDefault() DoctorUserId = _userRoleRepository.Where(t => t.DoctorId == doctorId).Select(t => t.Id).FirstOrDefault()
}); ; }); ;
await _enrollDetailRepository.AddAsync(new EnrollDetail() await _enrollDetailRepository.AddAsync(new EnrollDetail()
@ -174,7 +174,7 @@ namespace IRaCIS.Core.Application.Service
var trial = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId); var trial = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
var hasSPMOrCPM = await _trialUserRepository.Where(t => t.TrialId == trialId).AnyAsync(t => t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM); var hasSPMOrCPM = await _trialUserRepository.Where(t => t.TrialId == trialId).AnyAsync(t => t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM);
if (trial != null) if (trial != null)
{ {
@ -352,7 +352,7 @@ namespace IRaCIS.Core.Application.Service
//[Authorize(Policy = IRaCISPolicy.PM_APM_SPM_CPM_SMM_CMM)] //[Authorize(Policy = IRaCISPolicy.PM_APM_SPM_CPM_SMM_CMM)]
[UnitOfWork] [UnitOfWork]
public async Task<IResponseOutput> ConfirmReviewer(ConfirmReviewerCommand confirmReviewerCommand, public async Task<IResponseOutput> ConfirmReviewer(ConfirmReviewerCommand confirmReviewerCommand,
[FromServices] IRepository<TrialUser> _trialUserRepository, [FromServices] IRepository<TrialUserRole> _trialUserRepository,
[FromServices] IRepository<TaskAllocationRule> _taskAllocationRuleRepository) [FromServices] IRepository<TaskAllocationRule> _taskAllocationRuleRepository)
{ {
//var trial = _trialRepository.FirstOrDefault(t => t.Id == trialId); //var trial = _trialRepository.FirstOrDefault(t => t.Id == trialId);
@ -410,7 +410,7 @@ namespace IRaCIS.Core.Application.Service
if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId, true)) if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId, true))
{ {
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now }); await _trialUserRepository.AddAsync(new TrialUserRole() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
} }
await _enrollRepository.BatchUpdateNoTrackingAsync(t => t.Id == intoGroupItem.Id, u => new Enroll() { DoctorUserId = userId }); await _enrollRepository.BatchUpdateNoTrackingAsync(t => t.Id == intoGroupItem.Id, u => new Enroll() { DoctorUserId = userId });

View File

@ -6,6 +6,7 @@ using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Service.BusinessFilter; using IRaCIS.Core.Application.Service.BusinessFilter;
using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain; using IRaCIS.Core.Domain;
using IRaCIS.Core.Domain.Management;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Infrastructure;
@ -48,7 +49,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<VisitTask> _visitTaskRepository, IRepository<VisitTask> _visitTaskRepository,
IRepository<DicomSeries> _dicomSeriesRepository, IRepository<DicomSeries> _dicomSeriesRepository,
IRepository<User> _userRepository, IRepository<UserRole> _userRoleRepository,
IRepository<TrialBodyPart> _trialBodyPartRepository, IRepository<TrialBodyPart> _trialBodyPartRepository,
IDistributedLockProvider _distributedLockProvider, IDistributedLockProvider _distributedLockProvider,
ILogger<TestService> _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService ILogger<TestService> _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
@ -98,6 +99,213 @@ namespace IRaCIS.Core.Application.Service
return ResponseOutput.Ok(); return ResponseOutput.Ok();
} }
/// <summary>
/// 项目退出历史数据维护
/// </summary>
/// <param name="_trialIdentityUserRepository"></param>
/// <param name="_trialUserRoleReposiotry"></param>
/// <returns></returns>
[AllowAnonymous]
public async Task<IResponseOutput> OldTrialDeleteUser([FromServices] IRepository<TrialIdentityUser> _trialIdentityUserRepository, [FromServices] IRepository<TrialUserRole> _trialUserRoleReposiotry)
{
_userInfo.IsNotNeedInspection = true;
if (_trialUserRoleReposiotry.Any(t => t.TrialUserId == Guid.Empty))
{
var list = _trialUserRoleReposiotry.Where(t => t.IsDeleted == true && t.TrialUserId == Guid.Empty, false, true).Select(t => new { t.TrialId, t.UserRole.IdentityUserId, t.UserId, t.JoinTime, t.RemoveTime, t.DeletedTime, t.DeleteUserId, t.CreateUserId }).ToList();
foreach (var item in list.GroupBy(t => new { t.IdentityUserId, t.TrialId }))
{
var id = NewId.NextSequentialGuid();
var userRoleList = item.ToList();
var userIdList = item.Select(t => t.UserId).ToList();
var first = userRoleList.OrderByDescending(t => t.RemoveTime).FirstOrDefault();
//判断在项目中是否存在
var find = _trialIdentityUserRepository.Where(t => t.IdentityUserId == first.IdentityUserId && t.TrialId == first.TrialId).FirstOrDefault();
if (find == null)
{
await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser()
{
Id = id,
IdentityUserId = item.Key.IdentityUserId,
TrialId = item.Key.TrialId,
RemoveTime = first.RemoveTime,
IsDeleted = true,
DeletedTime = first.DeletedTime,
DeleteUserId = first.DeleteUserId,
});
await _trialUserRoleReposiotry.BatchUpdateNoTrackingAsync(t => t.TrialId == item.Key.TrialId && userIdList.Contains(t.UserId), u => new TrialUserRole() { TrialUserId = id, UpdateTime = (DateTime)first.DeletedTime });
}
else
{
await _trialUserRoleReposiotry.BatchUpdateNoTrackingAsync(t => t.TrialId == item.Key.TrialId && userIdList.Contains(t.UserId), u => new TrialUserRole() { TrialUserId = find.Id, UpdateTime = (DateTime)first.DeletedTime });
}
}
await _trialIdentityUserRepository.SaveChangesAsync();
}
return ResponseOutput.Ok();
}
/// <summary>
/// 用户多账号,初次维护数据
/// </summary>
/// <returns></returns>
[AllowAnonymous]
public async Task<IResponseOutput> UserMutiAccount([FromServices] IRepository<IdentityUser> _identityUserRepository, [FromServices] IRepository<UserPassWordLog> _userPasswordLogRepository)
{
if ((await _identityUserRepository.FirstOrDefaultAsync()) == null)
{
var userList = _userRoleRepository.Where().ToList();
foreach (var item in userList.GroupBy(t => t.EMail.Trim().ToLower()))
{
var emailUserIdList = item.Select(t => t.Id).ToList();
var identityUserId = NewId.NextSequentialGuid();
var selectUser = item.OrderBy(t => t.CreateTime).FirstOrDefault();
var identityUser = _mapper.Map<IdentityUser>(selectUser);
if (identityUser.IsFirstAdd)
{
identityUser.UserName = "";
}
identityUser.Id = identityUserId;
await _identityUserRepository.AddAsync(identityUser);
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => emailUserIdList.Contains(t.Id), u => new UserRole() { IdentityUserId = identityUserId });
if (emailUserIdList.Count == 1)
{
var userRoleId = emailUserIdList.First();
await _userPasswordLogRepository.BatchUpdateNoTrackingAsync(t => t.UserId == userRoleId, u => new UserPassWordLog() { IdentityUserId = identityUserId });
}
}
await _identityUserRepository.SaveChangesAsync();
}
// UPDATE[User]
//SET
// UserName = IdentityUser.UserName,
// FirstName = IdentityUser.FirstName,
//LastName = IdentityUser.LastName,
// EMail = IdentityUser.EMail
//FROM[User]
//INNER JOIN IdentityUser
//ON[User].IdentityUserId = IdentityUser.Id
return ResponseOutput.Ok();
}
/// <summary>
/// 项目用户 维护数据
/// </summary>
/// <param name="_trialIdentityUserRepository"></param>
/// <returns></returns>
[AllowAnonymous]
public async Task<IResponseOutput> UserTrialUser([FromServices] IRepository<TrialIdentityUser> _trialIdentityUserRepository, [FromServices] IRepository<TrialUserRole> _trialUserRoleReposiotry)
{
_userInfo.IsNotNeedInspection = true;
if ((await _trialIdentityUserRepository.FirstOrDefaultAsync()) == null)
{
var list = _trialUserRoleReposiotry.Where().Select(t => new { t.TrialId, t.UserRole.IdentityUserId, t.UserId, t.JoinTime, t.RemoveTime }).ToList();
foreach (var item in list.GroupBy(t => new { t.IdentityUserId, t.TrialId }))
{
var id = NewId.NextSequentialGuid();
var userRoleList = item.ToList();
var userIdList = item.Select(t => t.UserId).ToList();
var first = userRoleList.First();
var haveJoin = userRoleList.Any(t => t.JoinTime != null);
if (haveJoin)
{
await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser() { Id = id, IdentityUserId = item.Key.IdentityUserId, TrialId = item.Key.TrialId, JoinTime = userRoleList.Min(t => t.JoinTime) });
}
else
{
await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser() { Id = id, IdentityUserId = item.Key.IdentityUserId, TrialId = item.Key.TrialId, RemoveTime = userRoleList.Max(t => t.RemoveTime) });
}
await _trialUserRoleReposiotry.BatchUpdateNoTrackingAsync(t => t.TrialId == item.Key.TrialId && userIdList.Contains(t.UserId), u => new TrialUserRole() { TrialUserId = id });
}
await _trialIdentityUserRepository.SaveChangesAsync();
}
return ResponseOutput.Ok();
}
/// <summary>
/// 外部人员 中心调研人员维护
/// </summary>
/// <param name="_trialIdentityUserRepository"></param>
/// <param name="_trialUserRoleReposiotry"></param>
/// <returns></returns>
[AllowAnonymous]
[UnitOfWork]
public async Task<IResponseOutput> ExternalTrialUser(
[FromServices] IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository,
[FromServices] IRepository<TrialExternalUser> _trialExternalUserReposiotry,
[FromServices] IRepository<UserRole> _userRoleRepository)
{
var list = _userRoleRepository.Select(t => new { t.Id, t.IdentityUserId }).ToList();
foreach (var item in list.GroupBy(t => t.IdentityUserId))
{
var userRoleIdList = item.Select(t => t.Id).ToList();
var identityUserId = item.Key;
await _trialSiteUserSurveyRepository.BatchUpdateNoTrackingAsync(t => userRoleIdList.Contains(t.SystemUserId.Value), u => new TrialSiteUserSurvey() { SystemUserId = identityUserId });
await _trialExternalUserReposiotry.BatchUpdateNoTrackingAsync(t => userRoleIdList.Contains(t.SystemUserId), u => new TrialExternalUser() { SystemUserId = identityUserId });
}
return ResponseOutput.Ok();
}
[LowerCamelCaseJson] [LowerCamelCaseJson]
public class TestModel public class TestModel
{ {
@ -154,7 +362,7 @@ namespace IRaCIS.Core.Application.Service
{ {
var timeSpan = HolidayHelper.GetChinaWorkTimeSpan(startdate, endDate); var timeSpan = HolidayHelper.GetChinaWorkTimeSpan(startdate, endDate);
_userRepository.Where(t => t.Id == _userInfo.Id).Select(t => t.FullName).FirstOrDefault(); _userRoleRepository.Where(t => t.Id == _userInfo.Id).Select(t => t.FullName).FirstOrDefault();
return $"{timeSpan.Days}天,{timeSpan.Hours}小时{timeSpan.Minutes}分钟{timeSpan.Seconds}秒"; return $"{timeSpan.Days}天,{timeSpan.Hours}小时{timeSpan.Minutes}分钟{timeSpan.Seconds}秒";
} }
@ -219,7 +427,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> TestDistributedLock() public async Task<IResponseOutput> TestDistributedLock()
{ {
await _userRepository.Where().Select(t => t.FullName).FirstNotNullAsync(); await _userRoleRepository.Where().Select(t => t.FullName).FirstNotNullAsync();
Console.WriteLine($"我进来了当前值是:" + IntValue); Console.WriteLine($"我进来了当前值是:" + IntValue);
_logger.LogWarning($"我进来了当前值是:" + IntValue); _logger.LogWarning($"我进来了当前值是:" + IntValue);
@ -546,7 +754,7 @@ namespace IRaCIS.Core.Application.Service
//var d = _userRepository.Where(t => t.FullName.Contains("cc")).Select(t => t.FullName).FirstOrDefault(); //var d = _userRoleRepository.Where(t => t.FullName.Contains("cc")).Select(t => t.FullName).FirstOrDefault();
//var c = _dicRepository.Where(t => t.ParentId != null).Select(t => t.MappedValue).First(); //var c = _dicRepository.Where(t => t.ParentId != null).Select(t => t.MappedValue).First();
//CultureInfo culture = CultureInfo.CurrentUICulture; //CultureInfo culture = CultureInfo.CurrentUICulture;

View File

@ -10,11 +10,11 @@ namespace IRaCIS.Core.Application.Triggers
public class AddlTrialUserTrigger( public class AddlTrialUserTrigger(
IStringLocalizer _localizer, IStringLocalizer _localizer,
IRepository<Trial> _trialRepository, IRepository<Trial> _trialRepository,
IRepository<User> _userRepository) : IBeforeSaveTrigger<TrialUser> IRepository<UserRole> _userRoleRepository) : IBeforeSaveTrigger<TrialUserRole>
{ {
public async Task BeforeSave(ITriggerContext<TrialUser> context, CancellationToken cancellationToken) public async Task BeforeSave(ITriggerContext<TrialUserRole> context, CancellationToken cancellationToken)
{ {
var trialUser = context.Entity; var trialUser = context.Entity;
@ -24,7 +24,7 @@ namespace IRaCIS.Core.Application.Triggers
var trialInfo = await _trialRepository.FindAsync(trialUser.TrialId); var trialInfo = await _trialRepository.FindAsync(trialUser.TrialId);
// 必须包在同一个事务,有的时候是数据库还没用户,不能直接查询数据库 // 必须包在同一个事务,有的时候是数据库还没用户,不能直接查询数据库
var user = await _userRepository.FindAsync(trialUser.UserId); var user = await _userRoleRepository.FindAsync(trialUser.UserId);
if (trialInfo.TrialType == Domain.Share.TrialType.OfficialTrial || trialInfo.TrialType == Domain.Share.TrialType.Training) if (trialInfo.TrialType == Domain.Share.TrialType.OfficialTrial || trialInfo.TrialType == Domain.Share.TrialType.Training)
{ {

View File

@ -28,9 +28,9 @@ namespace IRaCIS.Core.Application.Triggers
} }
public class UserAddTrigger(IUserInfo _userInfo, IRepository<UserLog> _userLogReposiotry) : IBeforeSaveTrigger<User> public class UserAddTrigger(IUserInfo _userInfo, IRepository<UserLog> _userLogReposiotry) : IBeforeSaveTrigger<UserRole>
{ {
public async Task BeforeSave(ITriggerContext<User> context, CancellationToken cancellationToken) public async Task BeforeSave(ITriggerContext<UserRole> context, CancellationToken cancellationToken)
{ {
var user = context.Entity; var user = context.Entity;
@ -42,9 +42,9 @@ namespace IRaCIS.Core.Application.Triggers
} }
} }
public class UserModifyTrigger(IUserInfo _userInfo, IRepository<User> _userReposiotry) : IBeforeSaveTrigger<User> public class UserModifyTrigger(IUserInfo _userInfo, IRepository<UserRole> _userReposiotry) : IBeforeSaveTrigger<UserRole>
{ {
public async Task BeforeSave(ITriggerContext<User> context, CancellationToken cancellationToken) public async Task BeforeSave(ITriggerContext<UserRole> context, CancellationToken cancellationToken)
{ {
var user = context.Entity; var user = context.Entity;
@ -56,60 +56,60 @@ namespace IRaCIS.Core.Application.Triggers
if (beforeUser.IsFirstAdd == false && user.IsFirstAdd == true) if (beforeUser.IsFirstAdd == false && user.IsFirstAdd == true)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { IsFirstAdd = true }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { IsFirstAdd = true });
} }
//只用初始化其中一个 //只用初始化其中一个
if (beforeUser.IsFirstAdd == true && user.IsFirstAdd == false) if (beforeUser.IsFirstAdd == true && user.IsFirstAdd == false)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { IsFirstAdd = false }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { IsFirstAdd = false });
} }
if (beforeUser.Password != user.Password) if (beforeUser.Password != user.Password)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { Password = user.Password }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { Password = user.Password });
} }
if (beforeUser.EMail != user.EMail) if (beforeUser.EMail != user.EMail)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == beforeUser.EMail, u => new User() { EMail = user.EMail }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == beforeUser.EMail, u => new UserRole() { EMail = user.EMail });
} }
if (beforeUser.CheckCode != user.CheckCode) if (beforeUser.CheckCode != user.CheckCode)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { CheckCode = user.CheckCode }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { CheckCode = user.CheckCode });
} }
if (beforeUser.FirstName != user.FirstName || beforeUser.LastName != user.LastName) if (beforeUser.FirstName != user.FirstName || beforeUser.LastName != user.LastName)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { FirstName = user.FirstName, LastName = user.LastName }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { FirstName = user.FirstName, LastName = user.LastName });
} }
if (beforeUser.Phone != user.Phone) if (beforeUser.Phone != user.Phone)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { Phone = user.Phone }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { Phone = user.Phone });
} }
if (beforeUser.Sex != user.Sex) if (beforeUser.Sex != user.Sex)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { Sex = user.Sex }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { Sex = user.Sex });
} }
if (beforeUser.IsZhiZhun != user.IsZhiZhun) if (beforeUser.IsZhiZhun != user.IsZhiZhun)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { IsZhiZhun = user.IsZhiZhun, OrganizationName = user.OrganizationName }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { IsZhiZhun = user.IsZhiZhun, OrganizationName = user.OrganizationName });
} }
if (beforeUser.OrganizationName != user.OrganizationName) if (beforeUser.OrganizationName != user.OrganizationName)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { OrganizationName = user.OrganizationName }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { OrganizationName = user.OrganizationName });
} }
if (beforeUser.DepartmentName != user.DepartmentName || beforeUser.PositionName != user.PositionName) if (beforeUser.DepartmentName != user.DepartmentName || beforeUser.PositionName != user.PositionName)
{ {
await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new User() { DepartmentName = user.DepartmentName, PositionName = user.PositionName }); await _userReposiotry.BatchUpdateNoTrackingAsync(t => t.EMail == user.EMail, u => new UserRole() { DepartmentName = user.DepartmentName, PositionName = user.PositionName });
} }
} }

View File

@ -19,7 +19,7 @@ public class SubjectUser : BaseFullAuditEntity
[JsonIgnore] [JsonIgnore]
public List<SubjectUser> EarlierSubjectUserList { get; set; } public List<SubjectUser> EarlierSubjectUserList { get; set; }
[JsonIgnore] [JsonIgnore]
public User DoctorUser { get; set; } public UserRole DoctorUser { get; set; }
[JsonIgnore] [JsonIgnore]
public Subject Subject { get; set; } public Subject Subject { get; set; }

View File

@ -8,7 +8,7 @@ public class TaskAllocationRule : BaseFullAuditEntity
[ForeignKey("DoctorUserId")] [ForeignKey("DoctorUserId")]
[JsonIgnore] [JsonIgnore]
public User DoctorUser { get; set; } public UserRole DoctorUser { get; set; }
[JsonIgnore] [JsonIgnore]
public Enroll Enroll { get; set; } public Enroll Enroll { get; set; }

View File

@ -16,10 +16,10 @@ public class TaskMedicalReview : BaseFullAuditEntity
#region 导航属性 #region 导航属性
[JsonIgnore] [JsonIgnore]
public User LatestReplyUser { get; set; } public UserRole LatestReplyUser { get; set; }
[JsonIgnore] [JsonIgnore]
public User MedicalManagerUser { get; set; } public UserRole MedicalManagerUser { get; set; }
[JsonIgnore] [JsonIgnore]
[ForeignKey("VisitTaskId")] [ForeignKey("VisitTaskId")]

View File

@ -7,7 +7,7 @@ public class TaskMedicalReviewRule : BaseFullAuditEntity
#region 导航属性 #region 导航属性
[JsonIgnore] [JsonIgnore]
public User DoctorUser { get; set; } public UserRole DoctorUser { get; set; }
#endregion #endregion
public Guid DoctorUserId { get; set; } public Guid DoctorUserId { get; set; }

View File

@ -18,7 +18,7 @@ public class VisitTask : BaseFullAuditEntity
[ForeignKey("TrialReadingCriterionId")] [ForeignKey("TrialReadingCriterionId")]
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; } public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
[ForeignKey("DoctorUserId")] [ForeignKey("DoctorUserId")]
public User DoctorUser { get; set; } public UserRole DoctorUser { get; set; }
[ForeignKey("SouceReadModuleId")] [ForeignKey("SouceReadModuleId")]
public ReadModule ReadModule { get; set; } public ReadModule ReadModule { get; set; }
@ -286,15 +286,15 @@ public class VisitTask : BaseFullAuditEntity
[JsonIgnore] [JsonIgnore]
[ForeignKey("FirstAuditUserId")] [ForeignKey("FirstAuditUserId")]
public User FirstAuditUser { get; set; } public UserRole FirstAuditUser { get; set; }
[JsonIgnore] [JsonIgnore]
[ForeignKey("LatestReplyUserId")] [ForeignKey("LatestReplyUserId")]
public User LatestReplyUser { get; set; } public UserRole LatestReplyUser { get; set; }
[JsonIgnore] [JsonIgnore]
[ForeignKey("SubjectCriterionClaimUserId")] [ForeignKey("SubjectCriterionClaimUserId")]
public User SubjectCriterionClaimUser { get; set; } public UserRole SubjectCriterionClaimUser { get; set; }
[NotMapped] [NotMapped]

View File

@ -9,7 +9,7 @@ public class VisitTaskReReading : BaseFullAuditEntity
#region 导航属性 #region 导航属性
[JsonIgnore] [JsonIgnore]
public User RequestReReadingUser { get; set; } public UserRole RequestReReadingUser { get; set; }
[JsonIgnore] [JsonIgnore]
public VisitTask NewReReadingTask { get; set; } public VisitTask NewReReadingTask { get; set; }
@ -18,7 +18,7 @@ public class VisitTaskReReading : BaseFullAuditEntity
[JsonIgnore] [JsonIgnore]
public VisitTask OriginalReReadingTask { get; set; } public VisitTask OriginalReReadingTask { get; set; }
[JsonIgnore] [JsonIgnore]
public User RequestReReadingConfirmUser { get; set; } public UserRole RequestReReadingConfirmUser { get; set; }
[JsonIgnore] [JsonIgnore]
public Trial Trial { get; set; } public Trial Trial { get; set; }

View File

@ -81,7 +81,7 @@ public abstract class BaseAddAuditEntity : Entity, IAuditAdd
[ForeignKey("CreateUserId")] [ForeignKey("CreateUserId")]
[JsonIgnore] [JsonIgnore]
public virtual User CreateUser { get; set; } public virtual UserRole CreateUserRole { get; set; }
} }
public abstract class BaseAddDeleteAuditEntity : Entity, IAuditAdd, ISoftDelete public abstract class BaseAddDeleteAuditEntity : Entity, IAuditAdd, ISoftDelete
@ -95,7 +95,7 @@ public abstract class BaseAddDeleteAuditEntity : Entity, IAuditAdd, ISoftDelete
[ForeignKey("CreateUserId")] [ForeignKey("CreateUserId")]
[JsonIgnore] [JsonIgnore]
public User CreateUser { get; set; } public UserRole CreateUserRole { get; set; }
} }
public abstract class BaseFullAuditEntity : Entity, IAuditUpdate, IAuditAdd public abstract class BaseFullAuditEntity : Entity, IAuditUpdate, IAuditAdd
@ -107,7 +107,7 @@ public abstract class BaseFullAuditEntity : Entity, IAuditUpdate, IAuditAdd
[ForeignKey("CreateUserId")] [ForeignKey("CreateUserId")]
[JsonIgnore] [JsonIgnore]
public User CreateUser { get; set; } public UserRole CreateUserRole { get; set; }
} }
public abstract class BaseFullDeleteAuditEntity : Entity, IAuditUpdate, IAuditAdd, ISoftDelete public abstract class BaseFullDeleteAuditEntity : Entity, IAuditUpdate, IAuditAdd, ISoftDelete
{ {
@ -121,7 +121,7 @@ public abstract class BaseFullDeleteAuditEntity : Entity, IAuditUpdate, IAuditAd
[ForeignKey("CreateUserId")] [ForeignKey("CreateUserId")]
[JsonIgnore] [JsonIgnore]
public User CreateUser { get; set; } public UserRole CreateUserRole { get; set; }
} }
public abstract class BaseAuditUpdateEntity : Entity, IAuditUpdate public abstract class BaseAuditUpdateEntity : Entity, IAuditUpdate

View File

@ -39,7 +39,7 @@ public class Doctor : BaseFullAuditEntity
public List<DoctorCriterionFile> CriterionFileList { get; set; } public List<DoctorCriterionFile> CriterionFileList { get; set; }
[JsonIgnore] [JsonIgnore]
public User User { get; set; } public UserRole User { get; set; }
#endregion #endregion
public bool AcceptingNewTrial { get; set; } public bool AcceptingNewTrial { get; set; }

View File

@ -11,7 +11,7 @@ public class SystemDocConfirmedUser : BaseAddDeleteAuditEntity
[JsonIgnore] [JsonIgnore]
[ForeignKey("ConfirmUserId")] [ForeignKey("ConfirmUserId")]
public User ConfirmUser { get; set; } public UserRole ConfirmUser { get; set; }
#endregion #endregion
public Guid SystemDocumentId { get; set; } public Guid SystemDocumentId { get; set; }

View File

@ -8,7 +8,7 @@ public class TrialDocConfirmedUser : BaseAddDeleteAuditEntity
[JsonIgnore] [JsonIgnore]
[ForeignKey("ConfirmUserId")] [ForeignKey("ConfirmUserId")]
public User User { get; set; } public UserRole User { get; set; }
[JsonIgnore] [JsonIgnore]
public TrialDocument TrialDocument { get; set; } public TrialDocument TrialDocument { get; set; }
#endregion #endregion

View File

@ -96,7 +96,7 @@ public class TrialEmailBlackUser : Entity
public TrialEmailNoticeConfig TrialEmailNoticeConfig { get; set; } public TrialEmailNoticeConfig TrialEmailNoticeConfig { get; set; }
[JsonIgnore] [JsonIgnore]
public User User { get; set; } public UserRole User { get; set; }
public Guid TrialEmailNoticeConfigId { get; set; } public Guid TrialEmailNoticeConfigId { get; set; }
public Guid UserId { get; set; } public Guid UserId { get; set; }
} }

View File

@ -0,0 +1,151 @@
using EntityFrameworkCore.Projectables;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Domain.Share;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Domain.Management
{
[Comment("课题组")]
public class HospitalGroup : BaseFullAuditEntity
{
public string Name { get; set; }
public string Code { get; set; }
[Comment("所属科室")]
public string Affiliation { get; set; }
public string ContactName { get; set; }
public string ContactPhone { get; set; }
}
[Comment("用户课题组中间关系表")]
public class HospitalGroupIdentityUser : BaseFullAuditEntity
{
public Guid HospitalGroupId { get; set; }
public Guid IdentityUserId { get; set; }
public bool IsManager { get; set; }
}
[Comment("后台 - 系统真实账户表")]
[Table("IdentityUser")]
public class IdentityUser : BaseFullAuditEntity
{
[JsonIgnore]
public List<TrialIdentityUser> UserTrialList { get; set; }
[JsonIgnore]
public List<UserRole> UserRoleList { get; set; } = new List<UserRole>();
[Projectable]
public string FullName => LastName + " / " + FirstName;
#region 用户信息
public int Code { get; set; }
public string UserCode { get; set; }
public string UserName { get; set; }
public string EMail { get; set; }
[StringLength(1000)]
public string EmailToken { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Password { get; set; }
public bool PasswordChanged { get; set; }
public string Phone { get; set; }
public int? Sex { get; set; }
public UserStateEnum Status { get; set; } = UserStateEnum.Enable;
public string OrganizationName { get; set; }
public string PositionName { get; set; }
[Comment("这个字段废除,放在用户角色上面,后续删除")]
public bool AutoCutNextTask { get; set; }
public string DepartmentName { get; set; }
[Comment("首次登录需要修改密码")]
public bool IsFirstAdd { get; set; } = true;
public bool IsTestUser { get; set; }
[Comment("内部用户 外部用户")]
public bool IsZhiZhun { get; set; }
[Comment("上一次修改密码的时间")]
public DateTime? LastChangePassWordTime { get; set; }
public string LastLoginIP { get; set; }
public DateTime? LastLoginTime { get; set; }
#endregion
#region HIR
public string CheckCode { get; set; } = string.Empty;
//目前是tj医院
public string ThirdUserCode { get; set; } = string.Empty;
#endregion
}
[Comment("项目用户表")]
[Table("TrialIdentityUser")]
public class TrialIdentityUser : BaseFullDeleteAuditEntity
{
#region 导航属性
[JsonIgnore]
public Trial Trial { get; set; }
[JsonIgnore]
[ForeignKey("IdentityUserId")]
public IdentityUser IdentityUser { get; set; }
[JsonIgnore]
public List<TrialUserRole> TrialUserRoleList { get; set; }
#endregion
public Guid TrialId { get; set; }
public Guid IdentityUserId { get; set; }
public DateTime? RemoveTime { get; set; }
public DateTime? JoinTime { get; set; }
}
}

View File

@ -37,7 +37,7 @@ public class SystemNotice : BaseFullAuditEntity
public Guid? PublishedUserId { get; set; } public Guid? PublishedUserId { get; set; }
public User PublishedUser { get; set; } public UserRole PublishedUser { get; set; }
public DateTime? PublishedTime { get; set; } public DateTime? PublishedTime { get; set; }

View File

@ -5,7 +5,7 @@ namespace IRaCIS.Core.Domain.Models;
[Comment("后台 - 系统账户")] [Comment("后台 - 系统账户")]
[Table("User")] [Table("User")]
public class User : BaseFullAuditEntity public class UserRole : BaseFullAuditEntity
{ {
#region 导航属性 #region 导航属性
@ -16,7 +16,7 @@ public class User : BaseFullAuditEntity
public List<SystemDocConfirmedUser> SystemDocConfirmedList { get; set; } public List<SystemDocConfirmedUser> SystemDocConfirmedList { get; set; }
[JsonIgnore] [JsonIgnore]
public List<TrialUser> UserTrials { get; set; } = new List<TrialUser>(); public List<TrialUserRole> UserTrials { get; set; } = new List<TrialUserRole>();
[JsonIgnore] [JsonIgnore]
public List<VisitTask> VisitTaskList { get; set; } public List<VisitTask> VisitTaskList { get; set; }
@ -86,6 +86,9 @@ public class User : BaseFullAuditEntity
public Guid UserTypeId { get; set; } public Guid UserTypeId { get; set; }
public Guid IdentityUserId { get; set; }
#region HIR #region HIR
public string CheckCode { get; set; } = string.Empty; public string CheckCode { get; set; } = string.Empty;

View File

@ -1,3 +1,4 @@
using IRaCIS.Core.Domain.Management;
using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Domain.Models; namespace IRaCIS.Core.Domain.Models;
@ -8,20 +9,59 @@ public class UserLog : BaseAddAuditEntity
{ {
#region 导航属性 #region 导航属性
[JsonIgnore] [JsonIgnore]
public User LoginUser { get; set; } public IdentityUser TargetIdentityUser { get; set; }
[JsonIgnore] [JsonIgnore]
public User OptUser { get; set; } public IdentityUser ActionIdentityUser { get; set; }
#endregion
public string IP { get; set; } = string.Empty; #endregion
public string LoginFaildName { get; set; } = string.Empty;
public UserOptType OptType { get; set; }
public string LoginPassword { get; set; } = string.Empty; public string IP { get; set; } = string.Empty;
public Guid? LoginUserId { get; set; } public UserOptType OptType { get; set; }
public string LoginPassword { get; set; } = string.Empty;
[Comment("被操作的人,自己操作的就是自己")]
public Guid? OptUserId { get; set; }
public string IPRegion { get; set; } = string.Empty; public string IPRegion { get; set; } = string.Empty;
#region 账号修改 维护
public Guid? ActionIdentityUserId { get; set; }
public string ActionUserName { get; set; }
public string ActionUserType { get; set; }
[MaxLength]
public string JsonObj { get; set; }
[Comment("被操作的对象 admin 修改张三信息 张三是被操作对象")]
public Guid? TargetIdentityUserId { get; set; }
[Comment("异地登录")]
public bool IsLoginUncommonly { get; set; }
[Comment("是否忽略异地登录")]
public bool IsIgnoreUncommonly { get; set; }
#endregion
#region 后续删除
public string LoginFaildName { get; set; } = string.Empty;
[Comment("后续删除")]
public Guid? LoginUserId { get; set; }
[Comment("被操作的人,自己操作的就是自己--后续删除")]
public Guid? OptUserId { get; set; }
#endregion
} }

View File

@ -13,4 +13,6 @@ public class UserPassWordLog : BaseAddAuditEntity
[Comment("密码")] [Comment("密码")]
public string PassWord { get; set; } = string.Empty; public string PassWord { get; set; } = string.Empty;
public Guid IdentityUserId { get; set; }
} }

View File

@ -15,7 +15,7 @@ public class UserType : Entity
public List<SystemDocNeedConfirmedUserType> SystemDocNeedConfirmedUserTypeList { get; set; } public List<SystemDocNeedConfirmedUserType> SystemDocNeedConfirmedUserTypeList { get; set; }
[JsonIgnore] [JsonIgnore]
public List<User> UserList { get; set; } public List<UserRole> UserList { get; set; }
#endregion #endregion
public UserTypeEnum UserTypeEnum { get; set; } public UserTypeEnum UserTypeEnum { get; set; }

View File

@ -10,7 +10,7 @@ public class QCChallenge : BaseAddAuditEntity
#region 导航属性 #region 导航属性
[JsonIgnore] [JsonIgnore]
[ForeignKey("LatestReplyUserId")] [ForeignKey("LatestReplyUserId")]
public User LatestReplyUser { get; set; } public UserRole LatestReplyUser { get; set; }
[JsonIgnore] [JsonIgnore]
[Comment("导航属性")] [Comment("导航属性")]
[ForeignKey("SubjectVisitId")] [ForeignKey("SubjectVisitId")]

View File

@ -17,9 +17,9 @@ public class TrialSiteSurvey : BaseFullDeleteAuditEntity
[JsonIgnore] [JsonIgnore]
public Trial Trial { get; set; } public Trial Trial { get; set; }
[JsonIgnore] [JsonIgnore]
public User ReviewerUser { get; set; } public UserRole ReviewerUser { get; set; }
[JsonIgnore] [JsonIgnore]
public User PreliminaryUser { get; set; } public UserRole PreliminaryUser { get; set; }
#endregion #endregion
public Guid TrialSiteId { get; set; } public Guid TrialSiteId { get; set; }

View File

@ -13,7 +13,7 @@ public partial class Enroll : BaseFullAuditEntity
[JsonIgnore] [JsonIgnore]
public virtual Doctor Doctor { get; set; } public virtual Doctor Doctor { get; set; }
[JsonIgnore] [JsonIgnore]
public User DoctorUser { get; set; } public UserRole DoctorUser { get; set; }
[JsonIgnore] [JsonIgnore]
public List<EnrollReadingCategory> EnrollReadingCategoryList { get; set; } public List<EnrollReadingCategory> EnrollReadingCategoryList { get; set; }

View File

@ -38,7 +38,7 @@ public partial class Trial : BaseFullDeleteAuditEntity
[JsonIgnore] [JsonIgnore]
public List<Workload> WorkloadList { get; set; } = new List<Workload>(); public List<Workload> WorkloadList { get; set; } = new List<Workload>();
[JsonIgnore] [JsonIgnore]
public List<TrialUser> TrialUserList { get; set; } = new List<TrialUser>(); public List<TrialUserRole> TrialUserList { get; set; } = new List<TrialUserRole>();
[JsonIgnore] [JsonIgnore]
public List<ReadingQuestionCriterionTrial> TrialReadingCriterionList { get; set; } = new List<ReadingQuestionCriterionTrial>(); public List<ReadingQuestionCriterionTrial> TrialReadingCriterionList { get; set; } = new List<ReadingQuestionCriterionTrial>();
[JsonIgnore] [JsonIgnore]
@ -213,7 +213,7 @@ public partial class Trial : BaseFullDeleteAuditEntity
public bool IsTrialStart { get; set; } = false; public bool IsTrialStart { get; set; } = false;
[Comment("QC 问题流程")] [Comment("QC 问题流程")]
public User QCQuestionConfirmedUser { get; set; } public UserRole QCQuestionConfirmedUser { get; set; }
public Guid? QCQuestionConfirmedUserId { get; set; } public Guid? QCQuestionConfirmedUserId { get; set; }
public DateTime? QCQuestionConfirmedTime { get; set; } public DateTime? QCQuestionConfirmedTime { get; set; }

View File

@ -8,7 +8,7 @@ public class TrialSiteUser : BaseFullDeleteAuditEntity
#region 导航属性 #region 导航属性
[JsonIgnore] [JsonIgnore]
[ForeignKey("UserId")] [ForeignKey("UserId")]
public User User { get; set; } public UserRole User { get; set; }
[JsonIgnore] [JsonIgnore]
[ForeignKey("TrialId")] [ForeignKey("TrialId")]
public Trial Trial { get; set; } public Trial Trial { get; set; }

View File

@ -1,9 +1,11 @@
using IRaCIS.Core.Domain.Management;
namespace IRaCIS.Core.Domain.Models; namespace IRaCIS.Core.Domain.Models;
[Comment("运维人员与项目关联关系表 - 实体")] [Comment("运维人员与项目关联关系表 - 实体")]
[Table("TrialUser")] [Table("TrialUser")]
public class TrialUser : BaseFullDeleteAuditEntity public class TrialUserRole : BaseFullDeleteAuditEntity
{ {
#region 导航属性 #region 导航属性
[JsonIgnore] [JsonIgnore]
@ -11,13 +13,25 @@ public class TrialUser : BaseFullDeleteAuditEntity
[JsonIgnore] [JsonIgnore]
[ForeignKey("UserId")] [ForeignKey("UserId")]
public User User { get; set; } public UserRole UserRole { get; set; }
[JsonIgnore]
[ForeignKey("TrialUserId")]
public TrialIdentityUser TrialUser { get; set; }
#endregion #endregion
[Comment("这里实际是UserRoleId")]
public Guid UserId { get; set; } public Guid UserId { get; set; }
public Guid TrialId { get; set; } public Guid TrialId { get; set; }
public DateTime? RemoveTime { get; set; } public DateTime? RemoveTime { get; set; }
public DateTime? JoinTime { get; set; } public DateTime? JoinTime { get; set; }
public Guid TrialUserId { get; set; }
} }

View File

@ -16,28 +16,28 @@ public class SubjectVisit : BaseFullDeleteAuditEntity
[ForeignKey("OutPlanPreviousVisitId")] [ForeignKey("OutPlanPreviousVisitId")]
public SubjectVisit OutPlanPreviousVisit { get; set; } public SubjectVisit OutPlanPreviousVisit { get; set; }
[ForeignKey("ForwardUserId")] [ForeignKey("ForwardUserId")]
public User ForwardUser { get; set; } public UserRole ForwardUser { get; set; }
/// <summary> /// <summary>
/// 初审 /// 初审
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[ForeignKey("PreliminaryAuditUserId")] [ForeignKey("PreliminaryAuditUserId")]
public User PreliminaryAuditUser { get; set; } public UserRole PreliminaryAuditUser { get; set; }
/// <summary> /// <summary>
/// 复审 /// 复审
/// </summary> /// </summary>
[JsonIgnore] [JsonIgnore]
[ForeignKey("ReviewAuditUserId")] [ForeignKey("ReviewAuditUserId")]
public User ReviewAuditUser { get; set; } public UserRole ReviewAuditUser { get; set; }
[JsonIgnore] [JsonIgnore]
[ForeignKey("CurrentActionUserId")] [ForeignKey("CurrentActionUserId")]
public User CurrentActionUser { get; set; } public UserRole CurrentActionUser { get; set; }
[JsonIgnore] [JsonIgnore]
[ForeignKey("SubmitUserId")] [ForeignKey("SubmitUserId")]
public User SubmitUser { get; set; } public UserRole SubmitUser { get; set; }
[JsonIgnore] [JsonIgnore]
[ForeignKey("TrialId")] [ForeignKey("TrialId")]
public Trial Trial { get; set; } public Trial Trial { get; set; }

View File

@ -61,7 +61,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{ {
return new List<Type>() return new List<Type>()
{ {
typeof(TrialUser), typeof(TrialUserRole),
typeof(TrialSiteSurvey), typeof(TrialSiteSurvey),
typeof(TrialSiteUser), typeof(TrialSiteUser),
typeof(VisitStage), typeof(VisitStage),
@ -1776,13 +1776,13 @@ namespace IRaCIS.Core.Infra.EFCore.Common
// 项目人员 // 项目人员
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(TrialUser))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(TrialUserRole)))
{ {
var type = GetEntityAuditOpt(item); var type = GetEntityAuditOpt(item);
var entity = item.Entity as TrialUser; var entity = item.Entity as TrialUserRole;
//var user = await _dbContext.Users.Include(x => x.UserTypeRole).FirstOrDefaultAsync(x => x.Id == entity.UserId); //var user = await _dbContext.Users.Include(x => x.UserTypeRole).FirstOrDefaultAsync(x => x.Id == entity.UserId);
await InsertInspection<TrialUser>(entity, type, x => new InspectionConvertDTO await InsertInspection<TrialUserRole>(entity, type, x => new InspectionConvertDTO
{ {
IsDistinctionInterface = type == AuditOpt.Update ? true : false, IsDistinctionInterface = type == AuditOpt.Update ? true : false,
TrialId = x.TrialId, TrialId = x.TrialId,
@ -2688,11 +2688,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common
#region 阅片 #region 阅片
//用户添加 //用户添加
foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(User))) foreach (var item in entitys.Where(x => x.Entity.GetType() == typeof(UserRole)))
{ {
var type = GetEntityAuditOpt(item); var type = GetEntityAuditOpt(item);
var entity = item.Entity as User; var entity = item.Entity as UserRole;
var extraIdentification = string.Empty; var extraIdentification = string.Empty;
@ -2702,7 +2702,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
extraIdentification = "/Personalization"; extraIdentification = "/Personalization";
} }
await InsertInspection<User>(entity, type, x => new InspectionConvertDTO() await InsertInspection<UserRole>(entity, type, x => new InspectionConvertDTO()
{ {
IsDistinctionInterface = false, IsDistinctionInterface = false,
ExtraIndentification = extraIdentification ExtraIndentification = extraIdentification

View File

@ -1,4 +1,5 @@
using IRaCIS.Core.Domain.BaseModel; using IRaCIS.Core.Domain.BaseModel;
using IRaCIS.Core.Domain.Management;
using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infra.EFCore.Common;
using IRaCIS.Core.Infrastructure.Encryption; using IRaCIS.Core.Infrastructure.Encryption;
@ -373,7 +374,7 @@ public class IRaCISDBContext : DbContext
public virtual DbSet<VerificationCode> VerificationCodes { get; set; } public virtual DbSet<VerificationCode> VerificationCodes { get; set; }
public virtual DbSet<Menu> MenuFunctions { get; set; } public virtual DbSet<Menu> MenuFunctions { get; set; }
public virtual DbSet<UserTypeMenu> UserTypeMenuFunction { get; set; } public virtual DbSet<UserTypeMenu> UserTypeMenuFunction { get; set; }
public virtual DbSet<User> Users { get; set; } public virtual DbSet<UserRole> Users { get; set; }
public virtual DbSet<UserType> UserType { get; set; } public virtual DbSet<UserType> UserType { get; set; }
@ -396,7 +397,7 @@ public class IRaCISDBContext : DbContext
public virtual DbSet<TrialDictionary> TrialDictionary { get; set; } public virtual DbSet<TrialDictionary> TrialDictionary { get; set; }
public virtual DbSet<TrialStatusDetail> TrialDetail { get; set; } public virtual DbSet<TrialStatusDetail> TrialDetail { get; set; }
public virtual DbSet<TrialUser> UserTrial { get; set; } public virtual DbSet<TrialUserRole> UserTrial { get; set; }
public virtual DbSet<TrialDictionary> ProjectDictionary { get; set; } public virtual DbSet<TrialDictionary> ProjectDictionary { get; set; }
@ -405,7 +406,7 @@ public class IRaCISDBContext : DbContext
public virtual DbSet<Site> Site { get; set; } public virtual DbSet<Site> Site { get; set; }
public virtual DbSet<User> User { get; set; } public virtual DbSet<UserRole> User { get; set; }
public virtual DbSet<UserPassWordLog> UserPassWordLog { get; set; } public virtual DbSet<UserPassWordLog> UserPassWordLog { get; set; }
@ -593,6 +594,13 @@ public class IRaCISDBContext : DbContext
public virtual DbSet<HIRHospital> HIRHospital { get; set; } public virtual DbSet<HIRHospital> HIRHospital { get; set; }
public virtual DbSet<IdentityUser> IdentityUser { get; set; }
public virtual DbSet<HospitalGroup> HospitalGroup { get; set; }
public virtual DbSet<HospitalGroupIdentityUser> HospitalGroupIdentityUser { get; set; }
public virtual DbSet<TrialIdentityUser> TrialIdentityUser { get; set; }
} }
public class TestLength : Entity public class TestLength : Entity

View File

@ -44,9 +44,9 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
} }
} }
public class UserConfigration : IEntityTypeConfiguration<User> public class UserConfigration : IEntityTypeConfiguration<UserRole>
{ {
public void Configure(EntityTypeBuilder<User> builder) public void Configure(EntityTypeBuilder<UserRole> builder)
{ {
//User 和VisitTask 存在一对多的关系 这里不显式配置就报错why? //User 和VisitTask 存在一对多的关系 这里不显式配置就报错why?
builder.HasMany(t => t.VisitTaskList).WithOne(t => t.DoctorUser).HasForeignKey(t => t.DoctorUserId); builder.HasMany(t => t.VisitTaskList).WithOne(t => t.DoctorUser).HasForeignKey(t => t.DoctorUserId);
@ -75,13 +75,13 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration
} }
} }
public class TrialUserConfigration : IEntityTypeConfiguration<TrialUser> public class TrialUserConfigration : IEntityTypeConfiguration<TrialUserRole>
{ {
//当一个实体,针对同一个类,有两个一对一导航属性,但是是不同的外键,一个外键是一对一,一个是一对多,那么需要显示配置一对多的关系 //当一个实体,针对同一个类,有两个一对一导航属性,但是是不同的外键,一个外键是一对一,一个是一对多,那么需要显示配置一对多的关系
public void Configure(EntityTypeBuilder<TrialUser> builder) public void Configure(EntityTypeBuilder<TrialUserRole> builder)
{ {
//TrialUser 和User 之间 一对多 (一个用户可以参与多个项目) //TrialUser 和User 之间 一对多 (一个用户可以参与多个项目)
builder.HasOne(s => s.User) builder.HasOne(s => s.UserRole)
.WithMany(t => t.UserTrials) .WithMany(t => t.UserTrials)
.HasForeignKey(s => s.UserId); .HasForeignKey(s => s.UserId);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,495 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace IRaCIS.Core.Infra.EFCore.Migrations
{
/// <inheritdoc />
public partial class hirUserModify : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_UserLog_User_LoginUserId",
table: "UserLog");
migrationBuilder.DropForeignKey(
name: "FK_UserLog_User_OptUserId",
table: "UserLog");
migrationBuilder.DropIndex(
name: "IX_UserLog_LoginUserId",
table: "UserLog");
migrationBuilder.DropIndex(
name: "IX_UserLog_OptUserId",
table: "UserLog");
migrationBuilder.AddColumn<Guid>(
name: "IdentityUserId",
table: "UserPassWordLog",
type: "uniqueidentifier",
nullable: false,
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"));
migrationBuilder.AlterColumn<Guid>(
name: "OptUserId",
table: "UserLog",
type: "uniqueidentifier",
nullable: true,
comment: "被操作的人,自己操作的就是自己--后续删除",
oldClrType: typeof(Guid),
oldType: "uniqueidentifier",
oldNullable: true,
oldComment: "被操作的人,自己操作的就是自己");
migrationBuilder.AlterColumn<Guid>(
name: "LoginUserId",
table: "UserLog",
type: "uniqueidentifier",
nullable: true,
comment: "后续删除",
oldClrType: typeof(Guid),
oldType: "uniqueidentifier",
oldNullable: true);
migrationBuilder.AddColumn<Guid>(
name: "ActionIdentityUserId",
table: "UserLog",
type: "uniqueidentifier",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "ActionUserName",
table: "UserLog",
type: "nvarchar(400)",
maxLength: 400,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<string>(
name: "ActionUserType",
table: "UserLog",
type: "nvarchar(400)",
maxLength: 400,
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<bool>(
name: "IsIgnoreUncommonly",
table: "UserLog",
type: "bit",
nullable: false,
defaultValue: false,
comment: "是否忽略异地登录");
migrationBuilder.AddColumn<bool>(
name: "IsLoginUncommonly",
table: "UserLog",
type: "bit",
nullable: false,
defaultValue: false,
comment: "异地登录");
migrationBuilder.AddColumn<string>(
name: "JsonObj",
table: "UserLog",
type: "nvarchar(max)",
nullable: false,
defaultValue: "");
migrationBuilder.AddColumn<Guid>(
name: "TargetIdentityUserId",
table: "UserLog",
type: "uniqueidentifier",
nullable: true,
comment: "被操作的对象 admin 修改张三信息 张三是被操作对象");
migrationBuilder.AddColumn<Guid>(
name: "IdentityUserId",
table: "User",
type: "uniqueidentifier",
nullable: false,
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"));
migrationBuilder.AlterColumn<Guid>(
name: "UserId",
table: "TrialUser",
type: "uniqueidentifier",
nullable: false,
comment: "这里实际是UserRoleId",
oldClrType: typeof(Guid),
oldType: "uniqueidentifier");
migrationBuilder.AddColumn<Guid>(
name: "TrialUserId",
table: "TrialUser",
type: "uniqueidentifier",
nullable: false,
defaultValue: new Guid("00000000-0000-0000-0000-000000000000"));
migrationBuilder.CreateTable(
name: "HospitalGroup",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Name = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
Code = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
Affiliation = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false, comment: "所属科室"),
ContactName = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
ContactPhone = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
UpdateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
UpdateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_HospitalGroup", x => x.Id);
table.ForeignKey(
name: "FK_HospitalGroup_User_CreateUserId",
column: x => x.CreateUserId,
principalTable: "User",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
},
comment: "课题组");
migrationBuilder.CreateTable(
name: "HospitalGroupIdentityUser",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
HospitalGroupId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
IdentityUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
IsManager = table.Column<bool>(type: "bit", nullable: false),
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
UpdateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
UpdateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_HospitalGroupIdentityUser", x => x.Id);
table.ForeignKey(
name: "FK_HospitalGroupIdentityUser_User_CreateUserId",
column: x => x.CreateUserId,
principalTable: "User",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
},
comment: "用户课题组中间关系表");
migrationBuilder.CreateTable(
name: "IdentityUser",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
Code = table.Column<int>(type: "int", nullable: false),
UserCode = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
UserName = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
EMail = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
EmailToken = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: false),
FirstName = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
LastName = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
Password = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
PasswordChanged = table.Column<bool>(type: "bit", nullable: false),
Phone = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
Sex = table.Column<int>(type: "int", nullable: true),
Status = table.Column<int>(type: "int", nullable: false),
OrganizationName = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
PositionName = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
AutoCutNextTask = table.Column<bool>(type: "bit", nullable: false, comment: "这个字段废除,放在用户角色上面,后续删除"),
DepartmentName = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
IsFirstAdd = table.Column<bool>(type: "bit", nullable: false, comment: "首次登录需要修改密码"),
IsTestUser = table.Column<bool>(type: "bit", nullable: false),
IsZhiZhun = table.Column<bool>(type: "bit", nullable: false, comment: "内部用户 外部用户"),
LastChangePassWordTime = table.Column<DateTime>(type: "datetime2", nullable: true, comment: "上一次修改密码的时间"),
LastLoginIP = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
LastLoginTime = table.Column<DateTime>(type: "datetime2", nullable: true),
CheckCode = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
ThirdUserCode = table.Column<string>(type: "nvarchar(400)", maxLength: 400, nullable: false),
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
UpdateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
UpdateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_IdentityUser", x => x.Id);
table.ForeignKey(
name: "FK_IdentityUser_User_CreateUserId",
column: x => x.CreateUserId,
principalTable: "User",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
},
comment: "后台 - 系统真实账户表");
migrationBuilder.CreateTable(
name: "TrialIdentityUser",
columns: table => new
{
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
TrialId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
IdentityUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
RemoveTime = table.Column<DateTime>(type: "datetime2", nullable: true),
JoinTime = table.Column<DateTime>(type: "datetime2", nullable: true),
DeleteUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
DeletedTime = table.Column<DateTime>(type: "datetime2", nullable: true),
CreateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
CreateTime = table.Column<DateTime>(type: "datetime2", nullable: false),
UpdateUserId = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
UpdateTime = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TrialIdentityUser", x => x.Id);
table.ForeignKey(
name: "FK_TrialIdentityUser_IdentityUser_IdentityUserId",
column: x => x.IdentityUserId,
principalTable: "IdentityUser",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TrialIdentityUser_Trial_TrialId",
column: x => x.TrialId,
principalTable: "Trial",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TrialIdentityUser_User_CreateUserId",
column: x => x.CreateUserId,
principalTable: "User",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
},
comment: "项目用户表");
migrationBuilder.CreateIndex(
name: "IX_UserLog_ActionIdentityUserId",
table: "UserLog",
column: "ActionIdentityUserId");
migrationBuilder.CreateIndex(
name: "IX_UserLog_TargetIdentityUserId",
table: "UserLog",
column: "TargetIdentityUserId");
migrationBuilder.CreateIndex(
name: "IX_User_IdentityUserId",
table: "User",
column: "IdentityUserId");
migrationBuilder.CreateIndex(
name: "IX_TrialUser_TrialUserId",
table: "TrialUser",
column: "TrialUserId");
migrationBuilder.CreateIndex(
name: "IX_HospitalGroup_CreateUserId",
table: "HospitalGroup",
column: "CreateUserId");
migrationBuilder.CreateIndex(
name: "IX_HospitalGroupIdentityUser_CreateUserId",
table: "HospitalGroupIdentityUser",
column: "CreateUserId");
migrationBuilder.CreateIndex(
name: "IX_IdentityUser_CreateUserId",
table: "IdentityUser",
column: "CreateUserId");
migrationBuilder.CreateIndex(
name: "IX_TrialIdentityUser_CreateUserId",
table: "TrialIdentityUser",
column: "CreateUserId");
migrationBuilder.CreateIndex(
name: "IX_TrialIdentityUser_IdentityUserId",
table: "TrialIdentityUser",
column: "IdentityUserId");
migrationBuilder.CreateIndex(
name: "IX_TrialIdentityUser_TrialId",
table: "TrialIdentityUser",
column: "TrialId");
migrationBuilder.AddForeignKey(
name: "FK_TrialUser_TrialIdentityUser_TrialUserId",
table: "TrialUser",
column: "TrialUserId",
principalTable: "TrialIdentityUser",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_User_IdentityUser_IdentityUserId",
table: "User",
column: "IdentityUserId",
principalTable: "IdentityUser",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_UserLog_IdentityUser_ActionIdentityUserId",
table: "UserLog",
column: "ActionIdentityUserId",
principalTable: "IdentityUser",
principalColumn: "Id");
migrationBuilder.AddForeignKey(
name: "FK_UserLog_IdentityUser_TargetIdentityUserId",
table: "UserLog",
column: "TargetIdentityUserId",
principalTable: "IdentityUser",
principalColumn: "Id");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_TrialUser_TrialIdentityUser_TrialUserId",
table: "TrialUser");
migrationBuilder.DropForeignKey(
name: "FK_User_IdentityUser_IdentityUserId",
table: "User");
migrationBuilder.DropForeignKey(
name: "FK_UserLog_IdentityUser_ActionIdentityUserId",
table: "UserLog");
migrationBuilder.DropForeignKey(
name: "FK_UserLog_IdentityUser_TargetIdentityUserId",
table: "UserLog");
migrationBuilder.DropTable(
name: "HospitalGroup");
migrationBuilder.DropTable(
name: "HospitalGroupIdentityUser");
migrationBuilder.DropTable(
name: "TrialIdentityUser");
migrationBuilder.DropTable(
name: "IdentityUser");
migrationBuilder.DropIndex(
name: "IX_UserLog_ActionIdentityUserId",
table: "UserLog");
migrationBuilder.DropIndex(
name: "IX_UserLog_TargetIdentityUserId",
table: "UserLog");
migrationBuilder.DropIndex(
name: "IX_User_IdentityUserId",
table: "User");
migrationBuilder.DropIndex(
name: "IX_TrialUser_TrialUserId",
table: "TrialUser");
migrationBuilder.DropColumn(
name: "IdentityUserId",
table: "UserPassWordLog");
migrationBuilder.DropColumn(
name: "ActionIdentityUserId",
table: "UserLog");
migrationBuilder.DropColumn(
name: "ActionUserName",
table: "UserLog");
migrationBuilder.DropColumn(
name: "ActionUserType",
table: "UserLog");
migrationBuilder.DropColumn(
name: "IsIgnoreUncommonly",
table: "UserLog");
migrationBuilder.DropColumn(
name: "IsLoginUncommonly",
table: "UserLog");
migrationBuilder.DropColumn(
name: "JsonObj",
table: "UserLog");
migrationBuilder.DropColumn(
name: "TargetIdentityUserId",
table: "UserLog");
migrationBuilder.DropColumn(
name: "IdentityUserId",
table: "User");
migrationBuilder.DropColumn(
name: "TrialUserId",
table: "TrialUser");
migrationBuilder.AlterColumn<Guid>(
name: "OptUserId",
table: "UserLog",
type: "uniqueidentifier",
nullable: true,
comment: "被操作的人,自己操作的就是自己",
oldClrType: typeof(Guid),
oldType: "uniqueidentifier",
oldNullable: true,
oldComment: "被操作的人,自己操作的就是自己--后续删除");
migrationBuilder.AlterColumn<Guid>(
name: "LoginUserId",
table: "UserLog",
type: "uniqueidentifier",
nullable: true,
oldClrType: typeof(Guid),
oldType: "uniqueidentifier",
oldNullable: true,
oldComment: "后续删除");
migrationBuilder.AlterColumn<Guid>(
name: "UserId",
table: "TrialUser",
type: "uniqueidentifier",
nullable: false,
oldClrType: typeof(Guid),
oldType: "uniqueidentifier",
oldComment: "这里实际是UserRoleId");
migrationBuilder.CreateIndex(
name: "IX_UserLog_LoginUserId",
table: "UserLog",
column: "LoginUserId");
migrationBuilder.CreateIndex(
name: "IX_UserLog_OptUserId",
table: "UserLog",
column: "OptUserId");
migrationBuilder.AddForeignKey(
name: "FK_UserLog_User_LoginUserId",
table: "UserLog",
column: "LoginUserId",
principalTable: "User",
principalColumn: "Id");
migrationBuilder.AddForeignKey(
name: "FK_UserLog_User_OptUserId",
table: "UserLog",
column: "OptUserId",
principalTable: "User",
principalColumn: "Id");
}
}
}