diff --git a/IRaCIS.Core.Application/Service/Common/DTO/EmailNoticeConfigViewModel.cs b/IRaCIS.Core.Application/Service/Common/DTO/EmailNoticeConfigViewModel.cs index 28960a9bf..0af514bd5 100644 --- a/IRaCIS.Core.Application/Service/Common/DTO/EmailNoticeConfigViewModel.cs +++ b/IRaCIS.Core.Application/Service/Common/DTO/EmailNoticeConfigViewModel.cs @@ -5,6 +5,7 @@ //-------------------------------------------------------------------- using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Domain.Share; +using System.ComponentModel.DataAnnotations; namespace IRaCIS.Core.Application.Contracts { public class TrialSelectEmailNoticeConfigView : EmailNoticeConfigView @@ -71,6 +72,8 @@ namespace IRaCIS.Core.Application.Contracts public UserTypeEnum? CopyUserType { get; set; } + + } /// EmailNoticeConfigAddOrEdit 列表查询参数模型 diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index 61440b5bd..f176eedc1 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -1242,6 +1242,8 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetSysEmailNoticeConfigList(EmailNoticeConfigQuery inQuery) { + var trialConfig = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.IsEnrollementQualificationConfirm, t.IsPDProgressView }).First(); + var emailNoticeConfigQueryable = _emailNoticeConfigRepository .WhereIf(inQuery.SystemLevel == null, t => t.SystemLevel == SysEmailLevel.not_sys) .WhereIf(inQuery.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == inQuery.BusinessScenarioEnum) @@ -1252,11 +1254,34 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inQuery.EmailUrgentEnum != null, t => t.EmailUrgentEnum == inQuery.EmailUrgentEnum) .WhereIf(inQuery.ToUserType != null, t => t.EmailNoticeUserTypeList.Any(t => t.UserType == inQuery.ToUserType && t.EmailUserType == EmailUserType.To)) .WhereIf(inQuery.CopyUserType != null, t => t.EmailNoticeUserTypeList.Any(t => t.UserType == inQuery.CopyUserType && t.EmailUserType == EmailUserType.Copy)) + .WhereIf(trialConfig.IsEnrollementQualificationConfirm == false, t => t.BusinessModuleEnum != BusinessModule.EligibilityVerification) + .WhereIf(trialConfig.IsPDProgressView == false, t => t.BusinessModuleEnum != BusinessModule.PDVerification) + .WhereIf(trialConfig.IsPDProgressView == false && trialConfig.IsEnrollementQualificationConfirm == false, t => t.BusinessModuleEnum != BusinessModule.PDVerification + && t.BusinessModuleEnum != BusinessModule.EligibilityVerification) .ProjectTo(_mapper.ConfigurationProvider, new { trialId = inQuery.TrialId }); return await emailNoticeConfigQueryable.ToPagedListAsync(inQuery); } + public async Task BatchAddEnrollOrPdEmailConfig(Guid trialId) + { + var trialConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.IsEnrollementQualificationConfirm, t.IsPDProgressView }).First(); + + var emailNoticeConfigQueryable = _emailNoticeConfigRepository + + .WhereIf(trialConfig.IsEnrollementQualificationConfirm == true, t => t.BusinessModuleEnum == BusinessModule.EligibilityVerification) + .WhereIf(trialConfig.IsPDProgressView == true, t => t.BusinessModuleEnum == BusinessModule.PDVerification) + .WhereIf(trialConfig.IsPDProgressView == true && trialConfig.IsEnrollementQualificationConfirm == true, t => t.BusinessModuleEnum == BusinessModule.PDVerification + && t.BusinessModuleEnum == BusinessModule.EligibilityVerification) + .ProjectTo(_mapper.ConfigurationProvider); + + + var list = await emailNoticeConfigQueryable.ToListAsync(); + + + return await BatchAddSysEmailConfig(_mapper.Map>(list.Where(t => t.IsHaveSelected == false).ToList())); + + } /// /// 批量勾选 传递列表每行数据,后台进行处理转换,建立关联关系 /// @@ -1320,32 +1345,13 @@ namespace IRaCIS.Core.Application.Service } - public async Task BatchAddEnrollOrPdEmailConfig(Guid trialId) - { - var trialConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => new { t.IsEnrollementQualificationConfirm, t.IsPDProgressView }).First(); - - var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId) - - .WhereIf(trialConfig.IsEnrollementQualificationConfirm == true, t => t.BusinessModuleEnum == BusinessModule.EligibilityVerification) - .WhereIf(trialConfig.IsPDProgressView == true, t => t.BusinessModuleEnum == BusinessModule.PDVerification) - .WhereIf(trialConfig.IsPDProgressView == true && trialConfig.IsEnrollementQualificationConfirm == true, t => t.BusinessModuleEnum == BusinessModule.PDVerification - && t.BusinessModuleEnum == BusinessModule.EligibilityVerification) - .ProjectTo(_mapper.ConfigurationProvider); - - - var list = await trialEmailNoticeConfigQueryable.ToListAsync(); - - - return await BatchAddSysEmailConfig(_mapper.Map>(list)); - - } [HttpPost] public async Task>> GetTrialEmailNoticeConfigList(TrialEmailNoticeConfigQuery inQuery) { //await SyncSystemEmainCofigDocListAsync(inQuery.TrialId); - var trialConfig = _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new { t.IsEnrollementQualificationConfirm, t.IsPDProgressView }).First(); + var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == inQuery.TrialId) .WhereIf(inQuery.IsDistinguishCriteria == false, t => t.TrialReadingCriterionId == null) @@ -1358,10 +1364,7 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inQuery.CopyUserType != null, t => t.TrialEmailNoticeUserList.Any(t => t.UserType == inQuery.CopyUserType && t.EmailUserType == EmailUserType.Copy)) .WhereIf(inQuery.BusinessModuleEnum != null, t => t.BusinessModuleEnum == inQuery.BusinessModuleEnum) - .WhereIf(trialConfig.IsEnrollementQualificationConfirm == false, t => t.BusinessModuleEnum != BusinessModule.EligibilityVerification) - .WhereIf(trialConfig.IsPDProgressView == false, t => t.BusinessModuleEnum != BusinessModule.PDVerification) - .WhereIf(trialConfig.IsPDProgressView == false && trialConfig.IsEnrollementQualificationConfirm == false, t => t.BusinessModuleEnum != BusinessModule.PDVerification - && t.BusinessModuleEnum != BusinessModule.EligibilityVerification) + .ProjectTo(_mapper.ConfigurationProvider); var sortField = string.IsNullOrWhiteSpace(inQuery.SortField) ? nameof(TrialEmailNoticeConfigView.Code) : inQuery.SortField; diff --git a/IRaCIS.Core.Application/Service/Document/_MapConfig.cs b/IRaCIS.Core.Application/Service/Document/_MapConfig.cs index 2311b6420..e78bebdf4 100644 --- a/IRaCIS.Core.Application/Service/Document/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Document/_MapConfig.cs @@ -53,7 +53,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); - CreateMap (); + CreateMap (); CreateMap()