diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index c130a8f4d..8450b3e8c 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -689,13 +689,6 @@ 项目外部人员 录入流程相关 - - - 验证 在系统中是否存在该类型的账户 返回true 表示 不存在 可以添加和更新|存在但是信息一致,false 需要提示不一致项(前端 可以直接用我返回的错误信息,或者根据返回的用户信息实体,自己设置格式显示) - - - - 添加和更新接口 已验证邮箱和账户类型不允许添加重复项 diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteUserSurveyViewModel.cs b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteUserSurveyViewModel.cs index 77aab22a2..d8476e64e 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteUserSurveyViewModel.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteUserSurveyViewModel.cs @@ -4,6 +4,8 @@ // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 //-------------------------------------------------------------------- using IRaCIS.Core.Domain.Share; +using Newtonsoft.Json; + namespace IRaCIS.Core.Application.Contracts { /// TrialSiteUserSurveyView 列表视图模型 @@ -16,7 +18,33 @@ namespace IRaCIS.Core.Application.Contracts public Guid UpdateUserId { get; set; } public string UserType { get; set; } = string.Empty; - public TrialSiteSurveyEnum State { get; set; } + + [JsonIgnore] + public TrialSiteUserStateEnum InviteState { get; set; } + + public DateTime? ExpireTime { get; set; } + + public bool? IsJoin { get; set; } + + public DateTime? ConfirmTime { get; set; } + + public string RejectReason { get; set; } = string.Empty; + + + public TrialSiteUserStateEnum State + { + get + { + if (InviteState == TrialSiteUserStateEnum.HasSend && ExpireTime != null && ExpireTime < DateTime.Now) + { + return TrialSiteUserStateEnum.OverTime; + } + else + { + return InviteState; + } + } + } public string TrialRoleName { get; set; } diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index 618488be1..8b2ba63b7 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -509,11 +509,7 @@ namespace IRaCIS.Core.Application.Contracts } else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM) { - //if (_repository.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId && t.IsCorrect == false).Any()) - //{ - // return ResponseOutput.NotOk("人员信息有不正确项,不允许提交"); - //} - + await _trialSiteSurveyRepository.UpdateFromQueryAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.CRCSubmitted, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved }); } @@ -523,11 +519,7 @@ namespace IRaCIS.Core.Application.Contracts var trialSiteSurvey = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).FirstOrDefault(); if (trialSiteSurvey == null) return Null404NotFound(trialSiteSurvey); - - //if (_trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId && t.IsCorrect == false).Any()) - //{ - // return ResponseOutput.NotOk("人员信息有不正确项,不允许提交"); - //} + //已生成的不管 管的只需要是 生成失败的并且需要生成账号的 var needGenerateList = _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId && t.IsGenerateAccount && t.IsGenerateSuccess == false).ToList(); @@ -544,14 +536,14 @@ namespace IRaCIS.Core.Application.Contracts //收件地址 messageToSend.To.Add(new MailboxAddress(String.Empty, item.Email)); //主题 - messageToSend.Subject = "GRR Site survey (Trial Notice)"; + messageToSend.Subject = "GRR Site survey (Trial Invite)"; var builder = new BodyBuilder(); //找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户 var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email ).Include(t=>t.UserTypeRole).FirstOrDefaultAsync(); - int verificationCode = new Random().Next(100000, 1000000); + //int verificationCode = new Random().Next(100000, 1000000); //var baseApiUrl = baseUrl.Remove(baseUrl.IndexOf("#")) + "api"; @@ -571,7 +563,7 @@ namespace IRaCIS.Core.Application.Contracts saveItem.UserTypeEnum = _repository.Where(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First(); - saveItem.Password = MD5Helper.Md5(verificationCode.ToString()); + //saveItem.Password = MD5Helper.Md5(verificationCode.ToString()); _ = _repository.AddAsync(saveItem).Result; @@ -583,11 +575,11 @@ namespace IRaCIS.Core.Application.Contracts } - if (sysUserInfo.IsFirstAdd) - { - await _userRepository.UpdateFromQueryAsync(t => t.Id == sysUserInfo.Id, - u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) }); - } + //if (sysUserInfo.IsFirstAdd) + //{ + // await _userRepository.UpdateFromQueryAsync(t => t.Id == sysUserInfo.Id, + // u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) }); + //} builder.HtmlBody = @$" @@ -597,38 +589,55 @@ namespace IRaCIS.Core.Application.Contracts {sysUserInfo.LastName + "/" + sysUserInfo.FirstName}:
- 您参与的临床试验项目 {trialInfo.ExperimentName} ,独立影像评估相关工作将在网上进行。项目及账号信息为: + 您好,展影医疗作为 实验方案号:{trialInfo.ResearchProgramNo} 项目的IRC供应商,诚邀您参加该项目IRC相关工作,欢迎您提供指导和建议,非常感谢!
-
-
- 项目编号: {trialInfo.TrialCode} -
-
- 试验方案号: {trialInfo.ResearchProgramNo} -
-
- 试验名称: {trialInfo.ExperimentName} -
-
- 用户名: {sysUserInfo.UserName} -
-
- 密码: {(sysUserInfo.IsFirstAdd ? verificationCode.ToString() + "(请在登录后进行修改)" : "***(您已有账号, 若忘记密码, 请通过邮箱找回)")} -
-
- 角色: {sysUserInfo.UserTypeRole.UserTypeShortName} -
-
- 系统登录地址: {siteSurvyeSubmit.LoginUrl} (请确认加入后再登陆) -
-
- + + 查看并确认 "; + //builder.HtmlBody = @$" + //
+ //
+ //
+ // {sysUserInfo.LastName + "/" + sysUserInfo.FirstName}: + //
+ //
+ // 您参与的临床试验项目 {trialInfo.ExperimentName} ,独立影像评估相关工作将在网上进行。项目及账号信息为: + //
+ //
+ //
+ // 项目编号: {trialInfo.TrialCode} + //
+ //
+ // 试验方案号: {trialInfo.ResearchProgramNo} + //
+ //
+ // 试验名称: {trialInfo.ExperimentName} + //
+ //
+ // 用户名: {sysUserInfo.UserName} + //
+ //
+ // 密码: {(sysUserInfo.IsFirstAdd ? verificationCode.ToString() + "(请在登录后进行修改)" : "***(您已有账号, 若忘记密码, 请通过邮箱找回)")} + //
+ //
+ // 角色: {sysUserInfo.UserTypeRole.UserTypeShortName} + //
+ //
+ // 系统登录地址: {siteSurvyeSubmit.LoginUrl} (请确认加入后再登陆) + //
+ //
+ // + // 查看并确认 + // + //
+ //
+ // "; + messageToSend.Body = builder.ToMessageBody(); @@ -668,24 +677,5 @@ namespace IRaCIS.Core.Application.Contracts - ///// - ///// 锁定 - ///// - ///// - ///// - ///// - //[TypeFilter(typeof(TrialResourceFilter))] - //[HttpPost("{trialSiteSurveyId:guid}/{trialId:guid}/{isLock:bool}")] - //public async Task TrialSurveyLock(Guid trialSiteSurveyId, bool isLock) - //{ - // if (await _repository.Where(t => t.Id == trialSiteSurveyId).AnyAsync(t => t.TrialSiteUserSurveyList.Any(k => k.IsGenerateAccount && k.IsGenerateSuccess == false))) - // { - // ResponseOutput.NotOk("有用户账户没生成,不允许锁定"); - // } - - // await _repository.UpdateFromQueryAsync(t => t.Id == trialSiteSurveyId, k => new TrialSiteSurvey() { State==TrialSiteSurveyEnum.PMCreatedAndLock }); - - // return ResponseOutput.Ok(); - //} } } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs index c1259367d..5f65baaf9 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs @@ -8,13 +8,14 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using IRaCIS.Core.Application.Contracts.DTO; +using Newtonsoft.Json; namespace IRaCIS.Core.Application.ViewModel { /// TrialExternalUserView 列表视图模型 - public class TrialExternalUserView: TrialExternalUserAddOrEdit + public class TrialExternalUserView : TrialExternalUserAddOrEdit { - + public DateTime CreateTime { get; set; } public Guid CreateUserId { get; set; } public DateTime UpdateTime { get; set; } @@ -25,9 +26,33 @@ namespace IRaCIS.Core.Application.ViewModel public Guid SystemUserId { get; set; } + + + + [JsonIgnore] public TrialExternalUserStateEnum InviteState { get; set; } + public TrialExternalUserStateEnum State + { + get + { + if (InviteState == TrialExternalUserStateEnum.HasSend && ExpireTime != null && ExpireTime < DateTime.Now) + { + return TrialExternalUserStateEnum.OverTime; + } + else + { + return InviteState; + } + } + } + + + + + + public DateTime? ExpireTime { get; set; } public bool? IsJoin { get; set; } @@ -51,7 +76,7 @@ namespace IRaCIS.Core.Application.ViewModel } /// TrialExternalUserAddOrEdit 列表查询参数模型 - public class TrialExternalUserAddOrEdit: VerifyUserAdd + public class TrialExternalUserAddOrEdit : VerifyUserAdd { public Guid? Id { get; set; } @@ -61,11 +86,10 @@ namespace IRaCIS.Core.Application.ViewModel public string OrganizationName { get; set; } = String.Empty; - } public class TrialExternalUserConfirm { - + public string BaseUrl { get; set; } = string.Empty; [NotDefault] public Guid Id { get; set; } @@ -78,7 +102,7 @@ namespace IRaCIS.Core.Application.ViewModel } - public class TrialSiteUserSurveyUserConfirm: TrialExternalUserConfirm + public class TrialSiteUserSurveyUserConfirm : TrialExternalUserConfirm { //[NotDefault] //public Guid TrialId { get; set; } @@ -88,7 +112,7 @@ namespace IRaCIS.Core.Application.ViewModel } - public class TrialInfoWithPreparationInfo: TrialExternalUserConfirm + public class TrialInfoWithPreparationInfo : TrialExternalUserConfirm { public string ExperimentName { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs index 41bcf7cf0..339a12a5e 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialExternalUserService.cs @@ -31,7 +31,7 @@ namespace IRaCIS.Core.Application.Service private readonly IRepository _trialSiteUserRepository; public TrialExternalUserService(IRepository trialExternalUseRepository, IRepository userRepository, IRepository trialUserRepository, - IRepository trialSiteSurveyUserRepository,IRepository trialSiteUserRepository) + IRepository trialSiteSurveyUserRepository, IRepository trialSiteUserRepository) { _trialExternalUseRepository = trialExternalUseRepository; _userRepository = userRepository; @@ -54,28 +54,6 @@ namespace IRaCIS.Core.Application.Service return await trialExternalUserQueryable.ToListAsync(); } - /// - /// 验证 在系统中是否存在该类型的账户 返回true 表示 不存在 可以添加和更新|存在但是信息一致,false 需要提示不一致项(前端 可以直接用我返回的错误信息,或者根据返回的用户信息实体,自己设置格式显示) - /// - /// - /// - [HttpPost] - public async Task VerifyUserIsCanAddOrUpdate(VerifyUserAdd addOrEditTrialExternalUser) - { - - var existUser = await _userRepository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialExternalUser.Email && t.UserTypeId == addOrEditTrialExternalUser.UserTypeId); - - if (existUser != null) - { - if (existUser.LastName != addOrEditTrialExternalUser.LastName || existUser.FirstName != addOrEditTrialExternalUser.FirstName) - { - return ResponseOutput.NotOk($"该用户在系统中账户名为:{existUser.LastName + " / " + existUser.FirstName} 电话:{existUser.Phone},与填写信息存在不一致项, 现将界面信息修改为与系统一致,可进行保存", new { existUser.LastName, existUser.FirstName, existUser.Phone }); - } - - } - return ResponseOutput.Ok(); - - } /// @@ -233,22 +211,13 @@ namespace IRaCIS.Core.Application.Service //收件地址 messageToSend.To.Add(new MailboxAddress(String.Empty, userInfo.Email)); //主题 - messageToSend.Subject = "GRR External User survey (Verification Code)"; + messageToSend.Subject = "GRR External User survey (Invite)"; var baseApiUrl = sendEmail.BaseUrl.Remove(sendEmail.BaseUrl.IndexOf("#")) + "api"; - var sysUserInfo = await _userRepository.Where(t => t.Id == userInfo.SystemUserId).Include(t => t.UserTypeRole).FirstOrDefaultAsync(); - - var builder = new BodyBuilder(); - int verificationCode = new Random().Next(100000, 1000000); - - if (sysUserInfo.IsFirstAdd) - { - await _userRepository.UpdateFromQueryAsync(t => t.Id == sysUserInfo.Id, - u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) }); - } + var sysUserInfo = await _userRepository.Where(t => t.Id == userInfo.SystemUserId).FirstOrDefaultAsync(); builder.HtmlBody = @$" @@ -258,32 +227,10 @@ namespace IRaCIS.Core.Application.Service {sysUserInfo.LastName + "/" + sysUserInfo.FirstName}:
- 您参与的临床试验项目 {trialInfo.ExperimentName} ,独立影像评估相关工作将在网上进行。项目及账号信息为: + 您好,展影医疗作为 实验方案号:{trialInfo.ResearchProgramNo} 项目的IRC供应商,诚邀您参加该项目IRC相关工作,欢迎您提供指导和建议,非常感谢!
-
-
- 项目编号: {trialInfo.TrialCode} -
-
- 试验方案号: {trialInfo.ResearchProgramNo} -
-
- 试验名称: {trialInfo.ExperimentName} -
-
- 用户名: {sysUserInfo.UserName} -
-
- 密码: {(sysUserInfo.IsFirstAdd ? verificationCode.ToString()+"(请在登录后进行修改)" : "***(您已有账号, 若忘记密码, 请通过邮箱找回)")} -
-
- 角色: {sysUserInfo.UserTypeRole.UserTypeShortName} -
-
- 系统登录地址: {sendEmail.BaseUrl} (请确认加入后再登陆) -
-
- + + 查看并确认 @@ -291,6 +238,7 @@ namespace IRaCIS.Core.Application.Service "; + messageToSend.Body = builder.ToMessageBody(); using (var smtp = new MailKit.Net.Smtp.SmtpClient()) @@ -334,7 +282,6 @@ namespace IRaCIS.Core.Application.Service var needUpdate = await _trialExternalUseRepository.FirstOrDefaultAsync(t => t.Id == editTrialUserPreparation.Id); - if (DateTime.Now > needUpdate.ExpireTime) { return ResponseOutput.NotOk("邀请加入时间已过期,重新被邀请后才可以进行确认操作"); @@ -342,7 +289,7 @@ namespace IRaCIS.Core.Application.Service _mapper.Map(editTrialUserPreparation, needUpdate); - needUpdate.InviteState = TrialExternalUserStateEnum.UserConfirmed; + needUpdate.InviteState = editTrialUserPreparation.IsJoin == true ? TrialExternalUserStateEnum.UserConfirmed : TrialExternalUserStateEnum.UserReject; var trialId = needUpdate.TrialId; @@ -354,8 +301,81 @@ namespace IRaCIS.Core.Application.Service await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId }); - await _trialExternalUseRepository.UpdateFromQueryAsync(t => t.TrialId == trialId && t.SystemUserId == userId, - u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.UserConfirmed }); + var messageToSend = new MimeMessage(); + //发件地址 + messageToSend.From.Add(new MailboxAddress("GRR", "iracis_grr@163.com")); + //收件地址 + messageToSend.To.Add(new MailboxAddress(String.Empty, needUpdate.Email)); + //主题 + messageToSend.Subject = "GRR External User survey (Trial Join Success)"; + + var builder = new BodyBuilder(); + + var trialInfo = await _repository.FirstOrDefaultAsync(t => t.Id == needUpdate.TrialId); + + var sysUserInfo = await _userRepository.Where(t => t.Id == needUpdate.SystemUserId).Include(t => t.UserTypeRole).FirstOrDefaultAsync(); + + int verificationCode = new Random().Next(100000, 1000000); + + if (sysUserInfo.IsFirstAdd) + { + await _userRepository.UpdateFromQueryAsync(t => t.Id == sysUserInfo.Id, + u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) }); + } + + builder.HtmlBody = @$" +
+
+
+ {sysUserInfo.LastName + "/" + sysUserInfo.FirstName}: +
+
+ 您好,欢迎您参加项目 实验方案号: {trialInfo.ResearchProgramNo} IRC相关工作。该项目采用电子化工作流,系统及您的账号信息如下: +
+
+
+ 项目编号: {trialInfo.TrialCode} +
+
+ 试验方案号: {trialInfo.ResearchProgramNo} +
+
+ 试验名称: {trialInfo.ExperimentName} +
+
+ 用户名: {sysUserInfo.UserName} +
+
+ 密码: {(sysUserInfo.IsFirstAdd ? verificationCode.ToString() + "(请在登录后进行修改)" : "***(您已有账号, 若忘记密码, 请通过邮箱找回)")} +
+
+ 角色: {sysUserInfo.UserTypeRole.UserTypeShortName} +
+
+ 系统登录地址: {editTrialUserPreparation.BaseUrl} +
+
+ +
+
+ "; + + messageToSend.Body = builder.ToMessageBody(); + + using (var smtp = new MailKit.Net.Smtp.SmtpClient()) + { + + smtp.ServerCertificateValidationCallback = (s, c, h, e) => true; + + await smtp.ConnectAsync("smtp.163.com", 25, SecureSocketOptions.StartTls); + + await smtp.AuthenticateAsync("iracis_grr@163.com", "XLWVQKZAEKLDWOAH"); + + await smtp.SendAsync(messageToSend); + + await smtp.DisconnectAsync(true); + } + } await _userRepository.UpdateFromQueryAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable }); @@ -375,7 +395,7 @@ namespace IRaCIS.Core.Application.Service public async Task TrialSiteSurveyUserJoinTrial(TrialExternalUserConfirm editInfo) { - var needUpdate = await _trialSiteSurveyUserRepository.Where(t => t.Id == editInfo.Id).Include(t=>t.TrialSiteSurvey).FirstOrDefaultAsync(); + var needUpdate = await _trialSiteSurveyUserRepository.Where(t => t.Id == editInfo.Id).Include(t => t.TrialSiteSurvey).FirstOrDefaultAsync(); if (DateTime.Now > needUpdate.ExpireTime) @@ -385,30 +405,108 @@ namespace IRaCIS.Core.Application.Service _mapper.Map(editInfo, needUpdate); - //needUpdate.InviteState = TrialExternalUserStateEnum.UserConfirmed; + needUpdate.InviteState = editInfo.IsJoin == true ? TrialSiteUserStateEnum.UserConfirmed : TrialSiteUserStateEnum.UserReject; - if (needUpdate.SystemUserId==null) + if (needUpdate.SystemUserId == null) { return ResponseOutput.NotOk("调研表系统用户Id 存储有问题"); } var trialId = needUpdate.TrialSiteSurvey.TrialId; - var siteId= needUpdate.TrialSiteSurvey.SiteId; + var siteId = needUpdate.TrialSiteSurvey.SiteId; var userId = (Guid)needUpdate.SystemUserId; - if (!_trialUserRepository.Where(t => t.TrialId == trialId && t.UserId == userId).Any()) + if (! await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId)) { await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId }); await _trialSiteUserRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = siteId, UserId = userId }); + + + var messageToSend = new MimeMessage(); + //发件地址 + messageToSend.From.Add(new MailboxAddress("GRR", "iracis_grr@163.com")); + //收件地址 + messageToSend.To.Add(new MailboxAddress(String.Empty, needUpdate.Email)); + //主题 + messageToSend.Subject = "GRR Site survey (Trial Join Success)"; + + var builder = new BodyBuilder(); + + var trialInfo = await _repository.FirstOrDefaultAsync(t => t.Id == needUpdate.TrialSiteSurvey.TrialId); + + var sysUserInfo = await _userRepository.Where(t => t.Id == needUpdate.SystemUserId).Include(t => t.UserTypeRole).FirstOrDefaultAsync(); + + int verificationCode = new Random().Next(100000, 1000000); + + if (sysUserInfo.IsFirstAdd) + { + await _userRepository.UpdateFromQueryAsync(t => t.Id == sysUserInfo.Id, + u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) }); + } + + builder.HtmlBody = @$" +
+
+
+ {sysUserInfo.LastName + "/" + sysUserInfo.FirstName}: +
+
+ 您好,欢迎您参加项目 实验方案号: {trialInfo.ResearchProgramNo} IRC相关工作。该项目采用电子化工作流,系统及您的账号信息如下: +
+
+
+ 项目编号: {trialInfo.TrialCode} +
+
+ 试验方案号: {trialInfo.ResearchProgramNo} +
+
+ 试验名称: {trialInfo.ExperimentName} +
+
+ 用户名: {sysUserInfo.UserName} +
+
+ 密码: {(sysUserInfo.IsFirstAdd ? verificationCode.ToString() + "(请在登录后进行修改)" : "***(您已有账号, 若忘记密码, 请通过邮箱找回)")} +
+
+ 角色: {sysUserInfo.UserTypeRole.UserTypeShortName} +
+
+ 系统登录地址: {editInfo.BaseUrl} +
+
+ +
+
+ "; + + messageToSend.Body = builder.ToMessageBody(); + + using (var smtp = new MailKit.Net.Smtp.SmtpClient()) + { + + smtp.ServerCertificateValidationCallback = (s, c, h, e) => true; + + await smtp.ConnectAsync("smtp.163.com", 25, SecureSocketOptions.StartTls); + + await smtp.AuthenticateAsync("iracis_grr@163.com", "XLWVQKZAEKLDWOAH"); + + await smtp.SendAsync(messageToSend); + + await smtp.DisconnectAsync(true); + } + + } await _userRepository.UpdateFromQueryAsync(t => t.Id == needUpdate.SystemUserId, u => new User() { Status = UserStateEnum.Enable }); - var success =await _trialExternalUseRepository.SaveChangesAsync(); + var success = await _trialExternalUseRepository.SaveChangesAsync(); return ResponseOutput.Ok(); @@ -422,7 +520,7 @@ namespace IRaCIS.Core.Application.Service /// /// [AllowAnonymous] - public async Task JoinBasicInfo(Guid id,bool isExternalUser) + public async Task JoinBasicInfo(Guid id, bool isExternalUser) { if (isExternalUser) { @@ -434,7 +532,7 @@ namespace IRaCIS.Core.Application.Service return (await _trialSiteSurveyUserRepository.Where(t => t.Id == id) .ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); } - + } diff --git a/IRaCIS.Core.Domain.Share/User/TrialExternalEnum.cs b/IRaCIS.Core.Domain.Share/User/TrialExternalEnum.cs index 5bf02d9b8..97107bc1f 100644 --- a/IRaCIS.Core.Domain.Share/User/TrialExternalEnum.cs +++ b/IRaCIS.Core.Domain.Share/User/TrialExternalEnum.cs @@ -11,7 +11,31 @@ namespace IRaCIS.Core.Domain.Share HasSend = 1, //用户已确认 - UserConfirmed = 2 + UserConfirmed = 2, + + UserReject = 3, + + OverTime = 4 } - + + + public enum TrialSiteUserStateEnum + { + //待发送 + WaitSent = 0, + + //已发送 + HasSend = 1, + + //用户已确认 + UserConfirmed = 2, + + UserReject = 3, + + OverTime = 4 + + + } + + } diff --git a/IRaCIS.Core.Domain/SiteSurvey/TrialSiteUserSurvey.cs b/IRaCIS.Core.Domain/SiteSurvey/TrialSiteUserSurvey.cs index 47ee1b7e1..f083de668 100644 --- a/IRaCIS.Core.Domain/SiteSurvey/TrialSiteUserSurvey.cs +++ b/IRaCIS.Core.Domain/SiteSurvey/TrialSiteUserSurvey.cs @@ -104,11 +104,10 @@ namespace IRaCIS.Core.Domain.Models public bool IsGenerateSuccess { get; set; } + public TrialSiteUserStateEnum InviteState { get; set; } = TrialSiteUserStateEnum.WaitSent; public Guid? PreliminaryUserId { get; set; } - - - + public Guid? ReviewerUserId { get; set; } public User ReviewerUser { get; set; }