import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:salonbooking/main.dart'; import 'package:salonbooking/pemilik/data_pelanggan_page.dart'; import 'package:salonbooking/pemilik/data_karyawan_page.dart'; import 'package:salonbooking/pemilik/data_layanan_page.dart'; import 'package:salonbooking/pemilik/rekapan.dart'; import 'package:salonbooking/pemilik/pendapatan.dart'; import 'package:salonbooking/karyawan/home_karyawan.dart'; import 'package:salonbooking/pelanggan/main_navigation.dart'; class PemilikHomePage extends StatelessWidget { final String name; final String token; const PemilikHomePage({super.key, required this.name, required this.token}); void logout(BuildContext context) async { final prefs = await SharedPreferences.getInstance(); await prefs.remove('token'); Navigator.pushAndRemoveUntil( context, MaterialPageRoute( builder: (_) => HomeSelector( onLoginSuccess: (token, user) { final navigator = navigatorKey.currentState!; switch (user['role']) { case 'pelanggan': navigator.pushAndRemoveUntil( MaterialPageRoute( builder: (_) => MainNavigation( userName: user['name'] ?? 'User', token: token, user: user, ), ), (route) => false, ); break; case 'karyawan': navigator.pushAndRemoveUntil( MaterialPageRoute( builder: (_) => KaryawanHomePage( user['name'] ?? 'User', token: token, user: user, ), ), (route) => false, ); break; case 'pemilik': navigator.pushAndRemoveUntil( MaterialPageRoute( builder: (_) => PemilikHomePage( name: user['name'] ?? 'User', token: token, ), ), (route) => false, ); break; default: navigator.pushAndRemoveUntil( MaterialPageRoute( builder: (_) => const Scaffold( body: Center(child: Text('Role tidak dikenal')), ), ), (route) => false, ); } }, ), ), (route) => false, ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Home Pemilik - $name'), backgroundColor: Colors.pinkAccent, actions: [ IconButton( icon: const Icon(Icons.logout), onPressed: () { showDialog( context: context, builder: (context) => AlertDialog( title: const Text('Konfirmasi Logout'), content: const Text('Apakah Anda yakin ingin logout?'), actions: [ TextButton( onPressed: () => Navigator.pop(context), child: const Text('Batal'), ), TextButton( onPressed: () { Navigator.pop(context); logout(context); }, child: const Text( 'Logout', style: TextStyle(color: Colors.red), ), ), ], ), ); }, ), ], ), body: Center( child: SingleChildScrollView( padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 32), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ ElevatedButton.icon( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (_) => DataPelangganPage(token: token), ), ); }, icon: const Icon(Icons.people), label: const Text('Data Pelanggan'), style: ElevatedButton.styleFrom( backgroundColor: Colors.pinkAccent, padding: const EdgeInsets.symmetric(vertical: 16), ), ), const SizedBox(height: 20), ElevatedButton.icon( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (_) => DataKaryawanPage(token: token), ), ); }, icon: const Icon(Icons.person), label: const Text('Data Karyawan'), style: ElevatedButton.styleFrom( backgroundColor: Colors.pinkAccent, padding: const EdgeInsets.symmetric(vertical: 16), ), ), const SizedBox(height: 20), ElevatedButton.icon( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (_) => DataLayananPage(token: token), ), ); }, icon: const Icon(Icons.design_services), label: const Text('Data Layanan'), style: ElevatedButton.styleFrom( backgroundColor: Colors.pinkAccent, padding: const EdgeInsets.symmetric(vertical: 16), ), ), const SizedBox(height: 20), ElevatedButton.icon( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (_) => RekapanPage(token: token), ), ); }, icon: const Icon(Icons.insert_chart_outlined_rounded), label: const Text('Rekapan Bulanan'), style: ElevatedButton.styleFrom( backgroundColor: Colors.pinkAccent, padding: const EdgeInsets.symmetric(vertical: 16), ), ), const SizedBox(height: 20), ElevatedButton.icon( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (_) => PendapatanPage(token: token), ), ); }, icon: const Icon(Icons.attach_money), label: const Text('Pendapatan'), style: ElevatedButton.styleFrom( backgroundColor: Colors.pinkAccent, padding: const EdgeInsets.symmetric(vertical: 16), ), ), ], ), ), ), ); } }