signIn method
void
signIn()
Implementation
void signIn() async {
if (!isValidateFields()) return;
final version = SharedAppConfig.appVersionBuildNumber;
final fcmToken = SharedAppConfig.fcmToken ?? '';
final params = {
'username': userNameController?.text ?? '',
'password': passwordController?.text ?? '',
'lat': locationController.latitude.value.toString(),
'lng': locationController.longitude.value.toString(),
'fcmToken': fcmToken,
'loginTypeId': kIsWeb ? 1 : 2,
'appVersion': version,
'timestamp': DateTime.now().millisecondsSinceEpoch.toString(),
'deviceUniqueId': deviceId.value,
'systemType': kIsWeb ? 'Web' : 'APK', // Web or Mobile
'platform': getPlatform(), // Android / iPhone
'device': deviceModel.value, // Device Name
'osVersion': osVersion.value // OS Version
};
isLoading.value = true;
try {
final response =
await _apiService.postData(AppUrls.loginApiNew, data: params);
final userModel = LoginNewResponse.fromJson(response.data);
if (userModel.data != null && userModel.statusCode == 200) {
final positions = userModel.data?.positions ?? [];
final userId = userModel.data?.userId ?? 0;
// Super Admin (userId = 1)
if (positions.isEmpty && userId == 1) {
final defaultRole = OrganizationHierarchyData(
idAclPositionMapping: 1,
nameAclPositionMapping: userModel.data?.displayName ?? 'Admin',
idOrganization: 1,
idDivision: 1,
idDepartment: 1,
idRole: 1,
idMasterRoleType: 1,
);
await saveUserDetailsNew(userModel.data, defaultRole);
sessionController.startSessionTimer();
navigationToModuleDashboard();
return;
}
// No roles assigned
if (positions.isEmpty) {
AppUtils.showDialogPopUp(
headerName: 'Access Denied',
content: 'No roles are assigned to your account. Please contact your administrator.',
buttonText: AppStrings.ok,
);
return;
}
if (positions.length == 1) {
await saveUserDetailsNew(userModel.data, positions.first);
navigationToModuleDashboard();
} else {
showRoleSelectionDialog(userModel.data!, positions);
}
sessionController.startSessionTimer();
// saveUserDetailsNew(userModel.data);
AppUtils.showSnackBar(userModel.message ?? 'Success Login');
} else {
AppUtils.showSnackBar(userModel.message ?? 'Something went wrong..');
}
errorMessage.value = '';
isLoading.value = false;
} catch (e) {
isLoading.value = false;
errorMessage.value = 'Failed to fetch data';
} finally {
isLoading.value = false;
}
}