示例#1
0
        public void DeveRetornarErroQuandoTiverAssinaturaAtiva()
        {
            var subscription = new Assinatura(null);
            var payment      = new PagamentoPaypal(_email, "12345678", DateTime.Now, DateTime.Now.AddDays(5), 10, 10, "Wayne Industries ACME", _document, _address);

            subscription.AdicionarPagamento(payment);
            _student.AdicionaAssinatura(subscription);
            _student.AdicionaAssinatura(subscription);

            //Green(2)
            Assert.IsTrue(_student.Invalid);
            //Red (1)
            //Assert.Fail();
        }
        public IResultadoComando Manipula(ComandoCriarAssinaturaBoleto comando)
        {
            // Fail fast Validations
            comando.Validar();
            if (comando.Invalid)
            {
                AddNotifications(comando);
                return(new ResultadoComando(false, "Não foi possivel realizar sua assinatura"));
            }

            // Verificar se o Documento já está cadastrado
            if (_repositorio.DocumentoExiste(comando.NumeroDoDocumento))
            {
                AddNotification("Documento", "Este CPF já está em uso");
            }

            // Verificar se E-mail já está cadastrado
            if (_repositorio.EmailExiste(comando.Email))
            {
                AddNotification("Email", "Este E-mail já está em uso");
            }

            // Gerar os VOs
            var name     = new Nome(comando.PrimeiroNome, comando.Sobrenome);
            var document = new Documento(comando.NumeroDoDocumento, ETipoDocumento.CPF);
            var email    = new Email(comando.Email);
            var address  = new Endereco(comando.Rua, comando.Numero, null, null, comando.Bairro, comando.Cidade, comando.Estado);

            // Gerar as Entidades
            var student      = new Estudante(name, document, email);
            var subscription = new Assinatura(null);
            var pagamento    = new PagamentoBoleto(comando.CodigoDeBarras, comando.NossoNumero, new Email(comando.Email), comando.DataDePagamento, comando.DataDeExpiracao, comando.Total, comando.TotalPago, comando.Pagante, new Documento(comando.NumeroDoDocumento, ETipoDocumento.CPF), null);

            // Relacionamentos
            subscription.AdicionarPagamento(pagamento);
            student.AdicionaAssinatura(subscription);

            //Agrupar as Validações
            AddNotifications(name, document, email, address, student, subscription, pagamento);

            // Checar as notificações
            if (Invalid)
            {
                return(new ResultadoComando(false, "Não foi possível realizar sua assinatura"));
            }

            // Salvar as Informações
            _repositorio.CriarAssinatura(student);

            // Enviar E-mail de boas vindas
            _servicoDeEmail.Enviar(student.Nome.ToString(), student.Email.Endereco, "Bem vindo à Simasoft Holdings", "Seja bem vindo! Sua assinatura foi criada");

            //Retornar informações
            return(new ResultadoComando(true, "Cadastro efetuado com sucesso!"));
        }