diff --git a/IRaCIS.Core.API/Controllers/InspectionController.cs b/IRaCIS.Core.API/Controllers/InspectionController.cs
index 6e4684bbd..b6da6930d 100644
--- a/IRaCIS.Core.API/Controllers/InspectionController.cs
+++ b/IRaCIS.Core.API/Controllers/InspectionController.cs
@@ -4,7 +4,7 @@ using AutoMapper;
using IRaCIS.Application.Interfaces;
using IRaCIS.Core.Application.Contracts;
-
+using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Application.Image.QA;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.Service;
@@ -300,6 +300,8 @@ namespace IRaCIS.Core.API.Controllers
///
[HttpPost, Route("Inspection/configTrialBasicInfo/TrialConfigSignatureConfirm")]
[UnitOfWork]
+ [TypeFilter(typeof(TrialResourceFilter))]
+
public async Task TrialConfigSignatureConfirm(DataInspectionDto opt)
{
var singid = await _inspectionService.RecordSing(opt.SignInfo);
diff --git a/IRaCIS.Core.API/_ServiceExtensions/Serilog/HttpContextEnricher.cs b/IRaCIS.Core.API/_ServiceExtensions/Serilog/HttpContextEnricher.cs
index 4948a695e..330cbc0a0 100644
--- a/IRaCIS.Core.API/_ServiceExtensions/Serilog/HttpContextEnricher.cs
+++ b/IRaCIS.Core.API/_ServiceExtensions/Serilog/HttpContextEnricher.cs
@@ -36,7 +36,7 @@ namespace IRaCIS.Core.API
//logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("RequestBody", await ReadRequestBody(httpContext.Request)));
//logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("RequestIP", IPHelper.GetIP(httpContext.Request) ));
logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("TokenUserRealName", httpContext?.User?.FindFirst(ClaimAttributes.RealName)?.Value));
- logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("TokenUserType", httpContext?.User?.FindFirst("userTypeEnumName")?.Value));
+ logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("TokenUserType", httpContext?.User?.FindFirst(JwtIRaCISClaimType.UserTypeShortName)?.Value));
//logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("Referer", httpContext.Request.Headers["Referer"].ToString()));
//logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("request_path", httpContext.Request.Path));
diff --git a/IRaCIS.Core.Application/BusinessFilter/TrialResourceFilter.cs b/IRaCIS.Core.Application/BusinessFilter/TrialResourceFilter.cs
index f6775a8e8..2ba6c8812 100644
--- a/IRaCIS.Core.Application/BusinessFilter/TrialResourceFilter.cs
+++ b/IRaCIS.Core.Application/BusinessFilter/TrialResourceFilter.cs
@@ -9,7 +9,7 @@ namespace IRaCIS.Core.Application.Filter
///
/// 主要为了 处理项目结束 锁库,不允许操作
///
- public class TrialResourceFilter : Attribute, IAsyncResourceFilter /* , IResourceFilter*/
+ public class TrialResourceFilter : Attribute, IAsyncResourceFilter
{
private readonly IEasyCachingProvider _provider;
private readonly IUserInfo _userInfo;
diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
index b39fa6d08..90fd5400b 100644
--- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
+++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
@@ -107,6 +107,7 @@ namespace IRaCIS.Core.Application.Service
t.SourceSubjectVisitId,
t.SouceReadModuleId,
t.SubjectId,
+ t.Subject.SiteId,
t.ReadingTaskState,
t.ReadingCategory,
@@ -182,8 +183,12 @@ namespace IRaCIS.Core.Application.Service
var sendEmailConfig = new SMTPEmailConfig();
+ //收件人 如果是CRC CRA 要按照中心发送
var toUserTypeEnumList = emailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.To).Select(c => c.UserType).ToList();
- var toUserList = _repository.Where(t => t.TrialId == taskInfo.TrialId && toUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.User.EMail, t.User.FullName }).ToList();
+
+
+
+ var toUserList = _repository.Where(t => t.TrialId == taskInfo.TrialId && toUserTypeEnumList.Contains(t.User.UserTypeEnum) && t.SiteId== taskInfo.SiteId).Select(t => new { t.User.EMail, t.User.FullName }).ToList();
var copyUserTypeEnumList = emailConfig.TrialEmailNoticeUserList.Where(t => t.EmailUserType == EmailUserType.Copy).Select(c => c.UserType).ToList();
var copyUserList = _repository.Where(t => t.TrialId == taskInfo.TrialId && copyUserTypeEnumList.Contains(t.User.UserTypeEnum)).Select(t => new { t.User.EMail, t.User.FullName }).ToList();
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
index 948a06197..f3c15670a 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
@@ -14,6 +14,7 @@ using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.ViewModel;
using MassTransit;
+using IRaCIS.Core.Application.Filter;
namespace IRaCIS.Core.Application
{
@@ -647,6 +648,7 @@ namespace IRaCIS.Core.Application
///
[HttpPut]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
+ [TypeFilter(typeof(TrialResourceFilter))]
public async Task ConfigTrialBasicInfo(BasicTrialConfig trialConfig)
{
await VerifyOnlyInOngoingOrInitialIzingOptAsync(trialConfig.TrialId);
@@ -670,6 +672,7 @@ namespace IRaCIS.Core.Application
///
[HttpPut]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
+ [TypeFilter(typeof(TrialResourceFilter))]
public async Task ConfigTrialProcessInfo(TrialProcessConfig trialConfig)
{
if (!await _trialRepository.Where(t => t.Id == trialConfig.TrialId).IgnoreQueryFilters().AnyAsync(t => t.TrialStatusStr == StaticData.TrialState.TrialInitializing))
@@ -743,6 +746,7 @@ namespace IRaCIS.Core.Application
///
[HttpPut]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
+ [TypeFilter(typeof(TrialResourceFilter))]
public async Task ConfigTrialUrgentInfo(TrialUrgentConfig trialConfig)
{
@@ -902,6 +906,7 @@ namespace IRaCIS.Core.Application
///
///
[HttpPut]
+ [TypeFilter(typeof(TrialResourceFilter))]
public async Task ConfigTrialTaskInfo(TrialTaskConfig trialConfig)
{
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException();
@@ -918,6 +923,7 @@ namespace IRaCIS.Core.Application
///
///
[HttpPut]
+ [TypeFilter(typeof(TrialResourceFilter))]
public async Task ConfigTrialReadingTaskViewRule(TrialReadingTaskViewConfig trialConfig)
{
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException();
diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs
index fcb72be74..596c1ec9b 100644
--- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs
@@ -88,6 +88,7 @@ namespace IRaCIS.Application.Services
/// 添加或更新访视计划某项
[UnitOfWork]
[HttpPost]
+ [TypeFilter(typeof(TrialResourceFilter))]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
public async Task AddOrUpdateVisitStage(VisitPlanCommand visitPlan)
{
@@ -189,6 +190,7 @@ namespace IRaCIS.Application.Services
[UnitOfWork]
[HttpPost("{trialId:guid}")]
+ [TypeFilter(typeof(TrialResourceFilter))]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
public async Task ConfirmTrialVisitPlan(Guid trialId)
{