import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:marco/controller/my_controller.dart'; import 'package:marco/helpers/widgets/my_form_validator.dart'; import 'package:marco/helpers/services/api_service.dart'; import 'package:get/get.dart'; import 'package:logger/logger.dart'; enum Gender { male, female, other; const Gender(); } final Logger logger = Logger(); class AddEmployeeController extends MyController { List files = []; MyFormValidator basicValidator = MyFormValidator(); Gender? selectedGender; List> roles = []; String? selectedRoleId; @override void onInit() { super.onInit(); logger.i("Initializing AddEmployeeController..."); fetchRoles(); basicValidator.addField( 'first_name', label: "First Name", required: true, controller: TextEditingController(), ); basicValidator.addField( 'phone_number', label: "Phone Number", required: true, controller: TextEditingController(), ); basicValidator.addField( 'last_name', label: "Last Name", required: true, controller: TextEditingController(), ); logger.i("Fields initialized for first_name, phone_number, last_name."); } bool showOnline = true; final List categories = []; void onGenderSelected(Gender? gender) { selectedGender = gender; logger.i("Gender selected: ${gender?.name}"); update(); } Future fetchRoles() async { logger.i("Fetching roles..."); final result = await ApiService.getRoles(); if (result != null) { roles = List>.from(result); logger.i("Roles fetched successfully."); update(); } else { logger.e("Failed to fetch roles."); } } void onRoleSelected(String? roleId) { selectedRoleId = roleId; logger.i("Role selected: $roleId"); update(); } Future createEmployees() async { logger.i("Starting employee creation..."); if (selectedGender == null || selectedRoleId == null) { logger.w("Missing gender or role."); Get.snackbar( "Missing Fields", "Please select both Gender and Role.", snackPosition: SnackPosition.BOTTOM, ); return; } final firstName = basicValidator.getController("first_name")?.text.trim(); final lastName = basicValidator.getController("last_name")?.text.trim(); final phoneNumber = basicValidator.getController("phone_number")?.text.trim(); logger.i( "Creating employee with Name: $firstName $lastName, Phone: $phoneNumber, Gender: ${selectedGender!.name}"); final response = await ApiService.createEmployee( firstName: firstName!, lastName: lastName!, phoneNumber: phoneNumber!, gender: selectedGender!.name, jobRoleId: selectedRoleId!, ); if (response == true) { logger.i("Employee created successfully."); Get.back(); // Or navigate as needed Get.snackbar("Success", "Employee created successfully!", snackPosition: SnackPosition.BOTTOM); } else { logger.e("Failed to create employee."); Get.snackbar("Error", "Failed to create employee.", snackPosition: SnackPosition.BOTTOM); } } }