fun purchaseSnack(customer: Customer, snackIndex: Int) {
if (snackIndex !in snacksInventory.indices) {
throw IllegalArgumentException("Invalid selection.")
}
val snack = snacksInventory[snackIndex]
if (snack.quantity <= 0) {
throw OutOfStockException("${snack.name} is out of stock.")
}
if (customer.cashInWallet < snack.price) {
throw InsufficientFundsException("${customer.name} doesn't have enough money for ${snack.name}.")
}
// Successful transaction
customer.cashInWallet -= snack.price
cashInMachine += snack.price
snack.quantity -= 1
customer.snacksInKnapsack.add(snack.name)
println("Thank you, ${customer.name}! You purchased a ${snack.name}.")
}