예제 #1
0
        public IActionResult Adicionar([FromBody] Transferencia transferencia)
        {
            if (transferencia.Valor <= 0.00M)
            {
                return(StatusCode(404, $"Transferência não realizada, valor da transferência deve ser maior que R$ 0,00."));
            }
            if (transferencia.IdentificadorOrigem == transferencia.IdentificadorDestino)
            {
                return(StatusCode(404, $"Transferência não realizada, o identificador origem e destino não pode ser o mesmo {transferencia.IdentificadorOrigem}."));
            }
            if (!_correntistaRepository.Existe(transferencia.IdentificadorOrigem))
            {
                return(StatusCode(404, $"Transferência não realizada, favor verificar se existe o identificador origem {transferencia.IdentificadorOrigem} cadastrado."));
            }
            if (!_correntistaRepository.Existe(transferencia.IdentificadorDestino))
            {
                return(StatusCode(404, $"Transferência não realizada, favor verificar se existe o identificador destino {transferencia.IdentificadorDestino} cadastrado."));
            }

            try
            {
                var saldoAtual = _contaRepository.BuscaSaldoConta(transferencia.IdentificadorOrigem);
                if (saldoAtual < transferencia.Valor)
                {
                    return(StatusCode(404, $"Transferência não realizada, saldo insuficiente para realizar a transação. Saldo conta origem R$ {saldoAtual}."));
                }

                _transferenciaRepository.Adicionar(transferencia);

                _contaRepository.AtualizarSaldoConta(transferencia.IdentificadorOrigem);
                _contaRepository.AtualizarSaldoConta(transferencia.IdentificadorDestino);

                return(Ok($"Transferência da conta de origem {transferencia.IdentificadorOrigem} para conta destino {transferencia.IdentificadorDestino} com o valor de R$ {transferencia.Valor}, foi realizada com sucesso."));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, $"Erro interno no servidor: {ex.Message.ToString()}"));
            }
        }