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

This commit is contained in:
he
2025-01-02 14:18:15 +08:00
10 changed files with 219 additions and 83 deletions
@@ -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 });