Пример #1
0
        public void DeveRetornarErroQuandoTiverUmaAssinaturaValida()
        {
            var nome     = new Nome("Thiago", "Chagas");
            var email    = new Email("*****@*****.**");
            var doc      = new Documento("05492256769", Dominio.Enums.ETipoDocumento.CPF);
            var endereco = new Endereco("A", "21", "Niteroi", "23130110", "Fonseca", "Rio De Janeiro");

            var estudante = new Estudante(nome, doc, email);

            var assinatura = new Assinatura(null);

            var pagamento = new PayPalPagamento("12345678", DateTime.Now, DateTime.Now.AddDays(5), 10, 10, "Thiago", doc, endereco, email);

            assinatura.InserirPagamento(pagamento);
            estudante.InserirAssinatura(assinatura);
            estudante.InserirAssinatura(assinatura);

            Assert.IsTrue(estudante.Invalid);
        }
Пример #2
0
        public ICommandResult Handle(CriarPayPalAssinaturaCommand command)
        {
            //  se usar Fail Fast Validations usar o código abaixo
            // command.Validar();
            // if(command.Invalid)
            // {
            //     AddNotifications(command);
            //     return new CommandResult(false, "Não foi possível realizar sua assinatura");
            // }

            //  Verifica se o Documento já está cadastrado
            if (_alunoRepository.DocumentoExiste(command.Documento))
            {
                AddNotification("Documento", "Este CPF já está em uso");
            }

            //  Verifica se o E-mail já está cadastrado
            if (_alunoRepository.EmailExiste(command.Email))
            {
                AddNotification("Email", "Este CPF já está em uso");
            }

            // Gerar os VOs
            var nome      = new Nome(command.PrimeiroNome, command.SegundoNome);
            var documento = new Documento(command.Documento, EDocumentoTipo.CPF);
            var email     = new Email(command.Email);
            var endereco  = new Endereco(command.Rua, command.Numero, command.Bairro, command.Cidade, command.Estado, command.Pais, command.Cep);

            //  Gerar as Entidades
            var aluno      = new Aluno(nome, documento, email);
            var assinatura = new Assinatura(DateTime.Now.AddMonths(1));
            //  Tipos de Pagamento só muda a implementação do pagamento
            var pagamento = new PayPalPagamento(
                command.CodigoTransacao,
                command.DataPagamento,
                command.DataExpiracao,
                command.Total,
                command.TotalPago,
                command.Proprietario,
                new Documento(command.DocumentoDonoCartao, command.TipoDocumentoCartao),
                endereco,
                email
                );

            //  Realacionamentos
            assinatura.AdicionarPagamento(pagamento);
            aluno.AdicionarAssinatura(assinatura);

            //  Agrupar as Validações
            AddNotifications(nome, documento, email, endereco, aluno, assinatura, pagamento);

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

            // Salvar as Informações
            _alunoRepository.CriarAssinatura(aluno);

            //  Enviar E-mail de boas vindas
            _emailService.Enviar(aluno.Nome.ToString(), aluno.Email.EmailEnd,
                                 "Bem vindo ao martinsnelson.io",
                                 "Assinatura Criada");

            //  Retornar Informações
            return(new CommandResult(true, "Assinatura realizada com sucesso"));
        }