ANALYSE-8/views/member_menu.py
2022-10-07 20:10:08 +02:00

133 lines
4.7 KiB
Python

from click import edit
from models.database import Database
from models.user import User
from services.search import Search
from ui.input_menu import InputMenu, Validator
from ui.selection_menu import SelectionMenu
class MemberMenu:
@staticmethod
def search_member(browse_mode):
form = InputMenu("Search for Member")
form.add_option("QUERY", "Query", "STR", None, 1, 250, None)
form.do_input()
query = form.get_value("QUERY")
users = Search.search_members(query)
if len(users) == 0:
input(f"No Members found with query: {query}. Press any key to continue.")
return None
for index, user in enumerate(users):
print(f"/--[{index}]--------------")
print(f"| Username: {user.username}")
print(f"| Firstname: {user.firstname}")
print(f"| Lastname: {user.lastname}")
print(f"| Address: {user.lastname}")
print(f"| Zipcode: {user.zipcode}")
print(f"| City: {user.city_id}")
print(f"| Email: {user.email}")
print(f"| Phone: {user.phone}")
print(f"\--------------------\n")
if browse_mode:
input(f"\nPress any key to continue.")
return None
select_form = InputMenu("Select Member by index")
select_form.add_option("INDEX", "Index", "INT", None, 0, len(users) - 1, None)
select_form.do_input()
return users[select_form.get_value("INDEX")]
@staticmethod
def select_city():
menu = SelectionMenu("Select City")
cities = Search.get_all_cites()
for city in cities:
menu.add_option(city.name, city.id)
option = menu.display().input_option()
return option
@staticmethod
def add_member():
form = InputMenu("Add new Member")
form.add_option("FIRSTNAME", "Firstname", "STR", None, 1, 250, None)
form.add_option("LASTNAME", "Lastname", "STR", None, 1, 250, None)
form.add_option("ADDRESS", "Address", "STR", None, 1, 250, None)
form.add_option("ZIPCODE", "Zipcode", "STR", None, 6, 6, None)
form.add_option("EMAIL", "Email", "STR", None, 1, 250, Validator.check_email)
form.add_option("PHONE", "Phone (+31-6)", "STR", None, 8, 8, None)
form.do_input()
city_id = MemberMenu.select_city()
new_user = User(Database.connection,
None,
"",
form.get_value("FIRSTNAME"),
form.get_value("LASTNAME"),
form.get_value("ADDRESS"),
form.get_value("ZIPCODE"),
city_id,
form.get_value("EMAIL"),
"+31-6" + form.get_value("PHONE"),
"",
"MEMBER"
)
new_user.save()
input("Added new Member! Press any key to return.")
@staticmethod
def edit_member():
user = MemberMenu.search_member(False)
edit_form = InputMenu("Edit Member (Leave fields empty to not change)")
edit_form.add_option("FIRSTNAME", "Firstname", "STR", user.firstname, 1, 250, None)
edit_form.add_option("LASTNAME", "Lastname", "STR", user.lastname, 1, 250, None)
edit_form.add_option("ADDRESS", "Address", "STR", user.address, 1, 250, None)
edit_form.add_option("ZIPCODE", "Zipcode", "STR", user.zipcode, 6, 6, None)
edit_form.add_option("EMAIL", "Email", "STR", user.email, 1, 250, Validator.check_email)
edit_form.add_option("PHONE", "Phone (+31-6)", "STR", user.phone, 8, 8, None)
edit_form.do_input()
select_menu = SelectionMenu("Do want to change the city?")
select_menu.add_option("No", False).add_option("Yes", True).display()
change_city = select_menu.input_option()
if change_city:
user.city_id = MemberMenu.select_city()
user.firstname = edit_form.get_value("FIRSTNAME")
user.lastname = edit_form.get_value("LASTNAME")
user.address = edit_form.get_value("ADDRESS")
user.zipcode = edit_form.get_value("ZIPCODE")
user.city_id = edit_form.get_value("CITY_ID")
user.email = edit_form.get_value("EMAIL")
user.phone = edit_form.get_value("PHONE")
user.update()
input("Updated Member! Press any key to return.")
@staticmethod
def remove_member():
user = MemberMenu.search_member(False)
confirm = SelectionMenu("Do you want to delete selected Member?")
confirm.add_option("Yes", True).add_option("No", False).display()
option = confirm.input_option()
if option == True:
user.delete()
input("Deleted Member! Press any key to return.")
@staticmethod
def browse_member():
MemberMenu.search_member(True)