增加用户基本信息修改接口
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
2eaf2d5c69
commit
473e218b2b
|
@ -15465,6 +15465,45 @@
|
|||
<param name="userInfo"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.GetTrialSurveyInitInfo(System.Guid)">
|
||||
<summary>
|
||||
初始登陆界面 项目基本信息+下拉框数据
|
||||
</summary>
|
||||
<param name="trialId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.AddOrUpdateTrialSiteSurvey(IRaCIS.Core.Application.Contracts.TrialSiteSurveyAddOrEdit)">
|
||||
<summary>
|
||||
实际这里只会是更新 添加在login的时候做了
|
||||
</summary>
|
||||
<param name="addOrEditTrialSiteSurvey"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.TrialSiteSurveyUserList(IRaCIS.Core.Application.Contracts.TrialSiteUserSurveyAllQuery)">
|
||||
<summary>
|
||||
项目Site调研用户列表 所有site的调研用户 最新的调研表的记录的用户 new
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.GetTrialSiteSurveyList(IRaCIS.Core.Application.Contracts.TrialSiteSurveyQueryDTO)">
|
||||
<summary>
|
||||
获取 项目 site的调研记录 New
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.SubmissionRejection(IRaCIS.Core.Application.Contracts.TrialSiteSubmitBackCommand,IRaCIS.Core.Application.Service.IMailVerificationService)">
|
||||
<summary>
|
||||
驳回 New
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.AbandonSiteSurvey(System.Guid)">
|
||||
<summary>
|
||||
调研表废除
|
||||
</summary>
|
||||
<param name="trialSiteSurveyId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.VerifySendCode(IRaCIS.Core.Application.Contracts.LoginDto,IRaCIS.Core.Application.Auth.ITokenService)">
|
||||
<summary>
|
||||
验证后 如果数据库该项目不存在该邮箱 那么就插入记录 存在
|
||||
|
@ -15480,45 +15519,6 @@
|
|||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.AddOrUpdateTrialSiteSurvey(IRaCIS.Core.Application.Contracts.TrialSiteSurveyAddOrEdit)">
|
||||
<summary>
|
||||
实际这里只会是更新 添加在login的时候做了
|
||||
</summary>
|
||||
<param name="addOrEditTrialSiteSurvey"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.DeleteTrialSiteSurvey(System.Guid)">
|
||||
<summary>
|
||||
删除调研表
|
||||
</summary>
|
||||
<param name="trialSiteSurveyId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.GetTrialSiteSurveyList(IRaCIS.Core.Application.Contracts.TrialSiteSurveyQueryDTO)">
|
||||
<summary>
|
||||
获取 项目 site的调研记录 New
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.TrialSiteSurveyUserList(IRaCIS.Core.Application.Contracts.TrialSiteUserSurveyAllQuery)">
|
||||
<summary>
|
||||
项目Site调研用户列表 所有site的调研用户 最新的调研表的记录的用户 new
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.GetTrialSurveyInitInfo(System.Guid)">
|
||||
<summary>
|
||||
初始登陆界面 项目基本信息+下拉框数据
|
||||
</summary>
|
||||
<param name="trialId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.SubmissionRejection(IRaCIS.Core.Application.Contracts.TrialSiteSubmitBackCommand,IRaCIS.Core.Application.Service.IMailVerificationService)">
|
||||
<summary>
|
||||
驳回 New
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:IRaCIS.Core.Application.Contracts.TrialSiteSurveyService.TrialSurveySubmit(IRaCIS.Core.Application.Contracts.TrialSiteSurvyeSubmitDTO)">
|
||||
<summary>
|
||||
提交 后台自动识别是谁提交
|
||||
|
|
|
@ -206,6 +206,11 @@ namespace IRaCIS.Application.Contracts
|
|||
}
|
||||
|
||||
|
||||
public class UserBasicInfoCommand : UserInfo
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
}
|
||||
|
||||
public class UserCommand : UserInfo
|
||||
{
|
||||
public Guid? Id { get; set; }
|
||||
|
@ -218,7 +223,7 @@ namespace IRaCIS.Application.Contracts
|
|||
|
||||
}
|
||||
|
||||
public class IdentityUserTypeDTO: UserAddUserType
|
||||
public class IdentityUserTypeDTO : UserAddUserType
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public string UserTypeShortName { get; set; }
|
||||
|
@ -237,7 +242,7 @@ namespace IRaCIS.Application.Contracts
|
|||
|
||||
public bool IsUserRoleDisabled { get; set; }
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class EditPasswordCommand
|
||||
|
|
|
@ -479,47 +479,6 @@ namespace IRaCIS.Core.Application.Service
|
|||
.WhereIf(inQuery.IsZhiZhun != null, t => t.IsZhiZhun == inQuery.IsZhiZhun)
|
||||
.ProjectTo<UserListDTO>(_mapper.ConfigurationProvider);
|
||||
|
||||
|
||||
//var userQueryable = _identityUserRepository.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
|
||||
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserName.Contains(inQuery.UserName))
|
||||
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.RealName), t => t.FullName.Contains(inQuery.RealName))
|
||||
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Phone), t => t.Phone.Contains(inQuery.Phone))
|
||||
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.OrganizationName.Contains(inQuery.OrganizationName))
|
||||
// .WhereIf(!string.IsNullOrWhiteSpace(inQuery.EMail), t => t.EMail.Contains(inQuery.EMail))
|
||||
// .WhereIf(inQuery.BeginCreateTime != null, t => t.CreateTime >= inQuery.BeginCreateTime)
|
||||
// .WhereIf(inQuery.EndCreateTime != null, t => t.CreateTime <= inQuery.EndCreateTime)
|
||||
// .WhereIf(inQuery.BeginLastLoginTime != null, t => t.LastLoginTime >= inQuery.BeginLastLoginTime)
|
||||
// .WhereIf(inQuery.EndLastLoginTime != null, t => t.LastLoginTime <= inQuery.EndLastLoginTime)
|
||||
// .WhereIf(inQuery.UserType != null, t => t.UserTypeId == inQuery.UserType)
|
||||
// .WhereIf(inQuery.UserState != null, t => t.Status == inQuery.UserState)
|
||||
// .WhereIf(inQuery.IsTestUser != null, t => t.IsTestUser == inQuery.IsTestUser)
|
||||
// .WhereIf(inQuery.IsZhiZhun != null, t => t.IsZhiZhun == inQuery.IsZhiZhun)
|
||||
// .GroupBy(t => t.IdentityUserId).Select(g => new UserListDTO()
|
||||
// {
|
||||
// IdentityUserId = g.Key,
|
||||
// UserRoleList = g.Select(c => new UserAddUserType()
|
||||
// {
|
||||
// UserTypeEnum = c.UserTypeEnum,
|
||||
// UserTypeId = c.UserTypeId,
|
||||
// }).ToList(),
|
||||
|
||||
// UserCode = g.FirstOrDefault().UserCode,
|
||||
// DepartmentName = g.FirstOrDefault().DepartmentName,
|
||||
// CreateTime = g.FirstOrDefault().CreateTime,
|
||||
// EMail = g.FirstOrDefault().EMail,
|
||||
// FirstName = g.FirstOrDefault().FirstName,
|
||||
// IsTestUser = g.FirstOrDefault().IsTestUser,
|
||||
// IsZhiZhun = g.FirstOrDefault().IsZhiZhun,
|
||||
// LastName = g.FirstOrDefault().LastName,
|
||||
// OrganizationName = g.FirstOrDefault().OrganizationName,
|
||||
// FullName = g.FirstOrDefault().FullName,
|
||||
// Phone = g.FirstOrDefault().Phone,
|
||||
// PositionName = g.FirstOrDefault().PositionName,
|
||||
// Sex = g.FirstOrDefault().Sex,
|
||||
// Status = g.FirstOrDefault().Status,
|
||||
// UserName = g.FirstOrDefault().UserName,
|
||||
// });
|
||||
|
||||
return await userQueryable.ToPagedListAsync(inQuery);
|
||||
|
||||
}
|
||||
|
@ -671,7 +630,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
var find = user.UserRoleList.FirstOrDefault(t => t.UserTypeEnum == role.UserTypeEnum && t.UserTypeId == role.UserTypeId);
|
||||
|
||||
if (find != null )
|
||||
if (find != null)
|
||||
{
|
||||
find.IsUserRoleDisabled = role.IsUserRoleDisabled;
|
||||
}
|
||||
|
@ -696,6 +655,21 @@ namespace IRaCIS.Core.Application.Service
|
|||
}
|
||||
|
||||
|
||||
[HttpPut]
|
||||
public async Task<IResponseOutput> UpdateUserBasicInfo(UserBasicInfoCommand command)
|
||||
{
|
||||
|
||||
var user = await _identityUserRepository.Where(t => t.Id == command.Id, true).FirstOrDefaultAsync();
|
||||
|
||||
if (user == null) return Null404NotFound(user);
|
||||
|
||||
_mapper.Map(command, user);
|
||||
|
||||
await _identityUserRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
///// 禁用或者启用账户
|
||||
|
@ -1134,7 +1108,7 @@ namespace IRaCIS.Core.Application.Service
|
|||
{
|
||||
var jwt = _tokenService.GetToken(userTokenInfo);
|
||||
|
||||
|
||||
|
||||
|
||||
return jwt;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
public interface ITrialSiteSurveyService
|
||||
{
|
||||
Task<IResponseOutput> AddOrUpdateTrialSiteSurvey(TrialSiteSurveyAddOrEdit addOrEditTrialSiteSurvey);
|
||||
Task<IResponseOutput> DeleteTrialSiteSurvey(Guid trialSiteSurveyId);
|
||||
//Task<IResponseOutput> DeleteTrialSiteSurvey(Guid trialSiteSurveyId);
|
||||
Task<LoginReturnDTO> GetSiteSurveyInfo(Guid trialSiteSurveyId, Guid trialId);
|
||||
Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO surveyQueryDTO);
|
||||
Task<TrialSurveyInitInfo> GetTrialSurveyInitInfo(Guid trialId);
|
||||
|
|
|
@ -26,6 +26,8 @@ using MassTransit;
|
|||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using StackExchange.Redis;
|
||||
using Panda.DynamicWebApi.Attributes;
|
||||
using IdentityModel;
|
||||
using Microsoft.AspNetCore.Components.Routing;
|
||||
|
||||
namespace IRaCIS.Core.Application.Contracts
|
||||
{
|
||||
|
@ -78,6 +80,9 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
#region 多账户需要修改
|
||||
|
||||
/// <summary>
|
||||
/// 通过UserId获取Doctorid
|
||||
/// </summary>
|
||||
|
@ -172,6 +177,10 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 验证邮箱验证码 获取医生信息Id
|
||||
/// </summary>
|
||||
|
@ -279,6 +288,211 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#region 中心调研修改
|
||||
|
||||
/// <summary>
|
||||
/// 初始登陆界面 项目基本信息+下拉框数据
|
||||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[HttpGet("{trialId:guid}")]
|
||||
public async Task<TrialSurveyInitInfo> GetTrialSurveyInitInfo(Guid trialId)
|
||||
{
|
||||
var info = await _trialRepository.Where(t => t.Id == trialId).IgnoreQueryFilters().ProjectTo<TrialSurveyInitInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 实际这里只会是更新 添加在login的时候做了
|
||||
/// </summary>
|
||||
/// <param name="addOrEditTrialSiteSurvey"></param>
|
||||
/// <returns></returns>
|
||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||
public async Task<IResponseOutput> AddOrUpdateTrialSiteSurvey(TrialSiteSurveyAddOrEdit addOrEditTrialSiteSurvey)
|
||||
{
|
||||
|
||||
if (addOrEditTrialSiteSurvey.Id != null)
|
||||
{
|
||||
if (await _trialSiteSurveyRepository.AnyAsync(t => t.Id == addOrEditTrialSiteSurvey.Id && t.State == TrialSiteSurveyEnum.PMCreatedAndLock))
|
||||
{
|
||||
//---中心调研已锁定,不允许操作。
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_Locked"]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (addOrEditTrialSiteSurvey.Id == null)
|
||||
{
|
||||
var entity = _mapper.Map<TrialSiteSurvey>(addOrEditTrialSiteSurvey);
|
||||
await _trialSiteSurveyRepository.AddAsync(entity, true);
|
||||
return ResponseOutput.Ok(entity.Id.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
var entity = await _trialSiteSurveyRepository.Where(t => t.Id == addOrEditTrialSiteSurvey.Id, true).Include(x => x.ReviewerUser).Include(x => x.PreliminaryUser).FirstOrDefaultAsync();
|
||||
_mapper.Map(addOrEditTrialSiteSurvey, entity);
|
||||
await _trialSiteSurveyRepository.SaveChangesAsync();
|
||||
|
||||
}
|
||||
return ResponseOutput.Ok(true);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 项目Site调研用户列表 所有site的调研用户 最新的调研表的记录的用户 new
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<PageOutput<TrialSiteUserSurveyAllDTO>> TrialSiteSurveyUserList(TrialSiteUserSurveyAllQuery inQuery)
|
||||
{
|
||||
|
||||
//找到该中心最新的调研记录
|
||||
var groupSelectIdQuery =
|
||||
_trialSiteSurveyRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
.WhereIf(inQuery.TrialSiteId != null, t => t.TrialSiteId == inQuery.TrialSiteId)
|
||||
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.FormWriterKeyInfo), t => (t.UserName).Contains(inQuery.FormWriterKeyInfo) || t.Email.Contains(inQuery.FormWriterKeyInfo) || t.Phone.Contains(inQuery.FormWriterKeyInfo))
|
||||
.GroupBy(t => t.TrialSiteId)
|
||||
.Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First());
|
||||
|
||||
|
||||
var query = _trialSiteUserSurveyRepository
|
||||
.Where(t => groupSelectIdQuery.Contains(t.TrialSiteSurveyId))
|
||||
.WhereIf(inQuery.TrialRoleCode != null, t => t.TrialRoleCode == inQuery.TrialRoleCode)
|
||||
.WhereIf(inQuery.UserTypeId != null, t => t.UserTypeId == inQuery.UserTypeId)
|
||||
.WhereIf(inQuery.IsGenerateAccount != null, t => t.IsGenerateAccount == inQuery.IsGenerateAccount)
|
||||
.WhereIf(inQuery.State != null && inQuery.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == inQuery.State)
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.UserName), t => (t.LastName + " / " + t.FirstName).Contains(inQuery.UserName))
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.OrganizationName), t => t.OrganizationName.Contains(inQuery.OrganizationName))
|
||||
|
||||
.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await query.ToPagedListAsync(inQuery);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取 项目 site的调研记录 New
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO inQuery)
|
||||
{
|
||||
var trialSiteSurveyQueryable = _trialSiteSurveyRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
|
||||
.WhereIf(inQuery.TrialSiteId != null, t => t.TrialSiteId == inQuery.TrialSiteId)
|
||||
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserKeyInfo), t => t.UserName.Contains(inQuery.UserKeyInfo) || t.Phone.Contains(inQuery.UserKeyInfo) || t.Email.Contains(inQuery.UserKeyInfo))
|
||||
.WhereIf(inQuery.State != null, t => t.State == inQuery.State)
|
||||
.WhereIf(inQuery.UpdateTimeBegin != null, t => t.UpdateTime >= inQuery.UpdateTimeBegin)
|
||||
.WhereIf(inQuery.UpdateTimeEnd != null, t => t.UpdateTime <= inQuery.UpdateTimeEnd)
|
||||
|
||||
.ProjectTo<TrialSiteSurveyView>(_mapper.ConfigurationProvider, new { isEn_Us = _userInfo.IsEn_Us })
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.PreliminaryUserName), t => t.PreliminaryUser.RealName.Contains(inQuery.PreliminaryUserName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ReviewerUserName), t => t.ReviewerUser.RealName.Contains(inQuery.ReviewerUserName))
|
||||
;
|
||||
|
||||
return await trialSiteSurveyQueryable.ToPagedListAsync(inQuery);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<List<TrialSiteSurveySelectView>> GetTrialSiteSurveySelectList(TrialSiteSurveySelectquery inQuery)
|
||||
{
|
||||
var trialSiteSurveyQueryable = _trialSiteSurveyRepository
|
||||
.Where(t => t.Id != inQuery.TrialSiteSurveyId)
|
||||
.Where(t => t.TrialId == inQuery.TrialId && t.TrialSiteId == inQuery.TrialSiteId).IgnoreQueryFilters()
|
||||
.ProjectTo<TrialSiteSurveySelectView>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await trialSiteSurveyQueryable.ToListAsync();
|
||||
}
|
||||
/// <summary>
|
||||
/// 驳回 New
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||
|
||||
public async Task<IResponseOutput> SubmissionRejection(TrialSiteSubmitBackCommand trialSiteSubmitBackCommand, [FromServices] IMailVerificationService _IMailVerificationService)
|
||||
{
|
||||
var trialSiteSurveyId = trialSiteSubmitBackCommand.TrialSiteSurveyId;
|
||||
|
||||
var survey = await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId);
|
||||
|
||||
survey.LatestBackReason = trialSiteSubmitBackCommand.LatestBackReason;
|
||||
|
||||
|
||||
if (await _trialSiteSurveyRepository.AnyAsync(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId))
|
||||
{
|
||||
//---中心调研已锁定,不允许操作。
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_Locked"]);
|
||||
}
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
|
||||
{
|
||||
survey.State = TrialSiteSurveyEnum.ToSubmit;
|
||||
}
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)
|
||||
{
|
||||
var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId && t.IsSPMJoinSiteSurvey);
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Trial.TrialUserList.Any(u => u.UserRole.UserTypeEnum == UserTypeEnum.SPM || u.UserRole.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
var isSPMjoin = isTrialSPMJoin && hasSPMOrCPM;
|
||||
|
||||
if (isSPMjoin)
|
||||
{
|
||||
survey.State = TrialSiteSurveyEnum.CRCSubmitted;
|
||||
|
||||
survey.ReviewerUserId = null;
|
||||
survey.ReviewerTime = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
survey.State = TrialSiteSurveyEnum.ToSubmit;
|
||||
|
||||
survey.PreliminaryUserId = null;
|
||||
survey.ReviewerUserId = null;
|
||||
survey.PreliminaryTime = null;
|
||||
survey.ReviewerTime = null;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
await _trialSiteSurveyRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 调研表废除
|
||||
/// </summary>
|
||||
/// <param name="trialSiteSurveyId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut("{trialId:guid}/{trialSiteSurveyId:guid}")]
|
||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||
|
||||
public async Task<IResponseOutput> AbandonSiteSurvey(Guid trialSiteSurveyId)
|
||||
{
|
||||
var survey = (await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId, true)).IfNullThrowException();
|
||||
|
||||
if (survey.State != TrialSiteSurveyEnum.ToSubmit)
|
||||
{
|
||||
//---只允许废除未提交的记录。
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_CancelUnsubmittedRecord"]);
|
||||
}
|
||||
|
||||
survey.IsDeleted = true;
|
||||
|
||||
await _trialSiteSurveyRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// 验证后 如果数据库该项目不存在该邮箱 那么就插入记录 存在
|
||||
/// </summary>
|
||||
|
@ -465,6 +679,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
foreach (var item in userList)
|
||||
{
|
||||
var find = existList.FirstOrDefault(t => t.SystemUserId == item.SystemUserId);
|
||||
|
||||
//不存在就加入
|
||||
if (find == null)
|
||||
{
|
||||
|
@ -512,252 +727,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 实际这里只会是更新 添加在login的时候做了
|
||||
/// </summary>
|
||||
/// <param name="addOrEditTrialSiteSurvey"></param>
|
||||
/// <returns></returns>
|
||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||
public async Task<IResponseOutput> AddOrUpdateTrialSiteSurvey(TrialSiteSurveyAddOrEdit addOrEditTrialSiteSurvey)
|
||||
{
|
||||
|
||||
if (addOrEditTrialSiteSurvey.Id != null)
|
||||
{
|
||||
if (await _trialSiteSurveyRepository.AnyAsync(t => t.Id == addOrEditTrialSiteSurvey.Id && t.State == TrialSiteSurveyEnum.PMCreatedAndLock))
|
||||
{
|
||||
//---中心调研已锁定,不允许操作。
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_Locked"]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (addOrEditTrialSiteSurvey.Id == null)
|
||||
{
|
||||
var entity = _mapper.Map<TrialSiteSurvey>(addOrEditTrialSiteSurvey);
|
||||
await _trialSiteSurveyRepository.AddAsync(entity, true);
|
||||
return ResponseOutput.Ok(entity.Id.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
var entity = await _trialSiteSurveyRepository.Where(t => t.Id == addOrEditTrialSiteSurvey.Id, true).Include(x => x.ReviewerUser).Include(x => x.PreliminaryUser).FirstOrDefaultAsync();
|
||||
_mapper.Map(addOrEditTrialSiteSurvey, entity);
|
||||
await _trialSiteSurveyRepository.SaveChangesAsync();
|
||||
|
||||
}
|
||||
return ResponseOutput.Ok(true);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 删除调研表
|
||||
/// </summary>
|
||||
/// <param name="trialSiteSurveyId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpDelete("{trialSiteSurveyId:guid}/{trialId:guid}")]
|
||||
public async Task<IResponseOutput> DeleteTrialSiteSurvey(Guid trialSiteSurveyId)
|
||||
{
|
||||
|
||||
if (await _trialSiteSurveyRepository.AnyAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.PMCreatedAndLock))
|
||||
{
|
||||
//---中心调研已锁定,不允许操作。
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_Locked"]);
|
||||
}
|
||||
|
||||
var success = await _trialSiteSurveyRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialSiteSurveyId);
|
||||
|
||||
return ResponseOutput.Result(success);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取 项目 site的调研记录 New
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO inQuery)
|
||||
{
|
||||
var trialSiteSurveyQueryable = _trialSiteSurveyRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
|
||||
.WhereIf(inQuery.TrialSiteId != null, t => t.TrialSiteId == inQuery.TrialSiteId)
|
||||
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserKeyInfo), t => t.UserName.Contains(inQuery.UserKeyInfo) || t.Phone.Contains(inQuery.UserKeyInfo) || t.Email.Contains(inQuery.UserKeyInfo))
|
||||
.WhereIf(inQuery.State != null, t => t.State == inQuery.State)
|
||||
.WhereIf(inQuery.UpdateTimeBegin != null, t => t.UpdateTime >= inQuery.UpdateTimeBegin)
|
||||
.WhereIf(inQuery.UpdateTimeEnd != null, t => t.UpdateTime <= inQuery.UpdateTimeEnd)
|
||||
|
||||
.ProjectTo<TrialSiteSurveyView>(_mapper.ConfigurationProvider, new { isEn_Us = _userInfo.IsEn_Us })
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.PreliminaryUserName), t => t.PreliminaryUser.RealName.Contains(inQuery.PreliminaryUserName))
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ReviewerUserName), t => t.ReviewerUser.RealName.Contains(inQuery.ReviewerUserName))
|
||||
;
|
||||
|
||||
return await trialSiteSurveyQueryable.ToPagedListAsync(inQuery);
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
public async Task<List<TrialSiteSurveySelectView>> GetTrialSiteSurveySelectList(TrialSiteSurveySelectquery inQuery)
|
||||
{
|
||||
var trialSiteSurveyQueryable = _trialSiteSurveyRepository
|
||||
.Where(t => t.Id != inQuery.TrialSiteSurveyId)
|
||||
.Where(t => t.TrialId == inQuery.TrialId && t.TrialSiteId == inQuery.TrialSiteId).IgnoreQueryFilters()
|
||||
.ProjectTo<TrialSiteSurveySelectView>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await trialSiteSurveyQueryable.ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 项目Site调研用户列表 所有site的调研用户 最新的调研表的记录的用户 new
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<PageOutput<TrialSiteUserSurveyAllDTO>> TrialSiteSurveyUserList(TrialSiteUserSurveyAllQuery inQuery)
|
||||
{
|
||||
|
||||
|
||||
var groupSelectIdQuery =
|
||||
_trialSiteSurveyRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||
.WhereIf(inQuery.TrialSiteId != null, t => t.TrialSiteId == inQuery.TrialSiteId)
|
||||
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.FormWriterKeyInfo), t => (t.UserName).Contains(inQuery.FormWriterKeyInfo) || t.Email.Contains(inQuery.FormWriterKeyInfo) || t.Phone.Contains(inQuery.FormWriterKeyInfo))
|
||||
.GroupBy(t => t.TrialSiteId)
|
||||
.Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First());
|
||||
|
||||
|
||||
var query = _trialSiteUserSurveyRepository
|
||||
.Where(t => groupSelectIdQuery.Contains(t.TrialSiteSurveyId))
|
||||
.WhereIf(inQuery.TrialRoleCode != null, t => t.TrialRoleCode == inQuery.TrialRoleCode)
|
||||
.WhereIf(inQuery.UserTypeId != null, t => t.UserTypeId == inQuery.UserTypeId)
|
||||
.WhereIf(inQuery.IsGenerateAccount != null, t => t.IsGenerateAccount == inQuery.IsGenerateAccount)
|
||||
.WhereIf(inQuery.State != null && inQuery.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == inQuery.State)
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.UserName), t => (t.LastName + " / " + t.FirstName).Contains(inQuery.UserName))
|
||||
.WhereIf(!string.IsNullOrEmpty(inQuery.OrganizationName), t => t.OrganizationName.Contains(inQuery.OrganizationName))
|
||||
|
||||
.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
|
||||
|
||||
|
||||
return await query.ToPagedListAsync(inQuery);
|
||||
|
||||
|
||||
|
||||
|
||||
//return await query.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, queryParam.SortField, queryParam.Asc);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 初始登陆界面 项目基本信息+下拉框数据
|
||||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[HttpGet("{trialId:guid}")]
|
||||
public async Task<TrialSurveyInitInfo> GetTrialSurveyInitInfo(Guid trialId)
|
||||
{
|
||||
var info = await _trialRepository.Where(t => t.Id == trialId).IgnoreQueryFilters().ProjectTo<TrialSurveyInitInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 驳回 New
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||
|
||||
public async Task<IResponseOutput> SubmissionRejection(TrialSiteSubmitBackCommand trialSiteSubmitBackCommand, [FromServices] IMailVerificationService _IMailVerificationService)
|
||||
{
|
||||
var trialSiteSurveyId = trialSiteSubmitBackCommand.TrialSiteSurveyId;
|
||||
|
||||
var survey = await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId);
|
||||
|
||||
survey.LatestBackReason = trialSiteSubmitBackCommand.LatestBackReason;
|
||||
|
||||
//User? user = null;
|
||||
|
||||
//var messageToSend = new MimeMessage();
|
||||
|
||||
|
||||
if (await _trialSiteSurveyRepository.AnyAsync(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId))
|
||||
{
|
||||
//---中心调研已锁定,不允许操作。
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_Locked"]);
|
||||
}
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
|
||||
{
|
||||
|
||||
////SPM 给填表人发
|
||||
//messageToSend.To.Add(new MailboxAddress(String.Empty, survey.Email));
|
||||
|
||||
survey.State = TrialSiteSurveyEnum.ToSubmit;
|
||||
}
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)
|
||||
{
|
||||
var isTrialSPMJoin = await _trialRepository.AnyAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId && t.IsSPMJoinSiteSurvey);
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Trial.TrialUserList.Any(u => u.UserRole.UserTypeEnum == UserTypeEnum.SPM || u.UserRole.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
var isSPMjoin = isTrialSPMJoin && hasSPMOrCPM;
|
||||
|
||||
if (isSPMjoin)
|
||||
{
|
||||
|
||||
////PM 给SPM发 (初审人)
|
||||
//user = await _userRoleRepository.FirstOrDefaultAsync(t => t.Id == survey.PreliminaryUserId);
|
||||
|
||||
//messageToSend.To.Add(new MailboxAddress(String.Empty, survey.PreliminaryUserId == null ? survey.Email : user.EMail));
|
||||
|
||||
survey.State = TrialSiteSurveyEnum.CRCSubmitted;
|
||||
|
||||
survey.ReviewerUserId = null;
|
||||
survey.ReviewerTime = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
////没有SPM 给填表人发
|
||||
//messageToSend.To.Add(new MailboxAddress(String.Empty, survey.Email));
|
||||
|
||||
survey.State = TrialSiteSurveyEnum.ToSubmit;
|
||||
|
||||
survey.PreliminaryUserId = null;
|
||||
survey.ReviewerUserId = null;
|
||||
survey.PreliminaryTime = null;
|
||||
survey.ReviewerTime = null;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//await _IMailVerificationService.SiteSurveyRejectEmail(messageToSend, survey, trialSiteSubmitBackCommand.RouteUrl, user);
|
||||
|
||||
await _trialSiteSurveyRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[HttpPut("{trialId:guid}/{trialSiteSurveyId:guid}")]
|
||||
[TrialGlobalLimit("AfterStopCannNotOpt")]
|
||||
|
||||
public async Task<IResponseOutput> AbandonSiteSurvey(Guid trialSiteSurveyId)
|
||||
{
|
||||
var survey = (await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId, true)).IfNullThrowException();
|
||||
|
||||
if (survey.State != TrialSiteSurveyEnum.ToSubmit)
|
||||
{
|
||||
//---只允许废除未提交的记录。
|
||||
return ResponseOutput.NotOk(_localizer["TrialSiteSurvey_CancelUnsubmittedRecord"]);
|
||||
}
|
||||
|
||||
survey.IsDeleted = true;
|
||||
|
||||
await _trialSiteSurveyRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -875,11 +845,13 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
{
|
||||
var trialType = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault();
|
||||
|
||||
foreach (var item in needGenerateList)
|
||||
foreach (var item in needGenerateList.GroupBy(t => t.Email))
|
||||
{
|
||||
|
||||
var addUserRoleList = item.ToList();
|
||||
|
||||
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
|
||||
var sysUserInfo = await _userRoleRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
|
||||
var sysUserInfo = await _identityUserRepository.Where(t => t.EMail == item.Key, true).Include(t => t.UserRoleList).FirstOrDefaultAsync();
|
||||
|
||||
|
||||
if (sysUserInfo == null)
|
||||
|
@ -889,7 +861,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
using (await @lock.AcquireAsync())
|
||||
{
|
||||
var saveItem = _mapper.Map<UserRole>(item);
|
||||
var saveItem = _mapper.Map<IdentityUser>(item);
|
||||
|
||||
|
||||
if (trialType == TrialType.NoneOfficial)
|
||||
|
@ -907,26 +879,81 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
|
||||
saveItem.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
|
||||
|
||||
saveItem.UserTypeEnum = _userTypeRepository.Where(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First();
|
||||
|
||||
var userTypeIds = addUserRoleList.Select(t => t.UserTypeId).ToList();
|
||||
|
||||
var userTypeList = _userTypeRepository.Where(t => userTypeIds.Contains(t.Id)).Select(t => new { t.UserTypeEnum, UserTypeId = t.Id }).ToList();
|
||||
|
||||
saveItem.UserRoleList = new List<UserRole>();
|
||||
|
||||
foreach (var addUserRole in addUserRoleList)
|
||||
{
|
||||
|
||||
|
||||
var newUser = _userRoleRepository.AddAsync(saveItem).Result;
|
||||
var addRole = _mapper.Map<UserRole>(saveItem);
|
||||
|
||||
addRole.UserTypeEnum = userTypeList.First(t => t.UserTypeId == addRole.UserTypeId).UserTypeEnum;
|
||||
addRole.UserTypeId = (Guid)addUserRole.UserTypeId;
|
||||
|
||||
saveItem.UserRoleList.Add(addRole);
|
||||
|
||||
}
|
||||
|
||||
|
||||
_ = _userRoleRepository.SaveChangesAsync().Result;
|
||||
var newUser = await _identityUserRepository.AddAsync(saveItem);
|
||||
|
||||
await _identityUserRepository.SaveChangesAsync();
|
||||
|
||||
sysUserInfo = newUser;
|
||||
|
||||
foreach (var addUserRole in addUserRoleList)
|
||||
{
|
||||
//发送邮件的时候需要用到该字段
|
||||
addUserRole.SystemUserId = sysUserInfo.Id;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
await _trialSiteUserSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new TrialSiteUserSurvey() { IsGenerateSuccess = true, SystemUserId = sysUserInfo.Id });
|
||||
|
||||
var trialSiteUserIdList = addUserRoleList.Select(t => t.Id).ToList();
|
||||
|
||||
await _trialSiteUserSurveyRepository.BatchUpdateNoTrackingAsync(t => trialSiteUserIdList.Contains(t.Id), u => new TrialSiteUserSurvey() { IsGenerateSuccess = true, SystemUserId = sysUserInfo.Id });
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
var userTypeIds = addUserRoleList.Select(t => t.UserTypeId).ToList();
|
||||
|
||||
var userTypeList = _userTypeRepository.Where(t => userTypeIds.Contains(t.Id)).Select(t => new { t.UserTypeEnum, UserTypeId = t.Id }).ToList();
|
||||
|
||||
foreach (var addUserRole in addUserRoleList)
|
||||
{
|
||||
var find = sysUserInfo.UserRoleList.FirstOrDefault(t => t.UserTypeId == addUserRole.UserTypeId);
|
||||
|
||||
if (find != null && find.IsUserRoleDisabled == true)
|
||||
{
|
||||
find.IsUserRoleDisabled = false;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var addRole = _mapper.Map<UserRole>(sysUserInfo);
|
||||
|
||||
addRole.Id = NewId.NextSequentialGuid();
|
||||
addRole.IdentityUserId = sysUserInfo.Id;
|
||||
addRole.UserTypeEnum = userTypeList.First(t => t.UserTypeId == addRole.UserTypeId).UserTypeEnum;
|
||||
addRole.UserTypeId = (Guid)addUserRole.UserTypeId;
|
||||
|
||||
sysUserInfo.UserRoleList.Add(addRole);
|
||||
}
|
||||
}
|
||||
|
||||
await _identityUserRepository.SaveChangesAsync();
|
||||
}
|
||||
|
||||
|
||||
//发送邮件的时候需要用到该字段
|
||||
item.SystemUserId = sysUserInfo.Id;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
@ -939,34 +966,46 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
var trialSiteSurvey = await _trialSiteSurveyRepository.FirstAsync(t => t.Id == joinCommand.TrialSiteSurveyId);
|
||||
|
||||
|
||||
foreach (var userInfo in joinCommand.UserList)
|
||||
foreach (var item in joinCommand.UserList.GroupBy(t => t.SystemUserId))
|
||||
{
|
||||
|
||||
if (userInfo.SystemUserId == null)
|
||||
var userRoleList = item.ToList();
|
||||
|
||||
var first = userRoleList.First();
|
||||
|
||||
if (userRoleList.Any(t => t.SystemUserId == null))
|
||||
{
|
||||
//---生成账户Id 未取到值,请排查
|
||||
throw new BusinessValidationFailedException(_localizer["TrialSiteSurvey_FailedToGenerateAccountId"]);
|
||||
}
|
||||
|
||||
var trialId = joinCommand.TrialId;
|
||||
var userId = (Guid)userInfo.SystemUserId;
|
||||
var userId = (Guid)item.Key;
|
||||
var trialSiteId = trialSiteSurvey.TrialSiteId;
|
||||
|
||||
var sysUserInfo = await _identityUserRepository.Where(t => t.Id == userId, true).Include(t => t.UserRoleList).FirstOrDefaultAsync();
|
||||
|
||||
//判断是否加入到项目
|
||||
var findTrialUser = await _trialIdentityUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.IdentityUserId == userId, true);
|
||||
|
||||
|
||||
//判断TrialUser中是否存在 不存在就插入
|
||||
|
||||
var findTrialUser = await _trialUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true);
|
||||
if (findTrialUser == null)
|
||||
{
|
||||
await _trialUserRoleRepository.AddAsync(new TrialUserRole() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
|
||||
|
||||
await _trialIdentityUserRepository.AddAsync(new TrialIdentityUser()
|
||||
{
|
||||
TrialId = trialId,
|
||||
IdentityUserId = userId,
|
||||
JoinTime = DateTime.Now,
|
||||
TrialUserRoleList =
|
||||
userRoleList.Select(t => new TrialUserRole() { TrialId = trialId, UserId = sysUserInfo.UserRoleList.Where(u => u.UserTypeId == t.UserTypeId).Select(t => t.Id).First() }).ToList()
|
||||
});
|
||||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl);
|
||||
|
||||
}
|
||||
else if (findTrialUser.IsDeleted == true)
|
||||
{
|
||||
await _trialUserRoleRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId, c => new TrialUserRole()
|
||||
await _trialIdentityUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.IdentityUserId == userId, c => new TrialIdentityUser()
|
||||
{
|
||||
IsDeleted = false,
|
||||
DeletedTime = null,
|
||||
|
@ -976,23 +1015,36 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl);
|
||||
}
|
||||
|
||||
var findTrialSiteUser = await _trialSiteUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.TrialSiteId == trialSiteId, true);
|
||||
|
||||
if (findTrialSiteUser == null)
|
||||
foreach (var userSuvey in userRoleList)
|
||||
{
|
||||
await _trialSiteUserRoleRepository.AddAsync(new TrialSiteUserRole() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId });
|
||||
var userRoleId = sysUserInfo.UserRoleList.Where(t => t.UserTypeId == userSuvey.UserTypeId).First().Id;
|
||||
|
||||
var findTrialSiteUser = await _trialSiteUserRoleRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userRoleId && t.TrialSiteId == trialSiteId, true);
|
||||
if (findTrialSiteUser == null)
|
||||
{
|
||||
await _trialSiteUserRoleRepository.AddAsync(new TrialSiteUserRole() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userRoleId });
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
findTrialSiteUser.IsDeleted = false;
|
||||
findTrialSiteUser.DeletedTime = null;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
findTrialSiteUser.IsDeleted = false;
|
||||
findTrialSiteUser.DeletedTime = null;
|
||||
|
||||
await _trialSiteUserSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == userSuvey.Id, u => new TrialSiteUserSurvey() { IsJoin = true });
|
||||
}
|
||||
|
||||
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new UserRole() { Status = UserStateEnum.Enable });
|
||||
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new Domain.Models.IdentityUser() { Status = UserStateEnum.Enable });
|
||||
|
||||
await _trialSiteUserRoleRepository.SaveChangesAsync();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
await _trialSiteUserSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == userInfo.Id, u => new TrialSiteUserSurvey() { IsJoin = true });
|
||||
}
|
||||
|
||||
await _trialSiteSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == trialSiteSurvey.Id && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.UserRoleId, ReviewerTime = DateTime.Now });
|
||||
|
@ -1011,7 +1063,7 @@ namespace IRaCIS.Core.Application.Contracts
|
|||
var userIdList = list.Select(t => t.SystemUserId).ToList();
|
||||
|
||||
|
||||
await _trialSiteUserRoleRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.TrialSiteId == siteId && userIdList.Contains(t.UserId), c => new TrialSiteUserRole()
|
||||
await _trialSiteUserRoleRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.TrialSiteId == siteId && userIdList.Contains(t.UserRole.IdentityUserId), c => new TrialSiteUserRole()
|
||||
{
|
||||
IsDeleted = true,
|
||||
DeletedTime = DateTime.Now,
|
||||
|
|
Loading…
Reference in New Issue