import 'package:flutter/material.dart';
import 'package:get/get.dart';
import '../../constant/links.dart';
import '../functions/crud.dart';
import '../functions/device_info.dart';
import '../../views/widgets/snackbar.dart';

class StaffController extends GetxController {
  final CRUD _crud = CRUD();
  final formKey = GlobalKey<FormState>();

  // التكست كنترولرز
  final nameController = TextEditingController();
  final phoneController = TextEditingController();
  final emailController = TextEditingController();
  final passwordController = TextEditingController();
  final birthdateController = TextEditingController();
  
  String selectedGender = 'Male';
  String selectedRole = 'service'; // 'admin' or 'service'
  
  bool isLoading = false;

  Future<void> registerStaff() async {
    if (!formKey.currentState!.validate()) return;

    isLoading = true;
    update();

    try {
      // ملاحظة: لا نأخذ بصمة جهاز الأدمن هنا، بل نتركها فارغة ليقوم الموظف بربطها عند أول دخول له
      String fingerprint = ""; 

      var response = await _crud.post(
        link: AppLink.addStaff,
        payload: {
          "name": nameController.text.trim(),
          "phone": phoneController.text.trim(),
          "email": emailController.text.trim(),
          "password": passwordController.text.trim(),
          "role": selectedRole,
          "gender": selectedGender,
          "birthdate": birthdateController.text.trim(),
          "fingerprint": fingerprint,
          "site": "main", // القيمة الافتراضية للفرع
        },
      );

      if (response != "failure") {
        mySnackbarSuccess('تمت إضافة الموظف بنجاح');
        _clearFields();
        Get.back();
      } else {
        mySnackeBarError('فشل في إضافة الموظف. يرجى المحاولة لاحقاً');
      }
    } catch (e) {
      mySnackeBarError('حدث خطأ: $e');
    } finally {
      isLoading = false;
      update();
    }
  }

  void _clearFields() {
    nameController.clear();
    phoneController.clear();
    emailController.clear();
    passwordController.clear();
    birthdateController.clear();
  }

  @override
  void onClose() {
    nameController.dispose();
    phoneController.dispose();
    emailController.dispose();
    passwordController.dispose();
    birthdateController.dispose();
    super.onClose();
  }
}
