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