From b6e5bd91f938b8750b1ef5eaef64ff524f7cbc5c Mon Sep 17 00:00:00 2001
From: "{872297557@qq.com}" <872297557@qq.com>
Date: Fri, 9 Dec 2022 11:15:03 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9D=83=E9=99=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/InspectionController.cs | 3 +++
.../BusinessFilter/TrialResourceFilter.cs | 8 ++++++--
.../Service/TrialSiteUser/TrialConfigService.cs | 16 +++++-----------
.../Service/Visit/VisitPlanService.cs | 2 ++
IRaCIS.Core.Domain/_Config/_StaticData.cs | 9 +++++++++
5 files changed, 25 insertions(+), 13 deletions(-)
diff --git a/IRaCIS.Core.API/Controllers/InspectionController.cs b/IRaCIS.Core.API/Controllers/InspectionController.cs
index 206e06340..1041ae67b 100644
--- a/IRaCIS.Core.API/Controllers/InspectionController.cs
+++ b/IRaCIS.Core.API/Controllers/InspectionController.cs
@@ -242,6 +242,7 @@ namespace IRaCIS.Core.API.Controllers
///
[HttpPost, Route("Inspection/configTrialBasicInfo/ConfigTrialBasicInfoConfirm")]
[UnitOfWork]
+ [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt" })]
public async Task ConfigTrialBasicInfoConfirm(DataInspectionDto opt)
{
@@ -261,6 +262,7 @@ namespace IRaCIS.Core.API.Controllers
///
[HttpPost, Route("Inspection/configTrialBasicInfo/ConfigTrialProcessInfoConfirm")]
[UnitOfWork]
+ [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt" })]
public async Task ConfigTrialProcessInfoConfirm(DataInspectionDto opt)
{
opt.Data.IsTrialProcessConfirmed = true;
@@ -282,6 +284,7 @@ namespace IRaCIS.Core.API.Controllers
///
[HttpPost, Route("Inspection/configTrialBasicInfo/ConfigTrialUrgentInfoConfirm")]
[UnitOfWork]
+ [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt" })]
public async Task ConfigTrialUrgentInfoConfirm(DataInspectionDto opt)
{
opt.Data.IsTrialUrgentConfirmed = true;
diff --git a/IRaCIS.Core.Application/BusinessFilter/TrialResourceFilter.cs b/IRaCIS.Core.Application/BusinessFilter/TrialResourceFilter.cs
index 2ba6c8812..3c98bcf29 100644
--- a/IRaCIS.Core.Application/BusinessFilter/TrialResourceFilter.cs
+++ b/IRaCIS.Core.Application/BusinessFilter/TrialResourceFilter.cs
@@ -3,6 +3,7 @@ using IRaCIS.Core.Domain.Share;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
+using static IRaCIS.Core.Domain.Share.StaticData;
namespace IRaCIS.Core.Application.Filter
{
@@ -14,11 +15,14 @@ namespace IRaCIS.Core.Application.Filter
private readonly IEasyCachingProvider _provider;
private readonly IUserInfo _userInfo;
+ private readonly string _trialOpt;
- public TrialResourceFilter(IEasyCachingProvider provider, IUserInfo userInfo)
+
+ public TrialResourceFilter(IEasyCachingProvider provider, IUserInfo userInfo, string trialOpt)
{
_provider = provider;
_userInfo = userInfo;
+ _trialOpt = trialOpt;
}
@@ -98,7 +102,7 @@ namespace IRaCIS.Core.Application.Filter
var trialStatusStr = cacheResultDic[trialIdStr];
// 这里是统一拦截 项目有关的操作允许情况(特殊的地方,比如项目配置(有的在多种状态(初始化,ongoing)都可以操作,有的仅仅在Initializing)还有 项目添加和更新,不走这里,特殊处理,不然在这里显得很乱,判断是哪个接口)
- if (trialStatusStr.Value == StaticData.TrialState.TrialOngoing)
+ if (trialStatusStr.Value == StaticData.TrialState.TrialOngoing || _trialOpt==TrialOpt.BeforeOngoingCantOpt)
{
await next.Invoke();
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
index 93c7628ec..828ed1950 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
@@ -15,6 +15,7 @@ using IRaCIS.Core.Application.Interfaces;
using IRaCIS.Core.Application.ViewModel;
using MassTransit;
using IRaCIS.Core.Application.Filter;
+using static IRaCIS.Core.Domain.Share.StaticData;
namespace IRaCIS.Core.Application
{
@@ -648,7 +649,7 @@ namespace IRaCIS.Core.Application
///
[HttpPut]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
- //[TypeFilter(typeof(TrialResourceFilter))]
+
public async Task ConfigTrialBasicInfo(BasicTrialConfig trialConfig)
{
await VerifyOnlyInOngoingOrInitialIzingOptAsync(trialConfig.TrialId);
@@ -672,7 +673,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))
@@ -746,7 +747,6 @@ namespace IRaCIS.Core.Application
///
[HttpPut]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
- //[TypeFilter(typeof(TrialResourceFilter))]
public async Task ConfigTrialUrgentInfo(TrialUrgentConfig trialConfig)
{
@@ -881,7 +881,6 @@ namespace IRaCIS.Core.Application
-
///
/// 获取 配置的所有信息 没有分多个接口
///
@@ -895,18 +894,13 @@ namespace IRaCIS.Core.Application
}
-
-
-
-
-
///
/// 配置项目任务信息
///
///
///
[HttpPut]
- //[TypeFilter(typeof(TrialResourceFilter))]
+ [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt" })]
public async Task ConfigTrialTaskInfo(TrialTaskConfig trialConfig)
{
var trialInfo = (await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialConfig.TrialId)).IfNullThrowException();
@@ -923,7 +917,7 @@ namespace IRaCIS.Core.Application
///
///
[HttpPut]
- //[TypeFilter(typeof(TrialResourceFilter))]
+ [TypeFilter(typeof(TrialResourceFilter),Arguments = new object[] { "BeforeOngoingCantOpt" })]
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 039cdcd00..7db4f54f5 100644
--- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs
+++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs
@@ -89,6 +89,7 @@ namespace IRaCIS.Application.Services
[UnitOfWork]
[HttpPost]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
+ [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt" })]
public async Task AddOrUpdateVisitStage(VisitPlanCommand visitPlan)
{
@@ -190,6 +191,7 @@ namespace IRaCIS.Application.Services
[UnitOfWork]
[HttpPost("{trialId:guid}")]
[Authorize(Policy = IRaCISPolicy.PM_APM)]
+ [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "BeforeOngoingCantOpt" })]
public async Task ConfirmTrialVisitPlan(Guid trialId)
{
if (!await _trialRepository.AnyAsync(t => t.Id == trialId && (t.TrialStatusStr == StaticData.TrialState.TrialInitializing || t.TrialStatusStr == StaticData.TrialState.TrialOngoing)))
diff --git a/IRaCIS.Core.Domain/_Config/_StaticData.cs b/IRaCIS.Core.Domain/_Config/_StaticData.cs
index e0732ba27..438cb37d5 100644
--- a/IRaCIS.Core.Domain/_Config/_StaticData.cs
+++ b/IRaCIS.Core.Domain/_Config/_StaticData.cs
@@ -50,6 +50,15 @@ public static class StaticData
}
+
+ public static class TrialOpt
+ {
+ //默认
+ public static readonly string AfterStopCannNotOpt = "AfterStopCannNotOpt";
+
+ //ongoing 前能操作
+ public static readonly string BeforeOngoingCantOpt = "BeforeOngoingCantOpt";
+ }