import tkinter as tk from tkinter import messagebox from database import connect class WaiterDashboard: def __init__(self, parent): self.parent = parent self.frame = tk.Frame(parent) self.frame.pack(fill="both", expand=True) tk.Label(self.frame, text="DASHBOARD WAITER (Dapur)", font=("Arial", 18, "bold")).pack(pady=10) tk.Button(self.frame, text="Logout", command=self.logout).pack(pady=5) tk.Button(self.frame, text="Refresh Data", bg="#cfe2ff", command=self.load_orders).pack(pady=5) # List Pesanan Masuk self.listbox = tk.Listbox(self.frame, width=80, height=15) self.listbox.pack(pady=10) tk.Button(self.frame, text="Selesai Disajikan / Validasi", bg="#d1e7dd", command=self.validasi_layanan).pack(pady=10) self.order_ids = [] # Untuk menyimpan ID transaksi sesuai urutan listbox self.load_orders() def load_orders(self): self.listbox.delete(0, tk.END) self.order_ids = [] db = connect() cur = db.cursor() # Ambil pesanan yang statusnya 'Pending' cur.execute("SELECT id, meja_id, total, status FROM transaksi WHERE status='Pending'") rows = cur.fetchall() for row in rows: t_id, meja, total, status = row # Ambil detail menu untuk ditampilkan cur.execute("SELECT menu_nama FROM detail_transaksi WHERE transaksi_id=?", (t_id,)) menus = [r[0] for r in cur.fetchall()] menu_str = ", ".join(menus) display_text = f"[Meja {meja}] ID:{t_id} | Menu: {menu_str} | Status: {status}" self.listbox.insert(tk.END, display_text) self.order_ids.append(t_id) db.close() def validasi_layanan(self): idx = self.listbox.curselection() if not idx: messagebox.showwarning("Pilih", "Pilih pesanan yang sudah disajikan") return selected_id = self.order_ids[idx[0]] db = connect() cur = db.cursor() # Ubah status jadi 'Disajikan' agar muncul di kasir cur.execute("UPDATE transaksi SET status='Disajikan' WHERE id=?", (selected_id,)) db.commit() db.close() messagebox.showinfo("Sukses", "Pesanan selesai disajikan. Pelanggan bisa bayar di kasir.") self.load_orders() def logout(self): self.frame.destroy() from main import LoginScreen LoginScreen(self.parent)