上传bug
This commit is contained in:
@@ -190,8 +190,11 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
public class SiteSurveySendVerifyCode
|
||||
{
|
||||
public VerifyType verificationType { get; set; }
|
||||
public string EmailOrPhone { get; set; } = string.Empty;
|
||||
//public VerifyType verificationType { get; set; }
|
||||
public string Email { get; set; } = string.Empty;
|
||||
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -46,33 +46,58 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
[AllowAnonymous]
|
||||
public async Task<IResponseOutput> SendVerifyCode(SiteSurveySendVerifyCode userInfo, [FromServices] IMailVerificationService _mailVerificationService)
|
||||
{
|
||||
var verificationType = userInfo.verificationType;
|
||||
var verificationType = VerifyType.Email;
|
||||
//检查手机或者邮箱是否有效
|
||||
if (!Regex.IsMatch(userInfo.EmailOrPhone, @"/^1[34578]\d{9}$/") && !Regex.IsMatch(userInfo.EmailOrPhone, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"))
|
||||
if ( !Regex.IsMatch(userInfo.Email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"))
|
||||
{
|
||||
|
||||
throw new BusinessValidationFailedException(verificationType == VerifyType.Email
|
||||
? "Please input a legal email"
|
||||
: "Please input a legal phone");
|
||||
|
||||
throw new BusinessValidationFailedException("Please input a legal email");
|
||||
}
|
||||
|
||||
//邮箱
|
||||
if (verificationType == VerifyType.Email)
|
||||
{
|
||||
//验证码 6位
|
||||
int verificationCode = new Random().Next(100000, 1000000);
|
||||
|
||||
await _mailVerificationService.AnolymousSendEmail(userInfo.EmailOrPhone, verificationCode);
|
||||
}
|
||||
//手机短信
|
||||
else
|
||||
{
|
||||
//验证码 6位
|
||||
int verificationCode = new Random().Next(100000, 1000000);
|
||||
|
||||
var trialInfo = await _repository.FirstOrDefaultAsync<Trial>(t => t.Id == userInfo.TrialId);
|
||||
|
||||
await _mailVerificationService.AnolymousSendEmail(trialInfo.ResearchProgramNo,userInfo.Email, verificationCode);
|
||||
|
||||
}
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
|
||||
#region MyRegion
|
||||
|
||||
//var verificationType = VerifyType.Email;
|
||||
////检查手机或者邮箱是否有效
|
||||
//if (!Regex.IsMatch(userInfo.Email, @"/^1[34578]\d{9}$/") && !Regex.IsMatch(userInfo.Email, @"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$"))
|
||||
//{
|
||||
|
||||
// throw new BusinessValidationFailedException(verificationType == VerifyType.Email
|
||||
// ? "Please input a legal email"
|
||||
// : "Please input a legal phone");
|
||||
|
||||
//}
|
||||
|
||||
////邮箱
|
||||
//if (verificationType == VerifyType.Email)
|
||||
//{
|
||||
// //验证码 6位
|
||||
// int verificationCode = new Random().Next(100000, 1000000);
|
||||
|
||||
// await _mailVerificationService.AnolymousSendEmail(userInfo.Email, verificationCode);
|
||||
//}
|
||||
////手机短信
|
||||
//else
|
||||
//{
|
||||
|
||||
//}
|
||||
|
||||
//return ResponseOutput.Ok();
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -301,225 +326,225 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 直接查询相关所有数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("{trialId:guid}/{trialSiteSurveyId:guid}")]
|
||||
public async Task<LoginReturnDTO> GetSiteSurveyInfo(Guid trialSiteSurveyId, Guid trialId)
|
||||
/// <summary>
|
||||
/// 直接查询相关所有数据
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet("{trialId:guid}/{trialSiteSurveyId:guid}")]
|
||||
public async Task<LoginReturnDTO> GetSiteSurveyInfo(Guid trialSiteSurveyId, Guid trialId)
|
||||
{
|
||||
var result = await _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId && t.TrialId == trialId)
|
||||
.ProjectTo<LoginReturnDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 实际这里只会是更新 添加在login的时候做了
|
||||
/// </summary>
|
||||
/// <param name="addOrEditTrialSiteSurvey"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<IResponseOutput> AddOrUpdateTrialSiteSurvey(TrialSiteSurveyAddOrEdit addOrEditTrialSiteSurvey)
|
||||
{
|
||||
|
||||
if (addOrEditTrialSiteSurvey.Id != null)
|
||||
{
|
||||
var result = await _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId && t.TrialId == trialId)
|
||||
.ProjectTo<LoginReturnDTO>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 实际这里只会是更新 添加在login的时候做了
|
||||
/// </summary>
|
||||
/// <param name="addOrEditTrialSiteSurvey"></param>
|
||||
/// <returns></returns>
|
||||
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("已锁定,不允许操作");
|
||||
}
|
||||
}
|
||||
var entity = await _trialSiteSurveyRepository.InsertOrUpdateAsync(addOrEditTrialSiteSurvey, true);
|
||||
|
||||
return ResponseOutput.Ok(entity.Id.ToString());
|
||||
}
|
||||
|
||||
|
||||
/// <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))
|
||||
if (await _trialSiteSurveyRepository.AnyAsync(t => t.Id == addOrEditTrialSiteSurvey.Id && t.State == TrialSiteSurveyEnum.PMCreatedAndLock))
|
||||
{
|
||||
return ResponseOutput.NotOk("已锁定,不允许操作");
|
||||
}
|
||||
}
|
||||
var entity = await _trialSiteSurveyRepository.InsertOrUpdateAsync(addOrEditTrialSiteSurvey, true);
|
||||
|
||||
var success = await _trialSiteSurveyRepository.BatchDeleteAsync(t => t.Id == trialSiteSurveyId);
|
||||
return ResponseOutput.Ok(entity.Id.ToString());
|
||||
}
|
||||
|
||||
return ResponseOutput.Result(success);
|
||||
|
||||
/// <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("已锁定,不允许操作");
|
||||
}
|
||||
|
||||
var success = await _trialSiteSurveyRepository.BatchDeleteAsync(t => t.Id == trialSiteSurveyId);
|
||||
|
||||
/// <summary>
|
||||
/// 获取 项目 site的调研记录 New
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO surveyQueryDTO)
|
||||
return ResponseOutput.Result(success);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取 项目 site的调研记录 New
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<PageOutput<TrialSiteSurveyView>> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO surveyQueryDTO)
|
||||
{
|
||||
var trialSiteSurveyQueryable = _trialSiteSurveyRepository.Where(t => t.TrialId == surveyQueryDTO.TrialId).IgnoreQueryFilters()
|
||||
.WhereIf(surveyQueryDTO.SiteId != null, t => t.SiteId == surveyQueryDTO.SiteId)
|
||||
.WhereIf(surveyQueryDTO.IsDeleted != null, t => t.IsDeleted == surveyQueryDTO.IsDeleted)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(surveyQueryDTO.UserKeyInfo), t => t.UserName.Contains(surveyQueryDTO.UserKeyInfo) || t.Phone.Contains(surveyQueryDTO.UserKeyInfo) || t.Email.Contains(surveyQueryDTO.UserKeyInfo))
|
||||
.WhereIf(surveyQueryDTO.State != null, t => t.State == surveyQueryDTO.State)
|
||||
.WhereIf(surveyQueryDTO.UpdateTimeBegin != null, t => t.UpdateTime >= surveyQueryDTO.UpdateTimeBegin)
|
||||
.WhereIf(surveyQueryDTO.UpdateTimeEnd != null, t => t.UpdateTime <= surveyQueryDTO.UpdateTimeEnd)
|
||||
|
||||
.ProjectTo<TrialSiteSurveyView>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await trialSiteSurveyQueryable.ToPagedListAsync(surveyQueryDTO.PageIndex, surveyQueryDTO.PageSize, surveyQueryDTO.SortField, surveyQueryDTO.Asc);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 项目Site调研用户列表 所有site的调研用户 最新的调研表的记录的用户 new
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<PageOutput<TrialSiteUserSurveyAllDTO>> TrialSiteSurveyUserList(TrialSiteUserSurveyAllQuery queryParam)
|
||||
{
|
||||
|
||||
|
||||
var groupSelectIdQuery =
|
||||
_trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId)
|
||||
.WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId)
|
||||
.WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo))
|
||||
.GroupBy(t => t.SiteId)
|
||||
.Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First());
|
||||
|
||||
|
||||
var query = _trialSiteUserSurveyRepository
|
||||
.Where(t => groupSelectIdQuery.Contains(t.TrialSiteSurveyId))
|
||||
.WhereIf(queryParam.UserTypeId != null, t => t.UserTypeId == queryParam.UserTypeId)
|
||||
.WhereIf(queryParam.IsGenerateAccount != null, t => t.IsGenerateAccount == queryParam.IsGenerateAccount)
|
||||
.WhereIf(queryParam.TrialRoleNameId != null, t => t.TrialRoleNameId == queryParam.TrialRoleNameId)
|
||||
.WhereIf(queryParam.State != null && queryParam.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == queryParam.State)
|
||||
.WhereIf(queryParam.State != null && queryParam.State == TrialSiteUserStateEnum.OverTime, t => t.InviteState == TrialSiteUserStateEnum.HasSend && t.ExpireTime < DateTime.Now)
|
||||
.WhereIf(!string.IsNullOrEmpty(queryParam.UserName), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserName))
|
||||
.WhereIf(!string.IsNullOrEmpty(queryParam.OrganizationName), t => t.OrganizationName.Contains(queryParam.OrganizationName))
|
||||
|
||||
.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
|
||||
|
||||
//var query = _trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId && t.IsAbandon == false)
|
||||
// .WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId)
|
||||
// .WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo))
|
||||
// .GroupBy(t => t.SiteId)
|
||||
// .Select(g => g.OrderByDescending(u => u.CreateTime).FirstOrDefault())
|
||||
// .SelectMany(t => t.TrialSiteUserSurveyList)
|
||||
//.WhereIf(queryParam.UserTypeId != null, t => t.UserTypeId == queryParam.UserTypeId)
|
||||
//.WhereIf(queryParam.IsGenerateAccount != null, t => t.IsGenerateAccount == queryParam.IsGenerateAccount)
|
||||
//.WhereIf(queryParam.TrialRoleNameId != null, t => t.TrialRoleNameId == queryParam.TrialRoleNameId)
|
||||
//.WhereIf(queryParam.State != null && queryParam.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == queryParam.State)
|
||||
//.WhereIf(queryParam.State != null && queryParam.State == TrialSiteUserStateEnum.OverTime, t => t.InviteState == TrialSiteUserStateEnum.HasSend && t.ExpireTime < DateTime.Now)
|
||||
//.WhereIf(!string.IsNullOrEmpty(queryParam.UserKeyInfo), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserKeyInfo) || t.Email.Contains(queryParam.UserKeyInfo) || t.Phone.Contains(queryParam.UserKeyInfo))
|
||||
//.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await query.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, queryParam.SortField, queryParam.Asc);
|
||||
|
||||
|
||||
|
||||
|
||||
//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 _repository.Where<Trial>(t => t.Id == trialId).ProjectTo<TrialSurveyInitInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 驳回 New
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<IResponseOutput> SubmissionRejection(TrialSiteSubmitBackCommand trialSiteSubmitBackCommand)
|
||||
{
|
||||
var trialSiteSurveyId = trialSiteSubmitBackCommand.TrialSiteSurveyId;
|
||||
|
||||
var survey = await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId);
|
||||
|
||||
survey.LatestBackReason = trialSiteSubmitBackCommand.LatestBackReason;
|
||||
|
||||
User user = null;
|
||||
|
||||
var messageToSend = new MimeMessage();
|
||||
//发件地址
|
||||
messageToSend.From.Add(new MailboxAddress("GRR", "iracis_grr@163.com"));
|
||||
|
||||
//主题
|
||||
messageToSend.Subject = "GRR Site survey ( Rejection )";
|
||||
|
||||
|
||||
if (await _repository.AnyAsync<TrialSiteSurvey>(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId))
|
||||
{
|
||||
var trialSiteSurveyQueryable = _trialSiteSurveyRepository.Where(t => t.TrialId == surveyQueryDTO.TrialId).IgnoreQueryFilters()
|
||||
.WhereIf(surveyQueryDTO.SiteId != null, t => t.SiteId == surveyQueryDTO.SiteId)
|
||||
.WhereIf(surveyQueryDTO.IsDeleted != null, t => t.IsDeleted == surveyQueryDTO.IsDeleted)
|
||||
.WhereIf(!string.IsNullOrWhiteSpace(surveyQueryDTO.UserKeyInfo), t => t.UserName.Contains(surveyQueryDTO.UserKeyInfo) || t.Phone.Contains(surveyQueryDTO.UserKeyInfo) || t.Email.Contains(surveyQueryDTO.UserKeyInfo))
|
||||
.WhereIf(surveyQueryDTO.State != null, t => t.State == surveyQueryDTO.State)
|
||||
.WhereIf(surveyQueryDTO.UpdateTimeBegin != null, t => t.UpdateTime >= surveyQueryDTO.UpdateTimeBegin)
|
||||
.WhereIf(surveyQueryDTO.UpdateTimeEnd != null, t => t.UpdateTime <= surveyQueryDTO.UpdateTimeEnd)
|
||||
|
||||
.ProjectTo<TrialSiteSurveyView>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await trialSiteSurveyQueryable.ToPagedListAsync(surveyQueryDTO.PageIndex, surveyQueryDTO.PageSize, surveyQueryDTO.SortField, surveyQueryDTO.Asc);
|
||||
return ResponseOutput.NotOk("已锁定,不允许操作");
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 项目Site调研用户列表 所有site的调研用户 最新的调研表的记录的用户 new
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<PageOutput<TrialSiteUserSurveyAllDTO>> TrialSiteSurveyUserList(TrialSiteUserSurveyAllQuery queryParam)
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
|
||||
{
|
||||
|
||||
//SPM 给填表人发
|
||||
messageToSend.To.Add(new MailboxAddress(String.Empty, survey.Email));
|
||||
|
||||
var groupSelectIdQuery =
|
||||
_trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId)
|
||||
.WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId)
|
||||
.WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo))
|
||||
.GroupBy(t => t.SiteId)
|
||||
.Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First());
|
||||
|
||||
|
||||
var query = _trialSiteUserSurveyRepository
|
||||
.Where(t => groupSelectIdQuery.Contains(t.TrialSiteSurveyId))
|
||||
.WhereIf(queryParam.UserTypeId != null, t => t.UserTypeId == queryParam.UserTypeId)
|
||||
.WhereIf(queryParam.IsGenerateAccount != null, t => t.IsGenerateAccount == queryParam.IsGenerateAccount)
|
||||
.WhereIf(queryParam.TrialRoleNameId != null, t => t.TrialRoleNameId == queryParam.TrialRoleNameId)
|
||||
.WhereIf(queryParam.State != null && queryParam.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == queryParam.State)
|
||||
.WhereIf(queryParam.State != null && queryParam.State == TrialSiteUserStateEnum.OverTime, t => t.InviteState == TrialSiteUserStateEnum.HasSend && t.ExpireTime < DateTime.Now)
|
||||
.WhereIf(!string.IsNullOrEmpty(queryParam.UserName), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserName))
|
||||
.WhereIf(!string.IsNullOrEmpty(queryParam.OrganizationName), t => t.OrganizationName.Contains(queryParam.OrganizationName))
|
||||
|
||||
.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
|
||||
|
||||
//var query = _trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId && t.IsAbandon == false)
|
||||
// .WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId)
|
||||
// .WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo))
|
||||
// .GroupBy(t => t.SiteId)
|
||||
// .Select(g => g.OrderByDescending(u => u.CreateTime).FirstOrDefault())
|
||||
// .SelectMany(t => t.TrialSiteUserSurveyList)
|
||||
//.WhereIf(queryParam.UserTypeId != null, t => t.UserTypeId == queryParam.UserTypeId)
|
||||
//.WhereIf(queryParam.IsGenerateAccount != null, t => t.IsGenerateAccount == queryParam.IsGenerateAccount)
|
||||
//.WhereIf(queryParam.TrialRoleNameId != null, t => t.TrialRoleNameId == queryParam.TrialRoleNameId)
|
||||
//.WhereIf(queryParam.State != null && queryParam.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == queryParam.State)
|
||||
//.WhereIf(queryParam.State != null && queryParam.State == TrialSiteUserStateEnum.OverTime, t => t.InviteState == TrialSiteUserStateEnum.HasSend && t.ExpireTime < DateTime.Now)
|
||||
//.WhereIf(!string.IsNullOrEmpty(queryParam.UserKeyInfo), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserKeyInfo) || t.Email.Contains(queryParam.UserKeyInfo) || t.Phone.Contains(queryParam.UserKeyInfo))
|
||||
//.ProjectTo<TrialSiteUserSurveyAllDTO>(_mapper.ConfigurationProvider);
|
||||
|
||||
return await query.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, queryParam.SortField, queryParam.Asc);
|
||||
|
||||
|
||||
|
||||
|
||||
//return await query.ToPagedListAsync(queryParam.PageIndex, queryParam.PageSize, queryParam.SortField, queryParam.Asc);
|
||||
survey.State = TrialSiteSurveyEnum.ToSubmit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 初始登陆界面 项目基本信息+下拉框数据
|
||||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <returns></returns>
|
||||
[AllowAnonymous]
|
||||
[HttpGet("{trialId:guid}")]
|
||||
public async Task<TrialSurveyInitInfo> GetTrialSurveyInitInfo(Guid trialId)
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)
|
||||
{
|
||||
var info = await _repository.Where<Trial>(t => t.Id == trialId).ProjectTo<TrialSurveyInitInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 驳回 New
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<IResponseOutput> SubmissionRejection(TrialSiteSubmitBackCommand trialSiteSubmitBackCommand)
|
||||
{
|
||||
var trialSiteSurveyId = trialSiteSubmitBackCommand.TrialSiteSurveyId;
|
||||
|
||||
var survey = await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId);
|
||||
|
||||
survey.LatestBackReason = trialSiteSubmitBackCommand.LatestBackReason;
|
||||
|
||||
User user = null;
|
||||
|
||||
var messageToSend = new MimeMessage();
|
||||
//发件地址
|
||||
messageToSend.From.Add(new MailboxAddress("GRR", "iracis_grr@163.com"));
|
||||
|
||||
//主题
|
||||
messageToSend.Subject = "GRR Site survey ( Rejection )";
|
||||
|
||||
|
||||
if (await _repository.AnyAsync<TrialSiteSurvey>(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId))
|
||||
if (hasSPMOrCPM)
|
||||
{
|
||||
return ResponseOutput.NotOk("已锁定,不允许操作");
|
||||
|
||||
//PM 给SPM发 (初审人)
|
||||
user = await _userRepository.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;
|
||||
}
|
||||
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
|
||||
else
|
||||
{
|
||||
|
||||
//SPM 给填表人发
|
||||
//没有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;
|
||||
|
||||
|
||||
}
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)
|
||||
{
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
if (hasSPMOrCPM)
|
||||
{
|
||||
|
||||
//PM 给SPM发 (初审人)
|
||||
user = await _userRepository.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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
var builder = new BodyBuilder();
|
||||
|
||||
var trialInfo = await _repository.FirstOrDefaultAsync<Trial>(t => t.Id == trialSiteSubmitBackCommand.TrialId);
|
||||
|
||||
var builder = new BodyBuilder();
|
||||
var siteInfo = await _trialSiteRepository.FirstOrDefaultAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.SiteId == survey.SiteId, true);
|
||||
|
||||
var trialInfo = await _repository.FirstOrDefaultAsync<Trial>(t => t.Id == trialSiteSubmitBackCommand.TrialId);
|
||||
|
||||
var siteInfo = await _trialSiteRepository.FirstOrDefaultAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.SiteId == survey.SiteId, true);
|
||||
|
||||
builder.HtmlBody = @$"<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
builder.HtmlBody = @$"<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
@@ -558,146 +583,146 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
</div>
|
||||
</body>";
|
||||
|
||||
messageToSend.Body = builder.ToMessageBody();
|
||||
messageToSend.Body = builder.ToMessageBody();
|
||||
|
||||
using (var smtp = new MailKit.Net.Smtp.SmtpClient())
|
||||
{
|
||||
|
||||
smtp.ServerCertificateValidationCallback = (s, c, h, e) => true;
|
||||
|
||||
|
||||
await smtp.ConnectAsync("smtp.163.com", 25, SecureSocketOptions.StartTls);
|
||||
|
||||
|
||||
await smtp.AuthenticateAsync("iracis_grr@163.com", "XLWVQKZAEKLDWOAH");
|
||||
|
||||
|
||||
await smtp.SendAsync(messageToSend);
|
||||
|
||||
|
||||
await smtp.DisconnectAsync(true);
|
||||
}
|
||||
|
||||
await _trialSiteSurveyRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 驳回
|
||||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <param name="trialSiteSurveyId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut("{trialId:guid}/{trialSiteSurveyId:guid}")]
|
||||
[Obsolete]
|
||||
public async Task<IResponseOutput> SubmissionRejection(Guid trialId, Guid trialSiteSurveyId)
|
||||
{
|
||||
if (await _repository.AnyAsync<TrialSiteSurvey>(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId))
|
||||
{
|
||||
return ResponseOutput.NotOk("已锁定,不允许操作");
|
||||
}
|
||||
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
|
||||
{
|
||||
await _repository.BatchUpdateAsync<TrialSiteSurvey>(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit });
|
||||
}
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)
|
||||
{
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
if (hasSPMOrCPM)
|
||||
{
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit });
|
||||
}
|
||||
}
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
|
||||
[HttpPut("{trialId:guid}/{trialSiteSurveyId:guid}")]
|
||||
public async Task<IResponseOutput> AbandonSiteSurvey(Guid trialSiteSurveyId)
|
||||
{
|
||||
var survey = (await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId, true)).IfNullThrowConvertException();
|
||||
|
||||
if (survey.State != TrialSiteSurveyEnum.ToSubmit)
|
||||
{
|
||||
return ResponseOutput.NotOk("只允许废除未提交的记录");
|
||||
}
|
||||
|
||||
survey.IsDeleted = true;
|
||||
|
||||
await _repository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public async Task<IResponseOutput> SendInviteEmail(InviteEmailCommand inviteEmailCommand)
|
||||
using (var smtp = new MailKit.Net.Smtp.SmtpClient())
|
||||
{
|
||||
|
||||
var trialInfo = await _repository.FirstOrDefaultAsync<Trial>(t => t.Id == inviteEmailCommand.TrialId);
|
||||
smtp.ServerCertificateValidationCallback = (s, c, h, e) => true;
|
||||
|
||||
|
||||
foreach (var item in inviteEmailCommand.UserList)
|
||||
await smtp.ConnectAsync("smtp.163.com", 25, SecureSocketOptions.StartTls);
|
||||
|
||||
|
||||
await smtp.AuthenticateAsync("iracis_grr@163.com", "XLWVQKZAEKLDWOAH");
|
||||
|
||||
|
||||
await smtp.SendAsync(messageToSend);
|
||||
|
||||
|
||||
await smtp.DisconnectAsync(true);
|
||||
}
|
||||
|
||||
await _trialSiteSurveyRepository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 驳回
|
||||
/// </summary>
|
||||
/// <param name="trialId"></param>
|
||||
/// <param name="trialSiteSurveyId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut("{trialId:guid}/{trialSiteSurveyId:guid}")]
|
||||
[Obsolete]
|
||||
public async Task<IResponseOutput> SubmissionRejection(Guid trialId, Guid trialSiteSurveyId)
|
||||
{
|
||||
if (await _repository.AnyAsync<TrialSiteSurvey>(t => t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id == trialSiteSurveyId))
|
||||
{
|
||||
return ResponseOutput.NotOk("已锁定,不允许操作");
|
||||
}
|
||||
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
|
||||
{
|
||||
await _repository.BatchUpdateAsync<TrialSiteSurvey>(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit });
|
||||
}
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM)
|
||||
{
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
if (hasSPMOrCPM)
|
||||
{
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit });
|
||||
}
|
||||
}
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
|
||||
[HttpPut("{trialId:guid}/{trialSiteSurveyId:guid}")]
|
||||
public async Task<IResponseOutput> AbandonSiteSurvey(Guid trialSiteSurveyId)
|
||||
{
|
||||
var survey = (await _trialSiteSurveyRepository.FirstOrDefaultAsync(t => t.Id == trialSiteSurveyId, true)).IfNullThrowConvertException();
|
||||
|
||||
if (survey.State != TrialSiteSurveyEnum.ToSubmit)
|
||||
{
|
||||
return ResponseOutput.NotOk("只允许废除未提交的记录");
|
||||
}
|
||||
|
||||
survey.IsDeleted = true;
|
||||
|
||||
await _repository.SaveChangesAsync();
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public async Task<IResponseOutput> SendInviteEmail(InviteEmailCommand inviteEmailCommand)
|
||||
{
|
||||
|
||||
var trialInfo = await _repository.FirstOrDefaultAsync<Trial>(t => t.Id == inviteEmailCommand.TrialId);
|
||||
|
||||
|
||||
foreach (var item in inviteEmailCommand.UserList)
|
||||
{
|
||||
|
||||
var messageToSend = new MimeMessage();
|
||||
//发件地址
|
||||
messageToSend.From.Add(new MailboxAddress("GRR", "iracis_grr@163.com"));
|
||||
//收件地址
|
||||
messageToSend.To.Add(new MailboxAddress(String.Empty, item.Email));
|
||||
//主题
|
||||
messageToSend.Subject = $"[{trialInfo.ResearchProgramNo}] 邀请";
|
||||
|
||||
var builder = new BodyBuilder();
|
||||
|
||||
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
|
||||
var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
|
||||
|
||||
//int verificationCode = new Random().Next(100000, 1000000);
|
||||
|
||||
//var baseApiUrl = baseUrl.Remove(baseUrl.IndexOf("#")) + "api";
|
||||
|
||||
|
||||
if (sysUserInfo == null)
|
||||
{
|
||||
|
||||
var messageToSend = new MimeMessage();
|
||||
//发件地址
|
||||
messageToSend.From.Add(new MailboxAddress("GRR", "iracis_grr@163.com"));
|
||||
//收件地址
|
||||
messageToSend.To.Add(new MailboxAddress(String.Empty, item.Email));
|
||||
//主题
|
||||
messageToSend.Subject = "GRR Site survey (Trial Invite)";
|
||||
|
||||
var builder = new BodyBuilder();
|
||||
|
||||
//找下系统中是否存在该用户类型的 并且邮箱 或者手机的账户
|
||||
var sysUserInfo = await _userRepository.Where(t => t.UserTypeId == item.UserTypeId && t.EMail == item.Email).Include(t => t.UserTypeRole).FirstOrDefaultAsync();
|
||||
|
||||
//int verificationCode = new Random().Next(100000, 1000000);
|
||||
|
||||
//var baseApiUrl = baseUrl.Remove(baseUrl.IndexOf("#")) + "api";
|
||||
|
||||
|
||||
if (sysUserInfo == null)
|
||||
lock (lockObj)
|
||||
{
|
||||
var saveItem = _mapper.Map<User>(item);
|
||||
|
||||
lock (lockObj)
|
||||
{
|
||||
var saveItem = _mapper.Map<User>(item);
|
||||
saveItem.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||
|
||||
saveItem.Code = _userRepository.Select(t => t.Code).DefaultIfEmpty().Max() + 1;
|
||||
saveItem.UserCode = AppSettings.UserCodePrefix + saveItem.Code.ToString("D4");
|
||||
|
||||
saveItem.UserCode = AppSettings.UserCodePrefix + saveItem.Code.ToString("D4");
|
||||
saveItem.UserName = saveItem.UserCode;
|
||||
|
||||
saveItem.UserName = saveItem.UserCode;
|
||||
saveItem.UserTypeEnum = _repository.Where<UserType>(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First();
|
||||
|
||||
saveItem.UserTypeEnum = _repository.Where<UserType>(t => t.Id == saveItem.UserTypeId).Select(t => t.UserTypeEnum).First();
|
||||
//saveItem.Password = MD5Helper.Md5(verificationCode.ToString());
|
||||
|
||||
//saveItem.Password = MD5Helper.Md5(verificationCode.ToString());
|
||||
_ = _repository.AddAsync(saveItem).Result;
|
||||
|
||||
_ = _repository.AddAsync(saveItem).Result;
|
||||
|
||||
_ = _repository.SaveChangesAsync().Result;
|
||||
_ = _repository.SaveChangesAsync().Result;
|
||||
|
||||
|
||||
sysUserInfo = saveItem;
|
||||
}
|
||||
|
||||
sysUserInfo = saveItem;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
builder.HtmlBody = @$"<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
|
||||
builder.HtmlBody = @$"<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
|
||||
<div style='padding-left: 40px;background: #f6f6f6'>
|
||||
<div style='padding-top: 20px;'>
|
||||
<div style='line-height: 40px;font-size: 18px'>
|
||||
@@ -716,104 +741,104 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
|
||||
|
||||
messageToSend.Body = builder.ToMessageBody();
|
||||
messageToSend.Body = builder.ToMessageBody();
|
||||
|
||||
using (var smtp = new MailKit.Net.Smtp.SmtpClient())
|
||||
using (var smtp = new MailKit.Net.Smtp.SmtpClient())
|
||||
{
|
||||
|
||||
smtp.ServerCertificateValidationCallback = (s, c, h, e) => true;
|
||||
|
||||
smtp.MessageSent += (sender, args) =>
|
||||
{
|
||||
|
||||
smtp.ServerCertificateValidationCallback = (s, c, h, e) => true;
|
||||
_ = _trialSiteUserSurveyRepository.BatchUpdateAsync(t => t.Id == item.Id, u => new TrialSiteUserSurvey() { IsGenerateSuccess = true, InviteState = TrialSiteUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, SystemUserId = sysUserInfo.Id, ExpireTime = DateTime.Now.AddDays(7) }).Result;
|
||||
|
||||
smtp.MessageSent += (sender, args) =>
|
||||
{
|
||||
|
||||
_ = _trialSiteUserSurveyRepository.BatchUpdateAsync(t => t.Id == item.Id, u => new TrialSiteUserSurvey() { IsGenerateSuccess = true, InviteState = TrialSiteUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, SystemUserId = sysUserInfo.Id, ExpireTime = DateTime.Now.AddDays(7) }).Result;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
await smtp.ConnectAsync("smtp.163.com", 25, SecureSocketOptions.StartTls);
|
||||
await smtp.ConnectAsync("smtp.163.com", 25, SecureSocketOptions.StartTls);
|
||||
|
||||
|
||||
await smtp.AuthenticateAsync("iracis_grr@163.com", "XLWVQKZAEKLDWOAH");
|
||||
await smtp.AuthenticateAsync("iracis_grr@163.com", "XLWVQKZAEKLDWOAH");
|
||||
|
||||
|
||||
await smtp.SendAsync(messageToSend);
|
||||
await smtp.SendAsync(messageToSend);
|
||||
|
||||
|
||||
await smtp.DisconnectAsync(true);
|
||||
}
|
||||
await smtp.DisconnectAsync(true);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 提交 后台自动识别是谁提交
|
||||
/// </summary>
|
||||
/// <param name="siteSurvyeSubmit"></param>
|
||||
/// <returns></returns>
|
||||
//[TypeFilter(typeof(TrialResourceFilter))]
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> TrialSurveySubmit(TrialSiteSurvyeSubmitDTO siteSurvyeSubmit)
|
||||
{
|
||||
|
||||
var trialId = siteSurvyeSubmit.TrialId;
|
||||
var trialSiteSurveyId = siteSurvyeSubmit.TrialSiteSurveyId;
|
||||
|
||||
if (_userInfo.IsAdmin)
|
||||
{
|
||||
return ResponseOutput.NotOk("不允许Admin操作");
|
||||
}
|
||||
|
||||
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.Undefined)
|
||||
{
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
if (hasSPMOrCPM)
|
||||
{
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved });
|
||||
|
||||
}
|
||||
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 提交 后台自动识别是谁提交
|
||||
/// </summary>
|
||||
/// <param name="siteSurvyeSubmit"></param>
|
||||
/// <returns></returns>
|
||||
//[TypeFilter(typeof(TrialResourceFilter))]
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput> TrialSurveySubmit(TrialSiteSurvyeSubmitDTO siteSurvyeSubmit)
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
|
||||
{
|
||||
|
||||
var trialId = siteSurvyeSubmit.TrialId;
|
||||
var trialSiteSurveyId = siteSurvyeSubmit.TrialSiteSurveyId;
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.CRCSubmitted, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved, PreliminaryUserId = _userInfo.Id, PreliminaryTime = DateTime.Now });
|
||||
|
||||
if (_userInfo.IsAdmin)
|
||||
{
|
||||
return ResponseOutput.NotOk("不允许Admin操作");
|
||||
}
|
||||
}
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
|
||||
{
|
||||
|
||||
var trialSiteSurvey = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).FirstOrDefault();
|
||||
|
||||
if (trialSiteSurvey == null) return Null404NotFound(trialSiteSurvey);
|
||||
|
||||
|
||||
if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.Undefined)
|
||||
{
|
||||
var hasSPMOrCPM = await _trialSiteSurveyRepository.AnyAsync(t => t.TrialId == trialId && t.Trial.TrialUserList.Any(u => u.User.UserTypeEnum == UserTypeEnum.SPM || u.User.UserTypeEnum == UserTypeEnum.CPM));
|
||||
|
||||
if (hasSPMOrCPM)
|
||||
{
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved });
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
|
||||
{
|
||||
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.CRCSubmitted, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved, PreliminaryUserId = _userInfo.Id, PreliminaryTime = DateTime.Now });
|
||||
|
||||
}
|
||||
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
|
||||
{
|
||||
|
||||
var trialSiteSurvey = _trialSiteSurveyRepository.Where(t => t.Id == trialSiteSurveyId).FirstOrDefault();
|
||||
|
||||
if (trialSiteSurvey == null) return Null404NotFound(trialSiteSurvey);
|
||||
//已生成的不管 管的只需要是 生成失败的并且需要生成账号的
|
||||
var needGenerateList = _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId && t.IsGenerateAccount && t.IsGenerateSuccess == false).ProjectTo<TrialSiteUserSurveyView>(_mapper.ConfigurationProvider).ToList();
|
||||
|
||||
|
||||
//已生成的不管 管的只需要是 生成失败的并且需要生成账号的
|
||||
var needGenerateList = _trialSiteUserSurveyRepository.Where(t => t.TrialSiteSurveyId == trialSiteSurveyId && t.IsGenerateAccount && t.IsGenerateSuccess == false).ProjectTo<TrialSiteUserSurveyView>(_mapper.ConfigurationProvider).ToList();
|
||||
await SendInviteEmail(new InviteEmailCommand() { TrialId = trialId, RouteUrl = siteSurvyeSubmit.RouteUrl, UserList = needGenerateList });
|
||||
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now });
|
||||
|
||||
await SendInviteEmail(new InviteEmailCommand() { TrialId = trialId, RouteUrl = siteSurvyeSubmit.RouteUrl, UserList = needGenerateList });
|
||||
|
||||
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now });
|
||||
|
||||
}
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return ResponseOutput.Ok();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user