diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index a93d51b..531d4a4 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -3,6 +3,9 @@
+
+
+
diff --git a/lib/controller/auth/forgot_password_controller.dart b/lib/controller/auth/forgot_password_controller.dart
index bb4e978..f5fe915 100644
--- a/lib/controller/auth/forgot_password_controller.dart
+++ b/lib/controller/auth/forgot_password_controller.dart
@@ -5,12 +5,16 @@ import 'package:marco/helpers/services/auth_service.dart';
import 'package:marco/helpers/widgets/my_form_validator.dart';
import 'package:marco/helpers/widgets/my_validators.dart';
import 'package:marco/helpers/widgets/my_snackbar.dart';
+import 'package:marco/helpers/services/app_logger.dart';
+import 'package:marco/helpers/services/storage/local_storage.dart';
+
class ForgotPasswordController extends MyController {
- MyFormValidator basicValidator = MyFormValidator();
- bool showPassword = false;
+ final MyFormValidator basicValidator = MyFormValidator();
+ final RxBool isLoading = false.obs;
@override
void onInit() {
+ super.onInit();
basicValidator.addField(
'email',
required: true,
@@ -18,49 +22,51 @@ class ForgotPasswordController extends MyController {
validators: [MyEmailValidator()],
controller: TextEditingController(text: "demo@example.com"),
);
-
- super.onInit();
}
- Future onLogin() async {
- if (basicValidator.validateForm()) {
- update();
- var errors = await AuthService.loginUser(basicValidator.getData());
- if (errors != null) {
- basicValidator.validateForm();
- basicValidator.clearErrors();
- }
- Get.toNamed('/auth/reset_password');
- update();
+Future onForgotPassword() async {
+ if (!basicValidator.validateForm()) return;
+
+ isLoading.value = true;
+ final data = basicValidator.getData();
+ final email = data['email']?.toString() ?? '';
+
+ try {
+ appLogger.i("Forgot password requested for: $email");
+ final result = await AuthService.forgotPassword(email);
+
+ if (result == null) {
+ // Success case
+ showAppSnackbar(
+ title: "Success",
+ message: "Password reset link has been sent.",
+ type: SnackbarType.success,
+ );
+ await LocalStorage.logout();
+ } else {
+ // Failure case with error map
+ final errorMessage = result['error'] ?? "Failed to send reset link. Please try again.";
+ showAppSnackbar(
+ title: "Failed",
+ message: errorMessage,
+ type: SnackbarType.error,
+ );
+ appLogger.w("Failed to send reset password email for $email: $errorMessage");
}
- }
-
- /// New: Forgot password function
- Future onForgotPassword() async {
- if (basicValidator.validateForm()) {
- update();
- final data = basicValidator.getData();
- final email = data['email']?.toString() ?? '';
- final result = await AuthService.forgotPassword(email);
-
- if (result != null) {
- showAppSnackbar(
- title: "Success",
- message: "Your password reset link was sent.",
- type: SnackbarType.success,
- );
- } else {
- showAppSnackbar(
- title: "Success",
- message: "Your password reset link was sent.",
- type: SnackbarType.success,
- );
- }
- update();
- }
- }
-
- void gotoLogIn() {
- Get.toNamed('/auth/login-option');
+ } catch (e, stacktrace) {
+ appLogger.e("Error during forgot password", error: e, stackTrace: stacktrace);
+ showAppSnackbar(
+ title: "Error",
+ message: "Something went wrong. Please try again later.",
+ type: SnackbarType.error,
+ );
+ } finally {
+ isLoading.value = false;
+ }
+}
+
+
+ void gotoLogIn() {
+ Get.offAllNamed('/auth/login-option');
}
}
diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart
index 1461d27..4ec562a 100644
--- a/lib/controller/auth/login_controller.dart
+++ b/lib/controller/auth/login_controller.dart
@@ -6,6 +6,8 @@ import 'package:marco/helpers/widgets/my_form_validator.dart';
import 'package:marco/helpers/widgets/my_validators.dart';
import 'package:marco/helpers/services/storage/local_storage.dart';
import 'package:marco/helpers/widgets/my_snackbar.dart';
+import 'package:marco/helpers/services/app_logger.dart'; // <-- logging
+
class LoginController extends MyController {
final MyFormValidator basicValidator = MyFormValidator();
@@ -51,40 +53,38 @@ class LoginController extends MyController {
isLoading.value = true;
- final errors = await AuthService.loginUser(basicValidator.getData());
+ try {
+ final loginData = basicValidator.getData();
+ appLogger.i("Attempting login for user: ${loginData['username']}");
- if (errors != null) {
- showAppSnackbar(
- title: "Login Failed",
- message: "Username or password is incorrect",
- type: SnackbarType.error,
- );
+ final errors = await AuthService.loginUser(loginData);
- basicValidator.addErrors(errors);
- basicValidator.validateForm();
- basicValidator.clearErrors();
- } else {
- await _handleRememberMe();
- final bool isMpinEnabled = LocalStorage.getIsMpin();
- print('MPIN Enabled? $isMpinEnabled');
+ if (errors != null) {
+ appLogger.w("Login failed: $errors");
- if (isMpinEnabled) {
- Get.toNamed('/home');
+ showAppSnackbar(
+ title: "Login Failed",
+ message: "Username or password is incorrect",
+ type: SnackbarType.error,
+ );
+
+ basicValidator.addErrors(errors);
+ basicValidator.validateForm();
+ basicValidator.clearErrors();
} else {
+ await _handleRememberMe();
+ appLogger.i("Login successful: ${loginData['username']}");
Get.toNamed('/home');
}
- }
-
- isLoading.value = false;
- }
-
- void handlePostLoginNavigation() {
- final bool isMpinEnabled = LocalStorage.getIsMpin();
-
- if (isMpinEnabled) {
- Get.offAllNamed('/home');
- } else {
- Get.offAllNamed('/home');
+ } catch (e, stacktrace) {
+ appLogger.e("Exception during login", error: e, stackTrace: stacktrace);
+ showAppSnackbar(
+ title: "Login Error",
+ message: "An unexpected error occurred",
+ type: SnackbarType.error,
+ );
+ } finally {
+ isLoading.value = false;
}
}
@@ -99,6 +99,7 @@ class LoginController extends MyController {
await LocalStorage.removeToken('username');
await LocalStorage.removeToken('password');
await LocalStorage.setBool('remember_me', false);
+ basicValidator.clearErrors();
}
}
@@ -123,4 +124,3 @@ class LoginController extends MyController {
Get.offAndToNamed('/auth/register_account');
}
}
-
diff --git a/lib/controller/auth/mpin_controller.dart b/lib/controller/auth/mpin_controller.dart
index fa114b9..8d8d530 100644
--- a/lib/controller/auth/mpin_controller.dart
+++ b/lib/controller/auth/mpin_controller.dart
@@ -1,14 +1,13 @@
import 'package:flutter/material.dart';
import 'package:get/get.dart';
-import 'package:logger/logger.dart';
import 'package:marco/helpers/services/auth_service.dart';
import 'package:marco/helpers/services/storage/local_storage.dart';
import 'package:marco/helpers/widgets/my_form_validator.dart';
import 'package:marco/helpers/widgets/my_snackbar.dart';
import 'package:marco/view/dashboard/dashboard_screen.dart';
+import 'package:marco/helpers/services/app_logger.dart';
class MPINController extends GetxController {
- final Logger logger = Logger();
final MyFormValidator basicValidator = MyFormValidator();
final isNewUser = false.obs;
@@ -26,11 +25,11 @@ class MPINController extends GetxController {
super.onInit();
final bool hasMpin = LocalStorage.getIsMpin();
isNewUser.value = !hasMpin;
- logger.i("[MPINController] onInit called. isNewUser: ${isNewUser.value}");
+ appLogger.i("[MPINController] onInit called. isNewUser: ${isNewUser.value}");
}
void onDigitChanged(String value, int index, {bool isRetype = false}) {
- logger.i(
+ appLogger.i(
"[MPINController] onDigitChanged -> index: $index, value: $value, isRetype: $isRetype");
final nodes = isRetype ? retypeFocusNodes : focusNodes;
if (value.isNotEmpty && index < 5) {
@@ -41,15 +40,15 @@ class MPINController extends GetxController {
}
Future onSubmitMPIN() async {
- logger.i("[MPINController] onSubmitMPIN triggered");
+ appLogger.i("[MPINController] onSubmitMPIN triggered");
if (!formKey.currentState!.validate()) {
- logger.w("[MPINController] Form validation failed");
+ appLogger.w("[MPINController] Form validation failed");
return;
}
final enteredMPIN = digitControllers.map((c) => c.text).join();
- logger.i("[MPINController] Entered MPIN: $enteredMPIN");
+ appLogger.i("[MPINController] Entered MPIN: $enteredMPIN");
if (enteredMPIN.length < 6) {
_showError("Please enter all 6 digits.");
@@ -58,7 +57,7 @@ class MPINController extends GetxController {
if (isNewUser.value) {
final retypeMPIN = retypeControllers.map((c) => c.text).join();
- logger.i("[MPINController] Retyped MPIN: $retypeMPIN");
+ appLogger.i("[MPINController] Retyped MPIN: $retypeMPIN");
if (retypeMPIN.length < 6) {
_showError("Please enter all 6 digits in Retype MPIN.");
@@ -72,11 +71,11 @@ class MPINController extends GetxController {
return;
}
- logger.i("[MPINController] MPINs matched. Proceeding to generate MPIN.");
+ appLogger.i("[MPINController] MPINs matched. Proceeding to generate MPIN.");
final bool success = await generateMPIN(mpin: enteredMPIN);
if (success) {
- logger.i("[MPINController] MPIN generation successful.");
+ appLogger.i("[MPINController] MPIN generation successful.");
showAppSnackbar(
title: "Success",
message: "MPIN generated successfully. Please login again.",
@@ -84,32 +83,32 @@ class MPINController extends GetxController {
);
await LocalStorage.logout();
} else {
- logger.w("[MPINController] MPIN generation failed.");
+ appLogger.w("[MPINController] MPIN generation failed.");
clearFields();
clearRetypeFields();
}
} else {
- logger.i("[MPINController] Existing user. Proceeding to verify MPIN.");
+ appLogger.i("[MPINController] Existing user. Proceeding to verify MPIN.");
await verifyMPIN();
}
}
Future onForgotMPIN() async {
- logger.i("[MPINController] onForgotMPIN called");
+ appLogger.i("[MPINController] onForgotMPIN called");
isNewUser.value = true;
clearFields();
clearRetypeFields();
}
void switchToEnterMPIN() {
- logger.i("[MPINController] switchToEnterMPIN called");
+ appLogger.i("[MPINController] switchToEnterMPIN called");
isNewUser.value = false;
clearFields();
clearRetypeFields();
}
void _showError(String message) {
- logger.e("[MPINController] ERROR: $message");
+ appLogger.e("[MPINController] ERROR: $message");
showAppSnackbar(
title: "Error",
message: message,
@@ -119,7 +118,7 @@ class MPINController extends GetxController {
void _navigateToDashboard({String? message}) {
if (message != null) {
- logger
+ appLogger
.i("[MPINController] Navigating to Dashboard with message: $message");
showAppSnackbar(
title: "Success",
@@ -131,7 +130,7 @@ class MPINController extends GetxController {
}
void clearFields() {
- logger.i("[MPINController] clearFields called");
+ appLogger.i("[MPINController] clearFields called");
for (final c in digitControllers) {
c.clear();
}
@@ -139,7 +138,7 @@ class MPINController extends GetxController {
}
void clearRetypeFields() {
- logger.i("[MPINController] clearRetypeFields called");
+ appLogger.i("[MPINController] clearRetypeFields called");
for (final c in retypeControllers) {
c.clear();
}
@@ -148,7 +147,7 @@ class MPINController extends GetxController {
@override
void onClose() {
- logger.i("[MPINController] onClose called");
+ appLogger.i("[MPINController] onClose called");
for (final controller in digitControllers) {
controller.dispose();
}
@@ -169,7 +168,7 @@ class MPINController extends GetxController {
}) async {
try {
isLoading.value = true;
- logger.i("[MPINController] generateMPIN started for MPIN: $mpin");
+ appLogger.i("[MPINController] generateMPIN started for MPIN: $mpin");
final employeeInfo = LocalStorage.getEmployeeInfo();
final String? employeeId = employeeInfo?.id;
@@ -180,7 +179,7 @@ class MPINController extends GetxController {
return false;
}
- logger.i(
+ appLogger.i(
"[MPINController] Calling AuthService.generateMpin for employeeId: $employeeId");
final response = await AuthService.generateMpin(
@@ -191,7 +190,7 @@ class MPINController extends GetxController {
isLoading.value = false;
if (response == null) {
- logger.i("[MPINController] MPIN generated successfully");
+ appLogger.i("[MPINController] MPIN generated successfully");
showAppSnackbar(
title: "Success",
@@ -203,7 +202,7 @@ class MPINController extends GetxController {
return true;
} else {
- logger.w(
+ appLogger.w(
"[MPINController] MPIN generation returned error response: $response");
showAppSnackbar(
title: "MPIN Generation Failed",
@@ -218,16 +217,16 @@ class MPINController extends GetxController {
} catch (e) {
isLoading.value = false;
_showError("Failed to generate MPIN: $e");
- logger.e("[MPINController] Exception in generateMPIN: $e");
+ appLogger.e("[MPINController] Exception in generateMPIN: $e");
return false;
}
}
Future verifyMPIN() async {
- logger.i("[MPINController] verifyMPIN triggered");
+ appLogger.i("[MPINController] verifyMPIN triggered");
final enteredMPIN = digitControllers.map((c) => c.text).join();
- logger.i("[MPINController] Entered MPIN: $enteredMPIN");
+ appLogger.i("[MPINController] Entered MPIN: $enteredMPIN");
if (enteredMPIN.length < 6) {
_showError("Please enter all 6 digits.");
@@ -252,7 +251,7 @@ class MPINController extends GetxController {
isLoading.value = false;
if (response == null) {
- logger.i("[MPINController] MPIN verified successfully.");
+ appLogger.i("[MPINController] MPIN verified successfully.");
// Set mpin_verified to true in local storage here:
await LocalStorage.setBool('mpin_verified', true);
@@ -265,7 +264,7 @@ class MPINController extends GetxController {
_navigateToDashboard();
} else {
final errorMessage = response["error"] ?? "Invalid MPIN";
- logger.w("[MPINController] MPIN verification failed: $errorMessage");
+ appLogger.w("[MPINController] MPIN verification failed: $errorMessage");
showAppSnackbar(
title: "Error",
message: errorMessage,
@@ -277,7 +276,7 @@ class MPINController extends GetxController {
} catch (e) {
isLoading.value = false;
final error = "Failed to verify MPIN: $e";
- logger.e("[MPINController] Exception in verifyMPIN: $error");
+ appLogger.e("[MPINController] Exception in verifyMPIN: $error");
showAppSnackbar(
title: "Error",
message: "Something went wrong. Please try again.",
diff --git a/lib/controller/auth/otp_controller.dart b/lib/controller/auth/otp_controller.dart
index 8eaa712..4cfa29b 100644
--- a/lib/controller/auth/otp_controller.dart
+++ b/lib/controller/auth/otp_controller.dart
@@ -4,6 +4,8 @@ import 'package:get/get.dart';
import 'package:marco/helpers/widgets/my_snackbar.dart';
import 'package:marco/helpers/services/auth_service.dart';
import 'package:marco/helpers/services/storage/local_storage.dart';
+import 'package:marco/helpers/services/app_logger.dart';
+
class OTPController extends GetxController {
final formKey = GlobalKey();
@@ -23,6 +25,7 @@ class OTPController extends GetxController {
void onInit() {
super.onInit();
timer.value = 0;
+ appLogger.i("[OTPController] Initialized");
}
@override
@@ -35,15 +38,18 @@ class OTPController extends GetxController {
for (final node in focusNodes) {
node.dispose();
}
+ appLogger.i("[OTPController] Disposed");
super.onClose();
}
Future _sendOTP(String email) async {
+ appLogger.i("[OTPController] Sending OTP to $email");
final result = await AuthService.generateOtp(email);
if (result == null) {
- debugPrint('OTP sent to $email');
+ appLogger.i("[OTPController] OTP sent successfully to $email");
return true;
} else {
+ appLogger.w("[OTPController] OTP send failed: ${result['error']}");
showAppSnackbar(
title: "Error",
message: result['error'] ?? "Failed to send OTP",
@@ -55,8 +61,10 @@ class OTPController extends GetxController {
Future sendOTP() async {
final userEmail = emailController.text.trim();
+ appLogger.i("[OTPController] sendOTP called for $userEmail");
if (!_validateEmail(userEmail)) {
+ appLogger.w("[OTPController] Invalid email format: $userEmail");
showAppSnackbar(
title: "Error",
message: "Please enter a valid email address",
@@ -81,8 +89,9 @@ class OTPController extends GetxController {
Future onResendOTP() async {
if (isResending.value) return;
- isResending.value = true;
+ appLogger.i("[OTPController] Resending OTP to ${email.value}");
+ isResending.value = true;
_clearOTPFields();
final success = await _sendOTP(email.value);
@@ -94,6 +103,7 @@ class OTPController extends GetxController {
}
void onOTPChanged(String value, int index) {
+ appLogger.d("[OTPController] OTP field changed: index=$index, value=$value");
if (value.isNotEmpty) {
if (index < otpControllers.length - 1) {
focusNodes[index + 1].requestFocus();
@@ -109,6 +119,7 @@ class OTPController extends GetxController {
Future verifyOTP() async {
final enteredOTP = otpControllers.map((c) => c.text).join();
+ appLogger.i("[OTPController] Verifying OTP: $enteredOTP for email: ${email.value}");
final result = await AuthService.verifyOtp(
email: email.value,
@@ -116,13 +127,14 @@ class OTPController extends GetxController {
);
if (result == null) {
+ appLogger.i("[OTPController] OTP verified successfully");
showAppSnackbar(
title: "Success",
message: "OTP verified successfully",
type: SnackbarType.success,
);
final bool isMpinEnabled = LocalStorage.getIsMpin();
- print('MPIN Enabled? $isMpinEnabled');
+ appLogger.i("[OTPController] MPIN Enabled: $isMpinEnabled");
if (isMpinEnabled) {
Get.offAllNamed('/home');
@@ -130,15 +142,18 @@ class OTPController extends GetxController {
Get.offAllNamed('/home');
}
} else {
+ final error = result['error'] ?? "Failed to verify OTP";
+ appLogger.w("[OTPController] OTP verification failed: $error");
showAppSnackbar(
title: "Error",
- message: result['error'] ?? "Failed to verify OTP",
+ message: error,
type: SnackbarType.error,
);
}
}
void _clearOTPFields() {
+ appLogger.d("[OTPController] Clearing OTP input fields");
for (final controller in otpControllers) {
controller.clear();
}
@@ -146,6 +161,7 @@ class OTPController extends GetxController {
}
void _startTimer() {
+ appLogger.i("[OTPController] Starting resend timer");
timer.value = 60;
_countdownTimer?.cancel();
_countdownTimer = Timer.periodic(const Duration(seconds: 1), (timer) {
@@ -158,6 +174,8 @@ class OTPController extends GetxController {
}
void resetForChangeEmail() {
+ appLogger.i("[OTPController] Resetting OTP form for change email");
+
isOTPSent.value = false;
email.value = '';
emailController.clear();
diff --git a/lib/controller/auth/register_account_controller.dart b/lib/controller/auth/register_account_controller.dart
index 61632b6..836a13d 100644
--- a/lib/controller/auth/register_account_controller.dart
+++ b/lib/controller/auth/register_account_controller.dart
@@ -3,16 +3,17 @@ import 'package:get/get.dart';
import 'package:marco/controller/my_controller.dart';
import 'package:marco/helpers/widgets/my_form_validator.dart';
import 'package:marco/helpers/widgets/my_validators.dart';
-
-import 'package:marco/helpers/services/auth_service.dart';
+import 'package:marco/helpers/services/auth_service.dart';
+import 'package:marco/helpers/services/app_logger.dart';
class RegisterAccountController extends MyController {
MyFormValidator basicValidator = MyFormValidator();
-
bool showPassword = false;
@override
void onInit() {
+ appLogger.i("[RegisterAccountController] onInit called");
+
basicValidator.addField(
'email',
required: true,
@@ -38,29 +39,39 @@ class RegisterAccountController extends MyController {
validators: [MyLengthValidator(min: 6, max: 10)],
controller: TextEditingController(),
);
+
super.onInit();
}
Future onLogin() async {
if (basicValidator.validateForm()) {
update();
+ appLogger.i("[RegisterAccountController] Submitting registration data: ${basicValidator.getData()}");
+
var errors = await AuthService.loginUser(basicValidator.getData());
if (errors != null) {
+ appLogger.w("[RegisterAccountController] Login errors: $errors");
basicValidator.addErrors(errors);
basicValidator.validateForm();
basicValidator.clearErrors();
}
+
+ appLogger.i("[RegisterAccountController] Redirecting to /starter");
Get.toNamed('/starter');
update();
+ } else {
+ appLogger.w("[RegisterAccountController] Validation failed");
}
}
void onChangeShowPassword() {
showPassword = !showPassword;
+ appLogger.i("[RegisterAccountController] showPassword toggled: $showPassword");
update();
}
void gotoLogin() {
+ appLogger.i("[RegisterAccountController] Navigating to /auth/login-option");
Get.toNamed('/auth/login-option');
}
}
diff --git a/lib/controller/auth/reset_password_controller.dart b/lib/controller/auth/reset_password_controller.dart
index 819d709..983e957 100644
--- a/lib/controller/auth/reset_password_controller.dart
+++ b/lib/controller/auth/reset_password_controller.dart
@@ -4,56 +4,68 @@ import 'package:marco/controller/my_controller.dart';
import 'package:marco/helpers/services/auth_service.dart';
import 'package:marco/helpers/widgets/my_form_validator.dart';
import 'package:marco/helpers/widgets/my_validators.dart';
+import 'package:marco/helpers/services/app_logger.dart';
class ResetPasswordController extends MyController {
MyFormValidator basicValidator = MyFormValidator();
bool showPassword = false;
-
bool confirmPassword = false;
@override
void onInit() {
super.onInit();
+ appLogger.i("[ResetPasswordController] onInit called");
+
basicValidator.addField(
'password',
required: true,
- validators: [
- MyLengthValidator(min: 6, max: 10),
- ],
+ validators: [MyLengthValidator(min: 6, max: 10)],
controller: TextEditingController(),
);
+
basicValidator.addField(
'confirm_password',
required: true,
label: "Confirm password",
- validators: [
- MyLengthValidator(min: 6, max: 10),
- ],
+ validators: [MyLengthValidator(min: 6, max: 10)],
controller: TextEditingController(),
);
}
Future onResetPassword() async {
+ appLogger.i("[ResetPasswordController] onResetPassword triggered");
+
if (basicValidator.validateForm()) {
+ final data = basicValidator.getData();
+ appLogger.i("[ResetPasswordController] Form data: $data");
+
update();
- var errors = await AuthService.loginUser(basicValidator.getData());
+ var errors = await AuthService.loginUser(data);
+
if (errors != null) {
+ appLogger.w("[ResetPasswordController] Received errors: $errors");
basicValidator.addErrors(errors);
basicValidator.validateForm();
basicValidator.clearErrors();
}
+
+ appLogger.i("[ResetPasswordController] Navigating to /home");
Get.toNamed('/home');
update();
+ } else {
+ appLogger.w("[ResetPasswordController] Form validation failed");
}
}
void onChangeShowPassword() {
showPassword = !showPassword;
+ appLogger.i("[ResetPasswordController] showPassword toggled: $showPassword");
update();
}
void onConfirmPassword() {
confirmPassword = !confirmPassword;
+ appLogger.i("[ResetPasswordController] confirmPassword toggled: $confirmPassword");
update();
}
-}
\ No newline at end of file
+}
diff --git a/lib/controller/dashboard/add_employee_controller.dart b/lib/controller/dashboard/add_employee_controller.dart
index 02f7798..1d28c29 100644
--- a/lib/controller/dashboard/add_employee_controller.dart
+++ b/lib/controller/dashboard/add_employee_controller.dart
@@ -3,10 +3,10 @@ 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:logger/logger.dart';
import 'package:marco/helpers/widgets/my_snackbar.dart';
import 'package:flutter_contacts/flutter_contacts.dart';
import 'package:permission_handler/permission_handler.dart';
+import 'package:marco/helpers/services/app_logger.dart';
enum Gender {
male,
@@ -16,7 +16,6 @@ enum Gender {
const Gender();
}
-final Logger logger = Logger();
class AddEmployeeController extends MyController {
List files = [];
@@ -67,7 +66,7 @@ class AddEmployeeController extends MyController {
@override
void onInit() {
super.onInit();
- logger.i("Initializing AddEmployeeController...");
+ appLogger.i("Initializing AddEmployeeController...");
_initializeFields();
fetchRoles();
}
@@ -91,41 +90,41 @@ class AddEmployeeController extends MyController {
required: true,
controller: TextEditingController(),
);
- logger.i("Fields initialized for first_name, phone_number, last_name.");
+ appLogger.i("Fields initialized for first_name, phone_number, last_name.");
}
void onGenderSelected(Gender? gender) {
selectedGender = gender;
- logger.i("Gender selected: ${gender?.name}");
+ appLogger.i("Gender selected: ${gender?.name}");
update();
}
Future fetchRoles() async {
- logger.i("Fetching roles...");
+ appLogger.i("Fetching roles...");
try {
final result = await ApiService.getRoles();
if (result != null) {
roles = List