using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using AutoMapper; using Castle.Core.Internal; using IRaCIS.Application.Interfaces; using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Filter; using IRaCIS.Core.Application.Image.QA; using IRaCIS.Core.Application.Service.Inspection.DTO; using IRaCIS.Core.Application.Service.Inspection.Interface; using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infra.EFCore; using IRaCIS.Core.Infrastructure.Extention; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace IRaCIS.Core.API.Controllers { [ApiController, ApiExplorerSettings(GroupName = "Reviewer")] public class InspectionController : ControllerBase { private readonly IRepository _repository; private readonly IMapper _mapper; private readonly IUserInfo _userInfo; private readonly ITrialDocumentService _trialDocumentService; private readonly IQCListService _qCListService; private readonly ITrialConfigService _trialConfigService; private readonly ISubjectService _subjectService; private readonly IInspectionService _inspectionService; private readonly IRepository _dataInspectionRepository; private delegate Task executionFun(dynamic data); public InspectionController(IRepository repository, IRepository _repositoryDataInspection, IMapper mapper, IUserInfo userInfo, ITrialDocumentService trialDocumentService, IRepository dataInspectionRepository, IQCListService _qCListService, IInspectionService sinspectionService, ITrialConfigService _trialConfigService, ISubjectService _subjectService) { _repository = repository; _mapper = mapper; _userInfo = userInfo; this._inspectionService = sinspectionService; this._trialDocumentService = trialDocumentService; this._qCListService = _qCListService; this._trialConfigService = _trialConfigService; this._subjectService = _subjectService; this._dataInspectionRepository = dataInspectionRepository; } /// /// 获取稽查数据 /// /// [HttpPost, Route("Inspection/GetInspectionData")] public async Task> GetInspectionData(GetDataInspectionDto dto) { return await _inspectionService.GetInspectionData(dto); } /// /// 用户 签名某个文档 签署文件 /// /// /// [HttpPost, Route("Inspection/trialDocument/userConfirm")] [UnitOfWork] public async Task UserConfirm(TrialDocumentConfirmDTO opt) { var fun = _trialDocumentService.UserConfirm; return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun); } #region setting ///// ///// 配置 基础逻辑信息 ///// ///// ///// //[HttpPut, Route("configTrialBasicInfo/configTrialBasicInfo")] //[UnitOfWork] //public async Task ConfigTrialBasicInfo(InsBasicTrialConfig opt) //{ // var fun = _trialConfigService.ConfigTrialBasicInfo; // return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun); //} ///// ///// 配置流程 ///// ///// ///// //[HttpPut, Route("configTrialBasicInfo/configTrialProcessInfo")] //[UnitOfWork] //public async Task ConfigTrialProcessInfo(InsTrialProcessConfig opt) //{ // var fun = _trialConfigService.ConfigTrialProcessInfo; // return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun); //} ///// ///// 配置加急信息 ///// ///// ///// //[HttpPut, Route("configTrialBasicInfo/ConfigTrialUrgentInfo")] //[UnitOfWork] //public async Task ConfigTrialUrgentInfo(InsTrialUrgentConfig opt) //{ // var fun = _trialConfigService.ConfigTrialUrgentInfo; // return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun); //} #endregion #region 受试者 /// /// 添加或更新受试者信息[New] /// /// /// //[TypeFilter(typeof(TrialResourceFilter))] [HttpPost, Route("Inspection/Subject/AddOrUpdateSubject")] [UnitOfWork] public async Task AddOrUpdateSubject(InsSubjectCommand opt) { opt.AuditInfo.SubjectId = opt.OptCommand.Id; var fun = _subjectService.AddOrUpdateSubject; return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun); } /// /// 修改受试者状态 /// /// /// /// [HttpPut, Route("Inspection/Subject/UpdateSubjectStatus")] [UnitOfWork] public async Task UpdateSubjectStatus(InsUpdateSubjectStatus opt) { var fun = _subjectService.UpdateSubjectStatus; return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun); } /// /// 删除受试者 /// /// /// [HttpDelete, Route("Inspection/Subject/DeleteSubject")] [UnitOfWork] public async Task DeleteSubject(InsDeleteSubjectDto opt) { var fun = _subjectService.DeleteSubject; var data = await _subjectService.DeleteSubject(opt.OptCommand.SubjectId); return await _inspectionService.Enforcement(opt.OptCommand, opt.AuditInfo, opt.SignInfo, fun, data); } #endregion } }