diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index 12f4630f5..f8a63c8a9 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -33,6 +33,7 @@ using Microsoft.AspNetCore.SignalR; using Microsoft.AspNetCore.StaticFiles; using Microsoft.AspNetCore.WebUtilities; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Microsoft.Net.Http.Headers; using MiniExcelLibs; @@ -235,13 +236,17 @@ namespace IRaCIS.Core.API.Controllers public IUserInfo _userInfo { get; set; } private readonly IMediator _mediator; - private readonly IWebHostEnvironment _hostEnvironment; + + public IStringLocalizer _localizer { get; set; } + + + private readonly IWebHostEnvironment _hostEnvironment; private readonly IRepository _repository; private readonly IEasyCachingProvider _provider; private readonly QCCommon _qCCommon; - public StudyController(IMapper mapper, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IMediator mediator, IEasyCachingProvider provider, + public StudyController(IMapper mapper, IStringLocalizer localizer, IUserInfo userInfo, IWebHostEnvironment hostEnvironment, IMediator mediator, IEasyCachingProvider provider, QCCommon qCCommon, IRepository repository) { @@ -249,8 +254,8 @@ namespace IRaCIS.Core.API.Controllers _provider = provider; _hostEnvironment = hostEnvironment; _mediator = mediator; - - _mapper = mapper; + _localizer = localizer; + _mapper = mapper; _userInfo = userInfo; _repository = repository; } @@ -313,7 +318,7 @@ namespace IRaCIS.Core.API.Controllers string.IsNullOrEmpty(mediaTypeHeader.Boundary.Value)) { //---不支持的MediaType - return ResponseOutput.NotOk(StaticData.International("UploadDownLoad_UnsupportedMedia")); + return ResponseOutput.NotOk(_localizer["UploadDownLoad_UnsupportedMedia"]); } var archiveStudyCommand = new ArchiveStudyCommand() { AbandonStudyId = abandonStudyId, StudyInstanceUid = studyInstanceUid, SubjectVisitId = subjectVisitId }; @@ -407,7 +412,7 @@ namespace IRaCIS.Core.API.Controllers _provider.Remove($"StudyUid_{trialId}_{archiveStudyCommand.StudyInstanceUid}"); //---请求异常,请重试! - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_RequestError")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_RequestError"]); } studyMonitor.FileSize = (decimal)HttpContext.Request.ContentLength; @@ -559,7 +564,7 @@ namespace IRaCIS.Core.API.Controllers if (!fileName.EndsWith(".xlsx") && !fileName.EndsWith(".csv") && !fileName.EndsWith(".xls")) { //---支持.xlsx、.xls、.csv格式的文件上传。 - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_SupportedFormats")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_SupportedFormats"]); } fileStream.CopyTo(templateFileStream); @@ -609,7 +614,7 @@ namespace IRaCIS.Core.API.Controllers //if (import.RowErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.RowErrors)); - if (import.TemplateErrors.Count > 0) return ResponseOutput.NotOk(JsonConvert.SerializeObject(import.TemplateErrors)); + if (import.TemplateErrors.Count > 0) return ResponseOutput.NotOk(_localizer["UploadDownLoad_TemplateErrors"]); etcCheckList = import.Data.ToList(); } @@ -697,7 +702,7 @@ namespace IRaCIS.Core.API.Controllers if (etcCheckList == null || etcCheckList.Count == 0) { //---请保证上传数据符合模板文件中的样式,且存在有效数据。 - return ResponseOutput.NotOk(StaticData.International("UploadDownLoad_InvalidData")); + return ResponseOutput.NotOk(_localizer["UploadDownLoad_InvalidData"]); } else { @@ -718,7 +723,7 @@ namespace IRaCIS.Core.API.Controllers if (etcCheckList.Count == 0) { //---请保证上传数据符合模板文件中的样式,且存在有效数据。 - return ResponseOutput.NotOk(StaticData.International("UploadDownLoad_InvalidData")); + return ResponseOutput.NotOk(_localizer["UploadDownLoad_InvalidData"]); } } @@ -962,13 +967,14 @@ namespace IRaCIS.Core.API.Controllers public IMapper _mapper { get; set; } public IUserInfo _userInfo { get; set; } private readonly IMediator _mediator; + public IStringLocalizer _localizer { get; set; } + private readonly IWebHostEnvironment _hostEnvironment; - private readonly IWebHostEnvironment _hostEnvironment; - - public UploadDownLoadController(IMapper mapper, IUserInfo userInfo, IMediator mediator, IWebHostEnvironment hostEnvironment) + public UploadDownLoadController(IMapper mapper, IUserInfo userInfo, IStringLocalizer localizer, IMediator mediator, IWebHostEnvironment hostEnvironment) { _hostEnvironment = hostEnvironment; - _mediator = mediator; + _localizer= localizer, + _mediator = mediator; _mapper = mapper; _userInfo = userInfo; } @@ -994,7 +1000,7 @@ namespace IRaCIS.Core.API.Controllers if (!realFileName.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase)) { // 请用提供格式的模板excel上传需要处理的数据 - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_TemplateUploadData")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_TemplateUploadData"]); } var ossRelativePath = await oSSService.UploadToOSSAsync(fileStream, "InspectionUpload/SiteSurvey", realFileName); @@ -1015,7 +1021,7 @@ namespace IRaCIS.Core.API.Controllers if (excelList.Any(t => string.IsNullOrWhiteSpace(t.TrialSiteCode) || string.IsNullOrWhiteSpace(t.FirstName) || string.IsNullOrWhiteSpace(t.LastName) || string.IsNullOrWhiteSpace(t.Email) || string.IsNullOrWhiteSpace(t.UserTypeStr))) { //请确保Excel中 每一行的 中心编号,姓名,邮箱,用户类型数据记录完整再进行上传 - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_EnsureCompleteData")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_EnsureCompleteData"]); } var siteCodeList = excelList.Select(t => t.TrialSiteCode.Trim().ToUpper()).Distinct().ToList(); @@ -1023,31 +1029,31 @@ namespace IRaCIS.Core.API.Controllers if (_trialSiteRepository.Where(t => t.TrialId == trialId && siteCodeList.Contains(t.TrialSiteCode.ToUpper())).Count() != siteCodeList.Count) { //在项目中未找到该Excel中部分或全部中心 - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_InvalidCenters")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_InvalidCenters"]); } if (excelList.GroupBy(t => new { t.TrialSiteCode, t.UserTypeStr, t.Email }).Any(g => g.Count() > 1)) { // 同一邮箱,同一用户类型,只能生成一个账户,请核查Excel数据 - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_CheckDuplicateAccounts")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_CheckDuplicateAccounts"]); } if (excelList.Any(t => !t.Email.Contains("@"))) { //有邮箱不符合邮箱格式,请核查Excel数据 - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_InvalidEmail")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_InvalidEmail"]); } var generateUserTypeList = new List() { "CRC", "CRA" }; if (excelList.Any(t => !generateUserTypeList.Contains(t.UserTypeStr.ToUpper()))) { //用户类型仅能为 CRC,SR,CRA 请核查Excel数据 - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_InvalidUserType")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_InvalidUserType"]); } if (excelList.Count == 0) { - throw new BusinessValidationFailedException(StaticData.International("UploadDownLoad_NoValiddata")); + throw new BusinessValidationFailedException(_localizer["UploadDownLoad_NoValiddata"]); } //处理好 用户类型 和用户类型枚举 var sysUserTypeList = _usertypeRepository.Where(t => t.UserTypeEnum == UserTypeEnum.CRA || t.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => new { UserTypeId = t.Id, t.UserTypeEnum }).ToList();