public bool EnviarEmail(Prestacao prestacao, PrestacaoStatuses statusAtual, string emailTo) { try { var mail = new MailMessage { From = new MailAddress(_emailSettings.FromEmail, "PrestaSys") }; mail.To.Add(new MailAddress(emailTo)); mail.Subject = "PrestaSys - Prestação de Contas - " + prestacao.Titulo; mail.Body = GetEmailBody(prestacao, statusAtual); mail.IsBodyHtml = true; mail.Priority = MailPriority.High; using (var smtp = new SmtpClient(_emailSettings.PrimaryDomain, _emailSettings.PrimaryPort)) { smtp.Credentials = new NetworkCredential(_emailSettings.UsernameEmail, _emailSettings.UsernamePassword); smtp.EnableSsl = true; if (!_environment.IsDevelopment()) { smtp.Send(mail); } return(true); } } catch (Exception) { return(false); } }
public int RejeitarPrestacao(int prestacaoId, string justificativa, PrestacaoStatuses tipoAprovacao) { var prestacao = _repository.GetById(prestacaoId); _prestacaoStatusActionsFactory.CreateObject(tipoAprovacao).RejeitarPrestacao(prestacao, justificativa); var emailTo = GetEmailTo(prestacao, (PrestacaoStatuses)prestacao.StatusId); _emailService.EnviarEmail(prestacao, (PrestacaoStatuses)prestacao.StatusId, emailTo); return(_repository.Update(prestacao)); }
public IPrestacaoStatusActions CreateObject(PrestacaoStatuses status) { // ReSharper disable once SwitchStatementMissingSomeCases switch (status) { case PrestacaoStatuses.EmAprovacaoOperacional: return(new AprovacaoOperacionalActions(_repository, _usuarioService)); case PrestacaoStatuses.EmAprovacaoFinanceira: return(new AprovacaoFinanceiraActions(_repository, _usuarioService)); case PrestacaoStatuses.Finalizada: return(new FinalizadaActions(_repository, _usuarioService)); case PrestacaoStatuses.Rejeitada: return(new RejeitadaActions(_repository, _usuarioService)); } throw new NotSupportedException(); }
public void PrestacaoIRejeitarPrestacaoShouldBeCalledCorrectlyWhenInAprovacaoFinanceira() { // Arrange const string titulo = "Titulo"; const string email = "*****@*****.**"; const int id = 1; const PrestacaoStatuses tipoAprovacao = PrestacaoStatuses.EmAprovacaoFinanceira; const string justificativa = "Teste Justificativa"; var prestacao = new Prestacao { Id = id, Titulo = titulo, EmitenteId = 1, AprovadorId = 2, AprovadorFinanceiroId = 3, StatusId = (int)PrestacaoStatuses.EmAprovacaoFinanceira }; var prestacaoRepository = Mock.Of <IPrestacaoRepository>(m => m.GetById(id) == prestacao); var factory = Mock.Of <IPrestacaoStatusActionsFactory>(m => m.CreateObject(tipoAprovacao).GetEmailTo(prestacao) == email); Mock.Get(factory).Setup(m => m.CreateObject(tipoAprovacao).RejeitarPrestacao(prestacao, justificativa)) .Callback(() => prestacao.StatusId = (int)PrestacaoStatuses.Rejeitada); var emailHelper = Mock.Of <IEmailService>(m => m.EnviarEmail(prestacao, (PrestacaoStatuses)prestacao.StatusId, email)); var prestacaoService = new PrestacaoService(prestacaoRepository, emailHelper, factory); // Act prestacaoService.RejeitarPrestacao(prestacao.Id, justificativa, tipoAprovacao); // Assert Mock.Get(prestacaoRepository).Verify(m => m.Update(prestacao), Times.Once); Mock.Get(factory).Verify(m => m.CreateObject(tipoAprovacao).GetEmailTo(prestacao), Times.Once); Mock.Get(emailHelper).Verify(m => m.EnviarEmail(prestacao, (PrestacaoStatuses)prestacao.StatusId, email), Times.Once); prestacao.StatusId.Should().Be((int)PrestacaoStatuses.Rejeitada); }
public IQueryable <Prestacao> GetAllParaAprovacao(int aprovadorId, PrestacaoStatuses tipoAprovacao) { return(_prestacaoStatusActionsFactory.CreateObject(tipoAprovacao).GetAllParaAprovacao(aprovadorId)); }
public string GetEmailTo(Prestacao prestacao, PrestacaoStatuses statusAtual) { return(_prestacaoStatusActionsFactory.CreateObject(statusAtual).GetEmailTo(prestacao)); }
private string GetEmailBody(Prestacao prestacao, PrestacaoStatuses statusAtual) { var text = Template.Replace("{{TITULO}}", prestacao.Titulo); return(_prestacaoStatusActionsFactory.CreateObject(statusAtual).GetEmailBody(text)); }