项目用户表增加初步修改
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-12-25 10:20:17 +08:00
parent 32c6d745b6
commit 26cba15742
39 changed files with 19508 additions and 783 deletions
@@ -174,6 +174,8 @@ namespace IRaCIS.Core.Application.ViewModel
[NotDefault]
public Guid SystemUserId { get; set; }
public Guid UserTypeId { get; set; }
}
@@ -1381,7 +1381,7 @@ namespace IRaCIS.Core.Application
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName))
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.Admin && _userInfo.UserTypeEnumInt != (int)UserTypeEnum.OP, t => t.TrialUserList.Any(t => t.UserId == _userInfo.UserRoleId && t.IsDeleted == false) && t.IsDeleted == false)
.WhereIf(inQuery.CriterionType != null, o => o.TrialReadingCriterionList.Any(t => t.CriterionType == inQuery.CriterionType && t.IsSigned && t.IsConfirm))
.WhereIf(!string.IsNullOrEmpty(inQuery.PM_EMail), o => o.TrialUserList.Any(t => t.User.EMail.Contains(inQuery.PM_EMail) && (t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM)))
.WhereIf(!string.IsNullOrEmpty(inQuery.PM_EMail), o => o.TrialUserList.Any(t => t.UserRole.EMail.Contains(inQuery.PM_EMail) && (t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserRole.UserTypeEnum == UserTypeEnum.APM)))
.Select(t => new TrialToBeDoneDto()
{
TrialId = t.Id,
@@ -1442,7 +1442,7 @@ namespace IRaCIS.Core.Application
IR_ReadingCriterionList = isIR ? t.TrialReadingCriterionList.Where(t => t.IsConfirm && t.IsSigned).OrderBy(t => t.CriterionName).Select(t => t.CriterionName).ToList() : null,
IR_PMEmailList = isIR ? t.TrialUserList.Where(t => t.User.UserTypeEnum == UserTypeEnum.ProjectManager || t.User.UserTypeEnum == UserTypeEnum.APM).OrderBy(t => t.User.EMail).Select(t => t.User.EMail).ToList() : null,
IR_PMEmailList = isIR ? t.TrialUserList.Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager || t.UserRole.UserTypeEnum == UserTypeEnum.APM).OrderBy(t => t.UserRole.EMail).Select(t => t.UserRole.EMail).ToList() : null,
IR_TotalReadCount = isIR ? t.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.UserRoleId && t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count() : 0,
@@ -1476,54 +1476,54 @@ namespace IRaCIS.Core.Application
[HttpPost]
public async Task<IResponseOutput<List<TrialUserToBeDoneDto>>> GetTrialUserToBeDoneList(TrialUserToBeDoneQuery inQuery,
[FromServices] IRepository<TrialUser> _trialUserRepository)
[FromServices] IRepository<TrialUserRole> _trialUserRepository)
{
var query = _trialUserRepository.Where(t => t.TrialId == inQuery.TrialId)
.Select(t => new TrialUserToBeDoneDto()
{
UserName = t.User.UserName,
FullName = t.User.FullName,
UserType = t.User.UserTypeEnum,
UserName = t.UserRole.UserName,
FullName = t.UserRole.FullName,
UserType = t.UserRole.UserTypeEnum,
//SPM 阅片人筛选
ReviewerSelect_SPM_ToBeApprovalCount =
(t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM) ?
t.Trial.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO).Count() : 0,
//PM 阅片人确认
ReviewerSelect_PM_ToBeConfirmCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.APM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup).Count() : 0,
//CRC 重传 --区分人
ImageUpload_CRC_ToBeReUploadCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count() : 0,
//CRC加急待提交 需确认?--区分人
ImageUpload_CRC_ToBeSubmitCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count() : 0,
// QC IQC 待领取
QC_IQC_ToBeClaimedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.Where(u => u.CurrentActionUserId == null && (u.PreliminaryAuditUserId == null || (u.PreliminaryAuditUserId != _userInfo.UserRoleId && u.ReviewAuditUserId == null))).Count() : 0,
// CRC 质疑待回复 --区分人
QC_CRC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.SelectMany(c => c.QCChallengeList).Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count() : 0,
//IQC 质疑待处理 --区分人
QC_IQC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.SelectMany(c => c.QCChallengeList)
.Where(u => u.CreateUserId == t.UserId && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0,
@@ -1531,33 +1531,33 @@ namespace IRaCIS.Core.Application
// IQC 待审核
QC_IQC_ToBeReviewedCount =
(t.User.UserTypeEnum == UserTypeEnum.IQC) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IQC) ?
t.Trial.SubjectVisitList.Where(u => u.CurrentActionUserId == t.UserId).Count() : 0,
//PM 核查待处理
Check_PM_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.APM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.ToCheck).Count() : 0,
//PM 质疑待处理
Check_PM_ToBeReplyedCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.APM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng &&
u.CheckChallengeDialogList.OrderByDescending(t => t.CreateTime).First().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count() : 0,
// CRC 核查 质疑待处理 --区分人
Check_CRC_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA) ?
t.Trial.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == t.UserId))
.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count() : 0,
//IR 未读 --区分人
Reading_IR_UnReadCount =
(t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
t.Trial.VisitTaskList
.Where(c => c.DoctorUserId == t.UserId && c.ReadingTaskState != ReadingTaskState.HaveSigned && c.TaskState == TaskState.Effect)
// 前序 不存在 未一致性核查未通过的
@@ -1570,30 +1570,30 @@ namespace IRaCIS.Core.Application
//SPM PM重阅审批
Reading_SPM_ToBeApprovalCount =
(t.User.UserTypeEnum == UserTypeEnum.SPM || t.User.UserTypeEnum == UserTypeEnum.CPM) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.SPM || t.UserRole.UserTypeEnum == UserTypeEnum.CPM) ?
t.Trial.VisitTaskReReadingList.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed).Count() : 0,
//PM IR重阅审批
Reading_PM_ToBeApprovalCount =
(t.User.UserTypeEnum == UserTypeEnum.APM || t.User.UserTypeEnum == UserTypeEnum.ProjectManager) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.APM || t.UserRole.UserTypeEnum == UserTypeEnum.ProjectManager) ?
t.Trial.VisitTaskReReadingList.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed).Count() : 0,
//IR 医学审核 --区分人
Medical_IR_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.IndependentReviewer) ?
t.Trial.TaskMedicalReviewList
.Where(c => c.IsClosedDialog == false && c.VisitTask.DoctorUserId == t.UserId && c.IsInvalid == false)
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count() : 0,
Medical_MIM_ToBeDealedCount =
(t.User.UserTypeEnum == UserTypeEnum.MIM) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.MIM) ?
t.Trial.TaskMedicalReviewList
.Where(t => t.IsClosedDialog == false)
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count() : 0,
Medical_MIM_ToBeReviewedCount =
(t.User.UserTypeEnum == UserTypeEnum.MIM) ?
(t.UserRole.UserTypeEnum == UserTypeEnum.MIM) ?
t.Trial.TaskMedicalReviewList
.Where(t => t.IsClosedDialog == false && t.IsInvalid == false)
.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count() : 0
@@ -22,7 +22,8 @@ namespace IRaCIS.Core.Application.Service
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialExternalUserService(IRepository<TrialExternalUser> _trialExternalUseRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<IdentityUser> _identityUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<Trial> _trialRepository,
IRepository<UserType> _userTypeRepository,
IMailVerificationService _mailVerificationService,
@@ -64,7 +65,7 @@ namespace IRaCIS.Core.Application.Service
using (await @lock.AcquireAsync())
{
var existSysUser = await _userRoleRepository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialExternalUser.Email && t.UserTypeId == addOrEditTrialExternalUser.UserTypeId);
var existSysUser = await _identityUserRepository.Where(t => t.EMail == addOrEditTrialExternalUser.Email, true).Include(t => t.UserRoleList).FirstOrDefaultAsync();
if (existSysUser != null)
{
@@ -93,13 +94,12 @@ namespace IRaCIS.Core.Application.Service
await _trialExternalUseRepository.AddAsync(addEntity);
var existUser = await _userRoleRepository.FirstOrDefaultAsync(t => t.EMail == addOrEditTrialExternalUser.Email && t.UserTypeId == addOrEditTrialExternalUser.UserTypeId);
var trialType = await _trialRepository.Where(t => t.Id == addOrEditTrialExternalUser.TrialId).Select(t => t.TrialType).FirstOrDefaultAsync();
if (existUser != null)
if (existSysUser != null)
{
addEntity.IsSystemUser = true;
addEntity.SystemUserId = existUser.Id;
addEntity.SystemUserId = existSysUser.Id;
}
else
@@ -107,7 +107,7 @@ namespace IRaCIS.Core.Application.Service
//生成账户 并插入
var generateUser = _mapper.Map<UserRole>(addOrEditTrialExternalUser);
var generateUser = _mapper.Map<IdentityUser>(addOrEditTrialExternalUser);
if (trialType == TrialType.NoneOfficial)
{
@@ -124,20 +124,24 @@ namespace IRaCIS.Core.Application.Service
generateUser.UserName = generateUser.UserCode;
generateUser.UserTypeEnum = _userTypeRepository.Where(t => t.Id == generateUser.UserTypeId).Select(t => t.UserTypeEnum).First();
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
generateUser.Status = UserStateEnum.Disable;
var newAddUser = await _userRoleRepository.AddAsync(generateUser);
var addRole = _mapper.Map<UserRole>(generateUser);
addRole.UserTypeEnum = _userTypeRepository.Where(t => t.Id == addOrEditTrialExternalUser.UserTypeId).Select(t => t.UserTypeEnum).First();
addRole.UserTypeId = addOrEditTrialExternalUser.UserTypeId;
generateUser.UserRoleList = new List<UserRole>() { addRole };
var newAddUser = await _identityUserRepository.AddAsync(generateUser);
addEntity.IsSystemUser = false;
addEntity.SystemUserId = newAddUser.Id;
existUser = newAddUser;
existSysUser = newAddUser;
}
@@ -146,7 +150,7 @@ namespace IRaCIS.Core.Application.Service
if (trialType == TrialType.OfficialTrial || trialType == TrialType.Training)
{
if (existUser.IsTestUser)
if (existSysUser.IsTestUser)
{
//---正式类型 、培训类型的项目 不允许加入测试用户
throw new BusinessValidationFailedException(_localizer["TrialExternalUser_TestUserNotAllowed"]);
@@ -157,7 +161,7 @@ namespace IRaCIS.Core.Application.Service
if (trialType == TrialType.NoneOfficial)
{
if (existUser.IsTestUser == false)
if (existSysUser.IsTestUser == false)
{
//---测试项目 不允许加入正式用户
throw new BusinessValidationFailedException(_localizer["TrialExternalUser_FormalUserNotAllowed"]);
@@ -185,7 +189,8 @@ namespace IRaCIS.Core.Application.Service
Id = addEntity.Id,
Email=addEntity.Email,
IsSystemUser=addEntity.IsSystemUser,
SystemUserId=addEntity.SystemUserId
SystemUserId=addEntity.SystemUserId,
UserTypeId=addOrEditTrialExternalUser.UserTypeId
}
}
});
@@ -243,7 +248,7 @@ namespace IRaCIS.Core.Application.Service
foreach (var userInfo in sendEmail.SendUsers)
{
var userId = userInfo.SystemUserId;
var userTypeId = userInfo.UserTypeId;
@@ -251,7 +256,7 @@ namespace IRaCIS.Core.Application.Service
if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId, true))
{
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
await _trialUserRepository.AddAsync(new TrialUserRole() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
await _userRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new UserRole() { Status = UserStateEnum.Enable });
@@ -8,7 +8,7 @@ using Microsoft.AspNetCore.Mvc;
namespace IRaCIS.Core.Application.Service
{
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialMaintenanceService(IRepository<TrialUser> _trialUseRepository,
public class TrialMaintenanceService(IRepository<TrialUserRole> _trialUseRoleRepository,
IRepository<UserRole> _userRoleRepository,
IRepository<TrialSiteUser> _trialSiteUserRepository,
IRepository<SubjectVisit> _subjectVisitRepository,
@@ -18,8 +18,8 @@ namespace IRaCIS.Core.Application.Service
[HttpGet]
public async Task<List<TrialUserBasicInfo>> GetTrialUserList(Guid trialId)
{
return await _trialUseRepository.Where(t => t.TrialId == trialId, ignoreQueryFilters: true)
.Select(t => new TrialUserBasicInfo() { FullName = t.User.FullName, UserId = t.UserId, UserTypeId = t.User.UserTypeId, UserName = t.User.UserName })
return await _trialUseRoleRepository.Where(t => t.TrialId == trialId, ignoreQueryFilters: true)
.Select(t => new TrialUserBasicInfo() { FullName = t.UserRole.FullName, UserId = t.UserId, UserTypeId = t.UserRole.UserTypeId, UserName = t.UserRole.UserName })
.ToListAsync();
}
@@ -32,13 +32,13 @@ namespace IRaCIS.Core.Application.Service
public async Task<PageOutput<TrialMaintenanceDTO>> GetMaintenanceUserList(TrialMaintenanceQuery inQuery)
{
var query = _trialUseRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.User.UserName.Contains(inQuery.UserName))
var query = _trialUseRoleRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserName), t => t.UserRole.UserName.Contains(inQuery.UserName))
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.User.OrganizationName.Contains(inQuery.OrganizationName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.User.FullName).Contains(inQuery.UserRealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.UserRole.OrganizationName.Contains(inQuery.OrganizationName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.UserRole.FullName).Contains(inQuery.UserRealName))
.ProjectTo<TrialMaintenanceDTO>(_mapper.ConfigurationProvider);
return await query.ToPagedListAsync(inQuery, nameof(TrialMaintenanceDTO.UpdateTime));
@@ -55,11 +55,11 @@ namespace IRaCIS.Core.Application.Service
{
// 最开始过滤site已经选择的用户 现在又改回去。。。
var query = _trialUseRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.Where(t => t.User.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.User.UserTypeEnum == UserTypeEnum.CRA)
.WhereIf(inQuery.UserTypeId != null, t => t.User.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.User.FullName).Contains(inQuery.UserRealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.User.OrganizationName.Contains(inQuery.OrganizationName))
var query = _trialUseRoleRepository.Where(t => t.TrialId == inQuery.TrialId).IgnoreQueryFilters()
.Where(t => t.UserRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || t.UserRole.UserTypeEnum == UserTypeEnum.CRA)
.WhereIf(inQuery.UserTypeId != null, t => t.UserRole.UserTypeId == inQuery.UserTypeId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.UserRealName), t => (t.UserRole.FullName).Contains(inQuery.UserRealName))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.OrganizationName), t => t.UserRole.OrganizationName.Contains(inQuery.OrganizationName))
.ProjectTo<AssginSiteCRCListDTO>(_mapper.ConfigurationProvider, new { trialSiteId = inQuery.TrialSiteId });
return await query.ToPagedListAsync(inQuery);
@@ -119,9 +119,9 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> AddTrialUsers(TrialUserAddCommand[] userTrialCommands)
{
var addArray = _mapper.Map<TrialUser[]>(userTrialCommands);
var addArray = _mapper.Map<TrialUserRole[]>(userTrialCommands);
var trialUsers = await _trialUseRepository.AddRangeAsync(addArray);
var trialUsers = await _trialUseRoleRepository.AddRangeAsync(addArray);
foreach (var item in trialUsers)
{
@@ -129,7 +129,7 @@ namespace IRaCIS.Core.Application.Service
}
var success = await _trialUseRepository.SaveChangesAsync();
var success = await _trialUseRoleRepository.SaveChangesAsync();
return ResponseOutput.Result(success);
}
@@ -141,7 +141,7 @@ namespace IRaCIS.Core.Application.Service
[HttpPut]
public async Task<IResponseOutput> UpdateTrialUser(UpdateTrialUserCommand updateTrialUserCommand)
{
var trialUser = await _trialUseRepository.Where(t => t.Id == updateTrialUserCommand.Id, true, true).FirstOrDefaultAsync();
var trialUser = await _trialUseRoleRepository.Where(t => t.Id == updateTrialUserCommand.Id, true, true).FirstOrDefaultAsync();
if (trialUser == null) return Null404NotFound(trialUser);
@@ -163,7 +163,7 @@ namespace IRaCIS.Core.Application.Service
_mapper.Map(updateTrialUserCommand, trialUser);
await _trialUseRepository.SaveChangesAsync();
await _trialUseRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok();
@@ -180,7 +180,7 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> DeleteMaintenanceUser(Guid id, bool isDelete)
{
var trialUser = await _trialUseRepository.AsQueryable().IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == id);
var trialUser = await _trialUseRoleRepository.AsQueryable().IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == id);
if (trialUser == null) return Null404NotFound(trialUser);
@@ -195,9 +195,9 @@ namespace IRaCIS.Core.Application.Service
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
}
await _trialUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialUser() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null });
await _trialUseRoleRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialUserRole() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null });
await _trialUseRepository.SaveChangesAsync();
await _trialUseRoleRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
@@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service
[ApiExplorerSettings(GroupName = "Trial")]
public class TrialService(IRepository<Trial> _trialRepository,
IRepository<TrialUser> _trialUserRepository,
IRepository<TrialUserRole> _trialUserRepository,
IRepository<CRO> _croRepository,
IRepository<EnrollDetail> _enrollDetailRepository,
IRepository<Dictionary> _dictionaryRepository,
@@ -208,7 +208,7 @@ namespace IRaCIS.Core.Application.Service
//如果是PM, 则需要将该人员添加到 运维人员表
//添加运维人员PM
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trial.Id, UserId = _userInfo.UserRoleId, JoinTime = DateTime.Now });
await _trialUserRepository.AddAsync(new TrialUserRole() { TrialId = trial.Id, UserId = _userInfo.UserRoleId, JoinTime = DateTime.Now });
// 添加扩展信息表记录
await _trialPaymentPriceRepository.AddAsync(new TrialPaymentPrice() { TrialId = trial.Id });
@@ -550,7 +550,7 @@ namespace IRaCIS.Core.Application.Service
await _repository.BatchDeleteNoTrackingAsync<TrialSiteUserSurvey>(t => t.TrialSiteSurvey.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<TrialSiteEquipmentSurvey>(t => t.TrialSiteSurvey.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<TrialUser>(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<TrialUserRole>(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<TrialSiteUser>(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<VisitStage>(t => t.TrialId == trialId);
await _repository.BatchDeleteNoTrackingAsync<VisitPlanInfluenceStat>(t => t.TrialId == trialId);
@@ -37,22 +37,22 @@ namespace IRaCIS.Core.Application.Service
CreateMap<UserTrialCommand, TrialUser>();
CreateMap<UserTrialCommand, TrialUserRole>();
CreateMap<TrialSiteCommand, TrialSite>()
.ForMember(x => x.Id, x => x.Ignore());
CreateMap<EditTrialSiteCommand, TrialSite>();
CreateMap<UpdateTrialUserCommand, TrialUser>();
CreateMap<UpdateTrialUserCommand, TrialUserRole>();
CreateMap<AssginSiteCRCCommand, TrialUser>();
CreateMap<AssginSiteCRCCommand, TrialUserRole>();
CreateMap<TrialUserAddCommand, TrialUser>();
CreateMap<TrialUserAddCommand, TrialUserRole>();
CreateMap<SiteCRCCommand, TrialUser>();
CreateMap<SiteCRCCommand, TrialUserRole>();
//临床项目
@@ -86,16 +86,16 @@ namespace IRaCIS.Core.Application.Service
CreateMap<TrialUser, TrialMaintenanceDTO>().IncludeMembers(t => t.User)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName))
.ForMember(t => t.UserType, u => u.MapFrom(t => t.User.UserTypeRole.UserTypeShortName));
CreateMap<TrialUserRole, TrialMaintenanceDTO>().IncludeMembers(t => t.UserRole)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.UserRole.FullName))
.ForMember(t => t.UserType, u => u.MapFrom(t => t.UserRole.UserTypeRole.UserTypeShortName));
CreateMap<UserRole, TrialMaintenanceDTO>();
var trialSiteId = Guid.Empty;
CreateMap<TrialUser, AssginSiteCRCListDTO>().IncludeMembers(t => t.User)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName))
CreateMap<TrialUserRole, AssginSiteCRCListDTO>().IncludeMembers(t => t.UserRole)
.ForMember(d => d.UserRealName, u => u.MapFrom(s => s.UserRole.FullName))
.ForMember(d => d.TrialSiteId, u => u.MapFrom(t => trialSiteId))
.ForMember(d => d.UserType, u => u.MapFrom(t => t.User.UserTypeRole.UserTypeShortName))
.ForMember(d => d.UserType, u => u.MapFrom(t => t.UserRole.UserTypeRole.UserTypeShortName))
.ForMember(d => d.IsSelect, u => u.MapFrom(t => t.Trial.TrialSiteUserList.Any(k => k.UserId == t.UserId && k.TrialSiteId== trialSiteId)));
CreateMap<UserRole, AssginSiteCRCListDTO>();