class Stock():
	def __init__ (self):
		self.view = View()
		self.model = Model()

	def get_company_info (self):
		self.company = self.view.get_company()
		response = self.model.search_company(self.company)
		dictt = response[0]
		self.view.company_info(dictt['Name'],dictt['Exchange'],dictt['Symbol'])

	def get_stock_quote (self):
		self.stock = self.view.get_stock()
		self.stock_info = self.model.stock_info(self.stock)
		self.view.stock_quote(self.stock_info)
		user1.choose_option()

	def buy_stocks (self):
		symbol = self.view.get_symbol()
		num = self.view.get_num_shares()
		if user1.info_list[0][4] == None:
			print ("Sorry! You are currently out of funds.")
			print ("")
		else:
			self.model.buy_stock(symbol, num, user1.info_list[0][0])
			user1.choose_option()

	def sell_stocks(self):
		symbol = self.view.get_symbol()
		num = self.view.get_num_shares_to_sell()
		self.model.sell_stock(symbol,num,user1.info_list[0][0])
		user1.choose_option()
	def __init__ (self):
		self.view = View()
		self.model = Model()
	def __init__ (self):
		self.view = View()
		self.model = Model()
		self.stock = Stock()
class User():
	def __init__ (self):
		self.view = View()
		self.model = Model()
		self.stock = Stock()

	def choice_login (self):
		self.view.welcome()
		choice = self.view.choice_login()
		if choice == "1":
			return self.signup()
		if choice == "2":
			return self.login()
		if choice == "3":
			return self.login_admin()
		else:
			self.choice_login() 

	def login_admin(self):
		return_adminlst = self.view.admin_login()
		result = self.model.check_login(return_adminlst[0], return_adminlst[1])
		if result != []:
			all_accounts = self.model.get_top_accounts()
			self.view.display_all_accounts(all_accounts)
		else:
			print("You do not have admin rights")
			self.view.choice_login()


	def signup (self):
		name = self.view.get_name()
		username = self.view.get_username()
		password = self.view.get_password()
		balance = 10000.00
		"send the values to the db"
		self.model.create_user(name, username, password, balance)
		self.view.restart()
		sys.exit()

	def login (self):
		# pu.db
		self.username = self.view.login_username()
		self.password = self.view.login_password()
		self.info_list = self.model.check_login (self.username, self.password)
		if self.info_list is not None:
			print ("")
			print ("Welcome back to the stock trading game!")
			balance = self.model.get_balance(self.username, self.password)
			print ("Your current balance is: ", balance, "dollars.")
			self.choose_option()
		else:
			self.view.try_again()
			sys.exit()

	def choose_option (self):
		choice = self.view.choose_option()
		if choice == "1":
			self.stock.get_company_info()	
			self.stock.get_stock_quote()
		elif choice == "2":
			self.stock.buy_stocks()
		elif choice == "3":
			self.stock.sell_stocks()
		elif choice == "4":
			self.get_portfolio()
		elif choice == "5":
			print ("Goodbye.")
			sys.exit()
		else:
			print ("Please enter a valid choice. (1, 2, 3 or 4) ")
			self.choose_option()

	def get_portfolio (self):
		portfolio = self.model.get_portfolio(self.username, self.password)
		self.view.print_portfolio(portfolio)
		self.choose_option()
Beispiel #5
0
	def __init__(self):
		self.view = View()
		self.user = UserDatabase()
		self.quit = ["quit", "q"]
		self.choice = ''
		self.market = Markit()
Beispiel #6
0
class controller():

	def __init__(self):
		self.view = View()
		self.user = UserDatabase()
		self.quit = ["quit", "q"]
		self.choice = ''
		self.market = Markit()

	def run (self):
		self.view.start()
		self.login_()
		self.stock_price()
		self.buy_stock()

		#self.menu()

	def login_(self):
		login = self.view.login()
		if self.user.check_account(login):
			self.user.load_accounts()
			if self.user.premission_level == 0:
				self.admin_menu()
			else:
				self.menu()

		else:
			self.view.invalid_accounts()
			self.login_()

	def admin_menu(self):
		self.view.admin_login()

	def menu(self):
		self.view.user_login()
		menu_choice = self.view.main_menu()
		if menu_choice == '1':

			company_name = self.view.search_term()
			results = self.search_stock(company_name)

			self.view.print_results(results)

			return results
			#print(results)s

			
	def stock_price(self):
		symbol = self.view.which_result()
		price_results = self.get_quote2(symbol)

		self.view.show_value(price_results)
		self.view.buy_main()
		#return price_results

	def search_stock(self,company_name):
		companies = self.market.company_search(company_name)
		return companies

	def get_quote2(self,symbol):
		quote = self.market.get_quote(symbol)
		return quote

	def search_t(self):
		self.view.search_term()
# 	buying stocks
	def buy_stock(self):
		option = self.view.buy_main()
		if option == '1':
			num_stocks = self.view.display_check()
			price = self.market.recent_quote['LastPrice']*(num_stocks)
			print("thats a total of ${}".format(price))
			self.view.display_option()
			return price

	
	def purchase(self, price):
 def __init__(self):
     self.view = View()
     self.db = TradingUserDB()
     self.api = Markit()
class TraderController:
    def __init__(self):
        self.view = View()
        self.db = TradingUserDB()
        self.api = Markit()

    def login(self):
        user_name = self.view.get_username()
        password = self.view.get_password()
        return user_name, password

    def get_id(self, user_name):
        user_id = self.db.user_id_check(user_name)
        return user_id[0]

    def create_account(self):
        self.view.creating_account()
        user_name, password = self.login()
        user_id = self.db.user_id_check(user_name)
        if user_id == None:
            name = self.view.get_fullname()
            new_user = Player(user_name, password, name)
            self.db.add_user(new_user)
            user_id = self.db.user_id_check(user_name)
            new_account = Account(user_id)
            self.db.add_account(new_account)
        else:
            self.view.username_exists()
            self.create_account()
        return user_name, password

    def current_balance(self, user_name):
        balance = self.db.get_account_balance(self.db.user_id_check(user_name))
        self.view.get_balance(balance[0])
        return balance

    def run(self):
        signin = self.view.signin()
        if signin == "1":
            user_name, password = self.login()
            validate = self.db.signin(user_name, password)
            while validate == None:
                self.view.wrong_username_or_password()
                user_name, password = self.login()
                validate = self.db.signin(user_name, password)
            if validate[1] == 1:
                self.view.welcome_admin()
                dict_leaders = {}
                portfolios = self.db.get_all_portfolios()
                for portfolio in portfolios:
                    key = portfolio[1]
                    if key in dict_leaders:
                        value, paid, profit = self.db.one_portfolio_value(portfolio)
                        l = dict_leaders.get(key)
                        for idx, num in enumerate(l):
                            if idx == 0:
                                value = num + value
                            elif idx == 1:
                                paid = num + paid
                            else:
                                profit = num + profit
                        dict_leaders[key] = [value, paid, profit]
                    else:
                        value, paid, profit = self.db.one_portfolio_value(portfolio)
                        dict_leaders[key] = [value, paid, profit]
                self.view.leaderboard(dict_leaders)
        elif signin == "2":
            user_name, password = self.create_account()
        else:
            self.view.invalid_choice()
        user_id = self.get_id(user_name)

        while True:
            action = self.view.user_menu()
            if action == "1":
                self.current_balance(user_name)
                portfolio = self.db.get_own_portfolio(user_id)
                self.view.list_all_portfolios(portfolio)
                value, paid, profit = self.db.current_portfolio_value(portfolio)
                self.view.print_current_portfolio_value(value, paid, profit)
            elif action == "2":
                search_type = self.view.search_type()
                if search_type == "1":
                    company = self.view.search_by_company()
                    info = self.view.company_info(self.api.company_search(company))
                    if self.api.company_search(company) == []:
                        self.view.company_not_found()
                    else:
                        self.view.search_instructions()
                elif search_type == "2":
                    symbol = self.view.search_by_symbol()
                    self.api.get_company_data(symbol)
                    self.view.company_data(self.api.get_company_data(symbol))
                    self.view.current_value(symbol, self.api.get_quote(symbol))
            elif action == "3":
                balance = self.current_balance(user_name)
                symbol = self.view.search_by_symbol()
                price = self.api.get_quote(symbol)
                if price == None:
                    self.view.company_not_found()
                else:
                    self.view.current_value(symbol, price)
                    quantity = self.view.get_quantity()
                    total_price = price * float(quantity)
                    self.view.get_total_price(total_price)
                    if total_price > balance[0]:
                        self.view.insufficient_funds()
                    else:
                        confirm = self.view.confirm_purchase()
                        if confirm.lower() == "c":
                            self.db.add_to_portfolio(user_id, symbol, price, quantity)
                            self.db.update_account(total_price*-1, user_id)
                            self.current_balance(user_name)
                        elif confirm == "q":
                            continue
            elif action == "4":
                symbol = self.view.stocks_to_be_sold()
                price = self.api.get_quote(symbol)
                stocks_with_symbol = self.db.get_from_portfolio(symbol, user_id)
                self.view.list_all_portfolios(stocks_with_symbol)
                number_of_stocks = self.db.get_number_of_stocks_available(symbol, user_id)
                if number_of_stocks[0][0] == None:
                    self.view.company_not_found()
                    continue
                self.view.show_number_of_stocks(symbol, number_of_stocks[0])
                sell = int(self.view.how_many_for_sale())
                while sell > number_of_stocks[0][0] or sell < 1:
                    self.view.invalid_number()
                    sell = int(self.view.how_many_for_sale())
                price_paid = self.db.subtract_stocks(sell, stocks_with_symbol)
                profit = sell * price
                profit_loss = profit - price_paid
                self.view.show_profit_loss(profit_loss)
                self.db.update_account(profit, user_id)
                self.db.remove_zero_stocks()
            elif action == "5":
                break
            else:
                self.view.press_number()