Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
461a59b678
|
@ -12914,9 +12914,6 @@
|
|||
<member name="M:IRaCIS.Core.Application.Service.TrialMaintenanceService.GetSiteCRCScreeningList(IRaCIS.Application.Contracts.SiteCRCQuery)">
|
||||
<summary> Setting页面 为 site 勾选CRC用户列表</summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.TrialMaintenanceService.DeleteMaintenanceUser(System.Guid,System.Boolean)">
|
||||
<summary> 项目参与人员退出 其中IQC退出 回去释放工作量 </summary>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Service.TrialService.GetTrialList(IRaCIS.Application.Contracts.TrialQueryDTO)">
|
||||
<summary>
|
||||
分页获取临床项目列表 默认后台加急状态为3 查所有的
|
||||
|
@ -17100,6 +17097,32 @@
|
|||
<param name="_qcChallengeRepository"></param>
|
||||
<param name="_subjectVisitRepository"></param>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Triggers.AfterSaveTrigger.IdenttiyUserRoleInfoTrigger">
|
||||
<summary>
|
||||
维护用户角色表中的账户信息
|
||||
</summary>
|
||||
<param name="_identityUserRepository"></param>
|
||||
<param name="_userRoleRepository"></param>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Triggers.AfterSaveTrigger.IdenttiyUserRoleInfoTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.IdentityUser},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.UserRole})">
|
||||
<summary>
|
||||
维护用户角色表中的账户信息
|
||||
</summary>
|
||||
<param name="_identityUserRepository"></param>
|
||||
<param name="_userRoleRepository"></param>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Triggers.AfterSaveTrigger.UserLogAfterTrigger">
|
||||
<summary>
|
||||
账户日志 记录账户每次操作的信息
|
||||
</summary>
|
||||
<param name="_identityUserRepository"></param>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Triggers.AfterSaveTrigger.UserLogAfterTrigger.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.IdentityUser})">
|
||||
<summary>
|
||||
账户日志 记录账户每次操作的信息
|
||||
</summary>
|
||||
<param name="_identityUserRepository"></param>
|
||||
</member>
|
||||
<member name="T:IRaCIS.Core.Application.Triggers.TrialCriterionSignTrigger">
|
||||
<summary>
|
||||
因为可能先一致性核查通过,生成其他标准的任务了,新签名的标准也需要产生任务
|
||||
|
|
|
@ -30,7 +30,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
Task AdminResetPwdSendEmailAsync(Guid userId, string pwdNotMd5 = "123456");
|
||||
|
||||
Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl);
|
||||
Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string userTypes, string baseUrl, string rootUrl);
|
||||
|
||||
Task ExternalUserJoinEmail(Guid trialId, Guid userId, string userTypes, string baseUrl, string rootUrl);
|
||||
|
||||
|
@ -44,6 +44,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
IRepository<VisitTask> _visitTaskRepository,
|
||||
IRepository<TrialSite> _trialSiteRepository,
|
||||
IRepository<UserRole> _userRoleRepository,
|
||||
IRepository<UserLog> _userLogRepository,
|
||||
IRepository<IdentityUser> _identityUserRepository,
|
||||
IRepository<UserFeedBack> _userFeedBackRepository,
|
||||
ITokenService _tokenService,
|
||||
|
@ -301,8 +302,8 @@ namespace IRaCIS.Core.Application.Service
|
|||
var htmlBodyStr = string.Format(ReplaceCompanyName(input.htmlBodyStr),
|
||||
|
||||
sysUserInfo.FullName,
|
||||
sysUserInfo.UserName,
|
||||
string.Join(',', sysUserInfo.UserRoleList.Select(t => t.UserTypeRole.UserTypeShortName)),
|
||||
sysUserInfo.EMail,
|
||||
//string.Join(',', sysUserInfo.UserRoleList.Select(t => t.UserTypeRole.UserTypeShortName)),
|
||||
redirectUrl
|
||||
);
|
||||
|
||||
|
@ -339,7 +340,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
sysUserInfo.FullName,
|
||||
sysUserInfo.UserName,
|
||||
string.Join(',', sysUserInfo.UserRoleList.Select(t => t.UserTypeRole.UserTypeShortName)),
|
||||
//string.Join(',', sysUserInfo.UserRoleList.Select(t => t.UserTypeRole.UserTypeShortName)),
|
||||
pwdNotMd5
|
||||
);
|
||||
|
||||
|
@ -470,7 +471,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
trialInfo.ExperimentName,
|
||||
trialInfo.ResearchProgramNo,
|
||||
trialInfo.TrialCode,
|
||||
sysUserInfo.UserName,
|
||||
sysUserInfo.IsFirstAdd ? sysUserInfo.EMail : sysUserInfo.UserName,
|
||||
userTypes,
|
||||
sysUserInfo.IsFirstAdd ? redirectUrl : baseUrl
|
||||
);
|
||||
|
@ -484,15 +485,16 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig, null);
|
||||
|
||||
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = userId, OptType = UserOptType.UpdateUserRole }, true);
|
||||
|
||||
}
|
||||
|
||||
//Site调研 用户加入项目
|
||||
public async Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string baseUrl, string rootUrl)
|
||||
public async Task SiteSurveyUserJoinEmail(Guid trialId, Guid userId, string userTypes, string baseUrl, string rootUrl)
|
||||
{
|
||||
var sysUserInfo = (await _identityUserRepository.Where(t => t.Id == userId).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
|
||||
var userTypes = await _userRoleRepository.Where(t => t.IdentityUserId == sysUserInfo.Id).Select(t => t.UserTypeRole.UserTypeShortName).ToListAsync();
|
||||
|
||||
var trialInfo = await _trialRepository.FirstOrDefaultAsync(t => t.Id == trialId);
|
||||
|
||||
|
@ -531,8 +533,8 @@ namespace IRaCIS.Core.Application.Service
|
|||
trialInfo.ExperimentName,
|
||||
trialInfo.ResearchProgramNo,
|
||||
trialInfo.TrialCode,
|
||||
sysUserInfo.UserName,
|
||||
string.Join(',', userTypes),
|
||||
sysUserInfo.IsFirstAdd ? sysUserInfo.EMail : sysUserInfo.UserName,
|
||||
userTypes,
|
||||
sysUserInfo.IsFirstAdd ? redirectUrl : baseUrl
|
||||
);
|
||||
|
||||
|
@ -545,6 +547,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig);
|
||||
|
||||
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = userId, OptType = UserOptType.UpdateUserRole }, true);
|
||||
|
||||
}
|
||||
|
||||
|
@ -596,13 +599,30 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
|
||||
|
||||
await _userRoleRepository.SaveChangesAsync();
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
sysUserInfo = (await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.DoctorId == doctorId || t.IdentityUser.EMail == doctor.EMail)).Include(t => t.UserRoleList).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
sysUserInfo = (await _identityUserRepository.Where(t => t.UserRoleList.Any(t => t.DoctorId == doctorId || t.IdentityUser.EMail == doctor.EMail), true).Include(t => t.UserRoleList).FirstOrDefaultAsync()).IfNullThrowException();
|
||||
|
||||
|
||||
var findRole = sysUserInfo.UserRoleList.FirstOrDefault(t => t.UserTypeId == userType.Id);
|
||||
//不存在该角色,那么就加入该角色
|
||||
if (findRole == null)
|
||||
{
|
||||
sysUserInfo.UserRoleList.Add(new UserRole() { DoctorId = doctorId, UserTypeEnum = UserTypeEnum.IndependentReviewer, UserTypeId = userType.Id });
|
||||
}
|
||||
else
|
||||
{
|
||||
findRole.IsUserRoleDisabled = false;
|
||||
}
|
||||
|
||||
sysUserInfo.Status = UserStateEnum.Enable;
|
||||
|
||||
}
|
||||
|
||||
//保证能有userRoleId
|
||||
await _userRoleRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
|
@ -645,8 +665,8 @@ namespace IRaCIS.Core.Application.Service
|
|||
trialInfo.ExperimentName,
|
||||
trialInfo.ResearchProgramNo,
|
||||
trialInfo.TrialCode,
|
||||
sysUserInfo.UserName,
|
||||
userType.UserTypeShortName,
|
||||
sysUserInfo.IsFirstAdd ? sysUserInfo.EMail : sysUserInfo.UserName,
|
||||
$"{userType.UserTypeShortName} ({userType.UserTypeName})",
|
||||
sysUserInfo.IsFirstAdd ? redirectUrl : baseUrl
|
||||
);
|
||||
|
||||
|
@ -659,6 +679,9 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
await SendEmailHelper.SendEmailAsync(messageToSend, _systemEmailConfig, null);
|
||||
|
||||
await _userLogRepository.AddAsync(new UserLog() { IP = _userInfo.IP, ActionIdentityUserId = _userInfo.IdentityUserId, ActionUserName = _userInfo.UserName, TargetIdentityUserId = sysUserInfo.Id, OptType = UserOptType.UpdateUserRole }, true);
|
||||
|
||||
|
||||
return (sysUserInfo.Id, sysUserInfo.UserRoleList.First(t => t.UserTypeEnum == UserTypeEnum.IndependentReviewer).Id);
|
||||
}
|
||||
|
||||
|
|
|
@ -503,8 +503,11 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
var user = await _identityUserRepository.Where(t => t.Id == identityUserId).ProjectTo<UserDetailDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync();
|
||||
|
||||
user.AccountList = await _userRoleRepository.Where(t => t.IdentityUserId == identityUserId).ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
if (user != null)
|
||||
{
|
||||
user.AccountList = await _userRoleRepository.Where(t => t.IdentityUserId == identityUserId).ProjectTo<UserAccountInfo>(_mapper.ConfigurationProvider).ToListAsync();
|
||||
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,8 @@ using IdentityModel;
|
|||
using Microsoft.AspNetCore.Components.Routing;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System.Security.Policy;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
|
@ -522,7 +524,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
}
|
||||
else if (verifyRecord.ExpirationTime < DateTime.Now)
|
||||
{
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_WrongVerificationCode"]);
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_ExpiredVerificationCode"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -873,6 +875,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
{
|
||||
//不存在该角色,那么就添加
|
||||
var addRole = _mapper.Map<UserRole>(existSysUser);
|
||||
addRole.Id = NewId.NextSequentialGuid();
|
||||
addRole.UserTypeEnum = _userTypeRepository.Where(t => t.Id == userTypeId).Select(t => t.UserTypeEnum).First();
|
||||
addRole.UserTypeId = userTypeId.Value;
|
||||
addRole.IsUserRoleDisabled = false;
|
||||
|
@ -893,6 +896,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
generateUser.IsTestUser = true;
|
||||
}
|
||||
|
||||
generateUser.Id = NewId.NextSequentialGuid();
|
||||
// 外部人员生成账号 都是外部的
|
||||
generateUser.IsZhiZhun = false;
|
||||
|
||||
|
@ -905,7 +909,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
|
||||
|
||||
generateUser.Status = UserStateEnum.Disable;
|
||||
generateUser.Status = UserStateEnum.Enable;
|
||||
|
||||
generateUser.UserRoleList = new List<UserRole>() { };
|
||||
|
||||
|
@ -935,7 +939,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
var identityUserId = existSysUser.Id;
|
||||
|
||||
|
||||
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
var isNeedSendEmail = false;
|
||||
|
@ -964,6 +968,16 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
//有该人员
|
||||
//是否有该角色
|
||||
|
||||
|
||||
if (findTrialUser.IsDeleted == true)
|
||||
{
|
||||
findTrialUser.IsDeleted = false;
|
||||
findTrialUser.DeletedTime = null;
|
||||
findTrialUser.RemoveTime = null;
|
||||
findTrialUser.JoinTime = DateTime.Now;
|
||||
}
|
||||
|
||||
|
||||
foreach (var userTypeId in userTypeIdList)
|
||||
{
|
||||
var findTrialUserRole = findTrialUser.TrialUserRoleList.Where(t => t.UserRole.UserTypeId == userTypeId).FirstOrDefault();
|
||||
|
@ -991,7 +1005,12 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
if (isNeedSendEmail)
|
||||
{
|
||||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, identityUserId, baseUrl, routeUrl);
|
||||
|
||||
var dbUserType = _userTypeRepository.Where(t => userTypeIdList.Contains(t.Id)).ToList();
|
||||
|
||||
var usertyps = string.Join(',', dbUserType.Select(t => t.UserTypeName));
|
||||
|
||||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, identityUserId, usertyps, baseUrl, routeUrl);
|
||||
}
|
||||
|
||||
var userJoinIdList = item.Select(t => t.Id).ToList();
|
||||
|
@ -1061,6 +1080,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
{
|
||||
//不存在该角色,那么就添加
|
||||
var addRole = _mapper.Map<UserRole>(existSysUser);
|
||||
addRole.Id = NewId.NextSequentialGuid();
|
||||
addRole.UserTypeEnum = _userTypeRepository.Where(t => t.Id == userTypeId).Select(t => t.UserTypeEnum).First();
|
||||
addRole.UserTypeId = userTypeId;
|
||||
addRole.IsUserRoleDisabled = false;
|
||||
|
@ -1081,6 +1101,8 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
generateUser.IsTestUser = true;
|
||||
}
|
||||
|
||||
generateUser.Id = NewId.NextSequentialGuid();
|
||||
|
||||
// 外部人员生成账号 都是外部的
|
||||
generateUser.IsZhiZhun = false;
|
||||
|
||||
|
@ -1090,10 +1112,9 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
//generateUser.UserName = generateUser.UserCode;
|
||||
|
||||
|
||||
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
|
||||
|
||||
generateUser.Status = UserStateEnum.Disable;
|
||||
generateUser.Status = UserStateEnum.Enable;
|
||||
|
||||
generateUser.UserRoleList = new List<UserRole>() { };
|
||||
|
||||
|
@ -1123,7 +1144,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
var identityUserId = existSysUser.Id;
|
||||
|
||||
|
||||
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
var isNeedSendEmail = false;
|
||||
|
@ -1152,6 +1173,16 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
//有该人员
|
||||
//是否有该角色
|
||||
|
||||
if (findTrialUser.IsDeleted == true)
|
||||
{
|
||||
findTrialUser.IsDeleted = false;
|
||||
findTrialUser.DeletedTime = null;
|
||||
findTrialUser.RemoveTime = null;
|
||||
findTrialUser.JoinTime = DateTime.Now;
|
||||
}
|
||||
|
||||
|
||||
|
||||
foreach (var userTypeId in userTypeIdList)
|
||||
{
|
||||
var findTrialUserRole = findTrialUser.TrialUserRoleList.Where(t => t.UserRole.UserTypeId == userTypeId).FirstOrDefault();
|
||||
|
@ -1177,9 +1208,46 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
}
|
||||
|
||||
|
||||
//加入到Site CRC
|
||||
|
||||
foreach (var trialsSiteItem in addUserRoleList.GroupBy(t => t.TrialSiteId))
|
||||
{
|
||||
var siteUserRoleList = trialsSiteItem.ToList();
|
||||
|
||||
foreach (var siteUserRole in siteUserRoleList)
|
||||
{
|
||||
var findUserRole = existSysUser.UserRoleList.Where(t => t.UserTypeId == siteUserRole.UserTypeId).FirstOrDefault();
|
||||
|
||||
if (findUserRole != null)
|
||||
{
|
||||
|
||||
var findTrialSiteUserRole = await _trialSiteUserRoleRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialsSiteItem.Key && t.UserId == findUserRole.Id, true, true).FirstOrDefaultAsync();
|
||||
|
||||
if (findTrialSiteUserRole != null)
|
||||
{
|
||||
findTrialSiteUserRole.IsDeleted = false;
|
||||
findTrialSiteUserRole.DeletedTime = null;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
await _trialSiteUserRoleRepository.AddAsync(new TrialSiteUserRole() { TrialId = trialId, TrialSiteId = trialsSiteItem.Key, UserId = findUserRole.Id });
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new BusinessValidationFailedException("database dirty data ,pleasse check");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (isNeedSendEmail)
|
||||
{
|
||||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, identityUserId, baseUrl, routeUrl);
|
||||
var dbUserType = _userTypeRepository.Where(t => userTypeIdList.Contains(t.Id)).ToList();
|
||||
var usertyps = string.Join(',', dbUserType.Select(t => t.UserTypeName));
|
||||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, identityUserId, usertyps, baseUrl, routeUrl);
|
||||
}
|
||||
await _trialSiteUserRoleRepository.SaveChangesAsync();
|
||||
|
||||
|
|
|
@ -93,8 +93,11 @@ namespace IRaCIS.Core.Application.AutoMapper
|
|||
.ForMember(d => d.UserTypeEnum, u => u.MapFrom(s => s.UserTypeRole.UserTypeEnum));
|
||||
|
||||
|
||||
CreateMap<TrialSiteUserSurveyView, IdentityUser>();
|
||||
|
||||
CreateMap<SiteSurveyUserImportDto, IdentityUser>();
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -277,7 +277,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
|
||||
|
||||
generateUser.Status = UserStateEnum.Disable;
|
||||
generateUser.Status = UserStateEnum.Enable;
|
||||
|
||||
generateUser.UserRoleList = new List<UserRole>() { };
|
||||
|
||||
|
@ -294,6 +294,10 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
var newAddUser = await _identityUserRepository.AddAsync(generateUser);
|
||||
|
||||
|
||||
|
||||
existSysUser = newAddUser;
|
||||
|
||||
await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => externalIdList.Contains(t.Id), u => new TrialExternalUser()
|
||||
{
|
||||
IsSystemUser = false,
|
||||
|
@ -304,8 +308,6 @@ namespace IRaCIS.Core.Application.Service
|
|||
Phone = existSysUser.Phone,
|
||||
});
|
||||
|
||||
existSysUser = newAddUser;
|
||||
|
||||
}
|
||||
|
||||
await _identityUserRepository.SaveChangesAsync();
|
||||
|
@ -314,7 +316,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
var identityUserId = existSysUser.Id;
|
||||
|
||||
|
||||
var userTypeList = await _identityUserRepository.Where(t => t.Id == identityUserId).SelectMany(t => t.UserRoleList).Select(t => new { t.UserTypeId, t.UserTypeRole.UserTypeShortName }).ToListAsync();
|
||||
var userTypeList = await _identityUserRepository.Where(t => t.Id == identityUserId).SelectMany(t => t.UserRoleList).Select(t => new { t.UserTypeId, t.UserTypeRole.UserTypeName, t.UserTypeRole.UserTypeShortName }).ToListAsync();
|
||||
|
||||
var userHaveUserTypeIdList = userTypeList.Select(t => t.UserTypeId).ToList();
|
||||
|
||||
|
@ -323,7 +325,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
return ResponseOutput.NotOk("database dirty data ");
|
||||
}
|
||||
|
||||
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||
|
||||
if (findTrialUser == null)
|
||||
{
|
||||
|
@ -346,6 +348,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
//有该人员
|
||||
|
||||
if (findTrialUser.IsDeleted == true)
|
||||
{
|
||||
findTrialUser.IsDeleted = false;
|
||||
findTrialUser.DeletedTime = null;
|
||||
findTrialUser.RemoveTime = null;
|
||||
findTrialUser.JoinTime = DateTime.Now;
|
||||
}
|
||||
|
||||
//是否有该角色
|
||||
|
||||
foreach (var userTypeId in userTypeIdList)
|
||||
|
@ -373,7 +383,8 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
await _trialIdentityUserRepository.SaveChangesAsync();
|
||||
|
||||
var usertyps = string.Join(',', userTypeList.Where(t => userTypeIdList.Contains(t.UserTypeId)).Select(t => t.UserTypeShortName));
|
||||
|
||||
var usertyps = string.Join(',', userTypeList.Where(t => userTypeIdList.Contains(t.UserTypeId)).Select(t => t.UserTypeName));
|
||||
|
||||
await _mailVerificationService.ExternalUserJoinEmail(trialId, identityUserId, usertyps, sendEmail.BaseUrl, sendEmail.RouteUrl);
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
|
||||
//之前已经选择的用户 不放在列表中,现在又要改回去 废弃
|
||||
var query = _userRoleRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
||||
var query = _userRoleRepository.Where(t => t.UserTypeEnum != UserTypeEnum.SuperAdmin && t.IdentityUser.Status == UserStateEnum.Enable)
|
||||
|
||||
//正式或者培训的项目 不能允许测试用户(必须正式用户) 同时必须是内部的用户
|
||||
.WhereIf(trialType == TrialType.OfficialTrial || trialType == TrialType.Training, t => t.IdentityUser.IsTestUser == false && t.IdentityUser.IsZhiZhun)
|
||||
|
@ -184,7 +184,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
var first = currentUserRoleList.FirstOrDefault();
|
||||
|
||||
var findTrialuser = await _trialIdentityUserRepository.Where(t => t.TrialId == first.TrialId && t.IdentityUserId == item.Key, true).Include(t => t.TrialUserRoleList).FirstOrDefaultAsync();
|
||||
var findTrialuser = await _trialIdentityUserRepository.Where(t => t.TrialId == first.TrialId && t.IdentityUserId == item.Key, true, true).Include(t => t.TrialUserRoleList).FirstOrDefaultAsync();
|
||||
|
||||
if (findTrialuser == null)
|
||||
{
|
||||
|
@ -201,6 +201,14 @@ namespace IRaCIS.Core.Application.Service
|
|||
}
|
||||
else
|
||||
{
|
||||
if (findTrialuser.IsDeleted = true)
|
||||
{
|
||||
findTrialuser.IsDeleted = false;
|
||||
findTrialuser.DeletedTime = null;
|
||||
findTrialuser.JoinTime = DateTime.Now;
|
||||
findTrialuser.RemoveTime = null;
|
||||
}
|
||||
|
||||
findTrialuser.TrialUserRoleList.AddRange(currentUserRoleList.Select(t => new TrialUserRole() { UserId = t.UserId, TrialId = t.TrialId, TrialUserId = findTrialuser.Id }).ToList());
|
||||
}
|
||||
|
||||
|
@ -238,45 +246,5 @@ namespace IRaCIS.Core.Application.Service
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary> 项目参与人员退出 其中IQC退出 回去释放工作量 </summary>
|
||||
//[TrialAudit(AuditType.TrialAudit, AuditOptType.DeleteTrailStaff)]
|
||||
[HttpDelete, Route("{id:guid}/{trialId:guid}/{isDelete:bool}")]
|
||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||
[UnitOfWork]
|
||||
[Obsolete]
|
||||
public async Task<IResponseOutput> DeleteMaintenanceUser(Guid id, bool isDelete)
|
||||
{
|
||||
|
||||
var trialUser = await _trialUseRoleRepository.AsQueryable().IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
if (trialUser == null) return Null404NotFound(trialUser);
|
||||
|
||||
if (await _trialSiteUserRoleRepository.AnyAsync(t => t.UserId == trialUser.UserId && t.TrialId == trialUser.TrialId))
|
||||
{
|
||||
//---人员已加入现场维护
|
||||
return ResponseOutput.NotOk(_localizer["TrialMaint_PersonnelJoined"]);
|
||||
}
|
||||
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.IQC && isDelete)
|
||||
{
|
||||
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
|
||||
}
|
||||
|
||||
await _trialUseRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialUserRole() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null });
|
||||
|
||||
await _trialUseRoleRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using DocumentFormat.OpenXml.Vml.Spreadsheet;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
using IRaCIS.Core.Application.Service.WorkLoad.DTO;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infra.EFCore.Common;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
@ -411,29 +412,51 @@ namespace IRaCIS.Core.Application.Service
|
|||
var (identityUserId, userRoleId) = await _mailVerificationService.DoctorJoinTrialEmail(trialId, intoGroupItem.DoctorId, confirmReviewerCommand.BaseUrl, confirmReviewerCommand.RouteUrl);
|
||||
|
||||
|
||||
var findTrialUser = await _trialIdentityUserRepository.FirstOrDefaultAsync(t => t.IdentityUserId == identityUserId);
|
||||
//项目中不存在
|
||||
var findTrialUser = await _trialIdentityUserRepository.Where(t => t.TrialId == trialId && t.IdentityUserId == identityUserId, true, true).Include(t => t.TrialUserRoleList).ThenInclude(t => t.UserRole).FirstOrDefaultAsync();
|
||||
|
||||
if (findTrialUser == null)
|
||||
{
|
||||
|
||||
await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser()
|
||||
//没有项目参与人员
|
||||
findTrialUser = await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser()
|
||||
{
|
||||
TrialId = trialId,
|
||||
IdentityUserId = identityUserId,
|
||||
TrialId = trialId,
|
||||
JoinTime = DateTime.Now,
|
||||
|
||||
TrialUserRoleList = new List<TrialUserRole>() { new TrialUserRole() { TrialId = trialId, UserId = userRoleId } }
|
||||
});
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!await _trialUserRoleRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userRoleId, true))
|
||||
|
||||
if (findTrialUser.IsDeleted == true)
|
||||
{
|
||||
await _trialUserRoleRepository.AddAsync(new TrialUserRole() { TrialId = trialId, UserId = userRoleId, TrialUserId = findTrialUser.Id });
|
||||
findTrialUser.IsDeleted = false;
|
||||
findTrialUser.DeletedTime = null;
|
||||
findTrialUser.RemoveTime = null;
|
||||
findTrialUser.JoinTime = DateTime.Now;
|
||||
|
||||
}
|
||||
|
||||
var findTrialUserRole = findTrialUser.TrialUserRoleList.Where(t => t.UserRole.UserTypeId == userRoleId).FirstOrDefault();
|
||||
|
||||
if (findTrialUserRole == null)
|
||||
{
|
||||
//添加该角色
|
||||
findTrialUser.TrialUserRoleList.Add(new TrialUserRole() { TrialUserId = findTrialUser.Id, TrialId = trialId, UserId = userRoleId });
|
||||
}
|
||||
else
|
||||
{
|
||||
//如果禁用,那么启用
|
||||
if (findTrialUserRole.IsDeleted == true)
|
||||
{
|
||||
findTrialUserRole.IsDeleted = false;
|
||||
findTrialUser.DeletedTime = null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == userRoleId, u => new UserRole() { DoctorId = intoGroupItem.DoctorId });
|
||||
await _enrollRepository.BatchUpdateNoTrackingAsync(t => t.Id == intoGroupItem.Id, u => new Enroll() { DoctorUserId = userRoleId });
|
||||
|
||||
|
|
|
@ -8,7 +8,11 @@ using System.Threading.Tasks;
|
|||
namespace IRaCIS.Core.Application.Triggers.AfterSaveTrigger
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 维护用户角色表中的账户信息
|
||||
/// </summary>
|
||||
/// <param name="_identityUserRepository"></param>
|
||||
/// <param name="_userRoleRepository"></param>
|
||||
public class IdenttiyUserRoleInfoTrigger(IRepository<IdentityUser> _identityUserRepository, IRepository<UserRole> _userRoleRepository) : IAfterSaveTrigger<IdentityUser>
|
||||
{
|
||||
public async Task AfterSave(ITriggerContext<IdentityUser> context, CancellationToken cancellationToken)
|
||||
|
@ -25,4 +29,7 @@ namespace IRaCIS.Core.Application.Triggers.AfterSaveTrigger
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -8,6 +8,10 @@ using System.Threading.Tasks;
|
|||
|
||||
namespace IRaCIS.Core.Application.Triggers.AfterSaveTrigger
|
||||
{
|
||||
/// <summary>
|
||||
/// 账户日志 记录账户每次操作的信息
|
||||
/// </summary>
|
||||
/// <param name="_identityUserRepository"></param>
|
||||
public class UserLogAfterTrigger(IRepository<IdentityUser> _identityUserRepository) : IAfterSaveTrigger<UserLog>
|
||||
{
|
||||
public async Task AfterSave(ITriggerContext<UserLog> context, CancellationToken cancellationToken)
|
||||
|
@ -58,4 +62,7 @@ namespace IRaCIS.Core.Application.Triggers.AfterSaveTrigger
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue