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 编码是否有问题 ,前端要拆开,自己调用验证的逻辑
//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);
@ -502,7 +502,7 @@ namespace IRaCIS.Api.Controllers
[HttpGet("User/UserRedirect")]
[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);
@ -518,7 +518,7 @@ namespace IRaCIS.Api.Controllers
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")} ";
}

View File

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

View File

@ -116,7 +116,7 @@
分配规则
</summary>
</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>
@ -147,7 +147,7 @@
一致性分析配置表
</summary>
</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>
@ -237,7 +237,7 @@
医学审核生成规则 废弃
</summary>
</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>
@ -247,7 +247,7 @@
任务医学审核
</summary>
</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>
@ -700,7 +700,7 @@
<param name="eventId"></param>
<returns></returns>
</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>
@ -708,7 +708,7 @@
<param name="_commonDocumentRepository"></param>
<param name="_dictionaryService"></param>
<param name="_trialRepository"></param>
<param name="_trialUseRepository"></param>
<param name="_trialUseRoleRepository"></param>
<returns></returns>
<exception cref="T:System.Exception"></exception>
</member>
@ -1326,7 +1326,7 @@
TrialEmailNoticeConfigService
</summary>
</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>
TrialEmailNoticeConfigService
</summary>
@ -1938,7 +1938,7 @@
FrontAuditConfigService
</summary>
</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>
FrontAuditConfigService
</summary>
@ -13391,7 +13391,7 @@
生成的阅片模块(在大列表上展示的) 阅片期
</summary>
</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>
@ -13486,7 +13486,7 @@
用户WL模板
</summary>
</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>
用户WL模板
</summary>
@ -13530,7 +13530,7 @@
Dashboard统计、全局工作量统计、入组两个维度统计按照项目、按照人
</summary>
</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>
Dashboard统计、全局工作量统计、入组两个维度统计按照项目、按照人
</summary>
@ -13643,7 +13643,7 @@
项目外部人员 录入流程相关
</summary>
</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>
@ -13868,7 +13868,7 @@
入组流程-CRO确定医生名单 [ Approve]
</summary>
</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>
入组流程-后台确认医生入组[Confirm]
</summary>
@ -13893,6 +13893,35 @@
<param name="_readingConsistentClinicalDataRepository"></param>
<returns></returns>
</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">
<summary>
维护临床数据 --一定要在同步表前同步数据才行
@ -14084,7 +14113,7 @@
加急的医学反馈任务 通知MIM
</summary>
</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>
加急的医学反馈任务 通知MIM
</summary>
@ -14102,7 +14131,7 @@
MIM 回复医学返回通知IR
</summary>
</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>
MIM 回复医学返回通知IR
</summary>
@ -14119,7 +14148,7 @@
加急阅片 IR 申请重阅 或者PM 申请重阅
</summary>
</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>
加急阅片 IR 申请重阅 或者PM 申请重阅
</summary>
@ -14129,7 +14158,7 @@
用户提交 发送邮件 通知SPM 或者PM
</summary>
</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>
用户提交 发送邮件 通知SPM 或者PM
</summary>
@ -14139,7 +14168,7 @@
调研表初审通过,进行复审发送邮件
</summary>
</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>
@ -14149,7 +14178,7 @@
调研表驳回发送邮件 之前已有,需要迁移过来
</summary>
</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>
@ -14159,7 +14188,7 @@
CRC 提交了 通知QC进行质控 Code005006
</summary>
</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>
CRC 提交了 通知QC进行质控 Code005006
</summary>
@ -14169,7 +14198,7 @@
CRC 回复质控质疑 通知QC Code012013
</summary>
</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>
CRC 回复质控质疑 通知QC Code012013
</summary>
@ -14179,7 +14208,7 @@
QC回复 质控质疑通知CRC (014015)
</summary>
</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>
QC回复 质控质疑通知CRC (014015)
</summary>
@ -14189,19 +14218,19 @@
CRC 回复一致性核查质疑 通知PM (019,020)
</summary>
</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>
CRC 回复一致性核查质疑 通知PM (019,020)
</summary>
</member>
<!-- 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">
<summary>
通知PM 进行一致性核查 (018,030)
</summary>
</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>
通知PM 进行一致性核查 (018,030)
</summary>
@ -14211,7 +14240,7 @@
QC 领取了质控任务 (007008)
</summary>
</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>
QC 领取了质控任务 (007008)
</summary>
@ -14222,22 +14251,22 @@
publish 请求流不会先到消费者,发布后,直接执行后续代码
</summary>
<param name="_userRepository"></param>
<param name="_userRoleRepository"></param>
</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>
meditor send 的时候,请求流会先到消费者,返回后才会执行后续代码
publish 请求流不会先到消费者,发布后,直接执行后续代码
</summary>
<param name="_userRepository"></param>
<param name="_userRoleRepository"></param>
</member>
<member name="T:IRaCIS.Core.Application.MassTransit.Consumer.QCImageQuestionRecurringEventConsumer">
<summary>
QC 影像质疑
</summary>
</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>
QC 影像质疑
</summary>
@ -14247,7 +14276,7 @@
CRC 影像质疑
</summary>
</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>
CRC 影像质疑
</summary>
@ -14257,7 +14286,7 @@
影像质控 发送给QC的
</summary>
</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>
影像质控 发送给QC的
</summary>
@ -14297,7 +14326,7 @@
10分钟检测通知IR 已通知的进行标注,下次不会再通知
</summary>
</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>
10分钟检测通知IR 已通知的进行标注,下次不会再通知
</summary>
@ -15755,7 +15784,7 @@
UserTypeRoleService
</summary>
</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>
UserTypeRoleService
</summary>
@ -16188,7 +16217,7 @@
TrialSiteSurveyService
</summary>
</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>
TrialSiteSurveyService
</summary>
@ -16287,7 +16316,7 @@
TrialSiteUserSurveyService
</summary>
</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>
TrialSiteUserSurveyService
</summary>
@ -16808,7 +16837,7 @@
SystemDocumentService
</summary>
</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>
SystemDocumentService
</summary>
@ -16831,7 +16860,7 @@
TrialDocumentService
</summary>
</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>
TrialDocumentService
</summary>
@ -18564,7 +18593,7 @@
<param name="inQuery"></param>
<returns></returns>
</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>

View File

@ -22,7 +22,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
/// 加急的医学反馈任务 通知MIM
/// </summary>
public class UrgentMedicalReviewAddedEventConsumer(
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<Trial> _trialRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
@ -58,7 +58,7 @@ public class UrgentMedicalReviewAddedEventConsumer(
return;
}
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();
@ -128,7 +128,7 @@ public class UrgentMedicalReviewAddedEventConsumer(
//IR 回复医学反馈通知MIM
public class UrgentIRRepliedMedicalReviewConsumer(
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<Trial> _trialRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
@ -159,7 +159,7 @@ public class UrgentIRRepliedMedicalReviewConsumer(
return;
}
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();
@ -231,7 +231,7 @@ public class UrgentIRRepliedMedicalReviewConsumer(
/// MIM 回复医学返回通知IR
/// </summary>
public class UrgentMIMRepliedMedicalReviewConsumer(
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<Trial> _trialRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
@ -268,7 +268,7 @@ public class UrgentMIMRepliedMedicalReviewConsumer(
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 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 申请重阅
/// </summary>
public class UrgentIRApplyedReReadingConsumer(
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<Trial> _trialRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
@ -370,9 +370,9 @@ public class UrgentIRApplyedReReadingConsumer(
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();
if (context.Message.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed)

View File

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

View File

@ -23,8 +23,8 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
/// CRC 提交了 通知QC进行质控 Code005006
/// </summary>
public class CRCSubmitedAndQCToAuditEventConsumer(
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository,
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 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();
@ -122,8 +122,8 @@ public class CRCSubmitedAndQCToAuditEventConsumer(
/// CRC 回复质控质疑 通知QC Code012013
/// </summary>
public class CRCRepliedQCChallengeEventConsumer(
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository,
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)
/// </summary>
public class QCRepliedQCChallengeEventConsumer(
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository,
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 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();
@ -328,8 +328,8 @@ public class QCRepliedQCChallengeEventConsumer(
/// CRC 回复一致性核查质疑 通知PM (019,020)
/// </summary>
public class CRCRepliedCheckChallengeEventConsumer(
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository,
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 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();
@ -420,8 +420,8 @@ public class CRCRepliedCheckChallengeEventConsumer(
/// </summary>
public class PMRepliedCheckChallengeEventConsumer(
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository,
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 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();
@ -519,8 +519,8 @@ public class PMRepliedCheckChallengeEventConsumer(
/// 通知PM 进行一致性核查 (018,030)
/// </summary>
public class CheckStateChangedToAuditEventConsumer(
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository,
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 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();
@ -607,8 +607,8 @@ public class CheckStateChangedToAuditEventConsumer(
/// QC 领取了质控任务 (007008)
/// </summary>
public class QCClaimTaskEventConsumer(
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository,
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 请求流不会先到消费者,发布后,直接执行后续代码
///
/// </summary>
/// <param name="_userRepository"></param>
public class MasstransitTestConsumer(IRepository<User> _userRepository) : IConsumer<MasstransiTestCommand>
/// <param name="_userRoleRepository"></param>
public class MasstransitTestConsumer(IRepository<UserRole> _userRoleRepository) : IConsumer<MasstransiTestCommand>
{
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($"MassTransit.Consumer :{context.Message.value}");

View File

@ -26,7 +26,7 @@ namespace IRaCIS.Core.Application.MassTransit.Recurring
IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<Dictionary> _dictionaryRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<EmailNoticeConfig> _emailNoticeConfigrepository,
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
{
t.UserId,
t.User.FullName,
t.User.EMail,
t.User.UserName,
t.UserRole.FullName,
t.UserRole.EMail,
t.UserRole.UserName,
t.Trial.TrialCode,
t.Trial.ResearchProgramNo
//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(
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<Trial> _trialRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository,
@ -59,7 +59,7 @@ public static class OldRecurringEmailHelper
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))

View File

@ -23,7 +23,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer;
public class QCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepository,
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository,
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();
//找到 该项目的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>
public class CRCImageQuestionRecurringEventConsumer(IRepository<Trial> _trialRepository,
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository,
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();
//找到 该项目的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>
public class ImageQCRecurringEventConsumer(IRepository<Trial> _trialRepository,
IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository,
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();
//找到 该项目的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();

View File

@ -18,7 +18,7 @@ namespace IRaCIS.Core.Application.Service
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
public class TaskAllocationRuleService(IRepository<TaskAllocationRule> _taskAllocationRuleRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<Enroll> _enrollRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<SubjectCanceDoctor> _subjectCanceDoctorRepository,
@ -124,7 +124,7 @@ namespace IRaCIS.Core.Application.Service
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)
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()
{
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 && 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()
{
TrialId = allocationRule.TrialId,

View File

@ -30,7 +30,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<Trial> _trialRepository,
IRepository<TrialSite> _trialSiteRepository,
IRepository<Enroll> _enrollRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialVirtualSiteCodeUpdate> _trialVirtualSiteCodeUpdateRepository,
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))
.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;
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
&& 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
select new TaskConsistentRuleView()
{

View File

@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
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)
.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 });
}

View File

@ -18,7 +18,7 @@ namespace IRaCIS.Core.Application.Service
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
public class TaskMedicalReviewService(IRepository<TaskMedicalReview> _taskMedicalReviewRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<VisitTask> _visitTaskRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITaskMedicalReviewService
{
@ -328,7 +328,7 @@ namespace IRaCIS.Core.Application.Service
[HttpGet("{trialId:guid}")]
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();
}

View File

@ -2921,7 +2921,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
{
// 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)))
{
@ -2964,7 +2964,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
//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))
{
@ -3083,7 +3083,7 @@ public class VisitTaskService(IRepository<VisitTask> _visitTaskRepository,
//PM 影响所有阅片人 仅仅针对访视 SPM CPM 调用
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))
{

View File

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

View File

@ -22,7 +22,7 @@ namespace IRaCIS.Core.Application.Service.Common
{
[ApiExplorerSettings(GroupName = "Common")]
public class ExcelExportService(IRepository<TrialUser> _trialUserRepository,
public class ExcelExportService(IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<SystemDocNeedConfirmedUserType> _systemDocNeedConfirmedUserTypeRepository,
@ -51,7 +51,7 @@ namespace IRaCIS.Core.Application.Service.Common
/// <param name="_commonDocumentRepository"></param>
/// <param name="_dictionaryService"></param>
/// <param name="_trialRepository"></param>
/// <param name="_trialUseRepository"></param>
/// <param name="_trialUseRoleRepository"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
[HttpPost]
@ -60,7 +60,7 @@ namespace IRaCIS.Core.Application.Service.Common
[FromServices] IRepository<CommonDocument> _commonDocumentRepository,
[FromServices] IDictionaryService _dictionaryService,
[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 list = await _trialUseRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters()
.WhereIf(param.UserTypeId != null, t => t.User.UserTypeId == param.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(param.UserName), t => t.User.UserName.Contains(param.UserName))
var list = await _trialUseRoleRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters()
.WhereIf(param.UserTypeId != null, t => t.UserRole.UserTypeId == param.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(param.UserName), t => t.UserRole.UserName.Contains(param.UserName))
.WhereIf(param.IsDeleted != null, t => t.IsDeleted == param.IsDeleted)
.WhereIf(!string.IsNullOrWhiteSpace(param.OrganizationName),
t => t.User.OrganizationName.Contains(param.OrganizationName))
t => t.UserRole.OrganizationName.Contains(param.OrganizationName))
.WhereIf(!string.IsNullOrWhiteSpace(param.UserRealName),
t => (t.User.FullName).Contains(param.UserRealName))
t => (t.UserRole.FullName).Contains(param.UserRealName))
.ProjectTo<TrialMaintenanceDTO>(_mapper.ConfigurationProvider).ToListAsync();
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(_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(!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()
{
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_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,
@ -347,8 +347,8 @@ namespace IRaCIS.Core.Application.Service.Common
var trialDocQuery = from trialDocumentNeedConfirmedUserType in _trialDocNeedConfirmedUserTypeRepository.Where(t => t.TrialDocument.TrialId == inQuery.TrialId)
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId)
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId)
on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId
.WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.UserRole.UserTypeId
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
@ -372,10 +372,10 @@ namespace IRaCIS.Core.Application.Service.Common
//ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName,
UserName = trialUser.User.UserName,
UserTypeId = trialUser.User.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName,
RealName = trialUser.UserRole.FullName,
UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
//FullFilePath = trialDocumentNeedConfirmedUserType.TrialDocument.Path
};
@ -386,7 +386,7 @@ namespace IRaCIS.Core.Application.Service.Common
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.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
from confirm in cc.DefaultIfEmpty()
select new TrainingRecordExportDTO()
@ -406,10 +406,10 @@ namespace IRaCIS.Core.Application.Service.Common
//ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName,
UserName = trialUser.User.UserName,
UserTypeId = trialUser.User.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName,
RealName = trialUser.UserRole.FullName,
UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
//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.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
.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(!string.IsNullOrWhiteSpace(inQuery.StudyCode), t => t.StudyCode.Contains(inQuery.StudyCode))
.Select(t => new UnionStudyMonitorExportDto()
@ -832,7 +832,7 @@ namespace IRaCIS.Core.Application.Service.Common
IsDicom = t.IsDicom,
Uploader = t.CreateUser.UserName,
Uploader = t.CreateUserRole.UserName,
IP = t.IP,
@ -1230,9 +1230,9 @@ namespace IRaCIS.Core.Application.Service.Common
var query = _trialImageDownloadRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.SubjectCode.Contains(inQuery.SubjectCode))
.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.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.DownloadStartTime != null, t => t.DownloadStartTime >= inQuery.DownloadStartTime)
.WhereIf(inQuery.DownloadEndTime != null, t => t.DownloadEndTime <= inQuery.DownloadEndTime)

View File

@ -42,7 +42,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<SystemBasicData> _systemBasicDatarepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSite> _trialSiteRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<UserFeedBack> _userFeedBackRepository,
ITokenService _tokenService,
IRepository<SubjectVisit> _subjectVisitRepository,
@ -338,7 +338,7 @@ namespace IRaCIS.Core.Application.Service
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();
@ -352,7 +352,7 @@ namespace IRaCIS.Core.Application.Service
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;
@ -388,7 +388,7 @@ namespace IRaCIS.Core.Application.Service
//管理员重置密码发送邮件
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();
//发件地址
@ -425,7 +425,7 @@ namespace IRaCIS.Core.Application.Service
//Site调研 用户加入项目
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);
@ -442,7 +442,7 @@ namespace IRaCIS.Core.Application.Service
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;
@ -486,7 +486,7 @@ namespace IRaCIS.Core.Application.Service
{
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();
@ -502,7 +502,7 @@ namespace IRaCIS.Core.Application.Service
var token = _tokenService.GetToken(IRaCISClaims.Create(_mapper.Map<UserBasicInfo>(sysUserInfo)));
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"));
@ -545,7 +545,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<Guid> DoctorJoinTrialEmail(Guid trialId, Guid doctorId, string baseUrl, string rootUrl)
{
var doctor = await _doctorTypeRepository.FindAsync(doctorId);
User sysUserInfo = new User();
UserRole sysUserInfo = new UserRole();
var userType = await _userTypeRepository.FirstAsync(t => t.UserTypeEnum == UserTypeEnum.IndependentReviewer);
@ -553,13 +553,13 @@ namespace IRaCIS.Core.Application.Service
using (await @lock.AcquireAsync())
{
var isDoctorHaveAccount = await _userRepository.AnyAsync(t => t.DoctorId == doctorId);
var isDoctorHaveAccount = await _userRoleRepository.AnyAsync(t => t.DoctorId == doctorId);
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();
@ -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;
@ -580,19 +580,19 @@ namespace IRaCIS.Core.Application.Service
saveItem.DoctorId = doctorId;
saveItem.UserTypeId = userType.Id;
var savedUser = await _userRepository.AddAsync(saveItem);
var savedUser = await _userRoleRepository.AddAsync(saveItem);
//下面获取Token 需要这部分信息
sysUserInfo = savedUser.Clone();
sysUserInfo.UserTypeRole = userType;
await _userRepository.SaveChangesAsync();
await _userRoleRepository.SaveChangesAsync();
}
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)
{
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;
@ -664,7 +664,7 @@ namespace IRaCIS.Core.Application.Service
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();
//发件地址
@ -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 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();
@ -709,8 +709,8 @@ namespace IRaCIS.Core.Application.Service
info.TrialCode,
info.SubejctCode,
info.VisitName,
feedBack.CreateUser.UserTypeRole.UserTypeShortName,
feedBack.CreateUser.FullName,
feedBack.CreateUserRole.UserTypeRole.UserTypeShortName,
feedBack.CreateUserRole.FullName,
emailType,
feedBack.QuestionDescription,
_systemEmailConfig.SiteUrl
@ -739,8 +739,8 @@ namespace IRaCIS.Core.Application.Service
info.TrialCode,
info.SubejctCode,
info.VisitName,
feedBack.CreateUser.UserTypeRole.UserTypeShortName,
feedBack.CreateUser.FullName,
feedBack.CreateUserRole.UserTypeRole.UserTypeShortName,
feedBack.CreateUserRole.FullName,
emailType,
feedBack.QuestionDescription,
_systemEmailConfig.SiteUrl
@ -768,8 +768,8 @@ namespace IRaCIS.Core.Application.Service
var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr),
userNames,
info.TrialCode,
feedBack.CreateUser.UserTypeRole.UserTypeShortName,
feedBack.CreateUser.FullName,
feedBack.CreateUserRole.UserTypeRole.UserTypeShortName,
feedBack.CreateUserRole.FullName,
emailType,
feedBack.QuestionDescription,
_systemEmailConfig.SiteUrl
@ -793,8 +793,8 @@ namespace IRaCIS.Core.Application.Service
var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr),
userNames,
feedBack.CreateUser.UserTypeRole.UserTypeShortName,
feedBack.CreateUser.FullName,
feedBack.CreateUserRole.UserTypeRole.UserTypeShortName,
feedBack.CreateUserRole.FullName,
feedBack.QuestionDescription,
_systemEmailConfig.SiteUrl
);

View File

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

View File

@ -93,7 +93,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<DoctorDTO, SelectionReviewerDTO>()
;
CreateMap<User, UserBasicInfo>()
CreateMap<UserRole, UserBasicInfo>()
.ForMember(d => d.UserTypeShortName, u => u.MapFrom(t => t.UserTypeRole.UserTypeShortName))
.ForMember(d => d.Code, u => u.MapFrom(t => t.UserCode))
.ForMember(d => d.PermissionStr, u => u.MapFrom(t => t.UserTypeRole.PermissionStr))
@ -176,7 +176,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<EnrollDetail, DoctorStateModelDTO>()
.ForMember(d => d.IntoGroupState, u => u.MapFrom(s => s.EnrollStatus))
.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)
.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,
IRepository<Trial> _trialRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository,
IRepository<Dictionary> _dictionaryRepository,
@ -215,7 +215,7 @@ namespace IRaCIS.Core.Application.Service
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))

View File

@ -6,7 +6,7 @@
using IRaCIS.Core.Application.Contracts;
using Microsoft.AspNetCore.Mvc;
using User = IRaCIS.Core.Domain.Models.User;
using UserRole = IRaCIS.Core.Domain.Models.UserRole;
namespace IRaCIS.Core.Application.Services
{
@ -15,7 +15,7 @@ namespace IRaCIS.Core.Application.Services
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
public class SystemDocumentService(IRepository<SystemDocument> _systemDocumentRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
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
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()
{

View File

@ -23,7 +23,7 @@ namespace IRaCIS.Core.Application.Services
IRepository<SystemDocNeedConfirmedUserType> _systemDocNeedConfirmedUserTypeRepository,
IRepository<TrialDocNeedConfirmedUserType> _trialDocNeedConfirmedUserTypeRepository,
IRepository<SystemDocument> _systemDocumentRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<TrialDocConfirmedUser> _trialDocConfirmedUserRepository,
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialDocumentService
{
@ -82,10 +82,10 @@ namespace IRaCIS.Core.Application.Services
//IsConfirmed = confirm.ConfirmTime != null,
ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName,
UserName = trialUser.User.UserName,
UserTypeId = trialUser.User.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName
RealName = trialUser.UserRole.FullName,
UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.UserRole.UserTypeId,
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)))
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
from confirm in cc.DefaultIfEmpty()
select new UnionDocumentWithConfirmInfoView()
@ -246,10 +246,10 @@ namespace IRaCIS.Core.Application.Services
//IsConfirmed = confirm.ConfirmTime != null,
ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName,
UserName = trialUser.User.UserName,
UserTypeId = trialUser.User.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName
RealName = trialUser.UserRole.FullName,
UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName
};
//项目文档查询
@ -278,10 +278,10 @@ namespace IRaCIS.Core.Application.Services
//IsConfirmed = confirm.ConfirmTime != null,
ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName,
UserName = trialUser.User.UserName,
UserTypeId = trialUser.User.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName
RealName = trialUser.UserRole.FullName,
UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.UserRole.UserTypeId,
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)
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.UserId != null, t => t.UserId == inQuery.UserId)
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId)
on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.User.UserTypeId
.WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
on trialDocumentNeedConfirmedUserType.NeedConfirmUserTypeId equals trialUser.UserRole.UserTypeId
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
@ -417,10 +417,10 @@ namespace IRaCIS.Core.Application.Services
ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName,
UserName = trialUser.User.UserName,
UserTypeId = trialUser.User.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName,
RealName = trialUser.UserRole.FullName,
UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
FullFilePath = trialDocumentNeedConfirmedUserType.TrialDocument.Path
};
@ -431,7 +431,7 @@ namespace IRaCIS.Core.Application.Services
join trialUser in _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.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
from confirm in cc.DefaultIfEmpty()
select new UnionDocumentWithConfirmInfoView()
@ -451,10 +451,10 @@ namespace IRaCIS.Core.Application.Services
ConfirmUserId = confirm.ConfirmUserId,
ConfirmTime = confirm.ConfirmTime,
RealName = trialUser.User.FullName,
UserName = trialUser.User.UserName,
UserTypeId = trialUser.User.UserTypeId,
UserTypeShortName = trialUser.User.UserTypeRole.UserTypeShortName,
RealName = trialUser.UserRole.FullName,
UserName = trialUser.UserRole.UserName,
UserTypeId = trialUser.UserRole.UserTypeId,
UserTypeShortName = trialUser.UserRole.UserTypeRole.UserTypeShortName,
FullFilePath = needConfirmEdUserType.SystemDocument.Path
};
@ -493,7 +493,7 @@ namespace IRaCIS.Core.Application.Services
public async Task<List<TrialUserDto>> GetTrialUserSelect(Guid 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();
}
@ -778,16 +778,16 @@ namespace IRaCIS.Core.Application.Services
.Select(t => new TrialUserUnionDocumentView()
{
UserId = t.UserId,
UserName = t.User.UserName,
RealName = t.User.FullName,
UserTypeShortName = t.User.UserTypeRole.UserTypeShortName,
TrialDocumentCount = t.Trial.TrialDocumentList.Count(u => u.NeedConfirmedUserTypeList.Any(k => k.NeedConfirmUserTypeId == t.User.UserTypeId)),
UserName = t.UserRole.UserName,
RealName = t.UserRole.FullName,
UserTypeShortName = t.UserRole.UserTypeRole.UserTypeShortName,
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),
SystemDocumentConfirmedCount = t.User.SystemDocConfirmedList.Count(),
SystemDocumentConfirmedCount = t.UserRole.SystemDocConfirmedList.Count(),
//这样写不行
//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()
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();
@ -837,7 +837,7 @@ namespace IRaCIS.Core.Application.Services
SignViewMinimumMinutes = t.SignViewMinimumMinutes,
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<ReadingGlobalTaskInfo> _readingGlobalTaskInfoRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<TrialEmailNoticeUser> _trialEmailNoticeUserRepository,
IRepository<Subject> _subjectRepository,
IRepository<ReadModule> _readModuleRepository,
@ -300,7 +300,7 @@ namespace IRaCIS.Core.Application.Service
var answer = "否";
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)
{
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);
@ -1222,13 +1222,13 @@ namespace IRaCIS.Core.Application.Service
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()
{
UserId = t.UserId,
UserName = t.User.UserName,
RealName = t.User.FullName,
UserTypeEnum = t.User.UserTypeEnum
UserName = t.UserRole.UserName,
RealName = t.UserRole.FullName,
UserTypeEnum = t.UserRole.UserTypeEnum
}).Distinct();
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));
CreateMap<TrialUser, TrialDocumentUserConfirmView>();
CreateMap<TrialUserRole, TrialDocumentUserConfirmView>();
CreateMap<BatchAddTrialEmailNoticeConfig, TrialEmailNoticeConfig>();
@ -78,11 +78,11 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialEmailNoticeConfigAddOrEdit, TrialEmailNoticeConfig>();
CreateMap<TrialUser, TrialUserSelct>()
.ForMember(d => d.Phone, c => c.MapFrom(t => t.User.Phone))
.ForMember(d => d.Email, c => c.MapFrom(t => t.User.EMail))
.ForMember(d => d.RealName, c => c.MapFrom(t => t.User.FullName))
.ForMember(d => d.UserName, c => c.MapFrom(t => t.User.UserName));
CreateMap<TrialUserRole, TrialUserSelct>()
.ForMember(d => d.Phone, c => c.MapFrom(t => t.UserRole.Phone))
.ForMember(d => d.Email, c => c.MapFrom(t => t.UserRole.EMail))
.ForMember(d => d.RealName, c => c.MapFrom(t => t.UserRole.FullName))
.ForMember(d => d.UserName, c => c.MapFrom(t => t.UserRole.UserName));
CreateMap<TrialEmailNoticeUser, EmailUserInfoDto>();

View File

@ -1129,9 +1129,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
var query = _trialImageDownloadRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.SubjectCode.Contains(inQuery.SubjectCode))
.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.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.DownloadStartTime != null, t => t.DownloadStartTime >= inQuery.DownloadStartTime)
.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,
Uploader = t.CreateUser.UserName,
Uploader = t.CreateUserRole.UserName,
UploadTime = t.CreateTime
@ -444,7 +444,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TrialSiteCode = t.Subject.TrialSite.TrialSiteCode,
Uploader = t.CreateUser.UserName,
Uploader = t.CreateUserRole.UserName,
UploadTime = t.CreateTime
@ -476,7 +476,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
.WhereIf(inQuery.SubjectVisitId != null, t => t.SubjectId == inQuery.SubjectVisitId)
.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
.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(!string.IsNullOrWhiteSpace(inQuery.StudyCode), t => t.StudyCode.Contains(inQuery.StudyCode))
.WhereIf(inQuery.UploadStartTime != null, t => t.UploadStartTime >= inQuery.UploadStartTime)
@ -499,7 +499,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
TrialSiteCode = t.Subject.TrialSite.TrialSiteCode,
Uploader = t.CreateUser.UserName,
Uploader = t.CreateUserRole.UserName,
UploadTime = t.CreateTime,

View File

@ -40,8 +40,8 @@ namespace IRaCIS.Core.Application.Service
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.UploaderFirstName, u => u.MapFrom(s => s.CreateUser.FirstName))
.ForMember(d => d.UploaderLastName, u => u.MapFrom(s => s.CreateUser.LastName))
.ForMember(d => d.UploaderFirstName, u => u.MapFrom(s => s.CreateUserRole.FirstName))
.ForMember(d => d.UploaderLastName, u => u.MapFrom(s => s.CreateUserRole.LastName))
.ForMember(d => d.UploadedTime, u => u.MapFrom(s => s.CreateTime));
CreateMap<Subject, StudyDTO>();
@ -66,7 +66,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<DicomStudy, QAStudyInfoDTO>()
.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.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.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())));
@ -141,9 +141,9 @@ namespace IRaCIS.Core.Application.Service
;
CreateMap<TrialImageDownload, TrialImageDownloadView>()
.ForMember(d => d.UserFullName, u => u.MapFrom(s => s.CreateUser.FullName))
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUser.UserTypeEnum))
.ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUser.UserName))
.ForMember(d => d.UserFullName, u => u.MapFrom(s => s.CreateUserRole.FullName))
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUserRole.UserTypeEnum))
.ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUserRole.UserName))
.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<Dictionary> _dictionaryRepository,
IRepository<Trial> _trialRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<CheckChallengeDialog> _checkChallengeDialogRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IFrontAuditConfigService
{
@ -60,19 +60,19 @@ namespace IRaCIS.Core.Application.Service
{
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,
CreateUserName = x.CreateUser.UserName,
CreateUserName = x.CreateUserRole.UserName,
TalkContent = x.Content,
IsTitle = true,
}).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()
{
CreateTime = x.CreateTime,
CreateUserName = x.CreateUser.UserName,
CreateUserName = x.CreateUserRole.UserName,
TalkContent = x.TalkContent
}
).OrderBy(x => x.CreateTime).ToListAsync();
@ -81,11 +81,11 @@ namespace IRaCIS.Core.Application.Service
break;
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()
{
CreateTime = x.CreateTime,
CreateUserName = x.CreateUser.UserName,
CreateUserName = x.CreateUserRole.UserName,
TalkContent = x.TalkContent
}
).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)
{

View File

@ -12,7 +12,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
public class InspectionService(IRepository<DataInspection> _dataInspectionRepository,
IRepository<Dictionary> _dictionaryRepository,
IRepository<TrialSign> _trialSignRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialSite> _trialSiteRepository,
IRepository<Trial> _trialRepository,
IRepository<Subject> _subjectRepository,
@ -53,7 +53,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
from leftsubjectVisit in subjectVisittemp.DefaultIfEmpty()
join parent in _dataInspectionRepository.Where() on data.ParentId equals parent.Id into parenttemp
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()
join usertype in _userTypeRepository.Where().IgnoreQueryFilters() on leftuser.UserTypeId equals usertype.Id into usertypetemp
from leftusertype in usertypetemp.DefaultIfEmpty()
@ -259,7 +259,7 @@ namespace IRaCIS.Core.Application.Service.Inspection
/// <summary> 验证用户签名信息 </summary> ///
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)
{
throw new BusinessValidationFailedException(_localizer["User_CheckNameOrPw"]);

View File

@ -65,7 +65,7 @@ namespace IRaCIS.Core.Application.Service
//---该CRO已经参与项目不能被删除。
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下存在用户暂时无法删除。");
//}

View File

@ -4,6 +4,7 @@
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Domain.Share;
using Newtonsoft.Json;
namespace IRaCIS.Core.Application.ViewModel
{
/// <summary> UserLogView 列表视图模型 </summary>
@ -12,52 +13,95 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid? Id { get; set; }
public string IP { get; set; }
public string LoginFaildName { get; set; }
public int OptType { get; set; }
public string ActionUserType { get; set; }
public UserOptType OptType { get; set; }
public string? ActionUserName { get; set; }
public string? LoginUserName { get; set; }
public UserTypeEnum? LoginUserTypeEnum { get; set; }
//public string ActionUserRoleShortName { get; set; }
public DateTime CreateTime { 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 Guid? LoginUserId { get; set; }
public Guid? OptUserId { get; set; }
public string JsonObj { 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>
public class UserLogQuery : PageInput
{
public Guid? TrialId { get; set; }
public UserOptType? OptType { get; set; }
public List<UserOptType>? OptTypeList { get; set; }
public string? IP { get; set; }
public string? LoginFaildName { get; set; }
public string? LoginUserName { get; set; }
public DateTime? BeginDate { get; set; }
public DateTime? EndDate { get; set; }
public UserTypeEnum? LoginUserTypeEnum { get; set; }
public string? LoginUserType { 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.EndCreatime != null, t => t.CreateTime == inQuery.EndCreatime)
.WhereIf(inQuery.UserTypeEnum != null, t => t.CreateUser.UserTypeEnum == inQuery.UserTypeEnum)
.WhereIf(!string.IsNullOrEmpty(inQuery.FeedBackUserKeyInfo), t => t.CreateUser.FullName.Contains(inQuery.FeedBackUserKeyInfo) || t.CreateUser.UserName.Contains(inQuery.FeedBackUserKeyInfo))
.WhereIf(inQuery.UserTypeEnum != null, t => t.CreateUserRole.UserTypeEnum == inQuery.UserTypeEnum)
.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.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))

View File

@ -21,10 +21,10 @@ using LoginReturnDTO = IRaCIS.Application.Contracts.LoginReturnDTO;
namespace IRaCIS.Core.Application.Service
{
[ApiExplorerSettings(GroupName = "Management")]
public class UserService(IRepository<User> _userRepository,
public class UserService(IRepository<UserRole> _userRoleRepository,
IMailVerificationService _mailVerificationService,
IRepository<VerificationCode> _verificationCodeRepository,
IRepository<TrialUser> _userTrialRepository,
IRepository<TrialUserRole> _userTrialRepository,
IRepository<UserLog> _userLogRepository,
IRepository<UserPassWordLog> _userPassWordLogRepository,
IDistributedLockProvider _distributedLockProvider,
@ -41,7 +41,7 @@ namespace IRaCIS.Core.Application.Service
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"]);
@ -50,7 +50,7 @@ namespace IRaCIS.Core.Application.Service
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"]);
@ -60,7 +60,7 @@ namespace IRaCIS.Core.Application.Service
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"]);
@ -69,7 +69,7 @@ namespace IRaCIS.Core.Application.Service
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)
{
@ -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)
{
@ -105,7 +105,7 @@ namespace IRaCIS.Core.Application.Service
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())
@ -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,
});
@ -193,7 +193,7 @@ namespace IRaCIS.Core.Application.Service
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
});
@ -216,7 +216,7 @@ namespace IRaCIS.Core.Application.Service
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
});
@ -233,7 +233,7 @@ namespace IRaCIS.Core.Application.Service
await VerifyUserNameAsync(_userInfo.Id, newUserName);
await _userRepository.UpdatePartialFromQueryAsync(_userInfo.Id, u => new User()
await _userRoleRepository.UpdatePartialFromQueryAsync(_userInfo.Id, u => new UserRole()
{
UserName = newUserName
});
@ -252,7 +252,7 @@ namespace IRaCIS.Core.Application.Service
await VerifyUserNameAsync(userId, newUserName);
await _userRepository.UpdatePartialFromQueryAsync(userId, u => new User()
await _userRoleRepository.UpdatePartialFromQueryAsync(userId, u => new UserRole()
{
UserName = newUserName,
@ -291,13 +291,13 @@ namespace IRaCIS.Core.Application.Service
await _mailVerificationService.AdminResetPwdSendEmailAsync(userId, pwd);
}
await _userRepository.UpdatePartialFromQueryAsync(userId, u => new User()
await _userRoleRepository.UpdatePartialFromQueryAsync(userId, u => new UserRole()
{
Password = MD5Helper.Md5(pwd),
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));
@ -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)
{
@ -363,7 +363,7 @@ namespace IRaCIS.Core.Application.Service
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,
IsFirstAdd = false
@ -387,7 +387,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
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.RealName), t => t.FullName.Contains(inQuery.RealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Phone), t => t.Phone.Contains(inQuery.Phone))
@ -416,10 +416,10 @@ namespace IRaCIS.Core.Application.Service
[HttpGet("{id:guid}")]
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();
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();
return result;
@ -446,15 +446,15 @@ namespace IRaCIS.Core.Application.Service
//await VerifyUserPhoneAsync(null, userAddModel.UserTypeId, userAddModel.Phone);
var saveItem = _mapper.Map<User>(userAddModel);
var saveItem = _mapper.Map<UserRole>(userAddModel);
var @lock = _distributedLockProvider.CreateLock($"UserAccount");
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)
//{
@ -467,9 +467,9 @@ namespace IRaCIS.Core.Application.Service
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)
@ -498,7 +498,7 @@ namespace IRaCIS.Core.Application.Service
//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);
@ -520,7 +520,7 @@ namespace IRaCIS.Core.Application.Service
var success = await _userRepository.SaveChangesAsync();
var success = await _userRoleRepository.SaveChangesAsync();
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);
var success = await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == userId);
var success = await _userRoleRepository.BatchDeleteNoTrackingAsync(t => t.Id == userId);
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);
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
});
@ -570,7 +570,7 @@ namespace IRaCIS.Core.Application.Service
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;
}
@ -584,7 +584,7 @@ namespace IRaCIS.Core.Application.Service
[AllowAnonymous]
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);
@ -723,11 +723,11 @@ namespace IRaCIS.Core.Application.Service
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}",
LastName = "tj",
@ -738,7 +738,7 @@ namespace IRaCIS.Core.Application.Service
Code = newCode,
Password = MD5Helper.Md5("123456"),
CheckCode = "123456",
UserCode = AppSettings.GetCodeStr(newCode, nameof(User)),
UserCode = AppSettings.GetCodeStr(newCode, nameof(UserRole)),
UserTypeId = userTypeId,
UserTypeEnum = userType.UserTypeEnum,
@ -748,17 +748,17 @@ namespace IRaCIS.Core.Application.Service
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();
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]
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);
}
@ -830,7 +830,7 @@ namespace IRaCIS.Core.Application.Service
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)
{
@ -839,7 +839,7 @@ namespace IRaCIS.Core.Application.Service
failCount++;
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);
@ -882,7 +882,7 @@ namespace IRaCIS.Core.Application.Service
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
@ -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,
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();
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;
var userLogQueryable =
_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(inQuery.OptType != null, t => t.OptType == inQuery.OptType)
.WhereIf(inQuery.UserId != null, t => t.LoginUserId == inQuery.UserId)
.WhereIf(inQuery.OptTypeList != null && inQuery.OptTypeList.Count > 0, t => inQuery.OptTypeList.Contains(t.OptType))
.WhereIf(inQuery.BeginDate != null, t => t.CreateTime >= inQuery.BeginDate)
.WhereIf(inQuery.EndDate != null, t => t.CreateTime <= inQuery.EndDate)
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserName), t => t.LoginUser.UserName.Contains(inQuery.LoginUserName!))
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginFaildName), t => t.LoginFaildName.Contains(inQuery.LoginFaildName!))
.WhereIf(inQuery.IsLoginUncommonly != null, t => t.IsLoginUncommonly == inQuery.IsLoginUncommonly)
.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(inQuery.LoginUserTypeEnum != null, t => t.LoginUser.UserTypeEnum == inQuery.LoginUserTypeEnum)
.WhereIf(inQuery.UserTypeId != null, t => t.LoginUser.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrEmpty(inQuery.LoginUserType), t => t.ActionUserType == inQuery.LoginUserType)
.WhereIf(inQuery.UserTypeId != null, t => t.CreateUserRole.UserTypeId == inQuery.UserTypeId)
.ProjectTo<UserLogView>(_mapper.ConfigurationProvider);
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;
}
@ -987,7 +1003,7 @@ namespace IRaCIS.Core.Application.Service
}
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)
{
@ -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}")]
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
});
@ -1036,14 +1052,14 @@ namespace IRaCIS.Core.Application.Service
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,
});
}
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,
CheckCode = editPwModel.CheckCode,

View File

@ -12,7 +12,7 @@ namespace IRaCIS.Core.Application.Contracts
/// UserTypeRoleService
/// </summary>
[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]
@ -79,7 +79,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{userTypeId:guid}")]
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"]);

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()
.ForMember(t => t.UserTypeMenuList, u => u.MapFrom(c => c.MenuIds))
.ForMember(t => t.UserTypeGroupList, u => u.MapFrom(c => c.UserTypeGroupIdList));
@ -73,14 +73,14 @@ namespace IRaCIS.Core.Application.Service
CreateMap<UserType, TrialUserType>()
.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.UserTypeId, u => u.MapFrom(s => s.UserTypeRole.Id))
.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.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.UserTypeId, u => u.MapFrom(s => s.UserTypeRole.Id))
.ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
@ -90,7 +90,7 @@ namespace IRaCIS.Core.Application.Service
var userId = Guid.Empty;
CreateMap<SystemNotice, SystemNoticeView>()
.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));
@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<SystemNotice, SystemNoticeReadDTO>()
.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(d => d.FullFilePath, u => u.MapFrom(s => s.Path + "?access_token=" + token));
@ -116,12 +116,8 @@ namespace IRaCIS.Core.Application.Service
CreateMap<UserLog, UserLogView>()
.ForMember(d => d.LoginUserName, c => c.MapFrom(t => t.LoginUser.UserName))
.ForMember(d => d.LoginUserTypeEnum, c => c.MapFrom(t => t.LoginUser.UserTypeEnum))
.ForMember(d => d.OptUserName, c => c.MapFrom(t => t.OptUser.UserName))
.ForMember(d => d.OptUserTypeEnum, c => c.MapFrom(t => t.OptUser.UserTypeEnum))
;
//.ForMember(d => d.ActionUserRoleShortName, c => c.MapFrom(t => t.CreateUserRole.UserTypeRole.UserTypeShortName))
.ForMember(d => d.TargetIdentityUserName, c => c.MapFrom(t => t.TargetIdentityUser.UserName));
CreateMap<UserFeedBack, UserFeedBackView>()
.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.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.FeedBackUserName, c => c.MapFrom(t => t.CreateUser.UserName))
.ForMember(d => d.FeedBackFullName, c => c.MapFrom(t => t.CreateUser.FullName))
.ForMember(d => d.UserTypeEnum, c => c.MapFrom(t => t.CreateUser.UserTypeEnum))
.ForMember(d => d.FeedBackUserName, c => c.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.FeedBackFullName, c => c.MapFrom(t => t.CreateUserRole.FullName))
.ForMember(d => d.UserTypeEnum, c => c.MapFrom(t => t.CreateUserRole.UserTypeEnum))
.ForMember(d => d.ScreenshotList, c => c.MapFrom(t => t.FeedBackScreenshotList))
;
CreateMap<UserFeedBackAddOrEdit, UserFeedBack>().ReverseMap();
CreateMap<User, UserAccountInfo>()
CreateMap<UserRole, UserAccountInfo>()
.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<TrialQCQuestion> _trialQCQuestionRepository,
IRepository<DicomStudy> _dicomStudyRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<DicomSeries> _dicomSeriesRepository,
IRepository<NoneDicomStudy> _noneDicomStudyRepository,
IRepository<QCChallenge> _qcChallengeRepository,
@ -582,10 +582,10 @@ namespace IRaCIS.Core.Application.Image.QA
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,
Creator = t.User.UserName,
CreatorRealName = t.UserRole.FullName,
Creator = t.UserRole.UserName,
CreateUserId = t.UserId
}).ToListAsync();
@ -599,10 +599,10 @@ namespace IRaCIS.Core.Application.Image.QA
[HttpGet("{trialId:guid}")]
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,
HandleUser = t.User.UserName,
HandleUserRealName = t.UserRole.FullName,
HandleUser = t.UserRole.UserName,
HandleUserId = t.UserId
}).ToListAsync();
}

View File

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

View File

@ -47,7 +47,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<QCChallengeDialog, DialogInfo>()
.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));
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.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.LatestReplyUserFullName, u => u.MapFrom(t => t.LatestReplyUser.FullName))
.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.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.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.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.CreateUserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator))))
;
CreateMap<Subject, SubjectProgressDto>()
@ -122,7 +122,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<CheckChallengeDialog, DialogInfo>()
.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));
CreateMap<SubjectVisit, PMKCheckEXportDTO>()
@ -546,8 +546,8 @@ namespace IRaCIS.Core.Application.Service
//一致性核查 质疑对话
CreateMap<CheckChallengeDialog, CheckChanllengeDialogDTO>()
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName));
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUserRole.FullName));
CreateMap<SubjectVisit, CheckDialogDTO>()
.ForMember(d => d.SubjectVisitCheck, u => u.MapFrom(t => t))
@ -578,13 +578,13 @@ namespace IRaCIS.Core.Application.Service
// 临床数据上传 路径拼接返回
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));
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));
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));
@ -594,14 +594,14 @@ namespace IRaCIS.Core.Application.Service
//QC 质疑对话
var currentUserId = Guid.Empty;
CreateMap<QCChallengeDialog, QCChanllengeDialogDTO>()
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.UserName))
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUser.FullName))
.ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUserRole.UserName))
.ForMember(d => d.CreateUserFullName, u => u.MapFrom(t => t.CreateUserRole.FullName))
.ForMember(d => d.IsCurrentUser, u => u.MapFrom(s => s.CreateUserId == currentUserId));
//质疑编号
CreateMap<QCChallenge, QCChallengeWithUser>()
.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.CurrentActionUserName, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUser.UserName))
@ -615,7 +615,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<QCChallenge, ChallengeAndDialog>()
.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.CurrentActionUserName, u => u.MapFrom(t => t.SubjectVisit.CurrentActionUser.UserName))
@ -631,7 +631,7 @@ namespace IRaCIS.Core.Application.Service
// 一致性核查文件
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 质疑列表
@ -656,7 +656,7 @@ namespace IRaCIS.Core.Application.Service
.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.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.LatestReplyUserFullName, u => u.MapFrom(t => t.LatestReplyUser.FullName))

View File

@ -15,7 +15,7 @@ namespace IRaCIS.Core.Application.Service
[ApiExplorerSettings(GroupName = "Reading")]
public class ReadModuleService(IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<Trial> _trialRepository,
IVisitTaskHelpeService _visitTaskHelpeService,
IRepository<VisitTask> _visitTaskRepository,
@ -860,7 +860,7 @@ namespace IRaCIS.Core.Application.Service
};
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;
}

View File

@ -15,7 +15,7 @@ namespace IRaCIS.Core.Application.Service
/// </summary>
[ApiExplorerSettings(GroupName = "Reading")]
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()
{
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
}).FirstNotNullAsync();
@ -100,13 +100,13 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
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
});
await _userRepository.SaveChangesAsync();
await _userRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}

View File

@ -38,21 +38,21 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialClinicalTableQuestionDto, TrialClinicalTableQuestion>();
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));
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));
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));
CreateMap<SystemClinicalTableQuestion, TrialClinicalTableQuestionSynchronize>()
.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<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));
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<ReadingCustomTagDto, ReadingCustomTag>().ForMember(dest => dest.CreateUser, opt => opt.Ignore());
CreateMap<ReadingCustomTagDto, ReadingCustomTag>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
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()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore())
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
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.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<ReadModuleAddOrEdit, ReadModule>().ForMember(dest => dest.CreateUser, opt => opt.Ignore());
CreateMap<ReadModuleAddOrEdit, ReadModule>().ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
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>()
.ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id))
.ForMember(d => d.LesionType, u => u.MapFrom(s => s.ReadingQuestionTrial.LesionType));
.ForMember(d => d.OriginalId, u => u.MapFrom(s => s.Id));
//.ForMember(dest => dest.Instance, 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.GroupName, u => u.MapFrom(s => isEn_Us ? s.GroupEnName : s.GroupName))
.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.RelevanceReadingQuestionTrial, opt => opt.Ignore())
.ForMember(dest => dest.ReadingQuestionCriterionTrial, opt => opt.Ignore());
@ -193,20 +192,20 @@ namespace IRaCIS.Core.Application.Service
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));
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.QuestionMark, u => u.MapFrom(s => s.ReadingTableQuestionTrial.QuestionMark));
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.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.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));
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));
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));
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));
CreateMap<ReadingQuestionTrial, GetCalculateQuestionsOutDto>();
@ -244,66 +243,66 @@ namespace IRaCIS.Core.Application.Service
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.CreateUser, u => u.Ignore());
CreateMap<ReadingTableQuestionSystemAddOrEdit, ReadingTableQuestionSystem>().ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(d => d.CreateUserRole, u => u.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>()
.ForMember(d => d.CreateUser, u => u.Ignore());
.ForMember(d => d.CreateUserRole, u => u.Ignore());
CreateMap<Dictionary, OrganDictionary>()
;
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));
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));
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.ReadingQuestionSystemId, u => u.MapFrom(s => s.Id));
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.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));
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(d => d.OriginalId, u => u.MapFrom(s => s.Id))
.ForMember(d => d.SystemTableQuestionId, u => u.MapFrom(s => s.Id));
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));
CreateMap<ReadingTrialTableQuestionData, ReadingTableQuestionTrial>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore())
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
;
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.CreateUser, opt => opt.Ignore())
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore())
.ForMember(d => d.ReadingQuestionCriterionSystemId, u => u.MapFrom(s => s.Id));
CreateMap<AddOrUpdateReadingQuestionCriterionSystemInDto, ReadingQuestionCriterionSystem>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionCriterionSystem, ReadingQuestionCriterionSystemView>()
.ForMember(d => d.QuestionCount, u => u.MapFrom(s => s.ReadingQuestionSystemList.Count()));
@ -313,7 +312,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<ReadingQuestionSystem, AddOrUpdateReadingQuestionSystemInDto>();
CreateMap<AddOrUpdateReadingQuestionSystemInDto, ReadingQuestionSystem>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionSystem, ReadingQuestionSystemView>()
.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>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionCriterionTrial, ReadingQuestionCriterionTrialView>()
.ForMember(d => d.QuestionCount, u => u.MapFrom(s => s.ReadingQuestionTrialList.Count()));
CreateMap<AddOrUpdateReadingQuestionTrialInDto, ReadingQuestionTrial>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingQuestionTrial, ReadingQuestionTrialView>()
.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 医学审核
CreateMap<ReadingMedicineSystemQuestionAddOrEdit, ReadingMedicineSystemQuestion>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingMedicineSystemQuestion, ReadingMedicineSystemQuestionView>()
.ForMember(x => x.ParentShowOrder, y => y.MapFrom(n => n.ParentQuestion.ShowOrder));
CreateMap<TrialDataFromSystem, ReadingMedicineTrialQuestion>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingMedicineTrialQuestionAddOrEdit, ReadingMedicineTrialQuestion>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<ReadingMedicineTrialQuestion, ReadingMedicineTrialQuestionView>()
.ForMember(x => x.ParentShowOrder, y => y.MapFrom(n => n.ParentQuestion.ShowOrder));
@ -387,7 +386,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<ReadingMedicalReviewDialog, GetMedicalReviewDialogOutDto>()
//.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
@ -396,10 +395,10 @@ namespace IRaCIS.Core.Application.Service
CreateMap<CriterionNidusTrial, CriterionNidusView>();
CreateMap<CriterionNidusSystem, CriterionNidusView>();
CreateMap<CriterionNidusSystem, CriterionNidusAddOrEdit>().ReverseMap()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<OrganInfoAddOrEdit, OrganInfo>()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<OrganInfo, OrganInfoView>();
#endregion
@ -412,15 +411,15 @@ namespace IRaCIS.Core.Application.Service
CreateMap<SubjectCriteriaEvaluationAddOrEdit, SubjectCriteriaEvaluation>().ReverseMap();
CreateMap<SubjectCriteriaEvaluation, SubjectCriteriaEvaluationView>().ReverseMap()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<SubjectCriteriaEvaluationVisitFilter, SubjectCriteriaEvaluationVisitFilterAddOrEdit>().ReverseMap()
.ForMember(dest => dest.CreateUser, opt => opt.Ignore());
.ForMember(dest => dest.CreateUserRole, opt => opt.Ignore());
CreateMap<SubjectCriteriaEvaluationVisitStudyFilterAddOrEdit, SubjectCriteriaEvaluationVisitStudyFilter>().ReverseMap();
CreateMap<DicomStudy, SelectStudyView>()
.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));
CreateMap<VisitTask, HaveGeneratedTaskDto>()

View File

@ -34,7 +34,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
IGeneralCalculateService _generalCalculateService,
IRepository<ReadingTaskQuestionAnswer> _readingTaskQuestionAnswerRepository,
IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IServiceProvider ServiceProvider,
IOptionsMonitor<SystemHospitalOption> _hospital,
IRepository<Dictionary> _dictionaryRepository,
@ -81,7 +81,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
.Include(x => x.TrialReadingCriterion).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 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 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,
IGeneralCalculateService _generalCalculateService,
IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IServiceProvider ServiceProvider,
IOptionsMonitor<SystemHospitalOption> _hospital,
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 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 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 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,
IGeneralCalculateService _generalCalculateService,
IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IServiceProvider ServiceProvider,
IOptionsMonitor<SystemHospitalOption> _hospital,
IRepository<Dictionary> _dictionaryRepository,
@ -285,7 +285,7 @@ namespace IRaCIS.Core.Application.Service.ReadingCalculate
.Include(x => x.TrialReadingCriterion).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 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 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,
IGeneralCalculateService _generalCalculateService,
IRepository<Subject> _subjectRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IServiceProvider ServiceProvider,
IOptionsMonitor<SystemHospitalOption> _hospital,
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 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 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 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")]
public class TrialSiteSurveyService(IRepository<TrialSiteSurvey> _trialSiteSurveyRepository,
IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<Trial> _trialRepository,
IRepository<TrialSite> _trialSiteRepository,
IRepository<Doctor> _doctorRepository,
IRepository<VerificationCode> _verificationCodeRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository,
IDistributedLockProvider _distributedLockProvider,
ITokenService _tokenService,
@ -79,7 +79,7 @@ namespace IRaCIS.Core.Application.Contracts
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)
{
@ -98,7 +98,7 @@ namespace IRaCIS.Core.Application.Contracts
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
@ -162,7 +162,7 @@ namespace IRaCIS.Core.Application.Contracts
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,
@ -628,13 +628,13 @@ namespace IRaCIS.Core.Application.Contracts
}
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)
{
////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));
@ -751,7 +751,7 @@ namespace IRaCIS.Core.Application.Contracts
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.Undefined || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator)
{
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
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)
{
@ -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)
@ -819,7 +819,7 @@ namespace IRaCIS.Core.Application.Contracts
using (await @lock.AcquireAsync())
{
var saveItem = _mapper.Map<User>(item);
var saveItem = _mapper.Map<UserRole>(item);
if (trialType == TrialType.NoneOfficial)
@ -829,9 +829,9 @@ namespace IRaCIS.Core.Application.Contracts
// 中心调研生成账号 都是外部的
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;
@ -840,10 +840,10 @@ namespace IRaCIS.Core.Application.Contracts
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;
@ -889,14 +889,14 @@ namespace IRaCIS.Core.Application.Contracts
var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true);
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);
}
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,
DeletedTime = null,
@ -919,7 +919,7 @@ namespace IRaCIS.Core.Application.Contracts
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 });
@ -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 _userRepository.SaveChangesAsync();
await _userRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok();
@ -963,7 +963,7 @@ namespace IRaCIS.Core.Application.Contracts
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)
{
@ -972,7 +972,7 @@ namespace IRaCIS.Core.Application.Contracts
using (await @lock.AcquireAsync())
{
var saveItem = _mapper.Map<User>(item);
var saveItem = _mapper.Map<UserRole>(item);
if (trialType == TrialType.NoneOfficial)
@ -982,17 +982,17 @@ namespace IRaCIS.Core.Application.Contracts
// 中心调研生成账号 都是外部的
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.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;
@ -1009,14 +1009,14 @@ namespace IRaCIS.Core.Application.Contracts
var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true);
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);
}
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,
DeletedTime = null,
@ -1040,7 +1040,7 @@ namespace IRaCIS.Core.Application.Contracts
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();

View File

@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Contracts
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialSiteUserSurveyService(IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository,
IRepository<Trial> _trialRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialSiteSurvey> _trialSiteSurveyRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialSiteUserSurveyService
{
@ -56,7 +56,7 @@ namespace IRaCIS.Core.Application.Contracts
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)
{
@ -97,7 +97,7 @@ namespace IRaCIS.Core.Application.Contracts
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)

View File

@ -35,7 +35,7 @@ namespace IRaCIS.Core.Application.AutoMapper
.ForMember(d => d.IsGenerateSuccess, u => u.MapFrom(c => true))
.ForMember(d => d.SystemUserId, u => u.MapFrom(c => c.UserId))
.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));
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<Hospital> _hospitalRepository,
IRepository<EnrollDetail> _enrollDetailRepository,
IRepository<User> _userRepository,
IRepository<TrialUser> _userTrialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IStatisticsService
IRepository<UserRole> _userRoleRepository,
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)
{
Expression<Func<User, bool>> userLambda = x => true;
Expression<Func<TrialUser, bool>> userTrialLambda = x => true;
Expression<Func<UserRole, bool>> userLambda = x => true;
Expression<Func<TrialUserRole, bool>> userTrialLambda = x => true;
if (!string.IsNullOrEmpty(param.UserInfo))
{
var userInfo = param.UserInfo.Trim();
@ -406,7 +406,7 @@ namespace IRaCIS.Core.Application.Service
});
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
{
Email = user.EMail,
@ -438,7 +438,7 @@ namespace IRaCIS.Core.Application.Service
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 loginUserId = _userInfo.Id;
@ -463,7 +463,7 @@ namespace IRaCIS.Core.Application.Service
CROName = cro.CROName,
Expedited = trial.Expedited,
Indication = trial.Indication,
UserType = userTrial.User.UserTypeRole.UserTypeShortName,
UserType = userTrial.UserRole.UserTypeRole.UserTypeShortName,
TrialId = trial.Id
};

View File

@ -123,7 +123,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject
TrialSiteCode = dicomStudy.Subject.TrialSite.TrialSiteCode,
Uploader = dicomStudy.CreateUser.UserName,
Uploader = dicomStudy.CreateUserRole.UserName,
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(_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(!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()
{
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_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,
@ -1476,54 +1476,54 @@ namespace IRaCIS.Core.Application
[HttpPost]
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)
.Select(t => new TrialUserToBeDoneDto()
{
UserName = t.User.UserName,
FullName = t.User.FullName,
UserType = t.User.UserTypeEnum,
UserName = t.UserRole.UserName,
FullName = t.UserRole.FullName,
UserType = t.UserRole.UserTypeEnum,
//SPM 阅片人筛选
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,
//PM 阅片人确认
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,
//CRC 重传 --区分人
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))
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count() : 0,
//CRC加急待提交 需确认?--区分人
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))
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count() : 0,
// QC IQC 待领取
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,
// CRC 质疑待回复 --区分人
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))
.SelectMany(c => c.QCChallengeList).Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count() : 0,
//IQC 质疑待处理 --区分人
QC_IQC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.SelectMany(c => c.QCChallengeList)
.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 待审核
QC_IQC_ToBeReviewedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.Where(u => u.CurrentActionUserId == t.UserId).Count() : 0,
//PM 核查待处理
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,
//PM 质疑待处理
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 &&
u.CheckChallengeDialogList.OrderByDescending(t => t.CreateTime).First().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0,
// CRC 核查 质疑待处理 --区分人
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))
.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count() : 0,
//IR 未读 --区分人
Reading_IR_UnReadCount =
(t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
t.Trial.VisitTaskList
.Where(c => c.DoctorUserId == t.UserId && c.ReadingTaskState != ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect)
// 前序 不存在 未一致性核查未通过的
@ -1570,30 +1570,30 @@ namespace IRaCIS.Core.Application
//SPM PM重阅审批
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,
//PM IR重阅审批
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,
//IR 医学审核 --区分人
Medical_IR_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
t.Trial.TaskMedicalReviewList
.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,
Medical_MIM_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.MIM) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.MIM) ?
t.Trial.TaskMedicalReviewList
.Where(t => t.IsClosedDialog == false)
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count() : 0,
Medical_MIM_ToBeReviewedCount =
(t.User.UserTypeEnum == UserTypeEnum.MIM) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.MIM) ?
t.Trial.TaskMedicalReviewList
.Where(t => t.IsClosedDialog == false && t.IsInvalid == false)
.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count() : 0

View File

@ -21,8 +21,8 @@ namespace IRaCIS.Core.Application.Service
/// </summary>
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialExternalUserService(IRepository<TrialExternalUser> _trialExternalUseRepository,
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<Trial> _trialRepository,
IRepository<UserType> _userTypeRepository,
IMailVerificationService _mailVerificationService,
@ -64,7 +64,7 @@ namespace IRaCIS.Core.Application.Service
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)
{
@ -93,7 +93,7 @@ namespace IRaCIS.Core.Application.Service
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();
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)
{
@ -117,10 +117,10 @@ namespace IRaCIS.Core.Application.Service
// 外部人员生成账号 都是外部的
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;
@ -130,7 +130,7 @@ namespace IRaCIS.Core.Application.Service
generateUser.Status = UserStateEnum.Disable;
var newAddUser = await _userRepository.AddAsync(generateUser);
var newAddUser = await _userRoleRepository.AddAsync(generateUser);
addEntity.IsSystemUser = false;
@ -224,7 +224,7 @@ namespace IRaCIS.Core.Application.Service
if (isSystemUser == false)
{
await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemUserId);
await _userRoleRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemUserId);
}
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))
{
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 _userRepository.SaveChangesAsync();
await _userRoleRepository.SaveChangesAsync();
}
await _mailVerificationService.ExternalUserJoinEmail(trialId, userId, sendEmail.BaseUrl, sendEmail.RouteUrl);

View File

@ -8,8 +8,8 @@ using Microsoft.AspNetCore.Mvc;
namespace IRaCIS.Core.Application.Service
{
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialMaintenanceService(IRepository<TrialUser> _trialUseRepository,
IRepository<User> _userRepository,
public class TrialMaintenanceService(IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<Trial> _trialRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, ITrialMaintenanceService
@ -18,8 +18,8 @@ namespace IRaCIS.Core.Application.Service
[HttpGet]
public async Task<List<TrialUserBasicInfo>> GetTrialUserList(Guid trialId)
{
return await _trialUseRepository.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 })
return await _trialUseRoleRepository.Where(t => t.TrialId == trialId, ignoreQueryFilters: true)
.Select(t => new TrialUserBasicInfo() { FullName = t.UserRole.FullName, UserId = t.UserId, UserTypeId = t.UserRole.UserTypeId, UserName = t.UserRole.UserName })
.ToListAsync();
}
@ -32,14 +32,14 @@ namespace IRaCIS.Core.Application.Service
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(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.User.UserName.Contains(inQuery.UserName))
.WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserRole.UserName.Contains(inQuery.UserName))
.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.UserRealName), t => (t.User.FullName).Contains(inQuery.UserRealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.UserRole.OrganizationName.Contains(inQuery.OrganizationName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.UserRole.FullName).Contains(inQuery.UserRealName))
.ProjectTo<TrialMaintenanceDTO>(_mapper.ConfigurationProvider);
return await query.ToPagedListAsync(inQuery, nameof(TrialMaintenanceDTO.UpdateTime));
@ -56,11 +56,11 @@ namespace IRaCIS.Core.Application.Service
{
// 最开始过滤site已经选择的用户 现在又改回去。。。
var query = _trialUseRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA)
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.User.FullName).Contains(inQuery.UserRealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.User.OrganizationName.Contains(inQuery.OrganizationName))
var query = _trialUseRoleRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA)
.WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.UserRole.FullName).Contains(inQuery.UserRealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.UserRole.OrganizationName.Contains(inQuery.OrganizationName))
.ProjectTo<AssginSiteCRCListDTO>(_mapper.ConfigurationProvider, new { trialSiteId = inQuery.TrialSiteId });
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)
@ -120,9 +120,9 @@ namespace IRaCIS.Core.Application.Service
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)
{
@ -130,7 +130,7 @@ namespace IRaCIS.Core.Application.Service
}
var success = await _trialUseRepository.SaveChangesAsync();
var success = await _trialUseRoleRepository.SaveChangesAsync();
return ResponseOutput.Result(success);
}
@ -142,7 +142,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPut]
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);
@ -164,7 +164,7 @@ namespace IRaCIS.Core.Application.Service
_mapper.Map(updateTrialUserCommand, trialUser);
await _trialUseRepository.SaveChangesAsync();
await _trialUseRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok();
@ -181,7 +181,7 @@ namespace IRaCIS.Core.Application.Service
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);
@ -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 _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();
}

View File

@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialService(IRepository<Trial> _trialRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<CRO> _croRepository,
IRepository<EnrollDetail> _enrollDetailRepository,
IRepository<Dictionary> _dictionaryRepository,
@ -208,7 +208,7 @@ namespace IRaCIS.Core.Application.Service
//如果是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 });
@ -539,7 +539,7 @@ namespace IRaCIS.Core.Application.Service
await _repository.BatchDeleteNoTrackingAsync<TrialSiteUserSurvey>(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<VisitStage>(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>()
.ForMember(x => x.Id, x => x.Ignore());
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)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName))
.ForMember(t => t.UserType, u => u.MapFrom(t => t.User.UserTypeRole.UserTypeShortName));
CreateMap<User, TrialMaintenanceDTO>();
CreateMap<TrialUserRole, TrialMaintenanceDTO>().IncludeMembers(t => t.UserRole)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.UserRole.FullName))
.ForMember(t => t.UserType, u => u.MapFrom(t => t.UserRole.UserTypeRole.UserTypeShortName));
CreateMap<UserRole, TrialMaintenanceDTO>();
var trialSiteId = Guid.Empty;
CreateMap<TrialUser, AssginSiteCRCListDTO>().IncludeMembers(t => t.User)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName))
CreateMap<TrialUserRole, AssginSiteCRCListDTO>().IncludeMembers(t => t.UserRole)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.UserRole.FullName))
.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)));
CreateMap<User, AssginSiteCRCListDTO>();
CreateMap<UserRole, AssginSiteCRCListDTO>();
var trialId = Guid.Empty;
CreateMap<User, TrialUserScreeningDTO>()
CreateMap<UserRole, TrialUserScreeningDTO>()
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.FullName))
.ForMember(d => d.UserType, u => u.MapFrom(s => s.UserTypeRole.UserTypeShortName))
.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)
.ForMember(d => d.UserType, u => u.MapFrom(s => s.User.UserTypeRole.UserTypeShortName))
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName));
CreateMap<User, UserTrialDTO>();
CreateMap<UserRole, UserTrialDTO>();
#endregion
@ -189,22 +189,22 @@ namespace IRaCIS.Core.Application.Service
CreateMap<SignDTO, TrialSign>();
CreateMap<TrialStateChange, TrialStateChangeDTO>()
.ForMember(t => t.UserRealName, u => u.MapFrom(c => c.CreateUser.FullName))
.ForMember(t => t.UserName, u => u.MapFrom(c => c.CreateUser.UserName));
.ForMember(t => t.UserRealName, u => u.MapFrom(c => c.CreateUserRole.FullName))
.ForMember(t => t.UserName, u => u.MapFrom(c => c.CreateUserRole.UserName));
CreateMap<TrialExternalUserAddAndSendEmail, TrialExternalUser>().ReverseMap();
CreateMap<TrialExternalUserAddAndSendEmail, User>();
CreateMap<TrialExternalUserAddAndSendEmail, UserRole>();
CreateMap<TrialExternalUser, TrialExternalUserAddOrEdit>().ReverseMap();
CreateMap<TrialExternalUserAddOrEdit, User>();
CreateMap<TrialExternalUserAddOrEdit, UserRole>();
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.UserRealName, u => u.MapFrom(c => c.User.FullName))
.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 NPOI.HSSF.Record.Chart;
using IRaCIS.Core.Application.Helper.OtherTool;
using System.Drawing;
namespace IRaCIS.Application.Services
@ -68,7 +67,7 @@ namespace IRaCIS.Application.Services
IRepository<SubjectVisit> _subjectVisitRepository,
IRepository<SubejctVisitDownload> _subejctVisitDownloadRepository,
IRepository<SCPImageUpload> _SCPImageUploadRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<HIRHospital> _hIRHospitalRepository,
IRepository<DicomAE> _dicomAEReposiotry,
IRepository<SCPInstance> _scpInstanceRepository,
@ -253,7 +252,7 @@ namespace IRaCIS.Application.Services
[FromServices] IOptionsMonitor<ServiceVerifyConfigOption> _basicSystemConfigConfig,
[FromServices] IOptionsMonitor<SystemHospitalOption> _systemHospitalOption,
[FromServices] IRepository<TrialDictionary> _trialDictionaryRepository,
[FromServices] IRepository<TrialUser> _trialUserRepository,
[FromServices] IRepository<TrialUserRole> _trialUserRepository,
[FromServices] IFusionCache _provider)
{
var code = _systemHospitalOption.CurrentValue.HospitalCode;
@ -310,7 +309,7 @@ namespace IRaCIS.Application.Services
//如果是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
{
//"激活码信息有误!"
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 });
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));
}
else
{
// 激活信息反序列化错误
return ResponseOutput.NotOk(_localizer["Trial_ActivationCodeDeserializeError"]);
return ResponseOutput.NotOk(_localizer["Trial_ActivationCodeDeserializeError"] );
}
@ -1316,7 +1315,7 @@ namespace IRaCIS.Application.Services
}
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]);
//subjectId = find.Id;
}
@ -1800,7 +1799,7 @@ namespace IRaCIS.Application.Services
if (!arraysEqual)
{
//_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))
@ -2857,8 +2856,8 @@ namespace IRaCIS.Application.Services
.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.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(inQuery.UserTypeEnum != null, t => t.CreateUser.UserTypeRole.UserTypeEnum == inQuery.UserTypeEnum)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.Name), t => t.CreateUserRole.UserName.Contains(inQuery.Name) || t.CreateUserRole.FullName.Contains(inQuery.Name))
.WhereIf(inQuery.UserTypeEnum != null, t => t.CreateUserRole.UserTypeRole.UserTypeEnum == inQuery.UserTypeEnum)
.WhereIf(inQuery.BeginDownloadTime != null, t => t.CreateTime >= inQuery.BeginDownloadTime)
.WhereIf(inQuery.EndDownloadTime != null, t => t.CreateTime <= inQuery.EndDownloadTime)
@ -3386,66 +3385,43 @@ namespace IRaCIS.Application.Services
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 exsitStudyId = await _fusionCache.GetOrDefaultAsync<string>(CacheKeys.CmoveStudyId(item), null);
var cmoveRequest = new DicomCMoveRequest(hirServer.CalledAE, item);
var latestInstance = latestInstanceList.Where(t => t.StudyInstanceUid == item).FirstOrDefault();
cmoveRequest.OnResponseReceived += responseDelegate;
//缓存不存在当前检查或者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));
cmoveRequestList.Add(cmoveRequest);
var cmoveRequest = new DicomCMoveRequest(hirServer.CalledAE, item);
_logger.LogInformation($"执行C-Move StudyInstanceUID{item}");
cmoveRequest.OnResponseReceived += responseDelegate;
#region 测试私有tag 传输信息
// 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}");
}
}
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;

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.VisitName, u => u.MapFrom(s => s.SubjectVisit.VisitName))
.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.DownLoadUserFullName, u => u.MapFrom(s => s.CreateUser.FullName))
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUser.UserTypeEnum));
.ForMember(d => d.DownLoadUserFullName, u => u.MapFrom(s => s.CreateUserRole.FullName))
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.CreateUserRole.UserTypeEnum));
CreateMap<SCPImageUpload, SCPImageUploadView>();
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<EnrollDetail> _enrollDetailRepository,
IRepository<Workload> _workloadRepository,
IRepository<User> _userRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<ReadingQuestionCriterionTrial> _ReadingQuestionCriterionTrialRepository,
IRepository<TrialExperience> _trialExperienceRepository,
@ -146,7 +146,7 @@ namespace IRaCIS.Core.Application.Service
TrialId = trialId,
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()
@ -174,7 +174,7 @@ namespace IRaCIS.Core.Application.Service
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)
{
@ -352,7 +352,7 @@ namespace IRaCIS.Core.Application.Service
//[Authorize(Policy = IRaCISPolicy.PM_APM_SPM_CPM_SMM_CMM)]
[UnitOfWork]
public async Task<IResponseOutput> ConfirmReviewer(ConfirmReviewerCommand confirmReviewerCommand,
[FromServices] IRepository<TrialUser> _trialUserRepository,
[FromServices] IRepository<TrialUserRole> _trialUserRepository,
[FromServices] IRepository<TaskAllocationRule> _taskAllocationRuleRepository)
{
//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))
{
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 });

View File

@ -6,6 +6,7 @@ using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Service.BusinessFilter;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain;
using IRaCIS.Core.Domain.Management;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore;
using IRaCIS.Core.Infrastructure;
@ -48,7 +49,7 @@ namespace IRaCIS.Core.Application.Service
IRepository<ReadingQuestionCriterionTrial> _readingQuestionCriterionTrialRepository,
IRepository<VisitTask> _visitTaskRepository,
IRepository<DicomSeries> _dicomSeriesRepository,
IRepository<User> _userRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialBodyPart> _trialBodyPartRepository,
IDistributedLockProvider _distributedLockProvider,
ILogger<TestService> _logger, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
@ -98,6 +99,213 @@ namespace IRaCIS.Core.Application.Service
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]
public class TestModel
{
@ -154,7 +362,7 @@ namespace IRaCIS.Core.Application.Service
{
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}秒";
}
@ -219,7 +427,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> TestDistributedLock()
{
await _userRepository.Where().Select(t => t.FullName).FirstNotNullAsync();
await _userRoleRepository.Where().Select(t => t.FullName).FirstNotNullAsync();
Console.WriteLine($"我进来了当前值是:" + 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();
//CultureInfo culture = CultureInfo.CurrentUICulture;

View File

@ -10,11 +10,11 @@ namespace IRaCIS.Core.Application.Triggers
public class AddlTrialUserTrigger(
IStringLocalizer _localizer,
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;
@ -24,7 +24,7 @@ namespace IRaCIS.Core.Application.Triggers
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)
{

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;
@ -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;
@ -56,60 +56,60 @@ namespace IRaCIS.Core.Application.Triggers
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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)
{
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]
public List<SubjectUser> EarlierSubjectUserList { get; set; }
[JsonIgnore]
public User DoctorUser { get; set; }
public UserRole DoctorUser { get; set; }
[JsonIgnore]
public Subject Subject { get; set; }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -96,7 +96,7 @@ public class TrialEmailBlackUser : Entity
public TrialEmailNoticeConfig TrialEmailNoticeConfig { get; set; }
[JsonIgnore]
public User User { get; set; }
public UserRole User { get; set; }
public Guid TrialEmailNoticeConfigId { 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 User PublishedUser { get; set; }
public UserRole PublishedUser { get; set; }
public DateTime? PublishedTime { get; set; }

View File

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

View File

@ -1,3 +1,4 @@
using IRaCIS.Core.Domain.Management;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Domain.Models;
@ -8,20 +9,59 @@ public class UserLog : BaseAddAuditEntity
{
#region 导航属性
[JsonIgnore]
public User LoginUser { get; set; }
public IdentityUser TargetIdentityUser { get; set; }
[JsonIgnore]
public User OptUser { get; set; }
#endregion
public string IP { get; set; } = string.Empty;
public string LoginFaildName { get; set; } = string.Empty;
public UserOptType OptType { get; set; }
public string LoginPassword { get; set; } = string.Empty;
public Guid? LoginUserId { get; set; }
public IdentityUser ActionIdentityUser { get; set; }
#endregion
public string IP { get; set; } = string.Empty;
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;
#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("密码")]
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; }
[JsonIgnore]
public List<User> UserList { get; set; }
public List<UserRole> UserList { get; set; }
#endregion
public UserTypeEnum UserTypeEnum { get; set; }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -61,7 +61,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
{
return new List<Type>()
{
typeof(TrialUser),
typeof(TrialUserRole),
typeof(TrialSiteSurvey),
typeof(TrialSiteUser),
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 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);
await InsertInspection<TrialUser>(entity, type, x => new InspectionConvertDTO
await InsertInspection<TrialUserRole>(entity, type, x => new InspectionConvertDTO
{
IsDistinctionInterface = type == AuditOpt.Update ? true : false,
TrialId = x.TrialId,
@ -2688,11 +2688,11 @@ namespace IRaCIS.Core.Infra.EFCore.Common
#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 entity = item.Entity as User;
var entity = item.Entity as UserRole;
var extraIdentification = string.Empty;
@ -2702,7 +2702,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common
extraIdentification = "/Personalization";
}
await InsertInspection<User>(entity, type, x => new InspectionConvertDTO()
await InsertInspection<UserRole>(entity, type, x => new InspectionConvertDTO()
{
IsDistinctionInterface = false,
ExtraIndentification = extraIdentification

View File

@ -1,4 +1,5 @@
using IRaCIS.Core.Domain.BaseModel;
using IRaCIS.Core.Domain.Management;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Infra.EFCore.Common;
using IRaCIS.Core.Infrastructure.Encryption;
@ -373,7 +374,7 @@ public class IRaCISDBContext : DbContext
public virtual DbSet<VerificationCode> VerificationCodes { get; set; }
public virtual DbSet<Menu> MenuFunctions { 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; }
@ -396,7 +397,7 @@ public class IRaCISDBContext : DbContext
public virtual DbSet<TrialDictionary> TrialDictionary { 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; }
@ -405,7 +406,7 @@ public class IRaCISDBContext : DbContext
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; }
@ -593,6 +594,13 @@ public class IRaCISDBContext : DbContext
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

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?
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 之间 一对多 (一个用户可以参与多个项目)
builder.HasOne(s => s.User)
builder.HasOne(s => s.UserRole)
.WithMany(t => t.UserTrials)
.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");
}
}
}