public async Task Transfer_between_accounts_negative_value() { //Arrange var transferenciaController = new TransferenciaController(_context); var transferencia = new TransferenciaDTO() { Origem = new ContaCorrente() { Agencia = "5207", NumeroConta = "000000000015489", Digito = "02" }, Destino = new ContaCorrente() { Agencia = "9512", NumeroConta = "000000000026841", Digito = "12" }, Valor = -300 }; //Act var actionResult = await transferenciaController.EnviaDinheiroAsync(transferencia) as BadRequestResult; //Assert Assert.Equal(actionResult.StatusCode, (int)System.Net.HttpStatusCode.BadRequest); }
public JsonResult GetById(TransferenciaDTO transferenciaDTO) { var jsonResponse = new JsonResponse { Success = true }; try { var transferencia = MapperHelper.Map <TransferenciaDTO, Transferencia>(transferenciaDTO); var transferenciaByDTO = TransferenciaBL.Instancia.GetById(transferencia); if (transferenciaByDTO != null) { transferenciaDTO = MapperHelper.Map <Transferencia, TransferenciaDTO>(transferenciaByDTO); jsonResponse.Data = transferenciaDTO; } else { jsonResponse.Warning = true; jsonResponse.Message = Mensajes.UsuarioNoExiste; } } catch (Exception ex) { LogError(ex); jsonResponse.Success = false; jsonResponse.Message = Mensajes.IntenteloMasTarde; } return(Json(jsonResponse)); }
public JsonResult ListarNotaSalidaDetalle(TransferenciaDTO transferenciaDTO) { var jsonResponse = new JsonResponse { Success = true }; try { var transferencia = MapperHelper.Map <TransferenciaDTO, Transferencia>(transferenciaDTO); var transferenciadetalleList = TransferenciaBL.Instancia.GetAll(transferencia); var transferenciadetalleDTOList = MapperHelper.Map <IEnumerable <TransferenciaDetalle>, IEnumerable <TransferenciaDetalleDTO> >(transferenciadetalleList); if (transferenciadetalleDTOList != null) { jsonResponse.Data = transferenciadetalleDTOList; jsonResponse.Message = "datos encontrados"; } } catch (Exception ex) { LogError(ex); ViewBag.MessageError = ex.Message; jsonResponse.Data = new List <UsuarioPaginationModel>(); } return(Json(jsonResponse)); }
public JsonResult Update(TransferenciaDTO transferenciaDTO) { var jsonResponse = new JsonResponse { Success = true }; try { var transferencia = MapperHelper.Map <TransferenciaDTO, Transferencia>(transferenciaDTO); DateTime.ParseExact(transferencia.trfc_sfecha_transf_, "dd/mm/yyyy", CultureInfo.InvariantCulture).ToString(appSettings.FormatoFecha); int resultado = 0; resultado = TransferenciaBL.Instancia.Update(transferencia); if (resultado > 0) { jsonResponse.Title = Title.TitleActualizar; jsonResponse.Message = Mensajes.ActualizacionSatisfactoria; } if (resultado == -2) { jsonResponse.Title = Title.TitleAlerta; jsonResponse.Warning = true; jsonResponse.Message = Mensajes.ActualizacionFallida; } if (resultado == -1) { jsonResponse.Title = Title.TitleAlerta; jsonResponse.Warning = true; jsonResponse.Message = Mensajes.YaExisteRegistro; } LogBL.Instancia.Add(new Log { Accion = Mensajes.Update, Controlador = Mensajes.UsuarioController, Identificador = resultado, Mensaje = jsonResponse.Message, Usuario = transferenciaDTO.UsuarioRegistro, Objeto = JsonConvert.SerializeObject(transferenciaDTO) }); } catch (Exception ex) { LogError(ex); jsonResponse.Success = false; jsonResponse.Title = Title.TitleAlerta; jsonResponse.Message = Mensajes.YaExisteRegistro; LogBL.Instancia.Add(new Log { Accion = Mensajes.Update, Controlador = Mensajes.UsuarioController, Identificador = 0, Mensaje = ex.Message, Usuario = transferenciaDTO.UsuarioRegistro, Objeto = JsonConvert.SerializeObject(transferenciaDTO) }); } return(Json(jsonResponse)); }
public async Task <bool> Transferir(TransferenciaDTO transferenciaDTO) { if (await ObtenerSaldo(transferenciaDTO)) { var DebitarA = new Movimiento { NroCuenta = transferenciaDTO.TransferirDeNroCuenta, Fecha = DateTime.UtcNow, Tipo = TipoMovimiento.D.ToString(), Importe = transferenciaDTO.Importe, }; _db.Movimiento.Add(DebitarA); await _spRepository.DebitarSaldo(transferenciaDTO.Importe, transferenciaDTO.TransferirDeNroCuenta); var AbonarA = new Movimiento { NroCuenta = transferenciaDTO.NroCuentaATransferir, Fecha = DateTime.UtcNow, Tipo = TipoMovimiento.A.ToString(), Importe = transferenciaDTO.Importe, }; _db.Movimiento.Add(AbonarA); await _db.SaveChangesAsync(); await _spRepository.AbonarSaldo(transferenciaDTO.Importe, transferenciaDTO.NroCuentaATransferir); return(true); } return(false); }
public JsonResult Delete(TransferenciaDTO transferenciaDTO) { var jsonResponse = new JsonResponse { Success = true }; try { var transferencia = MapperHelper.Map <TransferenciaDTO, Transferencia>(transferenciaDTO); int resultado = TransferenciaBL.Instancia.Delete(transferencia); if (resultado > 0) { jsonResponse.Title = Title.TitleEliminar; jsonResponse.Message = Mensajes.EliminacionSatisfactoria; } else { jsonResponse.Title = Title.TitleAlerta; jsonResponse.Warning = true; jsonResponse.Message = Mensajes.EliminacionFallida; } LogBL.Instancia.Add(new Log { Accion = Mensajes.Delete, Controlador = Mensajes.UsuarioController, Identificador = resultado, Mensaje = jsonResponse.Message, Usuario = transferenciaDTO.UsuarioRegistro, Objeto = JsonConvert.SerializeObject(transferenciaDTO) }); } catch (Exception ex) { LogError(ex); jsonResponse.Success = false; jsonResponse.Title = Title.TitleAlerta; jsonResponse.Message = Mensajes.IntenteloMasTarde; LogBL.Instancia.Add(new Log { Accion = Mensajes.Delete, Controlador = Mensajes.UsuarioController, Identificador = 0, Mensaje = ex.Message, Usuario = transferenciaDTO.UsuarioRegistro, Objeto = JsonConvert.SerializeObject(transferenciaDTO) }); } return(Json(jsonResponse)); }
private async Task <bool> ObtenerSaldo(TransferenciaDTO transferenciaDTO) { var cuenta = await _db.Cuenta.FirstOrDefaultAsync(x => x.NroCuenta == transferenciaDTO.TransferirDeNroCuenta); decimal?saldo = cuenta.Saldo; if (saldo > transferenciaDTO.Importe) { return(true); } else { return(false); } }
public IHttpActionResult DeleteTransferencia(string crDestino, string funcMatricula) { Transferencia transferencia = db.Transferencia.Find(crDestino, funcMatricula); if (transferencia == null) { return(NotFound()); } TransferenciaDTO t = new TransferenciaDTO(transferencia); db.Transferencia.Remove(transferencia); db.SaveChanges(); return(Ok(t)); }
public void Deve_Retornar_Mensagem_Valor_Nao_Informado() { var transferencia = new TransferenciaDTO { AgenciaDestino = 1542, AgenciaOrigem = 1643, BancoDestino = 33, BancoOrigem = 33, ContaDestino = 113856, ContaOrigem = 114856 }; _contaService.Transferir(transferencia); Assert.True(_notificacaoEvent.ExistemNotificacoes()); }
public ActionResult RealizarTransferencia(TransferenciaDTO transferenciaDTO) { try { var result = _contaCorrenteService.RealizarTransferencia(transferenciaDTO); return(Ok(result)); } catch (AppNotFoundException ex) { return(NotFound(ex.Message)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <ActionResult> Transferir([FromBody] TransferenciaDTO transferenciaDTO) { try { var realizarTransferencia = await _movimientoRepository.Transferir(transferenciaDTO); if (!realizarTransferencia) { return(StatusCode(StatusCodes.Status304NotModified, "No se pudo realizar la transferencia Saldo insuficiente")); } return(Ok()); } catch { return(StatusCode(StatusCodes.Status500InternalServerError, "Data Base Failure")); } }
public void Deve_Debitar_Valor_Conta() { var transferencia = new TransferenciaDTO { AgenciaDestino = 1542, AgenciaOrigem = 1643, BancoDestino = 33, BancoOrigem = 33, ContaDestino = 113856, ContaOrigem = 114856, Valor = 1000 }; var valorInicial = _conta2.Saldo; _contaService.Transferir(transferencia); Assert.True(_conta2.Saldo < valorInicial); }
public async Task <IActionResult> Post(TransferenciaDTO transferencia) { var userId = User.FindFirstValue(ClaimTypes.Name); ContaCorrente cc_user = await _repo.GetContaByAgenciaConta(transferencia.Agencia_user, transferencia.Conta_user); ContaCorrente cc_trans = await _repo.GetContaByAgenciaConta(transferencia.Agencia_transferencia, transferencia.Conta_transferencia); if (cc_user == null) { return(BadRequest("Não existe a conta na agência inserida!")); } if (cc_trans == null) { return(BadRequest("Não existe a conta na agência do beneficiário!")); } if (cc_user.UserId != int.Parse(userId)) { return(Unauthorized()); } if (cc_user.Saldo <= 0) { return(Ok("Saldo negativo.")); } if (transferencia.Valor <= 0) { return(BadRequest("O valor da transferência terá que ser maior que zero!")); } cc_user.Saldo -= transferencia.Valor; cc_trans.Saldo += transferencia.Valor; _repo.Update(cc_user); _repo.Update(cc_trans); if (await _repo.SaveChangeAsync()) { return(Ok("Novo saldo: R$" + cc_user.Saldo)); } return(BadRequest()); }
public async Task <IActionResult> EnviaDinheiroAsync([FromBody] TransferenciaDTO transferencia) { if (!ModelState.IsValid) { return(BadRequest()); } try { transferencia.Origem.Id = _context.ContasCorrentes.Where(x => x.Agencia == transferencia.Origem.Agencia && x.NumeroConta == transferencia.Origem.NumeroConta && x.Digito == transferencia.Origem.Digito).FirstOrDefault().Id; transferencia.Destino.Id = _context.ContasCorrentes.Where(x => x.Agencia == transferencia.Destino.Agencia && x.NumeroConta == transferencia.Destino.NumeroConta && x.Digito == transferencia.Destino.Digito).FirstOrDefault().Id; var saldo = _context.Lancamentos.Where(x => x.ContaCorrenteId == transferencia.Origem.Id) .Sum(x => x.Valor); if (saldo <= 0 || transferencia.Valor <= 0 || saldo < transferencia.Valor) { return(BadRequest()); } var lancamentoDebito = new Lancamento() { Id = Guid.NewGuid(), ContaCorrenteId = transferencia.Origem.Id, TipoOperacao = "Debito", Valor = -transferencia.Valor, DataOperacao = DateTime.UtcNow }; var lancamentoCredito = new Lancamento() { Id = Guid.NewGuid(), ContaCorrenteId = transferencia.Destino.Id, TipoOperacao = "Credito", Valor = transferencia.Valor, DataOperacao = DateTime.UtcNow }; var lancamentos = new List <Lancamento>() { lancamentoDebito, lancamentoCredito }; var transfer = _context.Lancamentos.AddRangeAsync(lancamentos).IsCompletedSuccessfully; if (!transfer) { return(BadRequest()); } await _context.SaveChangesAsync(); return(Ok()); } catch (Exception) { return(BadRequest()); } }
public string RealizarTransferencia(TransferenciaDTO transferenciaDTO) { try { var contaCorrenteOrigem = _unitOfWork.ContaCorrenteRepository.GetContaCorrenteById(transferenciaDTO.ContaCorrenteOrigem); if (contaCorrenteOrigem == null) { throw new AppNotFoundException("Conta corrente de origem não encontrada"); } var contaCorrenteDestino = _unitOfWork.ContaCorrenteRepository.GetContaCorrenteById(transferenciaDTO.ContaCorrenteDestino); if (contaCorrenteDestino == null) { throw new AppNotFoundException("Conta corrente de destino não encontrada"); } var guid = Guid.NewGuid(); var lancamentoDebito = new Lancamento { ContaCorrente = transferenciaDTO.ContaCorrenteOrigem, Valor = transferenciaDTO.Valor, Tipo = 'D', IdTransacao = guid }; _unitOfWork.ContaCorrenteRepository.InserirLancamento(lancamentoDebito); var lancamentoCredito = new Lancamento { ContaCorrente = transferenciaDTO.ContaCorrenteDestino, Valor = transferenciaDTO.Valor, Tipo = 'C', IdTransacao = guid }; _unitOfWork.ContaCorrenteRepository.InserirLancamento(lancamentoCredito); contaCorrenteOrigem.Debitar(transferenciaDTO.Valor); _unitOfWork.ContaCorrenteRepository.AtualizarContaCorrente(contaCorrenteOrigem); contaCorrenteDestino.Creditar(transferenciaDTO.Valor); _unitOfWork.ContaCorrenteRepository.AtualizarContaCorrente(contaCorrenteDestino); _unitOfWork.Commit(); return("Transferencia realizada com sucesso!"); } catch (AppNotFoundException ex) { throw ex; } catch (Exception ex) { throw new Exception("Erro ao realizar tranferência", ex); } }
public void Transferir(TransferenciaDTO transferenciaDTO) { var notificacoes = transferenciaDTO.Validar(); if (notificacoes.Any()) { NotificarErroNegocio(notificacoes); return; } var contaOrigem = _contaRepository.Buscar ( transferenciaDTO.BancoOrigem, transferenciaDTO.ContaOrigem, transferenciaDTO.AgenciaOrigem ); if (contaOrigem == null) { NotificarErroNegocio("Conta de origem não encontrada"); return; } var contaDestino = _contaRepository.Buscar ( transferenciaDTO.BancoDestino, transferenciaDTO.ContaDestino, transferenciaDTO.AgenciaDestino ); if (contaDestino == null) { NotificarErroNegocio("Conta de Destino não encontrada"); return; } if (!contaOrigem.Debitar(transferenciaDTO.Valor)) { NotificarErroNegocio("Saldo insuficiente para completar a operação"); return; } contaDestino.Creditar(transferenciaDTO.Valor); var lancamento = new Lancamento { ContaDestino = contaDestino, ContaOrigem = contaOrigem, Data = DateTime.Now, Valor = transferenciaDTO.Valor }; _contaRepository.Atualizar(contaOrigem); _contaRepository.Atualizar(contaDestino); _contaRepository.AdicionarLancamento(lancamento); try { _unitOfWork.Commit(); } catch (Exception ex) { NotificarErroInterno(ex.Message); } }