示例#1
0
#!/usr/bin/env python3

from view.base_view import BaseView
from view.account_view import AccountView
from view.branch_view import BranchView
from view.login_view import LoginView
from view.person_view import PersonView
from view.main_view import MainView

if __name__ == '__main__':
    # base_view = BaseView(70)
    # base_view.print_header('UNIT TEST')

    # account_view = AccountView()
    # account_view.create_account()
    # # account_view.create_transaction('Deposit')

    # branch_view = BranchView()
    # branch_view.create_branch()

    # login_view = LoginView()
    # login_view.show_login()

    # person_view = PersonView()
    # person_view.create_person('Manager')

    main_view = MainView()
    main_view.show_main_menu('admin')
    input()

    main_view.show_admin_menu()
class MainController():
    def __init__(self):
        self.view = MainView()

    def start_session(self):
        # profile may be:
        # - a string if loging is invalid OR user is ADMIN
        # - an Account object, if a customer performed a successful login
        # - a person object, if a manager performed a successful login
        profile = self.login()
        if profile == 'invalid':
            return

        option = 1
        while option > 0:
            #Shows main menu according to profile
            option = self.view.show_main_menu(profile)
            #client - account deposit
            if option == 1:
                AccountController().create_transaction(profile, 'Deposit')
            #client - account withdrawal
            elif option == 2:
                AccountController().create_transaction(profile, 'Withdrawal')
            #client - account balance
            elif option == 3:
                AccountController().list_balance(profile)
            #client - account history
            elif option == 4:
                AccountController().list_statement(profile)
            #admin - create branch
            elif option == 100:
                BranchController().create_branch()
            #admin - list branches
            elif option == 101:
                BranchController().list_branches()
            #admin - create manager
            elif option == 102:
                PersonController().create_person('Manager')
            #admin - list managers
            elif option == 103:
                PersonController().list_people('Manager')
            #manager-create account
            elif option == 200:
                AccountController().create_account()
            #manager-list accounts
            elif option == 201:
                AccountController().list_client_accounts()

    def login(self):
        user, password = LoginView().show_login()
        #if user in ['admin', 'manager']:
        if user == 'admin':
            return user

        #Validates login with DB.
        person_dal = PersonDAL()
        person = person_dal.select_by_login(user)

        if person != None:
            valid_login = person.login == user and person.password == password
            if valid_login and person.role == 'C':
                account_dal = ClientAccountDAL()
                client_account = account_dal.select_client_account(person.id)
                print('select exec')
                if client_account != None:
                    return client_account

            if valid_login and person.role == 'M':
                return person

        self.view.show_message('Error', 'Invalid login.', True)
        return 'invalid'