corrected the prefield data while editing employee
This commit is contained in:
parent
d02211d389
commit
26675388dd
@ -36,57 +36,61 @@ class _AddEmployeeBottomSheetState extends State<AddEmployeeBottomSheet>
|
||||
late final TextEditingController _genderController;
|
||||
late final TextEditingController _roleController;
|
||||
|
||||
@override
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_orgFieldController = TextEditingController();
|
||||
_joiningDateController = TextEditingController();
|
||||
_genderController = TextEditingController();
|
||||
_roleController = TextEditingController();
|
||||
|
||||
_controller = Get.put(
|
||||
AddEmployeeController(),
|
||||
// Unique tag to avoid clashes, but stable for this widget instance
|
||||
tag: UniqueKey().toString(),
|
||||
);
|
||||
_controller = Get.put(AddEmployeeController(), tag: UniqueKey().toString());
|
||||
|
||||
_orgFieldController = TextEditingController(text: '');
|
||||
_joiningDateController = TextEditingController(text: '');
|
||||
_genderController = TextEditingController(text: '');
|
||||
_roleController = TextEditingController(text: '');
|
||||
|
||||
// Prefill when editing
|
||||
if (widget.employeeData != null) {
|
||||
_controller.editingEmployeeData = widget.employeeData;
|
||||
_controller.prefillFields();
|
||||
|
||||
final orgId = widget.employeeData!['organizationId'];
|
||||
if (orgId != null) {
|
||||
_controller.selectedOrganizationId = orgId;
|
||||
// Prepopulate hasApplicationAccess and email
|
||||
_hasApplicationAccess =
|
||||
widget.employeeData?['hasApplicationAccess'] ?? false;
|
||||
|
||||
final selectedOrg = _organizationController.organizations
|
||||
.firstWhereOrNull((o) => o.id == orgId);
|
||||
if (selectedOrg != null) {
|
||||
_organizationController.selectOrganization(selectedOrg);
|
||||
_orgFieldController.text = selectedOrg.name;
|
||||
}
|
||||
final email = widget.employeeData?['email'];
|
||||
if (email != null && email.toString().isNotEmpty) {
|
||||
_controller.basicValidator.getController('email')?.text =
|
||||
email.toString();
|
||||
}
|
||||
|
||||
// Trigger UI rebuild to reflect email & checkbox
|
||||
setState(() {});
|
||||
|
||||
// Joining date
|
||||
if (_controller.joiningDate != null) {
|
||||
_joiningDateController.text =
|
||||
DateFormat('dd MMM yyyy').format(_controller.joiningDate!);
|
||||
}
|
||||
|
||||
// Gender
|
||||
if (_controller.selectedGender != null) {
|
||||
_genderController.text =
|
||||
_controller.selectedGender!.name.capitalizeFirst ?? '';
|
||||
}
|
||||
|
||||
final roleName = _controller.roles.firstWhereOrNull(
|
||||
(r) => r['id'] == _controller.selectedRoleId)?['name'] ??
|
||||
'';
|
||||
_roleController.text = roleName;
|
||||
// Role
|
||||
_controller.fetchRoles().then((_) {
|
||||
if (_controller.selectedRoleId != null) {
|
||||
final roleName = _controller.roles.firstWhereOrNull(
|
||||
(r) => r['id'] == _controller.selectedRoleId,
|
||||
)?['name'];
|
||||
if (roleName != null) {
|
||||
_roleController.text = roleName;
|
||||
}
|
||||
_controller.update();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
_orgFieldController.text = _organizationController.currentSelection;
|
||||
_controller.fetchRoles();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_orgFieldController.dispose();
|
||||
|
@ -12,15 +12,17 @@ class EmployeeDetailsModel {
|
||||
final String phoneNumber;
|
||||
final String? emergencyPhoneNumber;
|
||||
final String? emergencyContactPerson;
|
||||
final String? aadharNumber;
|
||||
final bool isActive;
|
||||
final String? panNumber;
|
||||
final String? photo;
|
||||
final String? applicationUserId;
|
||||
final String jobRoleId;
|
||||
final bool isRootUser;
|
||||
final bool isSystem;
|
||||
final String jobRole;
|
||||
|
||||
final String jobRoleId;
|
||||
final String? photo;
|
||||
final String? applicationUserId;
|
||||
final bool hasApplicationAccess;
|
||||
final String? organizationId;
|
||||
final String? aadharNumber;
|
||||
final String? panNumber;
|
||||
EmployeeDetailsModel({
|
||||
required this.id,
|
||||
required this.firstName,
|
||||
@ -35,14 +37,17 @@ class EmployeeDetailsModel {
|
||||
required this.phoneNumber,
|
||||
this.emergencyPhoneNumber,
|
||||
this.emergencyContactPerson,
|
||||
this.aadharNumber,
|
||||
required this.isActive,
|
||||
this.panNumber,
|
||||
this.photo,
|
||||
this.applicationUserId,
|
||||
required this.jobRoleId,
|
||||
required this.isRootUser,
|
||||
required this.isSystem,
|
||||
required this.jobRole,
|
||||
required this.jobRoleId,
|
||||
this.photo,
|
||||
this.applicationUserId,
|
||||
required this.hasApplicationAccess,
|
||||
this.organizationId,
|
||||
this.aadharNumber,
|
||||
this.panNumber,
|
||||
});
|
||||
|
||||
factory EmployeeDetailsModel.fromJson(Map<String, dynamic> json) {
|
||||
@ -60,24 +65,20 @@ class EmployeeDetailsModel {
|
||||
phoneNumber: json['phoneNumber'],
|
||||
emergencyPhoneNumber: json['emergencyPhoneNumber'],
|
||||
emergencyContactPerson: json['emergencyContactPerson'],
|
||||
aadharNumber: json['aadharNumber'],
|
||||
isActive: json['isActive'],
|
||||
panNumber: json['panNumber'],
|
||||
photo: json['photo'],
|
||||
applicationUserId: json['applicationUserId'],
|
||||
jobRoleId: json['jobRoleId'],
|
||||
isRootUser: json['isRootUser'],
|
||||
isSystem: json['isSystem'],
|
||||
jobRole: json['jobRole'],
|
||||
jobRoleId: json['jobRoleId'],
|
||||
photo: json['photo'],
|
||||
applicationUserId: json['applicationUserId'],
|
||||
hasApplicationAccess: json['hasApplicationAccess'],
|
||||
organizationId: json['organizationId'],
|
||||
aadharNumber: json['aadharNumber'],
|
||||
panNumber: json['panNumber'],
|
||||
);
|
||||
}
|
||||
|
||||
static DateTime? _parseDate(String? dateStr) {
|
||||
if (dateStr == null || dateStr == "0001-01-01T00:00:00") {
|
||||
return null;
|
||||
}
|
||||
return DateTime.tryParse(dateStr);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
'id': id,
|
||||
@ -93,14 +94,24 @@ class EmployeeDetailsModel {
|
||||
'phoneNumber': phoneNumber,
|
||||
'emergencyPhoneNumber': emergencyPhoneNumber,
|
||||
'emergencyContactPerson': emergencyContactPerson,
|
||||
'aadharNumber': aadharNumber,
|
||||
'isActive': isActive,
|
||||
'panNumber': panNumber,
|
||||
'photo': photo,
|
||||
'applicationUserId': applicationUserId,
|
||||
'jobRoleId': jobRoleId,
|
||||
'isRootUser': isRootUser,
|
||||
'isSystem': isSystem,
|
||||
'jobRole': jobRole,
|
||||
'jobRoleId': jobRoleId,
|
||||
'photo': photo,
|
||||
'applicationUserId': applicationUserId,
|
||||
'hasApplicationAccess': hasApplicationAccess,
|
||||
'organizationId': organizationId,
|
||||
'aadharNumber': aadharNumber,
|
||||
'panNumber': panNumber,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
static DateTime? _parseDate(String? dateStr) {
|
||||
if (dateStr == null || dateStr == "0001-01-01T00:00:00") {
|
||||
return null;
|
||||
}
|
||||
return DateTime.tryParse(dateStr);
|
||||
}
|
||||
}
|
@ -251,8 +251,8 @@ class _EmployeeDetailPageState extends State<EmployeeDetailPage> {
|
||||
),
|
||||
),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.edit,
|
||||
size: 24, color: Colors.red),
|
||||
icon:
|
||||
const Icon(Icons.edit, size: 24, color: Colors.red),
|
||||
onPressed: () async {
|
||||
final result =
|
||||
await showModalBottomSheet<Map<String, dynamic>>(
|
||||
@ -265,6 +265,9 @@ class _EmployeeDetailPageState extends State<EmployeeDetailPage> {
|
||||
'first_name': employee.firstName,
|
||||
'last_name': employee.lastName,
|
||||
'phone_number': employee.phoneNumber,
|
||||
'email': employee.email,
|
||||
'hasApplicationAccess':
|
||||
employee.hasApplicationAccess,
|
||||
'gender': employee.gender.toLowerCase(),
|
||||
'job_role_id': employee.jobRoleId,
|
||||
'joining_date':
|
||||
|
Loading…
x
Reference in New Issue
Block a user