예제 #1
0
        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));
 }
예제 #7
0
        private string GetEmailBody(Prestacao prestacao, PrestacaoStatuses statusAtual)
        {
            var text = Template.Replace("{{TITULO}}", prestacao.Titulo);

            return(_prestacaoStatusActionsFactory.CreateObject(statusAtual).GetEmailBody(text));
        }