[factions-banking] Final commit for this branch that has grown out of control. The other stuff will be added in their own respective branches
Some checks failed
build / build (21) (push) Has been cancelled
build / build (21) (pull_request) Has been cancelled

This commit is contained in:
Jkibbels 2025-01-26 22:19:51 -05:00
parent cb91f722e9
commit e164a489b2
3 changed files with 39 additions and 96 deletions

View File

@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Optional;
import jesse.keeblarcraft.BankMgr.BankAccountType.ACCOUNT_TYPE; import jesse.keeblarcraft.BankMgr.BankAccountType.ACCOUNT_TYPE;
import jesse.keeblarcraft.ChatStuff.ChatFormatting; import jesse.keeblarcraft.ChatStuff.ChatFormatting;
@ -64,6 +65,27 @@ public final class BankManager {
} }
} }
// Retrieves balance of the default selected account should that be selected
public void GetBalance(ServerPlayerEntity player) {
if (playerConfigs.containsKey(player.getUuidAsString()) && !playerConfigs.get(player.getUuidAsString()).defaultSelectedAccount.isEmpty()) {
String playerSelectedBank = GetPlayerSelectedBank(player.getUuidAsString());
if (!playerSelectedBank.isEmpty()) {
IndividualBank bank = GetBankByName(playerSelectedBank);
Optional<Integer> amount = bank.GetAccountBalance(AccountNumberGenerator.GetAccountNumberFromId(playerConfigs.get(player.getUuidAsString()).defaultSelectedAccount));
if (amount.isPresent()) {
player.sendMessage(Text.of(ChatMsg.ColorMsg("You have " + amount.get() + " keebucks", ChatFormatting.COLOR_CODE.GREEN)));
} else {
player.sendMessage(Text.of(ChatMsg.ColorMsg("It appears your default account cannot be found at this bank! Re-select your default account maybe?", ChatFormatting.COLOR_CODE.RED)));
}
} else {
player.sendMessage(Text.of(ChatMsg.ColorMsg("You don't have a bank selected first! To use balance you need a default bank AND account selected!", ChatFormatting.COLOR_CODE.RED)));
}
} else {
player.sendMessage(Text.of(ChatMsg.ColorMsg("You don't have a bank selected first! To use balance you need a default bank AND account selected!", ChatFormatting.COLOR_CODE.RED)));
}
}
public Boolean IsDefaultAccount(String playerUuid, String globalAccountId) { public Boolean IsDefaultAccount(String playerUuid, String globalAccountId) {
return playerConfigs.containsKey(playerUuid) && playerConfigs.get(playerUuid).defaultSelectedAccount.equals(globalAccountId); return playerConfigs.containsKey(playerUuid) && playerConfigs.get(playerUuid).defaultSelectedAccount.equals(globalAccountId);
} }

View File

@ -166,11 +166,6 @@ public class IndividualBank {
List<IndividualAccount> accountsFromUser = new ArrayList<IndividualAccount>(); List<IndividualAccount> accountsFromUser = new ArrayList<IndividualAccount>();
List<String> listOfAccounts = accounts.accountsListFromName.get(uuid); List<String> listOfAccounts = accounts.accountsListFromName.get(uuid);
System.out.println("Account list size: " + accounts.accountsList.size());
System.out.println("GetAccountsOfUser debug");
System.out.println("Is listOfAccounts null? " + (listOfAccounts == null));
System.out.println("If not null, what is size? " + listOfAccounts.size());
if (listOfAccounts != null && !listOfAccounts.isEmpty()) { if (listOfAccounts != null && !listOfAccounts.isEmpty()) {
for (String listOfAccount : listOfAccounts) { for (String listOfAccount : listOfAccounts) {
accountsFromUser.add(accounts.accountsList.get(listOfAccount)); accountsFromUser.add(accounts.accountsList.get(listOfAccount));
@ -435,20 +430,14 @@ public class IndividualBank {
} }
} }
///////////////////////////////////////////////////////////////////////////// // The value 0 should be treated as either non-exist
/// @fn AliasAccount public Optional<Integer> GetAccountBalance(String accountId) {
/// Optional<Integer> amount = Optional.empty();
/// @param[in] accountId to alias if (accounts.accountsList.containsKey(accountId)) {
/// IndividualAccount account = accounts.accountsList.get(accountId);
/// @param[in] newAlias is name to give this account amount = Optional.of(account.GetAccountBalance());
///
/// @brief Alias an account
/////////////////////////////////////////////////////////////////////////////
public void AliasAccount(String accountId, String newAlias) {
String accountNumber = AccountNumberGenerator.GetAccountNumberFromId(accountId);
if (accounts.accountsList.containsKey(accountNumber)) {
accounts.accountsList.get(accountNumber).AliasAccount(newAlias);
} }
return amount;
} }
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@ -463,7 +452,7 @@ public class IndividualBank {
public Boolean LockAccountHolder(String holderName) { public Boolean LockAccountHolder(String holderName) {
Boolean success = false; Boolean success = false;
Integer accountIter = 0; int accountIter = 0;
for (Entry<String, List<String>> holderAccounts : accounts.accountsListFromName.entrySet()) { for (Entry<String, List<String>> holderAccounts : accounts.accountsListFromName.entrySet()) {
accounts.accountsList.get(holderAccounts.getValue().get(accountIter++)).LockAccount(); accounts.accountsList.get(holderAccounts.getValue().get(accountIter++)).LockAccount();
} }

View File

@ -213,6 +213,11 @@ public class BankCommands {
bankRoot.addChild(info); bankRoot.addChild(info);
var balance = CommandManager.literal("balance")
.executes(context -> GetBalance(context.getSource().getPlayer()))
.build();
bankRoot.addChild(balance);
var create = CommandManager.literal("create").build(); var create = CommandManager.literal("create").build();
var createAccount = CommandManager.literal("account").build(); var createAccount = CommandManager.literal("account").build();
@ -416,19 +421,6 @@ public class BankCommands {
return 0; return 0;
} }
/////////////////////////////////////////////////////////////////////////////
/// @fn IsOperator
///
/// @param[in] player is the player to be tested
///
/// @brief Check to see if player is operator (move to util in future)
///
/// @return True if player is operator, false if not
/////////////////////////////////////////////////////////////////////////////
public Boolean IsOperator(ServerPlayerEntity player) {
return player.hasPermissionLevel(4);
}
public int AdminSubtractMoney(ServerPlayerEntity player, Integer amount, String account, String reason) { public int AdminSubtractMoney(ServerPlayerEntity player, Integer amount, String account, String reason) {
AdminBalanceChange(player, account, amount, "subtract", reason); AdminBalanceChange(player, account, amount, "subtract", reason);
return 0; return 0;
@ -464,36 +456,9 @@ public class BankCommands {
BankManager.GetInstance().AdminChangeFunds(player, accountId, amount, type, optionalReason); BankManager.GetInstance().AdminChangeFunds(player, accountId, amount, type, optionalReason);
} }
public void AdminGetBalance(String accountId) { public int GetBalance(ServerPlayerEntity player) {
BankManager.GetInstance().GetBalance(player);
} return 0;
public void AdminWireMoney(String fromAccount, String toAccount, Integer amount, String optionalReason) {
}
public void AdminCreateBank(String bankName, Integer initialBankBalance, Integer kbicInsuredAmount) {
}
public void AdminCloseBank(String bankIdentifier, String optionalReason, Boolean forceClosure) {
}
public void AdminAccounts() {
}
public void LockBank(String bankIdentifier, String optionalReason) {
}
public void LockPlayer(String playerName, String optionalReason) {
}
public void LockBankAccount(String accountId, String optionalReason) {
} }
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@ -506,10 +471,8 @@ public class BankCommands {
IndividualBank bank = BankManager.GetInstance().GetBankByName(bankName); IndividualBank bank = BankManager.GetInstance().GetBankByName(bankName);
if (bank != null) { if (bank != null) {
System.out.println("Grabbing user account information");
List<IndividualAccount> userAccounts = bank.GetAccountsOfUser(sourcePlayer.getUuidAsString()); List<IndividualAccount> userAccounts = bank.GetAccountsOfUser(sourcePlayer.getUuidAsString());
sourcePlayer.sendMessage(Text.of("[BANK INFO FOR " + bankName.toUpperCase() + "]")); sourcePlayer.sendMessage(Text.of("[BANK INFO FOR " + bankName.toUpperCase() + "]"));
System.out.println("userAccounts size: " + userAccounts.size());
for (IndividualAccount userAccount : userAccounts) { for (IndividualAccount userAccount : userAccounts) {
String accountNumber = userAccount.GetAccountNumber(); String accountNumber = userAccount.GetAccountNumber();
@ -594,9 +557,6 @@ public class BankCommands {
return 0; return 0;
} }
// Possible code paths:
// REQUIRED = {}
// OPTIONAL = [command|subcommand]
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
/// @fn HelpCommand /// @fn HelpCommand
/// ///
@ -647,8 +607,6 @@ public class BankCommands {
return 0; return 0;
} }
// Possible args:
// /bank create {SAVINGS/CHECKING} [optional: alias]
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
/// @fn CreateAccount /// @fn CreateAccount
/// ///
@ -662,35 +620,9 @@ public class BankCommands {
String bank = BankManager.GetInstance().GetPlayerSelectedBank(player.getUuidAsString()); String bank = BankManager.GetInstance().GetPlayerSelectedBank(player.getUuidAsString());
System.out.println("Received bank: " + bank); System.out.println("Received bank: " + bank);
if (bank != "") { if (!bank.isEmpty()) {
BankManager.GetInstance().InitiateBankAccountCreation(bank, player, accountType); BankManager.GetInstance().InitiateBankAccountCreation(bank, player, accountType);
} }
return 0; return 0;
} }
// Possible code paths for /bank create report
// required = {ACCOUNT ID / ALIAS} or {ALL}
/////////////////////////////////////////////////////////////////////////////
/// @fn GenerateAccountReport
///
/// @param[in] player is player who ran command
///
/// @param[in] reportArgs is the argument list to be parsed
///
/// @brief Creates a bank account(s) report
/////////////////////////////////////////////////////////////////////////////
public void GenerateAccountReport(ServerPlayerEntity player, List<String> reportArgs) {
if (reportArgs.size() > 0) {
String reportIdentifier = reportArgs.get(0).toLowerCase();
// First path is just to run a report on all accounts this player is attached to:
if (reportIdentifier == "all") {
/* BANKMANAGER CALL HERE. LOOP LIKELY NEEDED */
} else {
/* BANKMANAGER CALL HERE */
}
} else {
player.sendMessage(Text.of("Unrecognized report field data. Please run /bank help report for more information"));
}
}
} }