87 lines
3.0 KiB
Python
87 lines
3.0 KiB
Python
import tkinter as tk
|
|
from database import setup_database, connect
|
|
from pembeli_menu import PembeliMenu
|
|
from kasir import KasirPage
|
|
from pemilik import PemilikPage
|
|
from admin_menu import AdminMenu
|
|
from waiter_dashboard import WaiterDashboard
|
|
from tkinter import messagebox
|
|
|
|
class LoginScreen:
|
|
def __init__(self, root):
|
|
self.root = root
|
|
self.frame = tk.Frame(root)
|
|
self.frame.pack(fill="both", expand=True)
|
|
|
|
tk.Label(self.frame, text="SISTEM CAFE", font=("Arial", 24, "bold")).pack(pady=30)
|
|
|
|
# --- Bagian Login Staff ---
|
|
frame_login = tk.LabelFrame(self.frame, text="Login Staff (Admin/Kasir/Waiter)", padx=20, pady=20)
|
|
frame_login.pack(pady=10)
|
|
|
|
tk.Label(frame_login, text="Username:").pack(anchor="w")
|
|
self.username_entry = tk.Entry(frame_login)
|
|
self.username_entry.pack(fill="x", pady=5)
|
|
|
|
tk.Label(frame_login, text="Password:").pack(anchor="w")
|
|
self.password_entry = tk.Entry(frame_login, show="*")
|
|
self.password_entry.pack(fill="x", pady=5)
|
|
|
|
tk.Button(frame_login, text="Login Staff", bg="#cfe2ff", command=self.login_staff).pack(pady=10, fill="x")
|
|
|
|
# --- Bagian Pelanggan (Tanpa Password) ---
|
|
tk.Label(self.frame, text="--- ATAU ---", fg="grey").pack(pady=5)
|
|
|
|
tk.Button(self.frame,
|
|
text="🍽️ MASUK SEBAGAI PELANGGAN",
|
|
bg="#d1e7dd", fg="#0f5132", font=("Arial", 12, "bold"),
|
|
height=2,
|
|
command=self.masuk_pelanggan).pack(pady=10, ipadx=20)
|
|
|
|
def login_staff(self):
|
|
username = self.username_entry.get()
|
|
password = self.password_entry.get()
|
|
|
|
db = connect()
|
|
cur = db.cursor()
|
|
cur.execute("SELECT role FROM users WHERE username=? AND password=?", (username, password))
|
|
result = cur.fetchone()
|
|
db.close()
|
|
|
|
if result:
|
|
role = result[0]
|
|
self.frame.destroy()
|
|
|
|
if role == "kasir":
|
|
KasirPage(self.root, self.root)
|
|
elif role == "pemilik":
|
|
PemilikPage(self.root, self.root)
|
|
elif role == "admin":
|
|
AdminMenu(self.root)
|
|
elif role == "waiter":
|
|
WaiterDashboard(self.root)
|
|
elif role == "pembeli":
|
|
# Jika ada user iseng login pakai akun pembeli di database
|
|
PembeliMenu(self.root)
|
|
else:
|
|
messagebox.showerror("Error", "Role tidak dikenali")
|
|
else:
|
|
messagebox.showerror("Error", "Username / Password salah")
|
|
|
|
def masuk_pelanggan(self):
|
|
# Langsung buka menu tanpa cek password
|
|
self.frame.destroy()
|
|
PembeliMenu(self.root)
|
|
|
|
# --- App Class ---
|
|
class App(tk.Tk):
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.title("Sistem Cafe Python")
|
|
self.geometry("800x600")
|
|
|
|
if __name__ == "__main__":
|
|
setup_database()
|
|
app = App()
|
|
LoginScreen(app)
|
|
app.mainloop() |