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-02-24 16:15:00 +08:00
15 changed files with 19168 additions and 198 deletions
@@ -583,6 +583,8 @@ namespace IRaCIS.Core.Application.Service
saveItem.IsTestUser = true;
}
saveItem.UserCeateSource = UserCeateSource.ReviewerSelect;
saveItem.TrialId = trialId;
saveItem.Code = _identityUserRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
@@ -336,6 +336,18 @@ namespace IRaCIS.Application.Contracts
public DateTime? LastChangePassWordTime { get; set; }
public List<IdentityUserTypeDTO> UserRoleList { get; set; }
#region
public UserCeateSource UserCeateSource { get; set; }
public Guid? TrialId { get; set; }
public string TrialCode { get; set; }
public string ResearchProgramNo { get; set; }
#endregion
}
@@ -93,6 +93,12 @@ namespace IRaCIS.Core.Application.Contracts
}
public class UserTypeSelectDto
{
public Guid UserTypeId { get; set; }
public string UserTypeShortName { get; set; } = string.Empty;
}
public class UserTypeSimpleDTO
{
public Guid Id { get; set; }
@@ -579,7 +579,7 @@ namespace IRaCIS.Core.Application.Service
saveItem.OrganizationName = organizationName;
}
saveItem.UserCeateSource = UserCeateSource.AdminCreate;
saveItem.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
var addRoleList = new List<UserRole>();
@@ -160,8 +160,7 @@ namespace IRaCIS.Core.Application.Contracts
{
//排除其他组的用户
var query = _userTypeRepository
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin, t => t.IsEnable == true)
.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin)
.Where(x => x.UserTypeEnum != UserTypeEnum.SuperAdmin && x.IsEnable==true)
.Where(t => !t.UserTypeGroupList.Any(t => t.Group.Code == "3"))
.OrderBy(t => t.UserTypeShortName).ProjectTo<TrialUserType>(_mapper.ConfigurationProvider);
@@ -152,7 +152,9 @@ namespace IRaCIS.Core.Application.Service
CreateMap<IdentityUser, UserBasicInfo>()
.ForMember(d => d.IdentityUserId, c => c.MapFrom(t => t.Id));
CreateMap<IdentityUser, UserListDTO>();
CreateMap<IdentityUser, UserListDTO>()
.ForMember(d => d.TrialCode, u => u.MapFrom(s => s.Trial.TrialCode))
.ForMember(d => d.ResearchProgramNo, u => u.MapFrom(s => s.Trial.ResearchProgramNo));
CreateMap<UserAddUserType, UserRole>().ReverseMap();
@@ -172,7 +174,7 @@ namespace IRaCIS.Core.Application.Service
CreateMap<UpdateTrialUserCommand, TrialIdentityUser>();
}
@@ -925,7 +925,8 @@ namespace IRaCIS.Core.Application.Contracts
//generateUser.UserName = generateUser.UserCode;
generateUser.UserCeateSource = UserCeateSource.SiteSruvey;
generateUser.TrialId = trialId;
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
generateUser.Status = UserStateEnum.Enable;
@@ -1168,6 +1169,8 @@ namespace IRaCIS.Core.Application.Contracts
//generateUser.UserName = generateUser.UserCode;
generateUser.UserCeateSource = UserCeateSource.SiteSruvey;
generateUser.TrialId = trialId;
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
generateUser.Status = UserStateEnum.Enable;
@@ -103,6 +103,44 @@ namespace IRaCIS.Application.Contracts
public string FullName { get; set; }
}
public class IdentityUserJoinedTrialQuery : PageInput
{
[NotDefault]
public Guid IdentityUserId { get; set; }
public string? TrialCode { get; set; }
public string? ResearchProgramNo { get; set; }
public string? ExperimentName { get; set; }
public Guid? UserTypeId { get; set; }
public bool? IsDeleted { get; set; }
}
public class IdentityUserJoinedTrialView
{
public Guid TrialId { get; set; }
public string TrialCode { get; set; }
public string ResearchProgramNo { get; set; }
public string ExperimentName { get; set; }
public string TrialStatusStr { get; set; }
public DateTime TrialCreateTime { get; set; }
public List<UserTypeSelectDto> TrialUserRoleList { get; set; }
public bool IsDeleted { get; set; }
public DateTime? RemoveTime { get; set; }
public DateTime? JoinTime { get; set; }
}
public class TrialMaintenanceDTO : UserTrialCommand
{
@@ -110,7 +148,7 @@ namespace IRaCIS.Application.Contracts
public bool IsDeleted { get; set; }
[DictionaryTranslateAttribute("IsSiteDisable")]
public bool RoleIsDeleted { get; set; }
public DateTime? DeletedTime { get; set; }
@@ -484,7 +522,7 @@ namespace IRaCIS.Application.Contracts
public bool? IsUserRoleDisabled { get; set; }
public string? EMail { get; set; }
public string? EMail { get; set; }
}
public class TrialUserScreeningDTO : TrialUserAddCommand
@@ -280,7 +280,8 @@ namespace IRaCIS.Core.Application.Service
//generateUser.UserName = generateUser.UserCode;
generateUser.UserCeateSource = UserCeateSource.External;
generateUser.TrialId = trialId;
generateUser.Password = MD5Helper.Md5(IRCEmailPasswordHelper.GenerateRandomPassword(10));
generateUser.Status = UserStateEnum.Enable;
@@ -1,6 +1,7 @@
using FellowOakDicom;
using IRaCIS.Application.Contracts;
using IRaCIS.Application.Interfaces;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Contracts.DTO;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Domain.Models;
@@ -28,6 +29,34 @@ namespace IRaCIS.Core.Application.Service
.ToListAsync();
}
[HttpPost]
public async Task<PageOutput<IdentityUserJoinedTrialView>> GetUserJoinedTrialList(IdentityUserJoinedTrialQuery inQuery)
{
var list = await _trialIdentityUserRepository.Where(t => t.IdentityUserId == inQuery.IdentityUserId, false, true)
.WhereIf(!string.IsNullOrEmpty(inQuery.TrialCode), o => o.Trial.TrialCode.Contains(inQuery.TrialCode))
.WhereIf(!string.IsNullOrEmpty(inQuery.ResearchProgramNo), o => o.Trial.ResearchProgramNo.Contains(inQuery.ResearchProgramNo))
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.Trial.ExperimentName.Contains(inQuery.ExperimentName))
.WhereIf(inQuery.UserTypeId != null, o => o.TrialUserRoleList.Any(t => t.UserRole.UserTypeId == inQuery.UserTypeId))
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
.Select(t => new IdentityUserJoinedTrialView()
{
TrialId = t.TrialId,
TrialCode = t.Trial.TrialCode,
TrialCreateTime = t.Trial.CreateTime,
ExperimentName = t.Trial.ExperimentName,
ResearchProgramNo = t.Trial.ResearchProgramNo,
TrialStatusStr = t.Trial.TrialStatusStr,
IsDeleted = t.IsDeleted,
JoinTime = t.JoinTime,
RemoveTime = t.RemoveTime,
TrialUserRoleList = t.TrialUserRoleList.Select(t => new UserTypeSelectDto() { UserTypeId = t.UserRole.UserTypeRole.Id, UserTypeShortName = t.UserRole.UserTypeRole.UserTypeShortName }).ToList(),
}).ToPagedListAsync(inQuery);
return list;
}
#region
/// <summary>
/// Setting页面 获取项目参与人员列表
+37
View File
@@ -27,6 +27,7 @@ using MiniExcelLibs;
using NPOI.SS.Formula.Functions;
using NPOI.XWPF.UserModel;
using System.Globalization;
using System.Linq.Dynamic.Core;
using System.Reflection.Metadata.Ecma335;
using System.Runtime.InteropServices;
using System.Text;
@@ -155,8 +156,44 @@ namespace IRaCIS.Core.Application.Service
}
[AllowAnonymous]
public async Task<IResponseOutput> UserCreateSourceDeal([FromServices] IRepository<IdentityUser> _identityUserRepository,
[FromServices] IRepository<TrialUserRole> _trialUserRoleRepository)
{
var list = _userRoleRepository.Where().IgnoreQueryFilters().ToList();
foreach (var item in list.GroupBy(t => t.IdentityUserId))
{
var userRoleList = item.OrderBy(t => t.CreateTime).ToList();
var firstCreateRole = userRoleList.FirstOrDefault();
var firstTrialId = _trialUserRoleRepository.Where(t => t.TrialUser.IdentityUserId == firstCreateRole.IdentityUserId).IgnoreQueryFilters().OrderBy(t => t.CreateTime).Select(t => t.TrialId).FirstOrDefault();
if (firstCreateRole.UserTypeEnum == UserTypeEnum.IndependentReviewer)
{
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == firstCreateRole.IdentityUserId, u => new Domain.Models.IdentityUser() { UserCeateSource = UserCeateSource.ReviewerSelect, TrialId = firstTrialId });
}
else if (firstCreateRole.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator || firstCreateRole.UserTypeEnum == UserTypeEnum.CRA)
{
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == firstCreateRole.IdentityUserId, u => new Domain.Models.IdentityUser() { UserCeateSource = UserCeateSource.AdminCreate, TrialId = firstTrialId });
}
else if (firstCreateRole.UserTypeEnum == UserTypeEnum.SPM || firstCreateRole.UserTypeEnum == UserTypeEnum.CPM ||
firstCreateRole.UserTypeEnum == UserTypeEnum.SMM || firstCreateRole.UserTypeEnum == UserTypeEnum.CMM ||
firstCreateRole.UserTypeEnum == UserTypeEnum.EA || firstCreateRole.UserTypeEnum == UserTypeEnum.MC)
{
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == firstCreateRole.IdentityUserId, u => new Domain.Models.IdentityUser() { UserCeateSource = UserCeateSource.AdminCreate, TrialId = firstTrialId });
}
else
{
await _identityUserRepository.BatchUpdateNoTrackingAsync(t => t.Id == firstCreateRole.IdentityUserId, u => new Domain.Models.IdentityUser() { UserCeateSource = UserCeateSource.AdminCreate, TrialId = firstTrialId });
}
}
return ResponseOutput.Ok();
}