end employment dynamic forms added. exit-reEntry getvaluesSetvalues issue fixed. request submit screen title issue fixed.
							parent
							
								
									bf7a18b91c
								
							
						
					
					
						commit
						f0ec4843b4
					
				| @ -0,0 +1,74 @@ | |||||||
|  | import 'dart:async'; | ||||||
|  | 
 | ||||||
|  | import 'package:mohem_flutter_app/api/api_client.dart'; | ||||||
|  | import 'package:mohem_flutter_app/app_state/app_state.dart'; | ||||||
|  | import 'package:mohem_flutter_app/classes/consts.dart'; | ||||||
|  | import 'package:mohem_flutter_app/models/generic_response_model.dart'; | ||||||
|  | import 'package:mohem_flutter_app/models/submit_term_transaction_list_model.dart'; | ||||||
|  | import 'package:mohem_flutter_app/models/termination/get_term_cols_structure_list_model.dart'; | ||||||
|  | import 'package:mohem_flutter_app/models/termination/get_term_dff_structure_list_model.dart'; | ||||||
|  | import 'package:mohem_flutter_app/start_term_approval_process_list_model.dart'; | ||||||
|  | 
 | ||||||
|  | class TerminationDffApiClient { | ||||||
|  |   static final TerminationDffApiClient _instance = TerminationDffApiClient._internal(); | ||||||
|  | 
 | ||||||
|  |   TerminationDffApiClient._internal(); | ||||||
|  | 
 | ||||||
|  |   factory TerminationDffApiClient() => _instance; | ||||||
|  | 
 | ||||||
|  |   Future<List<GetTermColsStructureList>?> getTermColsStructure() async { | ||||||
|  |     String url = "${ApiConsts.erpRest}GET_TERM_COLS_STRUCTURE"; | ||||||
|  |     Map<String, dynamic> postParams = {}; | ||||||
|  |     postParams.addAll(AppState().postParamsJson); | ||||||
|  |     return await ApiClient().postJsonForObject((json) { | ||||||
|  |       GenericResponseModel genericResponseModel = GenericResponseModel.fromJson(json); | ||||||
|  |       return genericResponseModel.getTermColsStructureList ?? []; | ||||||
|  |     }, url, postParams); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Future<List<GetTermDffStructureList>?> getTermDffStructure(String functionName, String? pDescFlexContextCode) async { | ||||||
|  |     String url = "${ApiConsts.erpRest}GET_TERM_DFF_STRUCTURE"; | ||||||
|  |     Map<String, dynamic> postParams = {'P_FUNCTION_NAME': functionName, "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode}; | ||||||
|  |     postParams.addAll(AppState().postParamsJson); | ||||||
|  |     return await ApiClient().postJsonForObject((json) { | ||||||
|  |       GenericResponseModel genericResponseModel = GenericResponseModel.fromJson(json); | ||||||
|  |       return genericResponseModel.getTermDffStructureList ?? []; | ||||||
|  |     }, url, postParams); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Future<SubmitTermTransactionList> submitTermTransaction(String functionName, List<Map<String, dynamic>> list) async { | ||||||
|  |     String url = "${ApiConsts.erpRest}SUBMIT_TERM_TRANSACTION"; | ||||||
|  |     Map<String, dynamic> postParams = { | ||||||
|  |       "P_SELECTED_RESP_ID": -999, | ||||||
|  |       "P_MENU_TYPE": "E", | ||||||
|  |       "P_FUNCTION_NAME": functionName, | ||||||
|  |       "EITTransactionTBL": list, | ||||||
|  |     }; | ||||||
|  |     postParams.addAll(AppState().postParamsJson); | ||||||
|  | 
 | ||||||
|  |     for (var abc in list) { | ||||||
|  |       print(abc); | ||||||
|  |     } | ||||||
|  |     return await ApiClient().postJsonForObject((json) { | ||||||
|  |       GenericResponseModel genericResponseModel = GenericResponseModel.fromJson(json); | ||||||
|  |       return genericResponseModel.submitTermTransactionList!; | ||||||
|  |     }, url, postParams); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Future<StartTermApprovalProcessList> startTermApprovalProcess(String action, String comments, String itemKey, int transactionId) async { | ||||||
|  |     String url = "${ApiConsts.erpRest}START_TERM_APPROVAL_PROCESS"; | ||||||
|  |     Map<String, dynamic> postParams = { | ||||||
|  |       "P_SELECTED_RESP_ID": -999, | ||||||
|  |       "P_MENU_TYPE": "E", | ||||||
|  |       "P_ACTION_MODE": action, | ||||||
|  |       "P_COMMENTS": comments, | ||||||
|  |       "P_ITEM_KEY": itemKey, | ||||||
|  |       "P_TRANSACTION_ID": transactionId, | ||||||
|  |     }; | ||||||
|  |     postParams.addAll(AppState().postParamsJson); | ||||||
|  |     return await ApiClient().postJsonForObject((json) { | ||||||
|  |       GenericResponseModel genericResponseModel = GenericResponseModel.fromJson(json); | ||||||
|  |       return genericResponseModel.startTermApprovalProcessList!; | ||||||
|  |     }, url, postParams); | ||||||
|  |   } | ||||||
|  | } | ||||||
											
												
													File diff suppressed because it is too large
													Load Diff
												
											
										
									
								| @ -0,0 +1,24 @@ | |||||||
|  | class SubmitTermTransactionList { | ||||||
|  |   String? pITEMKEY; | ||||||
|  |   String? pRETURNMSG; | ||||||
|  |   String? pRETURNSTATUS; | ||||||
|  |   int? pTRANSACTIONID; | ||||||
|  | 
 | ||||||
|  |   SubmitTermTransactionList({this.pITEMKEY, this.pRETURNMSG, this.pRETURNSTATUS, this.pTRANSACTIONID}); | ||||||
|  | 
 | ||||||
|  |   SubmitTermTransactionList.fromJson(Map<String, dynamic> json) { | ||||||
|  |     pITEMKEY = json['P_ITEM_KEY']; | ||||||
|  |     pRETURNMSG = json['P_RETURN_MSG']; | ||||||
|  |     pRETURNSTATUS = json['P_RETURN_STATUS']; | ||||||
|  |     pTRANSACTIONID = json['P_TRANSACTION_ID']; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  |     data['P_ITEM_KEY'] = this.pITEMKEY; | ||||||
|  |     data['P_RETURN_MSG'] = this.pRETURNMSG; | ||||||
|  |     data['P_RETURN_STATUS'] = this.pRETURNSTATUS; | ||||||
|  |     data['P_TRANSACTION_ID'] = this.pTRANSACTIONID; | ||||||
|  |     return data; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,85 @@ | |||||||
|  | class GetTermColsStructureList { | ||||||
|  |   String? aPPLICATIONCOLUMNNAME; | ||||||
|  |   String? dATATYPE; | ||||||
|  |   String? dISPLAYFLAG; | ||||||
|  |   int? mAXIMUMSIZE; | ||||||
|  |   String? oBJECTNAME; | ||||||
|  |   String? oBJECTTYPE; | ||||||
|  |   List<ObjectValuesList>? objectValuesList; | ||||||
|  |   String? rEQUIREDFLAG; | ||||||
|  |   String? sEGMENTPROMPT; | ||||||
|  |   int? sEGMENTSEQNUM; | ||||||
|  |   String? selectedValue; | ||||||
|  |   ObjectValuesList? selectedObjectValue; | ||||||
|  | 
 | ||||||
|  |   GetTermColsStructureList( | ||||||
|  |       {this.aPPLICATIONCOLUMNNAME, | ||||||
|  |       this.dATATYPE, | ||||||
|  |       this.dISPLAYFLAG, | ||||||
|  |       this.mAXIMUMSIZE, | ||||||
|  |       this.oBJECTNAME, | ||||||
|  |       this.oBJECTTYPE, | ||||||
|  |       this.objectValuesList, | ||||||
|  |       this.rEQUIREDFLAG, | ||||||
|  |       this.sEGMENTPROMPT, | ||||||
|  |       this.selectedValue, | ||||||
|  |       this.selectedObjectValue, | ||||||
|  |       this.sEGMENTSEQNUM}); | ||||||
|  | 
 | ||||||
|  |   GetTermColsStructureList.fromJson(Map<String, dynamic> json) { | ||||||
|  |     aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; | ||||||
|  |     dATATYPE = json['DATATYPE']; | ||||||
|  |     dISPLAYFLAG = json['DISPLAY_FLAG']; | ||||||
|  |     mAXIMUMSIZE = json['MAXIMUM_SIZE']; | ||||||
|  |     oBJECTNAME = json['OBJECT_NAME']; | ||||||
|  |     oBJECTTYPE = json['OBJECT_TYPE']; | ||||||
|  |     objectValuesList = <ObjectValuesList>[]; | ||||||
|  |     if (json['ObjectValuesList'] != null) { | ||||||
|  |       json['ObjectValuesList'].forEach((v) { | ||||||
|  |         objectValuesList!.add(new ObjectValuesList.fromJson(v)); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     rEQUIREDFLAG = json['REQUIRED_FLAG']; | ||||||
|  |     sEGMENTPROMPT = json['SEGMENT_PROMPT']; | ||||||
|  |     sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM']; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  |     data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME; | ||||||
|  |     data['DATATYPE'] = this.dATATYPE; | ||||||
|  |     data['DISPLAY_FLAG'] = this.dISPLAYFLAG; | ||||||
|  |     data['MAXIMUM_SIZE'] = this.mAXIMUMSIZE; | ||||||
|  |     data['OBJECT_NAME'] = this.oBJECTNAME; | ||||||
|  |     data['OBJECT_TYPE'] = this.oBJECTTYPE; | ||||||
|  |     if (this.objectValuesList != null) { | ||||||
|  |       data['ObjectValuesList'] = this.objectValuesList!.map((v) => v.toJson()).toList(); | ||||||
|  |     } | ||||||
|  |     data['REQUIRED_FLAG'] = this.rEQUIREDFLAG; | ||||||
|  |     data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT; | ||||||
|  |     data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM; | ||||||
|  |     return data; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class ObjectValuesList { | ||||||
|  |   String? cODE; | ||||||
|  |   String? dESCRIPTION; | ||||||
|  |   String? mEANING; | ||||||
|  | 
 | ||||||
|  |   ObjectValuesList({this.cODE, this.dESCRIPTION, this.mEANING}); | ||||||
|  | 
 | ||||||
|  |   ObjectValuesList.fromJson(Map<String, dynamic> json) { | ||||||
|  |     cODE = json['CODE']; | ||||||
|  |     dESCRIPTION = json['DESCRIPTION']; | ||||||
|  |     mEANING = json['MEANING']; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  |     data['CODE'] = this.cODE; | ||||||
|  |     data['DESCRIPTION'] = this.dESCRIPTION; | ||||||
|  |     data['MEANING'] = this.mEANING; | ||||||
|  |     return data; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,280 @@ | |||||||
|  | import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; | ||||||
|  | 
 | ||||||
|  | class GetTermDffStructureList { | ||||||
|  |   String? aLPHANUMERICALLOWEDFLAG; | ||||||
|  |   String? aPPLICATIONCOLUMNNAME; | ||||||
|  |   String? cHILDSEGMENTSVS; | ||||||
|  |   List<String>? cHILDSEGMENTSVSSplited; | ||||||
|  |   String? dEFAULTTYPE; | ||||||
|  |   String? dEFAULTVALUE; | ||||||
|  |   String? dESCFLEXCONTEXTCODE; | ||||||
|  |   String? dESCFLEXCONTEXTNAME; | ||||||
|  |   String? dESCFLEXNAME; | ||||||
|  |   String? dISPLAYFLAG; | ||||||
|  |   String? eNABLEDFLAG; | ||||||
|  |   ESERVICESDV? eSERVICESDV; | ||||||
|  |   List<ESERVICESVS>? eSERVICESVS; | ||||||
|  |   String? fLEXVALUESETNAME; | ||||||
|  |   String? fORMATTYPE; | ||||||
|  |   String? fORMATTYPEDSP; | ||||||
|  |   String? lONGLISTFLAG; | ||||||
|  |   int? mAXIMUMSIZE; | ||||||
|  |   String? mAXIMUMVALUE; | ||||||
|  |   String? mINIMUMVALUE; | ||||||
|  |   String? mOBILEENABLED; | ||||||
|  |   String? nUMBERPRECISION; | ||||||
|  |   String? nUMERICMODEENABLEDFLAG; | ||||||
|  |   String? pARENTSEGMENTSDV; | ||||||
|  |   List<PARENTSEGMENTSDVSplited>? pARENTSEGMENTSDVSplited; | ||||||
|  |   String? pARENTSEGMENTSVS; | ||||||
|  |   List<PARENTSEGMENTSVSSplitedVS>? pARENTSEGMENTSVSSplitedVS; | ||||||
|  |   String? rEADONLY; | ||||||
|  |   String? rEQUIREDFLAG; | ||||||
|  |   String? sEGMENTNAME; | ||||||
|  |   String? sEGMENTPROMPT; | ||||||
|  |   int? sEGMENTSEQNUM; | ||||||
|  |   String? uPPERCASEONLYFLAG; | ||||||
|  |   String? uSEDFLAG; | ||||||
|  |   String? vALIDATIONTYPE; | ||||||
|  |   String? vALIDATIONTYPEDSP; | ||||||
|  | 
 | ||||||
|  |   GetTermDffStructureList( | ||||||
|  |       {this.aLPHANUMERICALLOWEDFLAG, | ||||||
|  |       this.aPPLICATIONCOLUMNNAME, | ||||||
|  |       this.cHILDSEGMENTSVS, | ||||||
|  |       this.cHILDSEGMENTSVSSplited, | ||||||
|  |       this.dEFAULTTYPE, | ||||||
|  |       this.dEFAULTVALUE, | ||||||
|  |       this.dESCFLEXCONTEXTCODE, | ||||||
|  |       this.dESCFLEXCONTEXTNAME, | ||||||
|  |       this.dESCFLEXNAME, | ||||||
|  |       this.dISPLAYFLAG, | ||||||
|  |       this.eNABLEDFLAG, | ||||||
|  |       this.eSERVICESDV, | ||||||
|  |       this.eSERVICESVS, | ||||||
|  |       this.fLEXVALUESETNAME, | ||||||
|  |       this.fORMATTYPE, | ||||||
|  |       this.fORMATTYPEDSP, | ||||||
|  |       this.lONGLISTFLAG, | ||||||
|  |       this.mAXIMUMSIZE, | ||||||
|  |       this.mAXIMUMVALUE, | ||||||
|  |       this.mINIMUMVALUE, | ||||||
|  |       this.mOBILEENABLED, | ||||||
|  |       this.nUMBERPRECISION, | ||||||
|  |       this.nUMERICMODEENABLEDFLAG, | ||||||
|  |       this.pARENTSEGMENTSDV, | ||||||
|  |       this.pARENTSEGMENTSDVSplited, | ||||||
|  |       this.pARENTSEGMENTSVS, | ||||||
|  |       this.pARENTSEGMENTSVSSplitedVS, | ||||||
|  |       this.rEADONLY, | ||||||
|  |       this.rEQUIREDFLAG, | ||||||
|  |       this.sEGMENTNAME, | ||||||
|  |       this.sEGMENTPROMPT, | ||||||
|  |       this.sEGMENTSEQNUM, | ||||||
|  |       this.uPPERCASEONLYFLAG, | ||||||
|  |       this.uSEDFLAG, | ||||||
|  |       this.vALIDATIONTYPE, | ||||||
|  |       this.vALIDATIONTYPEDSP}); | ||||||
|  | 
 | ||||||
|  |   GetTermDffStructureList.fromJson(Map<String, dynamic> json) { | ||||||
|  |     aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; | ||||||
|  |     aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; | ||||||
|  |     cHILDSEGMENTSVS = json['CHILD_SEGMENTS_VS']; | ||||||
|  |     cHILDSEGMENTSVSSplited = json['CHILD_SEGMENTS_VS_Splited'] == null ? <String>[] : json['CHILD_SEGMENTS_VS_Splited'].cast<String>(); | ||||||
|  |     dEFAULTTYPE = json['DEFAULT_TYPE']; | ||||||
|  |     dEFAULTVALUE = json['DEFAULT_VALUE']; | ||||||
|  |     dESCFLEXCONTEXTCODE = json['DESC_FLEX_CONTEXT_CODE']; | ||||||
|  |     dESCFLEXCONTEXTNAME = json['DESC_FLEX_CONTEXT_NAME']; | ||||||
|  |     dESCFLEXNAME = json['DESC_FLEX_NAME']; | ||||||
|  |     dISPLAYFLAG = json['DISPLAY_FLAG']; | ||||||
|  |     eNABLEDFLAG = json['ENABLED_FLAG']; | ||||||
|  |     eSERVICESDV = json['E_SERVICES_DV'] != null ? new ESERVICESDV.fromJson(json['E_SERVICES_DV']) : null; | ||||||
|  |     if (json['E_SERVICES_VS'] != null) { | ||||||
|  |       eSERVICESVS = <ESERVICESVS>[]; | ||||||
|  |       json['E_SERVICES_VS'].forEach((v) { | ||||||
|  |         eSERVICESVS!.add(ESERVICESVS.fromJson(v)); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     fLEXVALUESETNAME = json['FLEX_VALUE_SET_NAME']; | ||||||
|  |     fORMATTYPE = json['FORMAT_TYPE']; | ||||||
|  |     fORMATTYPEDSP = json['FORMAT_TYPE_DSP']; | ||||||
|  |     lONGLISTFLAG = json['LONGLIST_FLAG']; | ||||||
|  |     mAXIMUMSIZE = json['MAXIMUM_SIZE']; | ||||||
|  |     mAXIMUMVALUE = json['MAXIMUM_VALUE']; | ||||||
|  |     mINIMUMVALUE = json['MINIMUM_VALUE']; | ||||||
|  |     mOBILEENABLED = json['MOBILE_ENABLED']; | ||||||
|  |     nUMBERPRECISION = json['NUMBER_PRECISION']; | ||||||
|  |     nUMERICMODEENABLEDFLAG = json['NUMERIC_MODE_ENABLED_FLAG']; | ||||||
|  |     pARENTSEGMENTSDV = json['PARENT_SEGMENTS_DV']; | ||||||
|  |     if (json['PARENT_SEGMENTS_DV_Splited'] != null) { | ||||||
|  |       pARENTSEGMENTSDVSplited = <PARENTSEGMENTSDVSplited>[]; | ||||||
|  |       json['PARENT_SEGMENTS_DV_Splited'].forEach((v) { | ||||||
|  |         pARENTSEGMENTSDVSplited!.add(PARENTSEGMENTSDVSplited.fromJson(v)); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS']; | ||||||
|  |     if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) { | ||||||
|  |       pARENTSEGMENTSVSSplitedVS = <PARENTSEGMENTSVSSplitedVS>[]; | ||||||
|  |       json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) { | ||||||
|  |         pARENTSEGMENTSVSSplitedVS!.add(PARENTSEGMENTSVSSplitedVS.fromJson(v)); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     rEADONLY = json['READ_ONLY']; | ||||||
|  |     rEQUIREDFLAG = json['REQUIRED_FLAG']; | ||||||
|  |     sEGMENTNAME = json['SEGMENT_NAME']; | ||||||
|  |     sEGMENTPROMPT = json['SEGMENT_PROMPT']; | ||||||
|  |     sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM']; | ||||||
|  |     uPPERCASEONLYFLAG = json['UPPERCASE_ONLY_FLAG']; | ||||||
|  |     uSEDFLAG = json['USED_FLAG']; | ||||||
|  |     vALIDATIONTYPE = json['VALIDATION_TYPE']; | ||||||
|  |     vALIDATIONTYPEDSP = json['VALIDATION_TYPE_DSP']; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  |     data['ALPHANUMERIC_ALLOWED_FLAG'] = this.aLPHANUMERICALLOWEDFLAG; | ||||||
|  |     data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME; | ||||||
|  |     data['CHILD_SEGMENTS_VS'] = this.cHILDSEGMENTSVS; | ||||||
|  |     data['CHILD_SEGMENTS_VS_Splited'] = this.cHILDSEGMENTSVSSplited; | ||||||
|  |     data['DEFAULT_TYPE'] = this.dEFAULTTYPE; | ||||||
|  |     data['DEFAULT_VALUE'] = this.dEFAULTVALUE; | ||||||
|  |     data['DESC_FLEX_CONTEXT_CODE'] = this.dESCFLEXCONTEXTCODE; | ||||||
|  |     data['DESC_FLEX_CONTEXT_NAME'] = this.dESCFLEXCONTEXTNAME; | ||||||
|  |     data['DESC_FLEX_NAME'] = this.dESCFLEXNAME; | ||||||
|  |     data['DISPLAY_FLAG'] = this.dISPLAYFLAG; | ||||||
|  |     data['ENABLED_FLAG'] = this.eNABLEDFLAG; | ||||||
|  |     if (this.eSERVICESDV != null) { | ||||||
|  |       data['E_SERVICES_DV'] = this.eSERVICESDV!.toJson(); | ||||||
|  |     } | ||||||
|  |     if (this.eSERVICESVS != null) { | ||||||
|  |       data['E_SERVICES_VS'] = this.eSERVICESVS!.map((v) => v.toJson()).toList(); | ||||||
|  |     } | ||||||
|  |     data['FLEX_VALUE_SET_NAME'] = this.fLEXVALUESETNAME; | ||||||
|  |     data['FORMAT_TYPE'] = this.fORMATTYPE; | ||||||
|  |     data['FORMAT_TYPE_DSP'] = this.fORMATTYPEDSP; | ||||||
|  |     data['LONGLIST_FLAG'] = this.lONGLISTFLAG; | ||||||
|  |     data['MAXIMUM_SIZE'] = this.mAXIMUMSIZE; | ||||||
|  |     data['MAXIMUM_VALUE'] = this.mAXIMUMVALUE; | ||||||
|  |     data['MINIMUM_VALUE'] = this.mINIMUMVALUE; | ||||||
|  |     data['MOBILE_ENABLED'] = this.mOBILEENABLED; | ||||||
|  |     data['NUMBER_PRECISION'] = this.nUMBERPRECISION; | ||||||
|  |     data['NUMERIC_MODE_ENABLED_FLAG'] = this.nUMERICMODEENABLEDFLAG; | ||||||
|  |     data['PARENT_SEGMENTS_DV'] = this.pARENTSEGMENTSDV; | ||||||
|  |     if (this.pARENTSEGMENTSDVSplited != null) { | ||||||
|  |       data['PARENT_SEGMENTS_DV_Splited'] = this.pARENTSEGMENTSDVSplited!.map((v) => v.toJson()).toList(); | ||||||
|  |     } | ||||||
|  |     data['PARENT_SEGMENTS_VS'] = this.pARENTSEGMENTSVS; | ||||||
|  |     if (this.pARENTSEGMENTSVSSplitedVS != null) { | ||||||
|  |       data['PARENT_SEGMENTS_VS_SplitedVS'] = this.pARENTSEGMENTSVSSplitedVS!.map((v) => v.toJson()).toList(); | ||||||
|  |     } | ||||||
|  |     data['READ_ONLY'] = this.rEADONLY; | ||||||
|  |     data['REQUIRED_FLAG'] = this.rEQUIREDFLAG; | ||||||
|  |     data['SEGMENT_NAME'] = this.sEGMENTNAME; | ||||||
|  |     data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT; | ||||||
|  |     data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM; | ||||||
|  |     data['UPPERCASE_ONLY_FLAG'] = this.uPPERCASEONLYFLAG; | ||||||
|  |     data['USED_FLAG'] = this.uSEDFLAG; | ||||||
|  |     data['VALIDATION_TYPE'] = this.vALIDATIONTYPE; | ||||||
|  |     data['VALIDATION_TYPE_DSP'] = this.vALIDATIONTYPEDSP; | ||||||
|  |     return data; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   bool get isDefaultTypeIsCDPS => (dEFAULTTYPE == "C" || dEFAULTTYPE == "D" || dEFAULTTYPE == "P" || dEFAULTTYPE == "S"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class ESERVICESDV { | ||||||
|  |   String? pIDCOLUMNNAME; | ||||||
|  |   String? pRETURNMSG; | ||||||
|  |   String? pRETURNSTATUS; | ||||||
|  |   String? pVALUECOLUMNNAME; | ||||||
|  | 
 | ||||||
|  |   ESERVICESDV({this.pIDCOLUMNNAME, this.pRETURNMSG, this.pRETURNSTATUS, this.pVALUECOLUMNNAME}); | ||||||
|  | 
 | ||||||
|  |   ESERVICESDV.fromJson(Map<String, dynamic> json) { | ||||||
|  |     pIDCOLUMNNAME = json['P_ID_COLUMN_NAME']; | ||||||
|  |     pRETURNMSG = json['P_RETURN_MSG']; | ||||||
|  |     pRETURNSTATUS = json['P_RETURN_STATUS']; | ||||||
|  |     pVALUECOLUMNNAME = json['P_VALUE_COLUMN_NAME']; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  |     data['P_ID_COLUMN_NAME'] = this.pIDCOLUMNNAME; | ||||||
|  |     data['P_RETURN_MSG'] = this.pRETURNMSG; | ||||||
|  |     data['P_RETURN_STATUS'] = this.pRETURNSTATUS; | ||||||
|  |     data['P_VALUE_COLUMN_NAME'] = this.pVALUECOLUMNNAME; | ||||||
|  |     return data; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // class ESERVICESVS { | ||||||
|  | //   String? dESCRIPTION; | ||||||
|  | //   int? fROMROWNUM; | ||||||
|  | //   String? iDCOLUMNNAME; | ||||||
|  | //   int? nOOFROWS; | ||||||
|  | //   int? rOWNUM; | ||||||
|  | //   int? tOROWNUM; | ||||||
|  | //   String? vALUECOLUMNNAME; | ||||||
|  | // | ||||||
|  | //   ESERVICESVS({this.dESCRIPTION, this.fROMROWNUM, this.iDCOLUMNNAME, this.nOOFROWS, this.rOWNUM, this.tOROWNUM, this.vALUECOLUMNNAME}); | ||||||
|  | // | ||||||
|  | //   ESERVICESVS.fromJson(Map<String, dynamic> json) { | ||||||
|  | //     dESCRIPTION = json['DESCRIPTION']; | ||||||
|  | //     fROMROWNUM = json['FROM_ROW_NUM']; | ||||||
|  | //     iDCOLUMNNAME = json['ID_COLUMN_NAME']; | ||||||
|  | //     nOOFROWS = json['NO_OF_ROWS']; | ||||||
|  | //     rOWNUM = json['ROW_NUM']; | ||||||
|  | //     tOROWNUM = json['TO_ROW_NUM']; | ||||||
|  | //     vALUECOLUMNNAME = json['VALUE_COLUMN_NAME']; | ||||||
|  | //   } | ||||||
|  | // | ||||||
|  | //   Map<String, dynamic> toJson() { | ||||||
|  | //     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  | //     data['DESCRIPTION'] = this.dESCRIPTION; | ||||||
|  | //     data['FROM_ROW_NUM'] = this.fROMROWNUM; | ||||||
|  | //     data['ID_COLUMN_NAME'] = this.iDCOLUMNNAME; | ||||||
|  | //     data['NO_OF_ROWS'] = this.nOOFROWS; | ||||||
|  | //     data['ROW_NUM'] = this.rOWNUM; | ||||||
|  | //     data['TO_ROW_NUM'] = this.tOROWNUM; | ||||||
|  | //     data['VALUE_COLUMN_NAME'] = this.vALUECOLUMNNAME; | ||||||
|  | //     return data; | ||||||
|  | //   } | ||||||
|  | // } | ||||||
|  | 
 | ||||||
|  | class PARENTSEGMENTSDVSplited { | ||||||
|  |   String? isRequired; | ||||||
|  |   String? name; | ||||||
|  | 
 | ||||||
|  |   PARENTSEGMENTSDVSplited({this.isRequired, this.name}); | ||||||
|  | 
 | ||||||
|  |   PARENTSEGMENTSDVSplited.fromJson(Map<String, dynamic> json) { | ||||||
|  |     isRequired = json['IsRequired']; | ||||||
|  |     name = json['Name']; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  |     data['IsRequired'] = this.isRequired; | ||||||
|  |     data['Name'] = this.name; | ||||||
|  |     return data; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class PARENTSEGMENTSVSSplitedVS { | ||||||
|  |   String? isRequired; | ||||||
|  |   String? name; | ||||||
|  | 
 | ||||||
|  |   PARENTSEGMENTSVSSplitedVS({this.isRequired, this.name}); | ||||||
|  | 
 | ||||||
|  |   PARENTSEGMENTSVSSplitedVS.fromJson(Map<String, dynamic> json) { | ||||||
|  |     isRequired = json['IsRequired']; | ||||||
|  |     name = json['Name']; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  |     data['IsRequired'] = this.isRequired; | ||||||
|  |     data['Name'] = this.name; | ||||||
|  |     return data; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,18 @@ | |||||||
|  | class StartTermApprovalProcessList { | ||||||
|  |   String? pRETURNMSG; | ||||||
|  |   String? pRETURNSTATUS; | ||||||
|  | 
 | ||||||
|  |   StartTermApprovalProcessList({this.pRETURNMSG, this.pRETURNSTATUS}); | ||||||
|  | 
 | ||||||
|  |   StartTermApprovalProcessList.fromJson(Map<String, dynamic> json) { | ||||||
|  |     pRETURNMSG = json['P_RETURN_MSG']; | ||||||
|  |     pRETURNSTATUS = json['P_RETURN_STATUS']; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Map<String, dynamic> toJson() { | ||||||
|  |     Map<String, dynamic> data = new Map<String, dynamic>(); | ||||||
|  |     data['P_RETURN_MSG'] = this.pRETURNMSG; | ||||||
|  |     data['P_RETURN_STATUS'] = this.pRETURNSTATUS; | ||||||
|  |     return data; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @ -0,0 +1,625 @@ | |||||||
|  | import 'dart:io'; | ||||||
|  | 
 | ||||||
|  | import 'package:easy_localization/easy_localization.dart'; | ||||||
|  | import 'package:flutter/cupertino.dart'; | ||||||
|  | import 'package:flutter/material.dart'; | ||||||
|  | import 'package:mohem_flutter_app/api/leave_balance_api_client.dart'; | ||||||
|  | import 'package:mohem_flutter_app/api/my_attendance_api_client.dart'; | ||||||
|  | import 'package:mohem_flutter_app/api/termination_dff_api_client.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/widget_extensions.dart'; | ||||||
|  | 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/dyanmic_forms/validate_eit_transaction_model.dart'; | ||||||
|  | import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart' as dff; | ||||||
|  | import 'package:mohem_flutter_app/models/submit_term_transaction_list_model.dart'; | ||||||
|  | import 'package:mohem_flutter_app/models/termination/get_term_cols_structure_list_model.dart'; | ||||||
|  | import 'package:mohem_flutter_app/models/termination/get_term_dff_structure_list_model.dart'; | ||||||
|  | import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; | ||||||
|  | import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_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/dynamic_forms/dynamic_textfield_widget.dart'; | ||||||
|  | 
 | ||||||
|  | class EndEmploymentScreen extends StatefulWidget { | ||||||
|  |   EndEmploymentScreen({Key? key}) : super(key: key); | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   _EndEmploymentScreenState createState() { | ||||||
|  |     return _EndEmploymentScreenState(); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | class _EndEmploymentScreenState extends State<EndEmploymentScreen> { | ||||||
|  |   List<GetTermColsStructureList>? termColsList; | ||||||
|  |   List<GetTermDffStructureList>? termDffList; | ||||||
|  |   DynamicListViewParams? dynamicParams; | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   void initState() { | ||||||
|  |     super.initState(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void getTerminationDffStructure() async { | ||||||
|  |     try { | ||||||
|  |       Utils.showLoading(context); | ||||||
|  |       List results = await Future.wait([ | ||||||
|  |         TerminationDffApiClient().getTermColsStructure(), | ||||||
|  |         TerminationDffApiClient().getTermDffStructure(dynamicParams!.dynamicId, null), | ||||||
|  |       ]); | ||||||
|  |       termColsList = results[0]; | ||||||
|  |       termDffList = results[1]; | ||||||
|  |       termColsList = termColsList?.where((element) => element.dISPLAYFLAG == 'Y').toList() ?? []; | ||||||
|  |       termDffList = termDffList?.where((element) => element.dISPLAYFLAG == 'Y').toList() ?? []; | ||||||
|  | 
 | ||||||
|  |       Utils.hideLoading(context); | ||||||
|  |       setState(() {}); | ||||||
|  |     } catch (ex) { | ||||||
|  |       Utils.hideLoading(context); | ||||||
|  |       Utils.handleException(ex, context, null); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void validateTransaction() { | ||||||
|  |     String errorMessage = ""; | ||||||
|  |     for (var element in termColsList!) { | ||||||
|  |       if (element.rEQUIREDFLAG == "Y") { | ||||||
|  |         if (element.objectValuesList!.isEmpty) { | ||||||
|  |           if ((element.selectedValue ?? "").isEmpty) { | ||||||
|  |             errorMessage = element.sEGMENTPROMPT!; | ||||||
|  |             break; | ||||||
|  |           } | ||||||
|  |         } else { | ||||||
|  |           if (element.selectedObjectValue == null) { | ||||||
|  |             errorMessage = element.sEGMENTPROMPT!; | ||||||
|  |             break; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     if (errorMessage.isEmpty) { | ||||||
|  |       for (var element in termDffList!) { | ||||||
|  |         if (element.rEQUIREDFLAG == "Y") { | ||||||
|  |           if (element.eSERVICESDV?.pVALUECOLUMNNAME == null) { | ||||||
|  |             errorMessage = element.sEGMENTPROMPT!; | ||||||
|  |             break; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     if (errorMessage.isNotEmpty) { | ||||||
|  |       Utils.showToast(LocaleKeys.fieldIsEmpty.tr(namedArgs: {'data': errorMessage})); | ||||||
|  |     } else { | ||||||
|  |       submitTransaction(); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   void submitTransaction() async { | ||||||
|  |     try { | ||||||
|  |       Utils.showLoading(context); | ||||||
|  |       List<Map<String, dynamic>> values = termDffList!.map((e) { | ||||||
|  |         String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; | ||||||
|  |         if (e.fORMATTYPE == "X") { | ||||||
|  |           // for date format type, date format is changed | ||||||
|  |           tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; | ||||||
|  |           if (tempVar.isNotEmpty) { | ||||||
|  |             if (!tempVar.contains("/")) { | ||||||
|  |               DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); | ||||||
|  |               tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |         return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); | ||||||
|  |       }).toList(); | ||||||
|  |       termColsList!.forEach((element) { | ||||||
|  |         String? value = ""; | ||||||
|  |         ValidateEitTransactionModel model = ValidateEitTransactionModel(nAME: element.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1); | ||||||
|  |         if (element.dATATYPE == "DATE") { | ||||||
|  |           value = element.selectedValue == null ? null : Utils.formatDate(DateTime.parse(element.selectedValue!).toString()); | ||||||
|  |           model.dATEVALUE = value; | ||||||
|  |         } else if (element.dATATYPE == "VARCHAR2") { | ||||||
|  |           if (element.objectValuesList!.isEmpty) { | ||||||
|  |             value = element.selectedValue; | ||||||
|  |           } else { | ||||||
|  |             value = element.selectedObjectValue?.cODE; | ||||||
|  |           } | ||||||
|  |           model.vARCHAR2VALUE = value; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         values.add(model.toJson()); | ||||||
|  |       }); | ||||||
|  | 
 | ||||||
|  |       SubmitTermTransactionList submitTermTransaction = await TerminationDffApiClient().submitTermTransaction(dynamicParams!.dynamicId, values); | ||||||
|  |       Utils.hideLoading(context); | ||||||
|  |       await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, | ||||||
|  |           arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitTermTransaction.pTRANSACTIONID!, submitTermTransaction.pITEMKEY!, "endEmployment")); | ||||||
|  |       Utils.showLoading(context); | ||||||
|  |       await LeaveBalanceApiClient().cancelHrTransaction(submitTermTransaction.pTRANSACTIONID!); | ||||||
|  |       Utils.hideLoading(context); | ||||||
|  |     } catch (ex) { | ||||||
|  |       Utils.hideLoading(context); | ||||||
|  |       Utils.handleException(ex, context, null); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   void dispose() { | ||||||
|  |     super.dispose(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   String dESCFLEXCONTEXTCODE = ""; | ||||||
|  |   String descFlexConTextTitle = ""; | ||||||
|  | 
 | ||||||
|  |   Future calGetValueSetValues(GetTermDffStructureList structureList) async { | ||||||
|  |     try { | ||||||
|  |       Utils.showLoading(context); | ||||||
|  |       String segmentId = structureList.cHILDSEGMENTSVS!; | ||||||
|  |       if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; | ||||||
|  | 
 | ||||||
|  |       List<GetTermDffStructureList> filteredList = termDffList?.where((element) => element.cHILDSEGMENTSVS == segmentId).toList() ?? []; | ||||||
|  |       List<Map<String, dynamic>> values = filteredList | ||||||
|  |           .map((e) => GetSetValuesRequestModel( | ||||||
|  |                   sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) | ||||||
|  |               .toJson()) | ||||||
|  |           .toList(); | ||||||
|  | 
 | ||||||
|  |       List<dff.ESERVICESVS> eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); | ||||||
|  |       List<GetTermDffStructureList> abc = termDffList ?? []; | ||||||
|  |       termDffList = abc; | ||||||
|  |       int index = termDffList!.indexWhere((element) => element.sEGMENTNAME == structureList.cHILDSEGMENTSVS); | ||||||
|  |       termDffList![index].eSERVICESVS!.clear(); | ||||||
|  |       if (eServicesResponseModel.isNotEmpty) termDffList![index].eSERVICESVS!.addAll(eServicesResponseModel); | ||||||
|  |       //   getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; | ||||||
|  |       //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); | ||||||
|  |       Utils.hideLoading(context); | ||||||
|  |       setState(() {}); | ||||||
|  |     } catch (ex) { | ||||||
|  |       Utils.hideLoading(context); | ||||||
|  |       Utils.handleException(ex, context, null); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @override | ||||||
|  |   Widget build(BuildContext context) { | ||||||
|  |     if (dynamicParams == null) { | ||||||
|  |       dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicListViewParams; | ||||||
|  |       getTerminationDffStructure(); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return Scaffold( | ||||||
|  |       backgroundColor: Colors.white, | ||||||
|  |       appBar: AppBarWidget(context, title: dynamicParams!.title), | ||||||
|  |       body: Column( | ||||||
|  |         children: [ | ||||||
|  |           (termColsList == null && termDffList == null | ||||||
|  |                   ? const SizedBox() | ||||||
|  |                   : (((termColsList?.length ?? 0) + (termDffList?.length ?? 0)) < 1 | ||||||
|  |                       ? Utils.getNoDataWidget(context) | ||||||
|  |                       : ListView( | ||||||
|  |                           physics: const BouncingScrollPhysics(), | ||||||
|  |                           padding: const EdgeInsets.all(21), | ||||||
|  |                           children: [ | ||||||
|  |                             ListView.separated( | ||||||
|  |                               shrinkWrap: true, | ||||||
|  |                               physics: const NeverScrollableScrollPhysics(), | ||||||
|  |                               itemBuilder: (cxt, int index) => termColWidget(termColsList![index]), | ||||||
|  |                               separatorBuilder: (cxt, index) => 12.height, | ||||||
|  |                               itemCount: termColsList!.length, | ||||||
|  |                             ), | ||||||
|  |                             12.height, | ||||||
|  |                             ListView.separated( | ||||||
|  |                               shrinkWrap: true, | ||||||
|  |                               physics: const NeverScrollableScrollPhysics(), | ||||||
|  |                               itemBuilder: (cxt, int index) => dffColWidget(termDffList![index], index), | ||||||
|  |                               separatorBuilder: (cxt, index) => 12.height, | ||||||
|  |                               itemCount: termDffList!.length, | ||||||
|  |                             ), | ||||||
|  |                           ], | ||||||
|  |                         ))) | ||||||
|  |               .expanded, | ||||||
|  |           DefaultButton( | ||||||
|  |             LocaleKeys.next.tr(), | ||||||
|  |             (((termColsList?.length ?? 0) + (termDffList?.length ?? 0)) < 1) | ||||||
|  |                 ? null | ||||||
|  |                 : () { | ||||||
|  |                     validateTransaction(); | ||||||
|  |                   }, | ||||||
|  |           ).insideContainer, | ||||||
|  |         ], | ||||||
|  |       ), | ||||||
|  |     ); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Widget termColWidget(GetTermColsStructureList termColObject) { | ||||||
|  |     if (termColObject.dATATYPE == "VARCHAR2") { | ||||||
|  |       if (termColObject.objectValuesList!.isEmpty) { | ||||||
|  |         return DynamicTextFieldWidget( | ||||||
|  |           (termColObject.sEGMENTPROMPT ?? "") + (termColObject.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |           termColObject.selectedValue ?? "", | ||||||
|  |           onChange: (text) { | ||||||
|  |             termColObject.selectedValue = text; | ||||||
|  |           }, | ||||||
|  |         ); | ||||||
|  |       } | ||||||
|  |       return PopupMenuButton( | ||||||
|  |           child: DynamicTextFieldWidget( | ||||||
|  |             (termColObject.sEGMENTPROMPT ?? "") + (termColObject.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |             termColObject.selectedObjectValue?.mEANING ?? LocaleKeys.pleaseSelect.tr(), | ||||||
|  |             isEnable: false, | ||||||
|  |             isPopup: true, | ||||||
|  |           ).paddingOnly(bottom: 12), | ||||||
|  |           itemBuilder: (_) => <PopupMenuItem<int>>[ | ||||||
|  |                 for (int i = 0; i < termColObject.objectValuesList!.length; i++) PopupMenuItem<int>(value: i, child: Text(termColObject.objectValuesList![i].mEANING ?? "")), | ||||||
|  |               ], | ||||||
|  |           onSelected: (int popipIndex) async { | ||||||
|  |             termColObject.selectedObjectValue = termColObject.objectValuesList![popipIndex]; | ||||||
|  |             print(termColObject.selectedObjectValue?.toJson()); | ||||||
|  |             setState(() {}); | ||||||
|  |           }); | ||||||
|  |     } | ||||||
|  |     if (termColObject.dATATYPE == "DATE") { | ||||||
|  |       return DynamicTextFieldWidget( | ||||||
|  |         (termColObject.sEGMENTPROMPT ?? "") + (termColObject.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |         (termColObject.selectedValue != null) ? Utils.getMonthNamedFormat(DateTime.parse(termColObject.selectedValue!)) : LocaleKeys.pleaseSelectDate.tr(), | ||||||
|  |         suffixIconData: Icons.calendar_today, | ||||||
|  |         isEnable: false, | ||||||
|  |         onTap: () async { | ||||||
|  |           DateTime? selectedDate; | ||||||
|  |           if (termColObject.selectedValue == null) { | ||||||
|  |             selectedDate = DateTime.now(); | ||||||
|  |           } else { | ||||||
|  |             selectedDate = DateTime.parse(termColObject.selectedValue!); | ||||||
|  |           } | ||||||
|  |           DateTime date = await Utils.selectDate(context, selectedDate); | ||||||
|  |           termColObject.selectedValue = date.toString(); | ||||||
|  |           setState(() {}); | ||||||
|  |         }, | ||||||
|  |       ); | ||||||
|  |     } | ||||||
|  |     return const SizedBox(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Widget dffColWidget(GetTermDffStructureList model, int index) { | ||||||
|  |     if (model.dISPLAYFLAG != "N") { | ||||||
|  |       if (model.vALIDATIONTYPE == "N") { | ||||||
|  |         if (model.fORMATTYPE == "C") { | ||||||
|  |           return DynamicTextFieldWidget( | ||||||
|  |             (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |             model.eSERVICESDV?.pIDCOLUMNNAME ?? "", | ||||||
|  |             isReadOnly: model.rEADONLY == "Y", | ||||||
|  |             onChange: (text) { | ||||||
|  |               model.eSERVICESDV ??= ESERVICESDV(); | ||||||
|  |               model.eSERVICESDV!.pIDCOLUMNNAME = text; | ||||||
|  |             }, | ||||||
|  |           ).paddingOnly(bottom: 12); | ||||||
|  |         } else if (model.fORMATTYPE == "N") { | ||||||
|  |           return DynamicTextFieldWidget( | ||||||
|  |             (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |             model.eSERVICESDV?.pIDCOLUMNNAME ?? "", | ||||||
|  |             isReadOnly: model.rEADONLY == "Y", | ||||||
|  |             isInputTypeNum: true, | ||||||
|  |             onChange: (text) { | ||||||
|  |               model.eSERVICESDV ??= ESERVICESDV(); | ||||||
|  |               model.eSERVICESDV!.pIDCOLUMNNAME = text; | ||||||
|  |             }, | ||||||
|  |           ).paddingOnly(bottom: 12); | ||||||
|  |         } else if (model.fORMATTYPE == "X") { | ||||||
|  |           String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? (""); | ||||||
|  | 
 | ||||||
|  |           if (termDffList![index].isDefaultTypeIsCDPS) { | ||||||
|  |             if (displayText.contains(" 00:00:00")) { | ||||||
|  |               displayText = displayText.replaceAll(" 00:00:00", ""); | ||||||
|  |             } | ||||||
|  |             if (displayText.contains("/")) { | ||||||
|  |               displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText)); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |           return DynamicTextFieldWidget( | ||||||
|  |             (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |             displayText, | ||||||
|  |             suffixIconData: Icons.calendar_today, | ||||||
|  |             isEnable: false, | ||||||
|  |             onTap: () async { | ||||||
|  |               if ((termDffList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) { | ||||||
|  |                 if (termDffList![index].isDefaultTypeIsCDPS) { | ||||||
|  |                   selectedDate = DateFormat("yyyy/MM/dd").parse(termDffList![index].eSERVICESDV!.pVALUECOLUMNNAME!.replaceAll('/"', '').replaceAll(" 00:00:00", "")); | ||||||
|  |                 } else { | ||||||
|  |                   selectedDate = DateTime.parse(termDffList![index].eSERVICESDV!.pVALUECOLUMNNAME!); | ||||||
|  |                 } | ||||||
|  |               } | ||||||
|  |               DateTime date = await _selectDate(context); | ||||||
|  |               String dateString = date.toString().split(' ').first; | ||||||
|  |               // DateTime date1 = DateTime(date.year, date.month, date.day); | ||||||
|  |               // getEitDffStructureList![index].fieldAnswer = date.toString(); | ||||||
|  |               ESERVICESDV eservicesdv; | ||||||
|  |               if (termDffList![index].isDefaultTypeIsCDPS) { | ||||||
|  |                 eservicesdv = ESERVICESDV( | ||||||
|  |                     pIDCOLUMNNAME: Utils.formatDate(dateString), | ||||||
|  |                     pRETURNMSG: "null", | ||||||
|  |                     pRETURNSTATUS: termDffList![index].dEFAULTVALUE, | ||||||
|  |                     pVALUECOLUMNNAME: termDffList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); | ||||||
|  |               } else { | ||||||
|  |                 eservicesdv = ESERVICESDV( | ||||||
|  |                     pIDCOLUMNNAME: dateString, | ||||||
|  |                     pRETURNMSG: "null", | ||||||
|  |                     pRETURNSTATUS: termDffList![index].dEFAULTVALUE, | ||||||
|  |                     pVALUECOLUMNNAME: termDffList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); | ||||||
|  |               } | ||||||
|  |               termDffList![index].eSERVICESDV = eservicesdv; | ||||||
|  |               setState(() {}); | ||||||
|  |               if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { | ||||||
|  |                 await calGetValueSetValues(model); | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |           ).paddingOnly(bottom: 12); | ||||||
|  |         } else if (model.fORMATTYPE == "Y") { | ||||||
|  |           String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? ""; | ||||||
|  |           // if (termDffList![index].isDefaultTypeIsCDPS) { | ||||||
|  |           //   displayText = Utils.reverseFormatDate(displayText); | ||||||
|  |           //   // if (displayText.contains(" 00:00:00")) { | ||||||
|  |           //   //   displayText = displayText.replaceAll(" 00:00:00", ""); | ||||||
|  |           //   // } | ||||||
|  |           //   // if (!displayText.contains("-")) { | ||||||
|  |           //   //   displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText)); | ||||||
|  |           //   // } | ||||||
|  |           // } | ||||||
|  |           return DynamicTextFieldWidget( | ||||||
|  |             (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |             displayText, | ||||||
|  |             suffixIconData: Icons.calendar_today, | ||||||
|  |             isEnable: false, | ||||||
|  |             onTap: () async { | ||||||
|  |               if ((termDffList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) { | ||||||
|  |                 if (termDffList![index].isDefaultTypeIsCDPS) { | ||||||
|  |                   String tempDate = termDffList![index].eSERVICESDV!.pVALUECOLUMNNAME!; | ||||||
|  |                   if (tempDate.contains("00:00:00")) { | ||||||
|  |                     tempDate = tempDate.replaceAll("00:00:00", '').trim(); | ||||||
|  |                   } | ||||||
|  |                   if (tempDate.contains("/")) { | ||||||
|  |                     selectedDate = DateFormat("yyyy/MM/dd").parse(tempDate); | ||||||
|  |                   } else { | ||||||
|  |                     selectedDate = DateFormat("yyyy-MM-dd").parse(tempDate); | ||||||
|  |                   } | ||||||
|  |                 } else { | ||||||
|  |                   selectedDate = DateTime.parse(termDffList![index].eSERVICESDV!.pVALUECOLUMNNAME!); | ||||||
|  |                 } | ||||||
|  |               } | ||||||
|  |               DateTime date = await _selectDate(context); | ||||||
|  |               String dateString = date.toString().split(' ').first; | ||||||
|  |               // getEitDffStructureList![index].fieldAnswer = date.toString(); | ||||||
|  |               ESERVICESDV eservicesdv; | ||||||
|  |               if (termDffList![index].isDefaultTypeIsCDPS) { | ||||||
|  |                 eservicesdv = ESERVICESDV( | ||||||
|  |                     pIDCOLUMNNAME: Utils.formatDate(dateString), | ||||||
|  |                     pRETURNMSG: "null", | ||||||
|  |                     pRETURNSTATUS: termDffList![index].dEFAULTVALUE, | ||||||
|  |                     pVALUECOLUMNNAME: termDffList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); | ||||||
|  |               } else { | ||||||
|  |                 eservicesdv = ESERVICESDV( | ||||||
|  |                     pIDCOLUMNNAME: dateString, | ||||||
|  |                     pRETURNMSG: "null", | ||||||
|  |                     pRETURNSTATUS: termDffList![index].dEFAULTVALUE, | ||||||
|  |                     pVALUECOLUMNNAME: termDffList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); | ||||||
|  |               } | ||||||
|  | 
 | ||||||
|  |               termDffList![index].eSERVICESDV = eservicesdv; | ||||||
|  |               setState(() {}); | ||||||
|  |               if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { | ||||||
|  |                 await calGetValueSetValues(model); | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |           ).paddingOnly(bottom: 12); | ||||||
|  |         } | ||||||
|  |       } else { | ||||||
|  |         return PopupMenuButton( | ||||||
|  |             child: DynamicTextFieldWidget( | ||||||
|  |               (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |               model.eSERVICESDV?.pVALUECOLUMNNAME ?? LocaleKeys.pleaseSelect.tr(), | ||||||
|  |               isEnable: false, | ||||||
|  |               isPopup: true, | ||||||
|  |               isInputTypeNum: true, | ||||||
|  |               isReadOnly: model.rEADONLY == "Y", | ||||||
|  |             ).paddingOnly(bottom: 12), | ||||||
|  |             itemBuilder: (_) => <PopupMenuItem<int>>[ | ||||||
|  |                   if (model.rEADONLY != "Y") | ||||||
|  |                     for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), | ||||||
|  |                 ], | ||||||
|  |             onSelected: (int popipIndex) async { | ||||||
|  |               ESERVICESDV eservicesdv = ESERVICESDV( | ||||||
|  |                   pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, | ||||||
|  |                   pRETURNMSG: "null", | ||||||
|  |                   pRETURNSTATUS: "null", //getEitDffStructureList![popipIndex].dEFAULTVALUE, | ||||||
|  |                   pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME); | ||||||
|  |               termDffList![index].eSERVICESDV = eservicesdv; | ||||||
|  |               setState(() {}); | ||||||
|  |               if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { | ||||||
|  |                 await calGetValueSetValues(model); | ||||||
|  |               } | ||||||
|  |             }); | ||||||
|  |       } | ||||||
|  |     } else { | ||||||
|  |       return const SizedBox(); | ||||||
|  |     } | ||||||
|  |     if (model.fORMATTYPE == "N") { | ||||||
|  |       if (model.eSERVICESVS?.isNotEmpty ?? false) { | ||||||
|  |         return PopupMenuButton( | ||||||
|  |             child: DynamicTextFieldWidget( | ||||||
|  |               (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |               model.eSERVICESDV?.pVALUECOLUMNNAME ?? "", | ||||||
|  |               isEnable: false, | ||||||
|  |               isPopup: true, | ||||||
|  |               isInputTypeNum: true, | ||||||
|  |               isReadOnly: model.rEADONLY == "Y", | ||||||
|  |             ).paddingOnly(bottom: 12), | ||||||
|  |             itemBuilder: (_) => <PopupMenuItem<int>>[ | ||||||
|  |                   if (model.rEADONLY != "Y") | ||||||
|  |                     for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(value: i, child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!)), | ||||||
|  |                 ], | ||||||
|  |             onSelected: (int popipIndex) async { | ||||||
|  |               ESERVICESDV eservicesdv = | ||||||
|  |                   ESERVICESDV(pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME, pRETURNMSG: "null", pRETURNSTATUS: "null", pVALUECOLUMNNAME: model.eSERVICESVS![popipIndex].vALUECOLUMNNAME); | ||||||
|  |               termDffList![index].eSERVICESDV = eservicesdv; | ||||||
|  |               setState(() {}); | ||||||
|  |               if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { | ||||||
|  |                 await calGetValueSetValues(model); | ||||||
|  |               } | ||||||
|  |             }); | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       return DynamicTextFieldWidget( | ||||||
|  |         (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |         model.eSERVICESDV?.pIDCOLUMNNAME ?? "", | ||||||
|  |         isReadOnly: model.rEADONLY == "Y", | ||||||
|  |         onChange: (text) { | ||||||
|  |           //model.fieldAnswer = text; | ||||||
|  |         }, | ||||||
|  |       ).paddingOnly(bottom: 12); | ||||||
|  |     } else if (model.fORMATTYPE == "X" || model.fORMATTYPE == "Y") { | ||||||
|  |       String displayText = model.eSERVICESDV?.pIDCOLUMNNAME ?? ""; | ||||||
|  |       if (termDffList![index].isDefaultTypeIsCDPS) { | ||||||
|  |         if (displayText.contains(" 00:00:00")) { | ||||||
|  |           displayText = displayText.replaceAll(" 00:00:00", ""); | ||||||
|  |         } | ||||||
|  |         if (!displayText.contains("-")) { | ||||||
|  |           displayText = DateFormat('yyyy-MM-dd').format(DateFormat("yyyy/MM/dd").parse(displayText)); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       return DynamicTextFieldWidget( | ||||||
|  |         (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |         displayText, | ||||||
|  |         suffixIconData: Icons.calendar_today, | ||||||
|  |         isEnable: false, | ||||||
|  |         onTap: () async { | ||||||
|  |           if ((termDffList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) { | ||||||
|  |             if (termDffList![index].isDefaultTypeIsCDPS) { | ||||||
|  |               selectedDate = DateFormat("yyyy/MM/dd").parse(termDffList![index].eSERVICESDV!.pVALUECOLUMNNAME!.replaceAll('/"', '').replaceAll(" 00:00:00", "")); | ||||||
|  |             } else { | ||||||
|  |               selectedDate = DateTime.parse(termDffList![index].eSERVICESDV!.pVALUECOLUMNNAME!); | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |           DateTime date = await _selectDate(context); | ||||||
|  |           String dateString = date.toString().split(' ').first; | ||||||
|  |           //  termDffList![index].fieldAnswer = date.toString(); | ||||||
|  |           ESERVICESDV eservicesdv = ESERVICESDV( | ||||||
|  |               pIDCOLUMNNAME: dateString, | ||||||
|  |               pRETURNMSG: "null", | ||||||
|  |               pRETURNSTATUS: termDffList![index].dEFAULTVALUE, | ||||||
|  |               pVALUECOLUMNNAME: termDffList![index].isDefaultTypeIsCDPS ? Utils.reverseFormatStandardDate(Utils.formatDate(dateString)) : DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); | ||||||
|  |           termDffList![index].eSERVICESDV = eservicesdv; | ||||||
|  |           setState(() {}); | ||||||
|  |           if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { | ||||||
|  |             await calGetValueSetValues(model); | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |       ).paddingOnly(bottom: 12); | ||||||
|  |     } else if (model.fORMATTYPE == "I") { | ||||||
|  |       return DynamicTextFieldWidget( | ||||||
|  |         (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), | ||||||
|  |         model.eSERVICESDV?.pIDCOLUMNNAME ?? "", | ||||||
|  |         suffixIconData: Icons.access_time_filled_rounded, | ||||||
|  |         isEnable: false, | ||||||
|  |         onTap: () async { | ||||||
|  |           if ((termDffList![index].eSERVICESDV?.pVALUECOLUMNNAME != null)) { | ||||||
|  |             var timeString = termDffList![index].eSERVICESDV!.pVALUECOLUMNNAME!.split(":"); | ||||||
|  |             selectedDate = DateTime(0, 0, 0, int.parse(timeString[0]), int.parse(timeString[1])); | ||||||
|  | 
 | ||||||
|  |             //DateTime.parse(getEitDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!); | ||||||
|  |           } | ||||||
|  |           TimeOfDay _time = await _selectTime(context); | ||||||
|  |           DateTime tempTime = DateTime(0, 1, 1, _time.hour, _time.minute); | ||||||
|  |           String time = DateFormat('HH:mm').format(tempTime).trim(); | ||||||
|  | 
 | ||||||
|  |           // DateTime date1 = DateTime(date.year, date.month, date.day); | ||||||
|  |           //  getEitDffStructureList![index].fieldAnswer = date.toString(); | ||||||
|  |           ESERVICESDV eservicesdv = ESERVICESDV(pIDCOLUMNNAME: time, pRETURNMSG: "null", pRETURNSTATUS: termDffList![index].dEFAULTVALUE, pVALUECOLUMNNAME: time); | ||||||
|  |           termDffList![index].eSERVICESDV = eservicesdv; | ||||||
|  |           setState(() {}); | ||||||
|  |           if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { | ||||||
|  |             await calGetValueSetValues(model); | ||||||
|  |           } | ||||||
|  |         }, | ||||||
|  |       ).paddingOnly(bottom: 12); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return Column( | ||||||
|  |       crossAxisAlignment: CrossAxisAlignment.start, | ||||||
|  |       mainAxisSize: MainAxisSize.min, | ||||||
|  |       children: [], | ||||||
|  |     ).objectContainerView(); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   DateTime selectedDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day); | ||||||
|  | 
 | ||||||
|  |   Future<DateTime> _selectDate(BuildContext context) async { | ||||||
|  |     DateTime time = selectedDate; | ||||||
|  |     if (Platform.isIOS) { | ||||||
|  |       await showCupertinoModalPopup( | ||||||
|  |         context: context, | ||||||
|  |         builder: (cxt) => Container( | ||||||
|  |           height: 250, | ||||||
|  |           color: Colors.white, | ||||||
|  |           child: CupertinoDatePicker( | ||||||
|  |             backgroundColor: Colors.white, | ||||||
|  |             mode: CupertinoDatePickerMode.date, | ||||||
|  |             onDateTimeChanged: (value) { | ||||||
|  |               if (value != null && value != selectedDate) { | ||||||
|  |                 time = value; | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             initialDateTime: selectedDate, | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     } else { | ||||||
|  |       DateTime? picked = await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); | ||||||
|  |       if (picked != null && picked != selectedDate) { | ||||||
|  |         time = picked; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     time = DateTime(time.year, time.month, time.day); | ||||||
|  |     return time; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   Future<TimeOfDay> _selectTime(BuildContext context) async { | ||||||
|  |     TimeOfDay time = TimeOfDay(hour: selectedDate.hour, minute: selectedDate.minute); | ||||||
|  |     if (Platform.isIOS) { | ||||||
|  |       await showCupertinoModalPopup( | ||||||
|  |         context: context, | ||||||
|  |         builder: (cxt) => Container( | ||||||
|  |           height: 250, | ||||||
|  |           color: Colors.white, | ||||||
|  |           child: CupertinoDatePicker( | ||||||
|  |             backgroundColor: Colors.white, | ||||||
|  |             mode: CupertinoDatePickerMode.time, | ||||||
|  |             use24hFormat: true, | ||||||
|  |             onDateTimeChanged: (value) { | ||||||
|  |               if (value != null && value != selectedDate) { | ||||||
|  |                 time = TimeOfDay(hour: value.hour, minute: value.minute); | ||||||
|  |               } | ||||||
|  |             }, | ||||||
|  |             initialDateTime: selectedDate, | ||||||
|  |           ), | ||||||
|  |         ), | ||||||
|  |       ); | ||||||
|  |     } else { | ||||||
|  |       TimeOfDay? picked = await showTimePicker( | ||||||
|  |           context: context, | ||||||
|  |           initialTime: time, | ||||||
|  |           builder: (cxt, child) { | ||||||
|  |             return MediaQuery(data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: true), child: child ?? Container()); | ||||||
|  |           }); | ||||||
|  | 
 | ||||||
|  |       if (picked != null && picked != time) { | ||||||
|  |         time = picked; | ||||||
|  |       } | ||||||
|  |       // final DateTime? picked = | ||||||
|  |       // await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); | ||||||
|  |       // if (picked != null && picked != selectedDate) { | ||||||
|  |       //   time = picked; | ||||||
|  |       // } | ||||||
|  |     } | ||||||
|  |     return time; | ||||||
|  |   } | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in New Issue