private async Task <(FundedWalletRespnse entity, string Message)> FundNoob(FundedWalletRespnse fundedResponse, string symbolCaps, FXUser userInDb, FundWalletModel model, List <Wallet> uwallet) { //var getUserWallet = await _walletrepo.FirstOrDefault(t => t.UserId == userInDb.Id); var getUserWallet = uwallet.FirstOrDefault(r => r.UserId == userInDb.Id); string message = ""; if (getUserWallet == null) { return(entity : null, Message : $"WALLET NOT FOUND."); } if (getUserWallet.CurrencySymbol == symbolCaps) { var walletdto = getUserWallet; walletdto.GrandAmount += model.Amount; walletdto.IsCurrencyConverted = true; walletdto.ActionTaken = $"Funded Wallet by {userInDb.Username}."; fundedResponse.AcctDigits = getUserWallet.AcctDigits; // This New Amount is the proposed amount user will have after approval. fundedResponse.NewAmountAfterApproval = walletdto.GrandAmount; // Noob User still sees previous amount fundedResponse.Amount = getUserWallet.Amount; fundedResponse.UserIdToFund = userInDb.Id; if (userInDb.Role == UserRoles.Admin) { message = $"Successful. wallet is funded."; fundedResponse.IsApproved = true; walletdto.Amount = walletdto.GrandAmount; } // Update wallet in db when admin has approved await _walletrepo.Update(walletdto); message = $"Success. Account funded in {getUserWallet.CurrencySymbol}. You just need wait for admin to approve funding."; return(entity : fundedResponse, Message : message); } try { var(conversionresult, info) = await _currency.CurrencyConversion(symbolCaps, getUserWallet.CurrencySymbol, model.Amount); if (conversionresult == null) { return(entity : null, Message : $"An error occurred."); } var walletdto = getUserWallet; walletdto.GrandAmount += conversionresult.Result; walletdto.IsCurrencyConverted = true; walletdto.ActionTaken = $"Funded Wallet by {userInDb.Username}."; log.LogInformation($"{conversionresult.Result}"); await _walletrepo.Update(walletdto); fundedResponse.AcctDigits = getUserWallet.AcctDigits; // This New Amount is the proposed amount user will have after approval. fundedResponse.NewAmountAfterApproval = walletdto.GrandAmount; // Noob User still sees previous amount before approval fundedResponse.Amount = getUserWallet.Amount; fundedResponse.UserIdToFund = userInDb.Id; if (userInDb.Role == UserRoles.Admin) { message = $"Successful. wallet is funded. And approved."; fundedResponse.IsApproved = true; } message = $"Success. Account funded in {getUserWallet.CurrencySymbol}. You just need wait for admin to approve funding."; return(entity : fundedResponse, Message : message); } catch (Exception e) { log.LogError($"An error occurred. {e.Message}"); } return(entity : null, Message : $"An error occurred. out side if block"); }