import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../controllers/add_user_controller.dart'; class AddUserView extends StatelessWidget { const AddUserView({super.key}); @override Widget build(BuildContext context) { final controller = Get.put(AddUserController()); final isDark = Theme.of(context).brightness == Brightness.dark; return Scaffold( appBar: AppBar( title: const Text('إضافة موظف', style: TextStyle(fontFamily: 'El Messiri')), centerTitle: true, backgroundColor: const Color(0xFF0F4C81), foregroundColor: Colors.white, ), body: SingleChildScrollView( padding: const EdgeInsets.all(24), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Text( 'بيانات الموظف الأساسية', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold), ), const SizedBox(height: 24), _buildTextField( controller: controller.nameController, label: 'اسم الموظف', icon: Icons.person, isDark: isDark, ), const SizedBox(height: 16), _buildTextField( controller: controller.emailController, label: 'البريد الإلكتروني', icon: Icons.email, keyboardType: TextInputType.emailAddress, isDark: isDark, ), const SizedBox(height: 16), _buildTextField( controller: controller.phoneController, label: 'رقم الهاتف', icon: Icons.phone, keyboardType: TextInputType.phone, isDark: isDark, ), const SizedBox(height: 16), const Text('صلاحية الموظف', style: TextStyle(fontWeight: FontWeight.bold)), const SizedBox(height: 8), Obx(() => Container( padding: const EdgeInsets.symmetric(horizontal: 12), decoration: BoxDecoration( color: isDark ? Colors.white.withValues(alpha: 0.05) : Colors.white, borderRadius: BorderRadius.circular(12), border: Border.all(color: isDark ? Colors.white24 : Colors.grey.shade300), ), child: DropdownButtonHideUnderline( child: DropdownButton( value: controller.selectedRole.value, isExpanded: true, dropdownColor: isDark ? const Color(0xFF1E1E2E) : Colors.white, items: const [ DropdownMenuItem(value: 'admin', child: Text('مدير مكتب')), DropdownMenuItem(value: 'accountant', child: Text('محاسب')), DropdownMenuItem(value: 'viewer', child: Text('مشاهد')), ], onChanged: (val) { if (val != null) controller.selectedRole.value = val; }, ), ), )), Obx(() { if (controller.isSuperAdmin.value) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 16), const Text('المكتب المحاسبي', style: TextStyle(fontWeight: FontWeight.bold)), const SizedBox(height: 8), if (controller.isLoadingTenants.value) const CircularProgressIndicator() else Container( padding: const EdgeInsets.symmetric(horizontal: 12), decoration: BoxDecoration( color: isDark ? Colors.white.withValues(alpha: 0.05) : Colors.white, borderRadius: BorderRadius.circular(12), border: Border.all(color: isDark ? Colors.white24 : Colors.grey.shade300), ), child: DropdownButtonHideUnderline( child: DropdownButton( value: controller.selectedTenantId.value, isExpanded: true, dropdownColor: isDark ? const Color(0xFF1E1E2E) : Colors.white, items: controller.tenants.map((tenant) { return DropdownMenuItem( value: tenant['id'], child: Text(tenant['name'] ?? 'مكتب غير معروف'), ); }).toList(), onChanged: (val) { if (val != null) controller.selectedTenantId.value = val; }, ), ), ), ], ); } return const SizedBox.shrink(); }), const SizedBox(height: 40), SizedBox( width: double.infinity, height: 54, child: Obx( () => ElevatedButton( onPressed: controller.isSubmitting.value ? null : controller.submit, style: ElevatedButton.styleFrom( backgroundColor: const Color(0xFF0F4C81), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(14)), ), child: controller.isSubmitting.value ? const CircularProgressIndicator(color: Colors.white) : const Text( 'حفظ وإضافة', style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold, color: Colors.white), ), ), ), ), ], ), ), ); } Widget _buildTextField({ required TextEditingController controller, required String label, required IconData icon, TextInputType? keyboardType, required bool isDark, }) { return TextField( controller: controller, keyboardType: keyboardType, decoration: InputDecoration( labelText: label, prefixIcon: Icon(icon, color: const Color(0xFF0F4C81)), border: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide(color: isDark ? Colors.white24 : Colors.grey.shade300), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: BorderSide(color: isDark ? Colors.white24 : Colors.grey.shade300), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(12), borderSide: const BorderSide(color: Color(0xFF0F4C81), width: 2), ), filled: true, fillColor: isDark ? Colors.white.withValues(alpha: 0.05) : Colors.white, ), ); } }