public async Task CriarConta(string titular, int numeroConta, double saldoInicial) { await _contaRepository.CriarConta(new Conta() { UserID = titular, NumeroConta = numeroConta, Saldo = saldoInicial }); }
public void Handle(CriarContaCommand command) { #region Fail fast Validations ////Fail fast validations //command.Validate(); //if (command.Invalid) //{ // NotificarValidacoesErro() //} #endregion #region Validacoes de negócio // Verificar se nome conta ja esta cadastrada if (_contaRepository.NomeContaExiste(command.Nome)) { command.AddNotification("Nome", "Nome da conta já cadastrado no banco"); } if (command.Invalid) { NotificarValidacoesErro(command.Notifications); return; } //TODO: verificar se o Cliente que está alterando, é o dono da conta #endregion #region Validacoes de dominio //gerar os VOs //rellacionamentos //caso exista VOs com validações, deve-se lembrar de agrega-los a entidade e suas validações as do handler //como os VOs de conta foram criados para "separar" as responsabilidades de conta e a conta é a raiz de agregação das mesmas, ////deixei as validações da mesma toda na entidade var conta = new Conta( command.Nome, command.ValorTotal, command.QtdParcelas, command.DiaPrimeiroPgto, command.FrequenciaDiaPgto, command.PorcVariacaoMensal, command.UsuarioId ); //Aplicar as validacoes command.AddNotifications(conta); //Checar validacoes if (command.Invalid) { NotificarValidacoesErro(command.Notifications); return; } #endregion #region Acoes handle //Salvar informacoes _contaRepository.CriarConta(conta); //Enviar e-mail de conta cadastrada _emailService.Enviar("Desenvolvedor", "*****@*****.**", "Conta Cadastrada", "Conta cadastrada com sucesso"); if (Commit()) { //Dispara evento de processo concluido _bus.RaiseEvent(new ContaCriadaEvent(conta.Id, conta.Nome, conta.ValorTotal, conta.Pago, conta.QtdParcelas, conta.DataProxPgto, conta.Parcelado, conta.DataPrimeiroPgto, conta.FrequenciaDiaPgto, conta.PorcVariacaoMensal)); } #endregion }