中心调研临时提交

This commit is contained in:
2023-08-17 11:18:01 +08:00
parent 4bc2c3107a
commit b9ccf4bb12
14 changed files with 439 additions and 611 deletions
@@ -5,7 +5,9 @@
//--------------------------------------------------------------------
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Domain.Share;
using MiniExcelLibs.Attributes;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
namespace IRaCIS.Core.Application.Contracts
{
@@ -54,6 +56,12 @@ namespace IRaCIS.Core.Application.Contracts
public Guid? SystemUserId { get; set; }
public bool? IsHistoryUserOriginDeleted { get; set; }
}
@@ -99,8 +107,17 @@ namespace IRaCIS.Core.Application.Contracts
public int TrialRoleCode { get; set; }
public string OrganizationName { get; set; } = string.Empty;
public bool IsHistoryUser { get; set; }
public bool? IsHistoryUserDeleted { get; set; }
}
public class TrialSiteUserSurverQuery
{
public Guid TrialSiteSurveyId { get; set; }
public bool? IsHistoryUser { get; set; }
}
public class TrialSiteUserSurveyVerfyResult
{
@@ -109,6 +126,44 @@ namespace IRaCIS.Core.Application.Contracts
public List<string> ErroMsgList { get; set; } = new List<string>();
}
public class SiteSurveyUserImportUploadDto
{
[NotDefault]
public Guid TrialId { get; set; }
public string BaseUrl { get; set; }
public string RouteUrl { get; set; }
}
public class SiteSurveyUserImportDto
{
public string TrialSiteCode { get;set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Phone { get; set; }
public string OrganizationName { get; set; }
[ExcelColumnName("UserType")]
public string UserTypeStr { get; set; }
[JsonIgnore]
public Guid SiteId { get; set; }
[JsonIgnore]
public UserTypeEnum UserTypeEnum { get; set; } = UserTypeEnum.Undefined;
[JsonIgnore]
public Guid UserTypeId{ get; set; }
[JsonIgnore]
public bool IsGeneratedAccount { get; set; }
[JsonIgnore]
public bool IsJoinedTrial { get; set; }
}
}
@@ -20,5 +20,7 @@ namespace IRaCIS.Core.Application.Contracts
//Task<IResponseOutput> TrialSurveyLock(Guid trialSiteSurveyId, bool isLock);
//IResponseOutput TrialSurveySubmmit(Guid trialId, Guid trialSiteSurveyId);
Task<IResponseOutput> VerifySendCode(LoginDto userInfo, [FromServices] ITokenService _tokenService);
Task ImportGenerateAccountAndJoinTrialAsync(Guid trialId, List<SiteSurveyUserImportDto> list);
}
}
@@ -10,6 +10,6 @@ namespace IRaCIS.Core.Application.Contracts
{
Task<IResponseOutput> AddOrUpdateTrialSiteUserSurvey(TrialSiteUserSurveyAddOrEdit addOrEditTrialSiteUserSurvey);
Task<IResponseOutput> DeleteTrialSiteUserSurvey(Guid trialSiteUserSurveyId);
Task<List<TrialSiteUserSurveyView>> GetTrialSiteUserSurveyList(Guid trialSiteSurveyId);
Task<List<TrialSiteUserSurveyView>> GetTrialSiteUserSurveyList(TrialSiteUserSurverQuery inquery);
}
}
@@ -17,6 +17,9 @@ using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Infrastructure.Extention;
using Microsoft.VisualBasic;
using DocumentFormat.OpenXml.Spreadsheet;
using IRaCIS.Core.Domain.Models;
using IRaCIS.Core.Application.ViewModel;
namespace IRaCIS.Core.Application.Contracts
{
@@ -31,13 +34,14 @@ namespace IRaCIS.Core.Application.Contracts
private readonly IRepository<User> _userRepository;
private readonly IRepository<TrialSite> _trialSiteRepository;
private readonly IRepository<TrialUser> _trialUserRepository;
private readonly IRepository<TrialSiteUser> _trialSiteUserRepository;
private readonly ITokenService _tokenService;
private readonly IMailVerificationService _mailVerificationService;
public TrialSiteSurveyService(IRepository<TrialSiteSurvey> trialSiteSurveyRepository, IRepository<TrialUser> trialUserRepository, IRepository<TrialSiteUserSurvey> trialSiteUserSurveyRepository,
IRepository<User> userRepository, IRepository<TrialSite> trialSiteRepository,
ITokenService tokenService,
IMailVerificationService mailVerificationService)
IMailVerificationService mailVerificationService, IRepository<TrialSiteUser> trialSiteUserRepository)
{
_trialSiteSurveyRepository = trialSiteSurveyRepository;
_trialSiteUserSurveyRepository = trialSiteUserSurveyRepository;
@@ -46,6 +50,7 @@ namespace IRaCIS.Core.Application.Contracts
_trialSiteRepository = trialSiteRepository;
_tokenService = tokenService;
_mailVerificationService = mailVerificationService;
_trialSiteUserRepository = trialSiteUserRepository;
}
private object lockObj { get; set; } = new object();
@@ -225,6 +230,9 @@ namespace IRaCIS.Core.Application.Contracts
TrialSiteSurvey? currentEntity = null;
var userList = await _trialSiteUserRepository.Where(t => t.TrialId == userInfo.TrialId && t.SiteId == userInfo.SiteId, false, true).ProjectTo<TrialSiteUserSurvey>(_mapper.ConfigurationProvider).ToListAsync();
//普通登录
if (userInfo.IsUpdate == false)
{
@@ -235,8 +243,13 @@ namespace IRaCIS.Core.Application.Contracts
//没有记录 new一份
if (dbEntityList.Count == 0)
{
var addSurvey = _mapper.Map<TrialSiteSurvey>(userInfo);
currentEntity = await _repository.AddAsync(_mapper.Map<TrialSiteSurvey>(userInfo));
//从项目site 中找到已存在的 加到历史人员中
addSurvey.TrialSiteUserSurveyList = userList;
currentEntity = await _repository.AddAsync(addSurvey);
}
else
@@ -254,6 +267,16 @@ namespace IRaCIS.Core.Application.Contracts
currentEntity = currentLatest;
if (currentEntity.State != TrialSiteSurveyEnum.PMCreatedAndLock)
{
await UnlockSyncSiteUserAsync(userInfo.TrialId, userInfo.SiteId, currentEntity.Id, userList);
}
}
@@ -306,14 +329,19 @@ namespace IRaCIS.Core.Application.Contracts
copy.TrialSiteEquipmentSurveyList = currentLatest.TrialSiteEquipmentSurveyList.Clone();
copy.TrialSiteEquipmentSurveyList.ForEach(t => { t.Id = Guid.Empty;t.CreateTime = DateTime.Now; });
copy.TrialSiteEquipmentSurveyList.ForEach(t => { t.Id = Guid.Empty; t.CreateTime = DateTime.Now; });
copy.TrialSiteUserSurveyList = currentLatest.TrialSiteUserSurveyList.Clone();
copy.TrialSiteUserSurveyList = currentLatest.TrialSiteUserSurveyList.Clone().Where(t => t.IsHistoryUser == false).ToList();
copy.TrialSiteUserSurveyList.ForEach(t => { t.Id = Guid.Empty; t.IsGenerateSuccess = false; t.CreateTime = DateTime.Now; });
//从项目site 中找到已存在的 加到历史人员中
copy.TrialSiteUserSurveyList.AddRange(userList);
currentEntity = await _trialSiteSurveyRepository.AddAsync(copy);
}
@@ -343,6 +371,29 @@ namespace IRaCIS.Core.Application.Contracts
#endregion
}
private async Task UnlockSyncSiteUserAsync(Guid trialId, Guid siteId, Guid trialSiteSurveyId, List<TrialSiteUserSurvey> userList)
{
var existList = await _trialSiteUserSurveyRepository.Where(t => t.IsHistoryUser && t.TrialSiteSurvey.TrialId == trialId && t.TrialSiteSurvey.SiteId == siteId, true).ToListAsync();
foreach (var item in userList)
{
var find = existList.FirstOrDefault(t => t.SystemUserId == item.SystemUserId);
//不存在就加入
if (find == null)
{
item.TrialSiteSurveyId = trialSiteSurveyId;
await _trialSiteUserSurveyRepository.AddAsync(item);
}
else
{
item.IsHistoryUserOriginDeleted = find.IsHistoryUserOriginDeleted;
}
}
await _trialSiteUserSurveyRepository.SaveChangesAsync();
}
/// <summary>
/// 直接查询相关所有数据
@@ -351,9 +402,22 @@ namespace IRaCIS.Core.Application.Contracts
[HttpGet("{trialId:guid}/{trialSiteSurveyId:guid}")]
public async Task<LoginReturnDTO> GetSiteSurveyInfo(Guid trialSiteSurveyId, Guid trialId)
{
//有可能填表人提交了,但是此时PM手动对人员信息进行了更改,此时需要将数据同步下(选择在这里同步是因为 不想改动 中心人员哪里的两个接口的逻辑)
var find = await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId);
if (find.State != TrialSiteSurveyEnum.PMCreatedAndLock && find.IsDeleted != true)
{
var userList = await _trialSiteUserRepository.Where(t => t.TrialId == find.TrialId && t.SiteId == find.SiteId, false, true).ProjectTo<TrialSiteUserSurvey>(_mapper.ConfigurationProvider).ToListAsync();
await UnlockSyncSiteUserAsync(find.TrialId, find.SiteId, find.Id, userList);
}
var result = await _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId && t.TrialId == trialId).IgnoreQueryFilters()
.ProjectTo<LoginReturnDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
return result;
}
@@ -440,7 +504,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task<List<TrialSiteSurveySelectView>> GetTrialSiteSurveySelectList(TrialSiteSurveySelectquery inQuery)
{
var trialSiteSurveyQueryable = _trialSiteSurveyRepository
.Where(t=>t.Id!=inQuery.TrialSiteSurveyId)
.Where(t => t.Id != inQuery.TrialSiteSurveyId)
.Where(t => t.TrialId == inQuery.TrialId && t.SiteId == inQuery.SiteId).IgnoreQueryFilters()
.ProjectTo<TrialSiteSurveySelectView>(_mapper.ConfigurationProvider);
@@ -667,18 +731,25 @@ namespace IRaCIS.Core.Application.Contracts
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
{
var allUserList = _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId).ProjectTo<TrialSiteUserSurveyView>(_mapper.ConfigurationProvider).ToList();
//已生成的不管 管的只需要是 生成失败的并且需要生成账号的
var needGenerateList = _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId && t.IsGenerateAccount && t.IsJoin != true ).ProjectTo<TrialSiteUserSurveyView>(_mapper.ConfigurationProvider).ToList();
var needGenerateList = allUserList.Where(t => t.IsHistoryUser == false && t.IsGenerateAccount && t.IsJoin != true).ToList();
await GenerateAccountAsync(needGenerateList, trialId);
await SendSiteSurveyUserJoinEmail(new TrialSiteUserSurveyJoinCommand() { TrialId = trialId, TrialSiteSurveyId = trialSiteSurveyId, RouteUrl = siteSurvyeSubmit.RouteUrl, BaseUrl = siteSurvyeSubmit.BaseUrl, UserList = needGenerateList });
await DealSiteUserQuitSiteAsync(trialId, trialSiteSurvey.SiteId, needGenerateList);
//新加入的 或者历史人员退出改为加入的
var needSendEmailList = allUserList.Where(t => (t.IsHistoryUser == false && t.IsGenerateAccount && t.IsJoin != true) || (t.IsHistoryUser == true && t.IsHistoryUserOriginDeleted == true && t.IsHistoryUserDeleted == false)).ToList();
await SendSiteSurveyUserJoinEmail(new TrialSiteUserSurveyJoinCommand() { TrialId = trialId, TrialSiteSurveyId = trialSiteSurveyId, RouteUrl = siteSurvyeSubmit.RouteUrl, BaseUrl = siteSurvyeSubmit.BaseUrl, UserList = needSendEmailList });
var needQuitUserList = allUserList.Where(t => t.IsHistoryUser && t.IsHistoryUserOriginDeleted == false && t.IsHistoryUserDeleted == true).ToList();
await DealSiteUserQuitSiteAsync(trialId, trialSiteSurvey.SiteId, needQuitUserList);
//将历史锁定的调研表废弃
await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SiteId == trialSiteSurvey.SiteId && t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id!= trialSiteSurveyId, z => new TrialSiteSurvey() { IsDeleted = true });
await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SiteId == trialSiteSurvey.SiteId && t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id != trialSiteSurveyId, z => new TrialSiteSurvey() { IsDeleted = true });
}
await _trialSiteSurveyRepository.SaveChangesAsync();
@@ -689,13 +760,14 @@ namespace IRaCIS.Core.Application.Contracts
private async Task GenerateAccountAsync(List<TrialSiteUserSurveyView> needGenerateList, Guid trialId)
{
var trialType = _repository.Where<Trial>(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault();
foreach (var item in needGenerateList)
{
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
var trialType = _repository.Where<Trial>(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault();
if (sysUserInfo == null)
{
@@ -720,7 +792,6 @@ namespace IRaCIS.Core.Application.Contracts
saveItem.UserTypeEnum = _repository.Where<UserType>(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First();
//saveItem.Password = MD5Helper.Md5(verificationCode.ToString());
var newUser = _userRepository.AddAsync(saveItem).Result;
@@ -736,7 +807,6 @@ namespace IRaCIS.Core.Application.Contracts
}
//
//发送邮件的时候需要用到该字段
item.SystemUserId = sysUserInfo.Id;
@@ -775,12 +845,30 @@ namespace IRaCIS.Core.Application.Contracts
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl);
}
else
{
await _trialUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId, c => new TrialUser()
{
IsDeleted = false,
DeletedTime = null,
JoinTime = DateTime.Now,
});
}
if (!await _repository.AnyAsync<TrialSiteUser>(t => t.TrialId == trialId && t.UserId == userId && t.SiteId == siteId, true))
{
await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = siteId, UserId = userId });
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl);
}
else
{
await _trialSiteUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId && t.SiteId == siteId, c => new TrialSiteUser()
{
IsDeleted = false,
DeletedTime = null,
});
}
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
@@ -789,7 +877,7 @@ namespace IRaCIS.Core.Application.Contracts
}
await _trialSiteSurveyRepository.UpdatePartialFromQueryAsync(t => t.Id == trialSiteSurvey.Id && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now });
await _userRepository.SaveChangesAsync();
return ResponseOutput.Ok();
@@ -800,23 +888,139 @@ namespace IRaCIS.Core.Application.Contracts
private async Task DealSiteUserQuitSiteAsync(Guid trialId, Guid siteId, List<TrialSiteUserSurveyView> list)
{
//跟踪查询该site下的所有的用户
var siteUserList = await _repository.Where<TrialSiteUser>(t => t.TrialId == trialId && t.SiteId == siteId, true).ToListAsync();
foreach (var siteUser in siteUserList)
var userIdList = list.Select(t => t.SystemUserId).ToList();
await _trialSiteUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.SiteId == siteId && userIdList.Contains(t.UserId), c => new TrialSiteUser()
{
//当前中心用户 不在调研表存在,就将该人退出
if (!list.Any(t => t.SystemUserId == siteUser.UserId))
{
siteUser.IsDeleted = true;
siteUser.DeletedTime = DateTime.Now;
}
IsDeleted = true,
DeletedTime = DateTime.Now,
});
//var siteUserList = await _repository.Where<TrialSiteUser>(t => t.TrialId == trialId && t.SiteId == siteId && userIdList.Contains(t.UserId), true,true).ToListAsync();
//foreach (var siteUser in siteUserList)
//{
// var find= list.FirstOrDefault(t => t.SystemUserId == siteUser.UserId);
// if(find != null)
// {
// siteUser.IsDeleted =(bool) find.IsHistoryUserDeleted;
// siteUser.DeletedTime = find.IsHistoryUserDeleted==true? DateTime.Now:null;
// }
//}
#region MyRegion
////跟踪查询该site下的所有的用户
//var siteUserList = await _repository.Where<TrialSiteUser>(t => t.TrialId == trialId && t.SiteId == siteId, true).ToListAsync();
//foreach (var siteUser in siteUserList)
//{
// //当前中心用户 不在调研表存在,就将该人退出
// if (!list.Any(t => t.SystemUserId == siteUser.UserId))
// {
// siteUser.IsDeleted = true;
// siteUser.DeletedTime = DateTime.Now;
// }
//}
#endregion
}
await _repository.SaveChangesAsync();
}
public async Task ImportGenerateAccountAndJoinTrialAsync(Guid trialId, List<SiteSurveyUserImportDto> list)
{
var trialType = _repository.Where<Trial>(t => t.Id == trialId).Select(t => t.TrialType).FirstOrDefault();
//判断是否有系统账号
foreach (var item in list)
{
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
if (sysUserInfo == null)
{
lock (lockObj)
{
var saveItem = _mapper.Map<User>(item);
if (trialType == TrialType.NoneOfficial)
{
saveItem.IsTestUser = true;
}
// 中心调研生成账号 都是外部的
saveItem.IsZhiZhun = false;
saveItem.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
saveItem.UserCode = AppSettings.GetCodeStr(saveItem.Code, nameof(User));
saveItem.UserName = saveItem.UserCode;
var newUser = _userRepository.AddAsync(saveItem).Result;
_ = _userRepository.SaveChangesAsync().Result;
sysUserInfo = newUser;
}
item.IsGeneratedAccount = true;
}
var userId = sysUserInfo.Id;
if (!await _trialUserRepository.AnyAsync(t=>t.TrialId==trialId && t.UserId== userId, true))
{
await _repository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId, JoinTime = DateTime.Now });
}
else
{
await _trialUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId, c => new TrialUser()
{
IsDeleted = false,
DeletedTime = null,
JoinTime = DateTime.Now,
});
}
if (!await _repository.AnyAsync<TrialSiteUser>(t => t.TrialId == trialId && t.UserId == userId && t.SiteId == siteId, true))
{
await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = siteId, UserId = userId });
await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl);
}
else
{
await _trialSiteUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.UserId == userId && t.SiteId == siteId, c => new TrialSiteUser()
{
IsDeleted = false,
DeletedTime = null,
});
}
}
//判断是否加入到项目
}
}
}
@@ -26,19 +26,19 @@ namespace IRaCIS.Core.Application.Contracts
_trialSiteSurveyRepository = trialSiteSurveyRepository;
}
[HttpGet("{trialSiteSurveyId:guid}")]
public async Task<List<TrialSiteUserSurveyView>> GetTrialSiteUserSurveyList(Guid trialSiteSurveyId)
[HttpPost]
public async Task<List<TrialSiteUserSurveyView>> GetTrialSiteUserSurveyList(TrialSiteUserSurverQuery inquery)
{
var trialSiteUserSurveyQueryable = _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId)
//.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM, t => t.TrialSiteSurvey.State >= TrialSiteSurveyEnum.CRCSubmitted)
//.WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM|| _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM, t => t.TrialSiteSurvey.State >= TrialSiteSurveyEnum.SPMApproved)
var trialSiteUserSurveyQueryable = _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurveyId == inquery.TrialSiteSurveyId)
.WhereIf(inquery.IsHistoryUser !=null, t => t.IsHistoryUser==inquery.IsHistoryUser)
.ProjectTo<TrialSiteUserSurveyView>(_mapper.ConfigurationProvider, new { isEn_Us = _userInfo.IsEn_Us });
return await trialSiteUserSurveyQueryable.ToListAsync();
}
[TypeFilter(typeof(TrialResourceFilter),Arguments = new object[] { "AfterStopCannNotOpt" })]
[TypeFilter(typeof(TrialResourceFilter),Arguments = new object[] { "AfterStopCannNotOpt" })]
[HttpPost("{trialId:guid}")]
public async Task<IResponseOutput> AddOrUpdateTrialSiteUserSurvey(TrialSiteUserSurveyAddOrEdit addOrEditTrialSiteUserSurvey)
{
@@ -21,6 +21,23 @@ namespace IRaCIS.Core.Application.AutoMapper
CreateMap<LoginDto, TrialSiteSurvey>().ForMember(d => d.Email, t => t.MapFrom(t => t.EmailOrPhone));
CreateMap<TrialSiteUser, TrialSiteUserSurvey>()
.ForMember(d => d.Id, u => u.Ignore())
.ForMember(d => d.Phone, u => u.MapFrom(c => c.User.Phone))
.ForMember(d => d.Email, u => u.MapFrom(c => c.User.EMail))
.ForMember(d => d.OrganizationName, u => u.MapFrom(c => c.User.OrganizationName))
.ForMember(d => d.UserTypeId, u => u.MapFrom(c => c.User.UserTypeId))
.ForMember(d => d.IsHistoryUser, u => u.MapFrom(c => true))
.ForMember(d => d.IsHistoryUserOriginDeleted, u => u.MapFrom(c => c.IsDeleted))
.ForMember(d => d.IsHistoryUserDeleted, u => u.MapFrom(c => c.IsDeleted))
.ForMember(d => d.FirstName, u => u.MapFrom(c => c.User.FirstName))
.ForMember(d => d.LastName, u => u.MapFrom(c => c.User.LastName))
.ForMember(d => d.IsGenerateAccount, u => u.MapFrom(c => true))
.ForMember(d => d.IsGenerateSuccess, u => u.MapFrom(c => true))
.ForMember(d => d.SystemUserId, u => u.MapFrom(c => c.UserId))
.ForMember(d => d.IsJoin, u => u.MapFrom(c => !c.IsDeleted));
//列表
CreateMap<TrialSiteEquipmentSurvey, TrialSiteEquipmentSurveyView>()
@@ -60,6 +77,10 @@ namespace IRaCIS.Core.Application.AutoMapper
CreateMap<TrialSiteUserSurvey, User>();
CreateMap<SiteSurveyUserImportDto, User>()
.ForMember(d => d.EMail, u => u.MapFrom(s => s.Email));
CreateMap<TrialSiteUserSurveyView, User>();