示例#1
0
        public Result AtualizarConta(AtualizarContaCommand command)
        {
            try
            {
                var result = command.Validate();
                if (result.IsFailure)
                {
                    return(result);
                }

                var contaOrNothing = _repository.ObterConta(command.Codigo);

                if (contaOrNothing.HasNoValue)
                {
                    return(Result.Fail("Não existe uma conta com o código especificado"));
                }

                var conta = contaOrNothing.Value;
                conta.Renomear(result.Value.Nome);
                conta.AtualizarIcone(result.Value.Icone);

                _repository.AtualizarConta(conta);

                return(Result.Ok());
            }
            catch (Exception ex)
            {
                return(Result.Fail("Falha ao atualizar conta"));
            }
        }
        public async Task <bool> Handle(AtualizarContaCommand request, CancellationToken cancellationToken)
        {
            var baseTitular = _contaRepository.ObterTitularDaContaPorIdConta(request.Id).Result;
            var conta       = ContaCorrente.ContaFactory.AtualizarConta(request.Id, baseTitular.Id, baseTitular, request.Numero, request.Saldo);

            if (!ExecutarValidacao(conta))
            {
                return(false);
            }

            await _contaRepository.Adicionar(conta);

            return(true);
        }
        public void Handle(AtualizarContaCommand message)
        {
            if (!CommandValido(message))
            {
                return;
            }
            Conta conta = new Conta(message.Responsavel, message.Documento, message.NomeFantasia,
                                    new Core_AppStyle_Conta(message.LogoUri, message.Sobre, message.Informacoes, message.Ajuda));

            _contaRepository.Atualizar(conta);
            if (!Commit())
            {
                return;
            }
        }
示例#4
0
        public void Handle(AtualizarContaCommand command)
        {
            #region Validacoes de negócio
            // Verificar se conta cadastrada
            if (_contaRepository.FindById(command.Id) == null)
            {
                command.AddNotification("Conta", "Conta não existente 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 = Conta.ContaFactory.NovaContaCompleta(
                command.Id,
                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.DeletarParcelasConta(conta.Id);
            _contaRepository.AtualizarConta(conta);

            //Enviar e-mail de conta cadastrada
            _emailService.Enviar("Desenvolvedor", "*****@*****.**", "Conta Atualizada", "Conta Atuaizada com sucesso");

            if (Commit())
            {
                //Dispara evento de processo concluido
                _bus.RaiseEvent(new ContaAtualizadaEvent(conta.Id, conta.Nome, conta.ValorTotal, conta.Pago, conta.QtdParcelas, conta.DataProxPgto, conta.Parcelado, conta.DataPrimeiroPgto, conta.FrequenciaDiaPgto, conta.PorcVariacaoMensal));
            }
            #endregion
        }
        public ActionResult Put([FromBody] AtualizarContaCommand command)
        {
            var response = _service.AtualizarConta(command);

            return(Result(response));
        }