diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 5f77c703a..154d2ba87 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -396,7 +396,7 @@ 项目外部人员 录入流程相关 - + 添加和更新接口 已验证邮箱和账户类型不允许添加重复项 diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs index 39e33e1fa..ca5d4e631 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs @@ -75,7 +75,7 @@ namespace IRaCIS.Core.Application.ViewModel } /// TrialExternalUserAddOrEdit 列表查询参数模型 - public class TrialExternalUserAddOrEdit : VerifyUserAdd + public class TrialExternalUserAddOrEdit { public Guid? Id { get; set; } @@ -85,6 +85,17 @@ namespace IRaCIS.Core.Application.ViewModel public string OrganizationName { get; set; } = String.Empty; + [NotDefault] + public Guid UserTypeId { get; set; } + + public string Email { get; set; } = string.Empty; + + public string Phone { get; set; } = string.Empty; + + public string FirstName { get; set; } = string.Empty; + public string LastName { get; set; } = string.Empty; + + //public bool IsSendEmail { get; set; } @@ -92,6 +103,18 @@ namespace IRaCIS.Core.Application.ViewModel } + + + public class TrialExternalUserAddAndSendEmail: TrialExternalUserAddOrEdit + { + public bool IsSendEmail { get; set; } + + public string BaseUrl { get; set; } = string.Empty; + + public string RouteUrl { get; set; } = string.Empty; + } + + public class TrialExternalUserConfirm { public string BaseUrl { get; set; } = string.Empty; @@ -159,18 +182,7 @@ namespace IRaCIS.Core.Application.ViewModel } - public class VerifyUserAdd - { - [NotDefault] - public Guid UserTypeId { get; set; } - public string Email { get; set; } = string.Empty; - - public string Phone { get; set; } = string.Empty; - - public string FirstName { get; set; } = string.Empty; - public string LastName { get; set; } = string.Empty; - } } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/Interface/ITrialExternalUserService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/Interface/ITrialExternalUserService.cs index 7a44cc4aa..065aeea98 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/Interface/ITrialExternalUserService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/Interface/ITrialExternalUserService.cs @@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Interfaces Task> GetTrialExternalUserList(TrialExternalUserQuery queryTrialExternalUser); - Task AddOrUpdateTrialExternalUser(TrialExternalUserAddOrEdit addOrEditTrialExternalUser); + Task AddOrUpdateTrialExternalUser(TrialExternalUserAddAndSendEmail addOrEditTrialExternalUser); Task DeleteTrialExternalUser(Guid trialExternalUserId, bool isSystemUser, Guid systemUserId); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs index 4df9d1ef8..ea990bc15 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs @@ -59,7 +59,7 @@ namespace IRaCIS.Core.Application.Service /// /// /// - public async Task AddOrUpdateTrialExternalUser(TrialExternalUserAddOrEdit addOrEditTrialExternalUser) + public async Task AddOrUpdateTrialExternalUser(TrialExternalUserAddAndSendEmail addOrEditTrialExternalUser) { if (addOrEditTrialExternalUser.Id == null) @@ -209,7 +209,7 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task SendExternalUserJoinEmail(TrialExternalUserSendEmail sendEmail) { - var trialInfo = await _repository.FirstOrDefaultAsync(t => t.Id == sendEmail.TrialId); + var trialInfo = (await _repository.FirstOrDefaultAsync(t => t.Id == sendEmail.TrialId)).IfNullThrowException(); foreach (var userInfo in sendEmail.SendUsers) { diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs index 0459e7566..c496b8727 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs @@ -27,7 +27,7 @@ namespace IRaCIS.Core.Application.Service CreateMap(); - + CreateMap(); @@ -108,7 +108,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.VisitCount, u => u.MapFrom(s => s.SubjectVisitList.Count())) .ForMember(d => d.SubjectCount, u => u.MapFrom(s => s.SubjectList.Count())) - + .ForMember(d => d.UserCount, u => u.MapFrom(s => s.CRCUserList.Count())) .ForMember(d => d.UserNameList, u => u.MapFrom(s => s.CRCUserList.Where(t => t.IsDeleted == false).Select(u => u.User.FullName))); @@ -116,7 +116,7 @@ namespace IRaCIS.Core.Application.Service - CreateMap(); + CreateMap().IncludeMembers(t => t.Site) .ForMember(d => d.Id, u => u.MapFrom(s => s.Id)) @@ -124,7 +124,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.Site, u => u.MapFrom(s => s.Site.SiteName)) .ForMember(d => d.Hospital, u => u.MapFrom(s => s.Site.Hospital.HospitalName)) .ForMember(d => d.UserCount, u => u.MapFrom(s => s.CRCUserList.Count())) - .ForMember(d => d.UserNameList, u => u.MapFrom(s => s.CRCUserList.Where(t=>t.IsDeleted==false).Select(u=>u.User.FullName))); + .ForMember(d => d.UserNameList, u => u.MapFrom(s => s.CRCUserList.Where(t => t.IsDeleted == false).Select(u => u.User.FullName))); CreateMap(); @@ -133,29 +133,25 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.UserType, u => u.MapFrom(s => s.User.UserTypeRole.UserTypeShortName)) .ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName)); CreateMap(); - - - - #endregion CreateMap(); - CreateMap().ForMember(t=>t.TrialId,u=>u.MapFrom(c=>c.Id)) - .ForMember(t => t.CriterionIds, u => u.MapFrom(c => c.TrialDicList.Where(v=>v.KeyName== StaticData.Criterion).Select(r=>r.DictionaryId))); + CreateMap().ForMember(t => t.TrialId, u => u.MapFrom(c => c.Id)) + .ForMember(t => t.CriterionIds, u => u.MapFrom(c => c.TrialDicList.Where(v => v.KeyName == StaticData.Criterion).Select(r => r.DictionaryId))); CreateMap(); CreateMap(); CreateMap(); - CreateMap().ForMember(t=>t.TrialDicList,u=>u.MapFrom(k=>k.CriterionIds)); + CreateMap().ForMember(t => t.TrialDicList, u => u.MapFrom(k => k.CriterionIds)); CreateMap().EqualityComparison((odto, o) => odto == o.DictionaryId) .ForMember(t => t.DictionaryId, u => u.MapFrom(c => c)) - .ForMember(t => t.KeyName, u => u.MapFrom(c=> StaticData.Criterion) ); + .ForMember(t => t.KeyName, u => u.MapFrom(c => StaticData.Criterion)); + - CreateMap(); CreateMap(); @@ -171,7 +167,12 @@ namespace IRaCIS.Core.Application.Service + CreateMap().ReverseMap(); + + CreateMap(); + CreateMap().ReverseMap(); + CreateMap(); CreateMap(); @@ -180,7 +181,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() - + .ForMember(t => t.UserRealName, u => u.MapFrom(c => c.User.FullName)) .ForMember(t => t.UserName, u => u.MapFrom(c => c.User.UserName)) .ForMember(t => t.UserTypeShortName, u => u.MapFrom(c => c.User.UserTypeRole.UserTypeShortName)); @@ -204,14 +205,14 @@ namespace IRaCIS.Core.Application.Service CreateMap() - .ForMember(t=>t.TrialUserList,u=>u.Ignore()); + .ForMember(t => t.TrialUserList, u => u.Ignore()); CreateMap() - .ForMember(t => t.TrialSiteUserList, u => u.Ignore()); + .ForMember(t => t.TrialSiteUserList, u => u.Ignore()); - CreateMap().IncludeMembers(t=>t.User) + CreateMap().IncludeMembers(t => t.User) .ForMember(t => t.TrialSiteCode, u => u.MapFrom(c => c.TrialSite.TrialSiteCode)) .ForMember(t => t.TrialSiteAliasName, u => u.MapFrom(c => c.TrialSite.TrialSiteAliasName)) .ForMember(t => t.UserRealName, u => u.MapFrom(c => c.User.FullName)) @@ -222,7 +223,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() - .ForMember(t => t.TrialSiteUserList, u => u.Ignore()); + .ForMember(t => t.TrialSiteUserList, u => u.Ignore()); CreateMap() .ForMember(t => t.TrialRoleName, u => u.MapFrom(d => d.TrialRoleName.Value)) @@ -232,15 +233,15 @@ namespace IRaCIS.Core.Application.Service CreateMap() - .ForMember(t=>t.ApprovalRequiredCount,u=> - u.MapFrom( c => userTypeEnumInt == (int)UserTypeEnum.ProjectManager|| userTypeEnumInt == (int)UserTypeEnum.APM ? - c.TrialSiteSurveyList.Where(t=> t.State==TrialSiteSurveyEnum.SPMApproved).Count() - : c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.CRCSubmitted).Count()) + .ForMember(t => t.ApprovalRequiredCount, u => + u.MapFrom(c => userTypeEnumInt == (int)UserTypeEnum.ProjectManager || userTypeEnumInt == (int)UserTypeEnum.APM ? + c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.SPMApproved).Count() + : c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.CRCSubmitted).Count()) ) .ForMember(t => t.ApprovalRequiredSiteCount, u => u.MapFrom(c => userTypeEnumInt == (int)UserTypeEnum.ProjectManager || userTypeEnumInt == (int)UserTypeEnum.APM ? - c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.SPMApproved ).Select(t=>t.SiteId).Distinct().Count() + c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.SPMApproved).Select(t => t.SiteId).Distinct().Count() : c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.CRCSubmitted).Select(t => t.SiteId).Distinct().Count()) ) ; @@ -248,12 +249,12 @@ namespace IRaCIS.Core.Application.Service var userTypeId = Guid.Empty; CreateMap() .ForMember(t => t.WaitSignCount, u => - u.MapFrom(c => userTypeEnumInt == (int)UserTypeEnum.SuperAdmin ? 0 - - : c.TrialDocumentList.Where(t =>t.IsDeleted==false && t.NeedConfirmedUserTypeList.Any(t=>t.NeedConfirmUserTypeId== userTypeId ) && !t.TrialDocConfirmedUserList.Any(t=>t.ConfirmUserId==userId)).Count()) + u.MapFrom(c => userTypeEnumInt == (int)UserTypeEnum.SuperAdmin ? 0 + + : c.TrialDocumentList.Where(t => t.IsDeleted == false && t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == userTypeId) && !t.TrialDocConfirmedUserList.Any(t => t.ConfirmUserId == userId)).Count()) ); - + }