import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:youmazgestion/Views/historique.dart'; import '../Views/addProduct.dart'; import '../Views/bilanMois.dart'; import '../Views/gestionProduct.dart'; import '../Views/gestionStock.dart'; import '../Views/listUser.dart'; import '../Views/loginPage.dart'; import '../Views/registrationPage.dart'; import '../accueil.dart'; import '../controller/userController.dart'; class CustomDrawer extends StatelessWidget { final UserController userController = Get.find(); Future clearUserData() async { final prefs = await SharedPreferences.getInstance(); await prefs.remove('username'); await prefs.remove('role'); } CustomDrawer({super.key}); @override Widget build(BuildContext context) { return Drawer( backgroundColor: Colors.white, child: ListView( children: [ GetBuilder( builder: (controller) => UserAccountsDrawerHeader( accountEmail: Text(controller.email), accountName: Text(controller.name), currentAccountPicture: const CircleAvatar( backgroundImage: AssetImage("assets/youmaz2.png"), ), decoration: const BoxDecoration( gradient: LinearGradient( colors: [Colors.white, const Color.fromARGB(255, 4, 54, 95)], begin: Alignment.topLeft, end: Alignment.bottomRight, ), )), ), ListTile( leading: const Icon(Icons.home), iconColor: Colors.lightBlueAccent, title: const Text("Accueil"), onTap: () { // Action lorsque l'utilisateur clique sur "Accueil" Get.to(const AccueilPage()); }, ), ListTile( leading: const Icon(Icons.person_add), iconColor: Colors.green, title: const Text("Ajouter un utilisateur"), onTap: () { if (userController.role == "admin") { Get.to(const RegistrationPage()); } else { Get.snackbar( "Accés refusé", backgroundColor: Colors.red, colorText: Colors.white, icon: const Icon(Icons.error), duration: const Duration(seconds: 3), snackPosition: SnackPosition.TOP, "Vous n'avez pas les droits pour ajouter un utilisateur"); } }, ), ListTile( leading: const Icon(Icons.supervised_user_circle), iconColor: const Color.fromARGB(255, 4, 54, 95), title: const Text("Modifier/Supprimer un utilisateur"), onTap: () { // Action lorsque l'utilisateur clique sur "Modifier/Supprimer un utilisateur" if (userController.role == "admin") { Get.to(const ListUserPage()); } else { Get.snackbar( "Accés refusé", backgroundColor: Colors.red, colorText: Colors.white, icon: const Icon(Icons.error), duration: const Duration(seconds: 3), snackPosition: SnackPosition.TOP, "Vous n'avez pas les droits pour modifier/supprimer un utilisateur"); } }, ), ListTile( leading: const Icon(Icons.add), iconColor: Colors.indigoAccent, title: const Text("Ajouter un produit"), onTap: () { if (userController.role == "admin") { // Action lorsque l'utilisateur clique sur "Ajouter un produit" Get.to(const AddProductPage()); } else { Get.snackbar( "Accés refusé", backgroundColor: Colors.red, colorText: Colors.white, icon: const Icon(Icons.error), duration: const Duration(seconds: 3), snackPosition: SnackPosition.TOP, "Vous n'avez pas les droits pour ajouter un produit"); } }, ), ListTile( leading: const Icon(Icons.edit), iconColor: Colors.redAccent, title: const Text("Modifier/Supprimer un produit"), onTap: () { if (userController.role == "admin") { // Action lorsque l'utilisateur clique sur "Modifier/Supprimer un produit" Get.to(GestionProduit()); } else { Get.snackbar( "Accés refusé", backgroundColor: Colors.red, colorText: Colors.white, icon: const Icon(Icons.error), duration: const Duration(seconds: 3), snackPosition: SnackPosition.TOP, "Vous n'avez pas les droits pour modifier/supprimer un produit"); } }, ), ListTile( leading: const Icon(Icons.bar_chart), title: const Text("Bilan"), onTap: () { if (userController.role == "admin") { Get.to(const BilanMois()); } else { Get.snackbar( "Accés refusé", backgroundColor: Colors.red, colorText: Colors.white, icon: const Icon(Icons.error_outline_outlined), duration: const Duration(seconds: 3), snackPosition: SnackPosition.TOP, "Vous n'avez pas les droits pour accéder au bilan"); } }, ), ListTile( leading: const Icon(Icons.inventory), iconColor: Colors.blueAccent, title: const Text("Gestion de stock"), onTap: () { if (userController.role == "admin") { // Action lorsque l'utilisateur clique sur "Gestion de stock" Get.to(const GestionStockPage()); } else { Get.snackbar( "Accés refusé", backgroundColor: Colors.red, colorText: Colors.white, icon: const Icon(Icons.error), duration: const Duration(seconds: 3), snackPosition: SnackPosition.TOP, "Vous n'avez pas les droits pour accéder à la gestion de stock"); } }, ), ListTile( leading: const Icon(Icons.history), iconColor: Colors.blue, title: const Text("Historique"), onTap: () { // Action lorsque l'utilisateur clique sur "Historique" Get.to(HistoryPage()); }, ), ListTile( leading: const Icon(Icons.logout), iconColor: Colors.red, title: const Text("Déconnexion"), onTap: () { // Action lorsque l'utilisateur clique sur "Déconnexion" // display confirmation dialog Get.defaultDialog( title: "Déconnexion", content: const Text("Voulez-vous vraiment vous déconnecter ?"), actions: [ ElevatedButton( child: const Text("Oui"), onPressed: () { clearUserData(); Get.offAll(const LoginPage()); }, ), ElevatedButton( child: const Text("Non"), onPressed: () { Get.back(); }, ) ], ); }, ) ], ), ); } }