修改一版

This commit is contained in:
he
2023-02-09 15:08:47 +08:00
parent cb78bd6a66
commit 6b0eed3fb7
6 changed files with 204 additions and 4 deletions
@@ -48,7 +48,44 @@ namespace IRaCIS.Core.Application.ViewModel
}
public class GetTrialEmailSetOutDto
{
public Guid TrialId { get; set; }
/// <summary>
/// 发件箱账号
/// </summary>
public string EmailFromEmail { get; set; } = string.Empty;
/// <summary>
/// 发件人
/// </summary>
public string EmailFromName { get; set; } = string.Empty;
/// <summary>
/// 密码/授权码
/// </summary>
public string EmailAuthorizationCode { get; set; } = string.Empty;
/// <summary>
/// SMTP服务器
/// </summary>
public string EmailSMTPServerAddress { get; set; } = string.Empty;
/// <summary>
/// SMTP端口
/// </summary>
public int? EmailSMTPServerPort { get; set; }
}
public class SetTrialEmailInDto : GetTrialEmailSetOutDto
{
}
public class GetTrialEmailSetInDto
{
public Guid TrialId { get; set; }
}
///<summary>TrialEmailNoticeConfigQuery 列表查询参数模型</summary>
public class TrialEmailNoticeConfigQuery
@@ -26,17 +26,79 @@ namespace IRaCIS.Core.Application.Service
{
private readonly IRepository<TrialEmailNoticeConfig> _trialEmailNoticeConfigRepository;
private readonly IRepository<Trial> _trialRepository;
public IRepository<VisitTask> _visitTaskRepository { get; }
public IRepository<TrialUser> _trialUserRepository { get; }
public TrialEmailNoticeConfigService(IRepository<TrialEmailNoticeConfig> trialEmailNoticeConfigRepository, IRepository<VisitTask> visitTaskRepository, IRepository<TrialUser> trialUserRepository)
public TrialEmailNoticeConfigService(IRepository<TrialEmailNoticeConfig> trialEmailNoticeConfigRepository, IRepository<VisitTask> visitTaskRepository,
IRepository<Trial> trialRepository,
IRepository<TrialUser> trialUserRepository)
{
_trialEmailNoticeConfigRepository = trialEmailNoticeConfigRepository;
_visitTaskRepository = visitTaskRepository;
this._trialRepository = trialRepository;
_trialUserRepository = trialUserRepository;
}
/// <summary>
/// 设置项目邮箱
/// </summary>
/// <param name="inDto"></param>
/// <returns></returns>
[HttpPost]
public async Task<GetTrialEmailSetOutDto> GetTrialEmailSet(GetTrialEmailSetInDto inDto)
{
return await _trialRepository.Where(x => x.Id == inDto.TrialId).Select(x => new GetTrialEmailSetOutDto()
{
TrialId = inDto.TrialId,
EmailAuthorizationCode = x.EmailAuthorizationCode,
EmailSMTPServerAddress = x.EmailSMTPServerAddress,
EmailFromEmail = x.EmailFromEmail,
EmailFromName = x.EmailFromEmail,
EmailSMTPServerPort = x.EmailSMTPServerPort
}).FirstNotNullAsync();
}
public async Task<IResponseOutput> SetTrialEmail(SetTrialEmailInDto inDto)
{
await TestEmailConfigAsync(new TrialEmailNoticeConfigAddOrEdit() {
AuthorizationCode=inDto.EmailAuthorizationCode,
FromEmail=inDto.EmailFromEmail,
FileName=inDto.EmailFromName,
SMTPServerAddress=inDto.EmailSMTPServerAddress,
SMTPServerPort= inDto.EmailSMTPServerPort.Value,
});
await _trialRepository.UpdatePartialFromQueryAsync(inDto.TrialId, x => new Trial()
{
EmailFromEmail = inDto.EmailFromEmail,
EmailFromName = inDto.EmailFromName,
EmailAuthorizationCode = inDto.EmailAuthorizationCode,
EmailSMTPServerAddress = inDto.EmailSMTPServerAddress,
EmailSMTPServerPort = inDto.EmailSMTPServerPort
});
await _trialEmailNoticeConfigRepository.BatchUpdateNoTrackingAsync(x => x.TrialId == inDto.TrialId, x => new TrialEmailNoticeConfig()
{
AuthorizationCode = inDto.EmailAuthorizationCode,
FromEmail = inDto.EmailFromEmail,
FileName = inDto.EmailFromName,
SMTPServerAddress = inDto.EmailSMTPServerAddress,
SMTPServerPort = inDto.EmailSMTPServerPort.Value,
});
await _trialRepository.SaveChangesAsync();
return ResponseOutput.Ok();
}
/// <summary>
/// 同步系统配置的文档到想项目中
@@ -750,6 +812,7 @@ namespace IRaCIS.Core.Application.Service
var trialEmailNoticeConfigQueryable = _trialEmailNoticeConfigRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.CriterionTypeEnum != null, t => t.CriterionTypeEnum == inQuery.CriterionTypeEnum)
.WhereIf(inQuery.CriterionTypeEnum == null, t => t.CriterionTypeEnum == null)
.WhereIf(inQuery.BusinessScenarioEnum != null, t => t.BusinessScenarioEnum == inQuery.BusinessScenarioEnum)
.ProjectTo<TrialEmailNoticeConfigView>(_mapper.ConfigurationProvider);