public ICommandResult Handle(AssinaturaBoletoCommand 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 ja esta cadastrado if (estudanteRepository.DocumentoExiste(command.Documento)) { AddNotification("Documento", "Este CPF já está em uso"); } //verificar se email ja esta cadastrado if (estudanteRepository.EmailExiste(command.Documento)) { AddNotification("Email", "Este E-mail já está em uso"); } //gerar os vos var nome = new Nome(command.PrimeiroNome, command.UltimoNome); 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 estudante = new Estudante(nome, documento, email); var assinatura = new Assinatura(DateTime.Now.AddMonths(1)); var pagamento = new Boleto( command.CodigoBarras, command.NumeroBoleto, command.DataPagamento, command.DataExpiracao, command.Total, command.TotalPago, command.Pagador, new Documento(command.PagadorDocumento, command.PagadorDocumentoTipo), endereco, email); //relacionamentos assinatura.AdicionarPagamento(pagamento); estudante.AdicionarAssinatura(assinatura); //agrupar as validações AddNotifications(nome, documento, email, endereco, estudante, assinatura, pagamento); //salvar as informações estudanteRepository.CriarAssinatura(estudante); //enviar email de boas vindas emailService.Send(estudante.Nome.ToString(), estudante.Email.EnderecoEmail, "Bem vindo ao serviço de assinatura", "Sua assinatura foi criada com sucesso."); //retornar as informações return(new CommandResult(true, "Assinatura realizada com sucesso.")); }
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")); }