137 lines
5.1 KiB
C#
137 lines
5.1 KiB
C#
//--------------------------------------------------------------------
|
|
// 此代码由T4模板自动生成 byzhouhang 20210918
|
|
// 生成时间 2022-03-24 13:22:54
|
|
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
|
|
//--------------------------------------------------------------------
|
|
|
|
using IRaCIS.Core.Domain.Models;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using IRaCIS.Core.Application.Interfaces;
|
|
using IRaCIS.Core.Application.ViewModel;
|
|
using IRaCIS.Core.Domain.Share;
|
|
using IRaCIS.Core.Infra.EFCore;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Panda.DynamicWebApi.Attributes;
|
|
|
|
namespace IRaCIS.Core.Application.Service
|
|
{
|
|
/// <summary>
|
|
/// TrialUserPreparation Service
|
|
/// </summary>
|
|
[ApiExplorerSettings(GroupName = "Trial")]
|
|
public class TrialUserPreparationService : BaseService, ITrialUserPreparationService
|
|
{
|
|
private readonly IRepository<TrialUserPreparation> _trialUserPreparationRepository;
|
|
private readonly IRepository<TrialExternalUser> _trialExternalUseRepository;
|
|
private readonly IRepository<User> _userRepository;
|
|
private readonly IRepository<TrialUser> _trialUserRepository;
|
|
private readonly IRepository<TrialSiteUserSurvey> _trialSiteUserSurveyRepository;
|
|
private readonly IRepository<TrialSiteUser> _trialSiteUseRepository;
|
|
|
|
public TrialUserPreparationService(IRepository<TrialUserPreparation> trialUserPreparationRepository,
|
|
IRepository<TrialExternalUser> trialExternalUseRepository,
|
|
IRepository<User> userRepository, IRepository<TrialUser> trialUserRepository, IRepository<TrialSiteUserSurvey> trialSiteUserSurveyRepository, IRepository<TrialSiteUser> trialSiteUseRepository)
|
|
{
|
|
_trialUserPreparationRepository = trialUserPreparationRepository;
|
|
_trialExternalUseRepository = trialExternalUseRepository;
|
|
_userRepository = userRepository;
|
|
_trialUserRepository = trialUserRepository;
|
|
_trialSiteUserSurveyRepository = trialSiteUserSurveyRepository;
|
|
_trialSiteUseRepository = trialSiteUseRepository;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 项目下 人员邀请 加入列表
|
|
/// </summary>
|
|
/// <param name="queryTrialUserPreparation"></param>
|
|
/// <returns></returns>
|
|
public async Task<List<TrialUserPreparationView>> GetTrialUserPreparationList(TrialUserPreparationQuery queryTrialUserPreparation)
|
|
{
|
|
|
|
|
|
var trialUserPreparationQueryable = _trialUserPreparationRepository
|
|
.WhereIf(queryTrialUserPreparation.UserTypeId != null, t => t.User.UserTypeId == queryTrialUserPreparation.UserTypeId)
|
|
.ProjectTo<TrialUserPreparationView>(_mapper.ConfigurationProvider);
|
|
|
|
return await trialUserPreparationQueryable.ToListAsync();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 不带Token访问 加入项目 记录 同意与否
|
|
/// </summary>
|
|
/// <param name="joinCommand"></param>
|
|
/// <returns></returns>
|
|
[AllowAnonymous]
|
|
public async Task JoinTrial(JoinCommand joinCommand)
|
|
{
|
|
|
|
|
|
await UserJoinTrialAsync(joinCommand.TrialUserInfo);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 用户加入项目
|
|
/// </summary>
|
|
/// <param name="joinTrialCommand"></param>
|
|
/// <returns></returns>
|
|
[NonDynamicMethod]
|
|
public async Task<IResponseOutput> UserJoinTrialAsync(UserJoinTrialCommand joinTrialCommand)
|
|
{
|
|
var trialId = joinTrialCommand.TrialId;
|
|
var userId = joinTrialCommand.UserId;
|
|
|
|
if (joinTrialCommand.IsExternal)
|
|
{
|
|
|
|
//判断TrialUser中是否存在 不存在就插入
|
|
if (!await _trialUserRepository.AnyAsync(t => t.TrialId == trialId && t.UserId == userId))
|
|
{
|
|
|
|
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId });
|
|
|
|
|
|
await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SystemUserId == userId,
|
|
u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.UserConfirmed });
|
|
|
|
|
|
await _userRepository.SaveChangesAsync();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (joinTrialCommand.SiteId == null)
|
|
{
|
|
return ResponseOutput.NotOk("传参有误, SiteId必传");
|
|
}
|
|
|
|
if (!_trialUserRepository.Where(t => t.TrialId == trialId && t.UserId == userId).Any())
|
|
{
|
|
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId });
|
|
|
|
await _trialSiteUseRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId =(Guid) joinTrialCommand.SiteId, UserId = userId });
|
|
}
|
|
}
|
|
|
|
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
|
|
|
|
|
|
return ResponseOutput.Ok();
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|