public ICommandResult Handle(CriarAssinaturaBoletoCommand command) { // Fail Fast Validations command.Validate(); if (command.Invalid) { AddNotifications(command); return(new CommandResult(false, "Não foi possível realizar sua assinatura")); } // Verificar se documento já está cadastrado if (_repository.DocumentoExiste(command.Documento)) { AddNotification("Documemnto", "Este CPF já está em uso"); } // Verificar se e-mail já está cadastrado if (_repository.EmailExiste(command.Email)) { AddNotification("Documemnto", "Este E-mail já está em uso"); } // Gerar os VOs var nome = new Nome(command.PrimeiroNome, command.Sobrenome); var documento = new Documento(command.Documento, ETipoDocumento.CPF); var endereco = new Endereco(command.Logradouro, command.NumeroEndereco, command.Bairro, command.Cidade, command.Estado, command.Pais, command.CEP); var email = new Email(command.Email); // Gerar as entidades var estudante = new Estudante(nome, documento, email); var assinatura = new Assinatura(DateTime.Now.AddMonths(1)); var pagamento = new BoletoPagamento(command.CodigoBarras, command.NossoNumero, command.DataPagamento, command.DataVencimento, command.ValorGerado, command.ValorPago, endereco, command.Pagador, new Documento(command.PagadorDocumento, command.PagadorDocumentoTipo), email); // Relacionamentos assinatura.AdicionarPagamento(pagamento); estudante.AdicionarAssinatura(assinatura); // Aplicar as validacoes AddNotifications(nome, documento, email, endereco, estudante, assinatura, pagamento); // Checar as notificacoes if (Invalid) { return(new CommandResult(false, "Não foi possível realizar sua assinatura")); } // Salvar as informacoes _repository.CriarAssinatura(estudante); // Enviar e-mail de boas vindas // Chamar servico de e-mail // Retornar informacoes return(new CommandResult(true, "Assinatura realizada com sucesso")); }
public ICommandResult Handle(CriarBoletoAssinaturaCommand 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)); var pagamento = new BoletoPagamento( command.CodigoBarra, command.BoletoNumero, 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")); }