diff --git a/lib/config/routes.dart b/lib/config/routes.dart index a9007cb..e377b8a 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -8,7 +8,7 @@ import 'package:mohem_flutter_app/ui/login/verify_last_login_screen.dart'; import 'package:mohem_flutter_app/ui/login/verify_login_screen.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart'; import 'package:mohem_flutter_app/ui/my_attendance/my_attendance_screen.dart'; -import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_screen.dart'; +import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart'; // import 'package:mohem_flutter_app/ui/my_attendance/work_from_home_screen.dart'; import 'package:mohem_flutter_app/ui/screens/eit/add_eit.dart'; import 'package:mohem_flutter_app/ui/screens/profile/profile_screen.dart'; diff --git a/lib/models/profile/basic_details_cols_structions.dart b/lib/models/profile/basic_details_cols_structions.dart index 2094a3c..dceacd6 100644 --- a/lib/models/profile/basic_details_cols_structions.dart +++ b/lib/models/profile/basic_details_cols_structions.dart @@ -1,3 +1,5 @@ +import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; + class GetBasicDetColsStructureList { String? aPPLICATIONCOLUMNNAME; String? dATATYPE; @@ -9,7 +11,7 @@ class GetBasicDetColsStructureList { String? rEQUIREDFLAG; String? sEGMENTPROMPT; int? sEGMENTSEQNUM; - String? fieldAnswer; + GetEmployeeBasicDetailsList? userBasicDetail; GetBasicDetColsStructureList({ this.aPPLICATIONCOLUMNNAME, this.dATATYPE, @@ -21,7 +23,7 @@ class GetBasicDetColsStructureList { this.rEQUIREDFLAG, this.sEGMENTPROMPT, this.sEGMENTSEQNUM, - this.fieldAnswer, + this.userBasicDetail, }); GetBasicDetColsStructureList.fromJson(Map json) { diff --git a/lib/models/profile/basic_details_dff_structure.dart b/lib/models/profile/basic_details_dff_structure.dart index 45bf406..db3312e 100644 --- a/lib/models/profile/basic_details_dff_structure.dart +++ b/lib/models/profile/basic_details_dff_structure.dart @@ -1,4 +1,5 @@ import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; class GetBasicDetDffStructureList { String? aLPHANUMERICALLOWEDFLAG; @@ -38,7 +39,7 @@ class GetBasicDetDffStructureList { String? uSEDFLAG; String? vALIDATIONTYPE; String? vALIDATIONTYPEDSP; - String? fieldAnswer; + GetEmployeeBasicDetailsList? userBasicDetail; GetBasicDetDffStructureList( {this.aLPHANUMERICALLOWEDFLAG, @@ -78,7 +79,7 @@ class GetBasicDetDffStructureList { this.uSEDFLAG, this.vALIDATIONTYPE, this.vALIDATIONTYPEDSP, - this.fieldAnswer}); + this.userBasicDetail}); GetBasicDetDffStructureList.fromJson(Map json) { aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; diff --git a/lib/ui/profile/basic_details.dart b/lib/ui/profile/basic_details.dart index 0faa885..4733777 100644 --- a/lib/ui/profile/basic_details.dart +++ b/lib/ui/profile/basic_details.dart @@ -4,16 +4,12 @@ import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; -import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; -import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; -import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; -import 'package:mohem_flutter_app/ui/profile/profile.dart'; +import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; -import 'package:mohem_flutter_app/widgets/radio/show_radio.dart'; class BasicDetails extends StatefulWidget { const BasicDetails({Key? key}) : super(key: key); @@ -236,6 +232,7 @@ class _BasicDetailsState extends State { void continueDynamicForms() { Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile, - arguments: DynamicListViewParams(LocaleKeys.profile_basicDetails.tr(), 'HR_PERINFO_SS', uRL: 'GET_BASIC_DET_DFF_STRUCTURE', requestID: 'BASIC_DETAILS')); + arguments: DynamicProfileParams(LocaleKeys.profile_basicDetails.tr(), 'HR_PERINFO_SS', + uRL: 'GET_BASIC_DET_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeBasicDetailsList: getEmployeeBasicDetailsList)); } } diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart similarity index 72% rename from lib/ui/profile/dynamic_screens/dynamic_input_screen.dart rename to lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart index 0ee9fb5..6ce01bc 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart @@ -13,6 +13,7 @@ import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/dyanmic_forms/get_set_values_request_model.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; @@ -20,6 +21,18 @@ import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; +class DynamicProfileParams { + String title; + String dynamicId; + String uRL; + String requestID; + String colsURL; + List? getEmployeeBasicDetailsList; + + DynamicProfileParams(this.title, this.dynamicId, + {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeBasicDetailsList = const []}); +} + class DynamicInputScreenProfile extends StatefulWidget { DynamicInputScreenProfile({Key? key}) : super(key: key); @@ -33,7 +46,7 @@ class _DynamicInputScreenState extends State { GenericResponseModel? genericResponseModel; List? getBasicDetDffStructureList; List? getBasicDetColsStructureList; - DynamicListViewParams? dynamicParams; + DynamicProfileParams? dynamicParams; @override void initState() { @@ -45,10 +58,16 @@ class _DynamicInputScreenState extends State { Utils.showLoading(context); genericResponseModel = await ProfileApiClient().getDffStructure(dynamicParams!.dynamicId, dynamicParams!.uRL, dynamicParams!.requestID); getBasicDetDffStructureList = genericResponseModel?.getBasicDetDffStructureList ?? []; - //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); + + getBasicDetDffStructureList?.forEach((element) { + element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); + }); genericResponseModel = await ProfileApiClient().getColStructure(dynamicParams!.dynamicId, 'GET_BASIC_DET_COLS_STRUCTURE', dynamicParams!.requestID); getBasicDetColsStructureList = genericResponseModel?.getBasicDetColsStructureList ?? []; + getBasicDetColsStructureList?.forEach((element) { + element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); + }); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -89,7 +108,7 @@ class _DynamicInputScreenState extends State { @override Widget build(BuildContext context) { if (dynamicParams == null) { - dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicListViewParams; + dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicProfileParams; getTransactionsStructure(); } return Scaffold( @@ -100,23 +119,33 @@ class _DynamicInputScreenState extends State { ), body: Column( children: [ - (getBasicDetDffStructureList == null + (getBasicDetDffStructureList == null && getBasicDetColsStructureList == null ? const SizedBox() - : (getBasicDetDffStructureList!.isEmpty + : (getBasicDetDffStructureList!.isEmpty && getBasicDetColsStructureList!.isEmpty ? LocaleKeys.noDataAvailable.tr().toText16().center - : ListView.separated( + : ListView( physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), - itemBuilder: (BuildContext cxt, int parentIndex) { - if (parentIndex < getBasicDetColsStructureList!.length) { - return parseDynamicFormatTypeCols(getBasicDetColsStructureList![parentIndex], parentIndex); - } else { - int count = parentIndex - getBasicDetColsStructureList!.length; - return parseDynamicFormatType(getBasicDetDffStructureList![count], count); - } - }, - separatorBuilder: (cxt, index) => 0.height, - itemCount: getBasicDetColsStructureList!.length + getBasicDetDffStructureList!.length))) + children: [ + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeCols(getBasicDetColsStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getBasicDetColsStructureList!.length), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatType(getBasicDetDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getBasicDetDffStructureList!.length), + ], + ))) .expanded, // 12.height, DefaultButton( @@ -143,21 +172,16 @@ class _DynamicInputScreenState extends State { return PopupMenuButton( child: DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - model.eSERVICESDV?.pIDCOLUMNNAME ?? "", + model.userBasicDetail?.sEGMENTVALUEDSP ?? "", isEnable: false, isPopup: true, ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), ], - onSelected: (int index) { - ESERVICESDV eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: model.eSERVICESVS![index].vALUECOLUMNNAME, - pRETURNMSG: "null", - pRETURNSTATUS: getBasicDetDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: model.eSERVICESVS![index].vALUECOLUMNNAME); - - print(model.eSERVICESVS![index].toJson()); + onSelected: (int popupIndex) { + getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME!; + setState(() {}); }); } @@ -166,19 +190,20 @@ class _DynamicInputScreenState extends State { model.eSERVICESDV?.pIDCOLUMNNAME ?? "", isReadOnly: model.rEADONLY == "Y", onChange: (text) { - model.fieldAnswer = text; + getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = text; + }, ).paddingOnly(bottom: 12); } else if (model.fORMATTYPE == "X") { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - model.eSERVICESDV?.pIDCOLUMNNAME ?? (getBasicDetDffStructureList![index].fieldAnswer ?? ""), + model.eSERVICESDV?.pIDCOLUMNNAME ?? (getBasicDetDffStructureList![index].userBasicDetail?.sEGMENTVALUEDSP ?? ""), suffixIconData: Icons.calendar_today, isEnable: false, onTap: () async { DateTime date = await _selectDate(context); DateTime date1 = DateTime(date.year, date.month, date.day); - getBasicDetDffStructureList![index].fieldAnswer = date.toString(); + getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = date.toString(); ESERVICESDV eservicesdv = ESERVICESDV( pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1), pRETURNMSG: "null", @@ -211,45 +236,47 @@ class _DynamicInputScreenState extends State { return PopupMenuButton( child: DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - "", //model.aPPLICATIONCOLUMNNAME ?? "", + model.userBasicDetail?.sEGMENTVALUEDSP ?? "", isEnable: false, isPopup: true, ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ for (int i = 0; i < model.objectValuesList!.length; i++) PopupMenuItem(child: Text(model.objectValuesList![i].mEANING!), value: i), ], - onSelected: (int index) { + onSelected: (int popupIndex) { ESERVICESDV eservicesdv = ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![index].dESCRIPTION, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME); + getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].dESCRIPTION!; + setState(() {}); }); } return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - model.fieldAnswer ?? "", + model.userBasicDetail?.sEGMENTVALUEDSP ?? "", //model.aPPLICATIONCOLUMNNAME ?? "", //"", isReadOnly: false, onChange: (text) { - model.fieldAnswer = text; + getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = text; }, ).paddingOnly(bottom: 12); } else if (model.dATATYPE == "DATE") { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - model.aPPLICATIONCOLUMNNAME ?? (getBasicDetColsStructureList![index].fieldAnswer ?? ""), + model.aPPLICATIONCOLUMNNAME ?? (getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP ?? ""), suffixIconData: Icons.calendar_today, isEnable: false, onTap: () async { DateTime date = await _selectDate(context); DateTime date1 = DateTime(date.year, date.month, date.day); - getBasicDetDffStructureList![index].fieldAnswer = date.toString(); - ESERVICESDV eservicesdv = ESERVICESDV( - pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1), - pRETURNMSG: "null", - pRETURNSTATUS: getBasicDetDffStructureList![index].dEFAULTVALUE, - pVALUECOLUMNNAME: DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); - getBasicDetDffStructureList![index].eSERVICESDV = eservicesdv; + getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP = date.toString(); + // ESERVICESDV eservicesdv = ESERVICESDV( + // pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1), + // pRETURNMSG: "null", + // pRETURNSTATUS: getBasicDetDffStructureList![index].dEFAULTVALUE, + // pVALUECOLUMNNAME: DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + // getBasicDetDffStructureList![index].eSERVICESDV = eservicesdv; setState(() {}); // if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { // calGetValueSetValues(model);