中心调研临时提交
This commit is contained in:
@@ -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>();
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user