public async Task <IActionResult> MakeTransactionRequest([FromBody] RequestWalletTransactionDto model) { try { var nWallet = await _walletTransactionService.MakeTransactionRequest(model); return(Ok(nWallet)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public async Task <long> MakeTransactionRequest(RequestWalletTransactionDto model) { #region Initiating Currency Transaction Request try { WalletTransaction nMakeTransaction = new WalletTransaction(); var checkTransaction = await _weGOPAYDbContext.Wallet.Where(x => x.UserId == model.UserId).FirstOrDefaultAsync(); if ((int)model.RequestCurrency == (int)CurrencyEnum.Naira && model.RequestAmount <= checkTransaction.NairaBalance) { nMakeTransaction = new WalletTransaction { UserId = model.UserId, Amount = model.RequestAmount, RequestCurrency = (int)CurrencyEnum.Naira, ResponseCurrency = (int)model.ResponseCurrency, TransactionStatus = (int)TransactionStatus.Requested, }; } if ((int)model.RequestCurrency == (int)CurrencyEnum.USDollar && model.RequestAmount <= checkTransaction.NairaBalance) { nMakeTransaction = new WalletTransaction { UserId = model.UserId, Amount = model.RequestAmount, RequestCurrency = (int)CurrencyEnum.USDollar, ResponseCurrency = (int)model.ResponseCurrency, TransactionStatus = (int)TransactionStatus.Requested, }; } if ((int)model.RequestCurrency == (int)CurrencyEnum.BritishPound && model.RequestAmount <= checkTransaction.NairaBalance) { nMakeTransaction = new WalletTransaction { UserId = model.UserId, Amount = model.RequestAmount, RequestCurrency = (int)CurrencyEnum.BritishPound, ResponseCurrency = (int)model.ResponseCurrency, TransactionStatus = (int)TransactionStatus.Requested, }; } if ((int)model.RequestCurrency == (int)CurrencyEnum.Euro && model.RequestAmount <= checkTransaction.NairaBalance) { nMakeTransaction = new WalletTransaction { UserId = model.UserId, Amount = model.RequestAmount, RequestCurrency = (int)CurrencyEnum.Euro, ResponseCurrency = (int)model.ResponseCurrency, TransactionStatus = (int)TransactionStatus.Requested, }; } if ((int)model.RequestCurrency == (int)CurrencyEnum.Yen && model.RequestAmount <= checkTransaction.NairaBalance) { nMakeTransaction = new WalletTransaction { UserId = model.UserId, Amount = model.RequestAmount, RequestCurrency = (int)CurrencyEnum.Yen, ResponseCurrency = (int)model.ResponseCurrency, TransactionStatus = (int)TransactionStatus.Requested, }; } await _weGOPAYDbContext.WalletTransaction.AddAsync(nMakeTransaction); await _weGOPAYDbContext.SaveChangesAsync(); return(nMakeTransaction.Id); } catch (Exception ex) { throw ex; } #endregion }