Exemplo n.º 1
0
        public async Task <IActionResult> AtualizarConta(int id, AtualizarContaRequest request)
        {
            id = request.Id;
            if (request == null || id == 0)
            {
                return(BadRequest());
            }

            var data     = _mapper.Map <Conta>(request);
            var response = await _contaRepository.AtualizarConta(id, data);

            return(Ok(response));
        }
Exemplo n.º 2
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
        }