VirtualEconomy/economy.py

105 lines
3.1 KiB
Python

from accounts import *
from bank import *
client = pymongo.MongoClient(os.getenv("MONGO_URL"))
db = client.VE
def get_cash(code):
coll = db.economy
user = coll.find_one({"account_id": code})
if user is None:
print("The user does not have a bank account.")
return None
return user['cash']
def create_econ_account(code):
econ_coll = db.economy
bank_coll = db.bank
econ_user = econ_coll.find_one({"account_id": code})
bank_user = bank_coll.find_one({"account_id": code})
if econ_user is not None or bank_user is not None:
print("User already has an account")
return False
econ_coll.insert_one({"_id": random.randint(000000, 999999), "account_id": code, "cash": 0})
bank_coll.insert_one({"_id": random.randint(000000, 999999), "account_id": code, "balance": 0, 'active': False})
return True
def deposit(code, amount):
# TODO: Check if the bank account is active. If not then don't allow the user to deposit
bank_coll = db.bank
econ_coll = db.economy
bank_user = bank_coll.find_one({"account_id": code})
econ_user = econ_coll.find_one({"account_id": code})
if bank_user is None or econ_user is None:
print("User does not have an account")
return False
if econ_user['cash'] < amount:
print("You do not have enough money to make this transaction")
return False
econ_coll.update_one({"account_id": code}, {"$inc": {"cash": -amount}})
bank_coll.update_one({"account_id": code}, {"$inc": {"balance": amount}})
return True
def withdraw(code, amount):
# TODO: Check if the bank account is active. If not then don't allow the user to withdraw
bank_coll = db.bank
econ_coll = db.economy
bank_user = bank_coll.find_one({"account_id": code})
econ_user = econ_coll.find_one({"account_id": code})
if bank_user is None or econ_user is None:
print("User does not have an account")
return False
if bank_user['balance'] < amount:
print("You do not have enough money to make this transaction")
return False
econ_coll.update_one({"account_id": code}, {"$inc": {"cash": amount}})
bank_coll.update_one({"account_id": code}, {"$inc": {"balance": -amount}})
return True
# work function
def work(code):
job_coll = db.jobs
econ_coll = db.economy
bank_coll = db.bank
econ_user = econ_coll.find_one({"account_id": code})
if econ_user is None:
print("User could not be found")
return None
job_id = get_user_job(code)
if job_id is None:
print("You do not have a job.")
return None
job = job_coll.find_one({"_id": job_id})
pph = job['pph']
hours_worked = random.randint(1, 10)
total_pay = pph * hours_worked
bank_user = bank_coll.find_one({"account_id": code})
if bank_user is None:
create_bank_account(code)
if bank_user['active'] is True:
bank_coll.update_one({"account_id": code}, {"$inc": {"balance": total_pay}})
return hours_worked
econ_coll.update_one({"account_id": code}, {"$inc": {"cash": total_pay}})
return hours_worked