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/app_state/app_state.dart ' ;
import ' package:mohem_flutter_app/classes/date_uitl.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/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/generic_response_model.dart ' ;
import ' package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart ' ;
import ' package:mohem_flutter_app/models/submit_eit_transaction_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/bottom_sheet.dart ' ;
import ' package:mohem_flutter_app/widgets/bottom_sheets/search_employee_bottom_sheet.dart ' ;
import ' package:mohem_flutter_app/widgets/button/default_button.dart ' ;
import ' package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart ' ;
class DynamicInputScreen extends StatefulWidget {
DynamicInputScreen ( { Key ? key } ) : super ( key: key ) ;
@ override
_DynamicInputScreenState createState ( ) {
return _DynamicInputScreenState ( ) ;
}
}
class _DynamicInputScreenState extends State < DynamicInputScreen > {
GenericResponseModel ? genericResponseModel ;
List < GetEITDFFStructureList > ? getEitDffStructureList ;
DynamicListViewParams ? dynamicParams ;
String ? selectedReplacementEmployee ;
@ override
void initState ( ) {
super . initState ( ) ;
}
void getTransactionsStructure ( ) async {
try {
Utils . showLoading ( context ) ;
if ( dynamicParams ? . pContactRelationshipId = = null ) {
genericResponseModel = await MyAttendanceApiClient ( ) . getEitDffStructure ( dynamicParams ! . dynamicId , dynamicParams ! . selectedEmp ) ;
getEitDffStructureList = genericResponseModel ? . getEITDFFStructureList ? ? [ ] ;
} else {
genericResponseModel = await MyAttendanceApiClient ( ) . getCEIDffStructure ( dynamicParams ! . dynamicId , null , dynamicParams ? . pContactRelationshipId ) ; //added pContactRelationshipId this based on the ERP requested.
getEitDffStructureList = genericResponseModel ? . getCEIDFFStructureList ? ? [ ] ;
}
dESCFLEXCONTEXTCODE = genericResponseModel ! . pDESCFLEXCONTEXTCODE ? ? " " ;
descFlexConTextTitle = genericResponseModel ! . pDESCFLEXCONTEXTNAME ? ? " " ;
// 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 ) ;
}
}
void validateTransaction ( ) async {
try {
Utils . showLoading ( context ) ;
List < Map < String , dynamic > > values = getEitDffStructureList ! . 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 ' , " en_US " ) . parse ( tempVar ) ;
tempVar = DateFormat ( ' yyyy/MM/dd HH:mm:ss ' , " en_US " ) . format ( date ) ;
}
}
}
// else if (e.fORMATTYPE == "N") {
// // for date format type, date format is changed
// tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? "";
// print("------------------------sEGMENTNAME:${e.sEGMENTNAME}");
// print("------------------------tempVar:$tempVar");
// 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: DateUtil . replaceArabicNumber ( tempVar ) ) . toJson ( ) ;
} ) . toList ( ) ;
values . add ( ValidateEitTransactionModel ( dATEVALUE: null , nAME: " PEI_ACTION " , nUMBERVALUE: null , tRANSACTIONNUMBER: 1 , vARCHAR2VALUE: " NEW_ROW " ) . toJson ( ) ) ;
if ( dynamicParams ! . pContactRelationshipId = = null ) {
values . add ( ValidateEitTransactionModel ( dATEVALUE: null , nAME: " PEI_EXTRA_INFO_ID " , nUMBERVALUE: - 1 , tRANSACTIONNUMBER: 1 , vARCHAR2VALUE: null ) . toJson ( ) ) ;
values . add ( ValidateEitTransactionModel ( dATEVALUE: null , nAME: " PEI_OBJECT_VERSION_NUMBER " , nUMBERVALUE: 0 , tRANSACTIONNUMBER: 1 , vARCHAR2VALUE: null ) . toJson ( ) ) ;
} else {
values . add ( ValidateEitTransactionModel ( dATEVALUE: null , nAME: " CONTACT_EXTRA_INFO_ID " , nUMBERVALUE: - 1 , tRANSACTIONNUMBER: 1 , vARCHAR2VALUE: null ) . toJson ( ) ) ;
values . add ( ValidateEitTransactionModel ( dATEVALUE: null , nAME: " CEI_OBJECT_VERSION_NUMBER " , nUMBERVALUE: 0 , tRANSACTIONNUMBER: 1 , vARCHAR2VALUE: null ) . toJson ( ) ) ;
}
SubmitEITTransactionList submitEITTransactionList ;
if ( dynamicParams ! . pContactRelationshipId = = null ) {
genericResponseModel = await MyAttendanceApiClient ( ) . validateEitTransaction ( dESCFLEXCONTEXTCODE , dynamicParams ! . dynamicId , values , empID: dynamicParams ! . selectedEmp ) ;
submitEITTransactionList = await MyAttendanceApiClient ( ) . submitEitTransaction ( dESCFLEXCONTEXTCODE , dynamicParams ! . dynamicId , values , empID: dynamicParams ! . selectedEmp ) ;
} else {
submitEITTransactionList = await MyAttendanceApiClient ( ) . submitCEITransaction ( dESCFLEXCONTEXTCODE , dynamicParams ! . dynamicId , values , pContactRelationID: dynamicParams ! . pContactRelationshipId ) ;
}
Utils . hideLoading ( context ) ;
await Navigator . pushNamed ( context , AppRoutes . requestSubmitScreen ,
arguments: RequestSubmitScreenParams ( LocaleKeys . submit . tr ( ) , submitEITTransactionList . pTRANSACTIONID ! , submitEITTransactionList . pITEMKEY ! , ' eit ' ,
isAttachmentMandatory: dynamicParams ! . isAttachmentMandatory ) ) ;
if ( ! AppState ( ) . cancelRequestTrancsection ) {
return ;
}
Utils . showLoading ( context ) ;
await LeaveBalanceApiClient ( ) . cancelHrTransaction ( submitEITTransactionList . pTRANSACTIONID ! ) ;
Utils . hideLoading ( context ) ;
} catch ( ex ) {
Utils . hideLoading ( context ) ;
Utils . handleException ( ex , context , null ) ;
}
}
String dESCFLEXCONTEXTCODE = " " ;
String descFlexConTextTitle = " " ;
Future calGetValueSetValues ( GetEITDFFStructureList structureList , { bool showLoading = true } ) async {
try {
if ( showLoading ) Utils . showLoading ( context ) ;
for ( int i = 0 ; i < ( structureList . cHILDSEGMENTSVSSplited ? . length ? ? 0 ) ; i + + ) {
List < Map < String , dynamic > > values = [ ] ;
String segmentId = structureList . cHILDSEGMENTSVSSplited ! [ i ] ;
if ( dESCFLEXCONTEXTCODE . isEmpty ) dESCFLEXCONTEXTCODE = structureList . dESCFLEXCONTEXTCODE ! ;
List < GetEITDFFStructureList > filteredList = getEitDffStructureList ? . where ( ( element ) = > element . cHILDSEGMENTSVSSplited ! . contains ( segmentId ) ) . toList ( ) ? ? [ ] ;
if ( filteredList . isEmpty & & structureList . cHILDSEGMENTSVSSplited ! . isNotEmpty ) {
segmentId = structureList . cHILDSEGMENTSVSSplited ! [ 0 ] ;
filteredList = getEitDffStructureList ? . where ( ( element ) = > element . cHILDSEGMENTSVSSplited ! . contains ( segmentId ) ) . toList ( ) ? ? [ ] ;
}
values = filteredList
. map ( ( e ) = > GetSetValuesRequestModel (
sEGMENTNAME: e . sEGMENTNAME , vALUECOLUMNNAME: e . eSERVICESDV ! . pVALUECOLUMNNAME , dESCRIPTION: " " , iDCOLUMNNAME: e . eSERVICESDV ! . pIDCOLUMNNAME , fLEXVALUESETNAME: e . fLEXVALUESETNAME )
. toJson ( ) )
. toList ( ) ;
String ? selectedEmp = dynamicParams ! . selectedEmp ;
bool hasParentId = false ;
if ( segmentId . isNotEmpty & & selectedEmp = = null ) {
for ( var element in getEitDffStructureList ! ) {
try {
if ( element . sEGMENTNAME = = segmentId & & selectedEmp = = null ) {
var selectedElement = element ;
if ( selectedElement . vALIDATIONTYPE = = " Y " | | selectedElement . vALIDATIONTYPE = = " D " ) {
hasParentId = true ;
break ;
}
}
} catch ( ex ) {
print ( " err: $ ex " ) ;
}
}
}
List < ESERVICESVS > eServicesResponseModel = await MyAttendanceApiClient ( ) . getValueSetValues ( segmentId , structureList . dESCFLEXCONTEXTCODE ! , structureList . dESCFLEXNAME ! , values ,
empID: selectedEmp , parentValue: structureList . eSERVICESDV ! . pVALUECOLUMNNAME , hasParent: hasParentId ) ;
List < GetEITDFFStructureList > abc = genericResponseModel ? . getEITDFFStructureList ? ? [ ] ;
getEitDffStructureList = abc ;
int index = getEitDffStructureList ! . indexWhere ( ( element ) = > element . sEGMENTNAME = = segmentId ) ;
getEitDffStructureList ! [ index ] . eSERVICESVS ! . clear ( ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = ESERVICESDV ( ) ;
if ( eServicesResponseModel . isNotEmpty ) getEitDffStructureList ! [ index ] . eSERVICESVS ! . addAll ( eServicesResponseModel ) ;
// getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? [];
//getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList();
}
if ( showLoading ) {
await Future . delayed ( const Duration ( seconds: 1 ) ) ;
Utils . hideLoading ( context ) ;
}
setState ( ( ) { } ) ;
} catch ( ex ) {
if ( showLoading ) Utils . hideLoading ( context ) ;
Utils . handleException ( ex , context , null ) ;
}
}
Future getDefaultValues ( GetEITDFFStructureList structureList , { bool showLoading = true } ) async {
try {
if ( showLoading ) Utils . showLoading ( context ) ;
for ( int i = 0 ; i < ( structureList . cHILDSEGMENTSDVSplited ? . length ? ? 0 ) ; i + + ) {
String segmentId = structureList . cHILDSEGMENTSDVSplited ! [ i ] ;
GetEITDFFStructureList ? parent = getEitDffStructureList ! . firstWhere ( ( element ) = > element . sEGMENTNAME = = segmentId ) ;
List < PARENTSEGMENTSDVSplited > parentDvRequired = parent . pARENTSEGMENTSDVSplited ? ? [ ] ;
List < PARENTSEGMENTSVSSplitedVS > parentVsRequired = parent . pARENTSEGMENTSVSSplitedVS ? ? [ ] ;
List < GetEITDFFStructureList > filteredList =
getEitDffStructureList ! . where ( ( outerElement ) = > parentDvRequired . any ( ( element ) = > outerElement . sEGMENTNAME = = element . name & & element . isRequired = = " REQUIRED " ) ) . 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 < Map < String , dynamic > > getSetList = getDefaultValuesIonicLogic ( parent ) ;
if ( getSetList . isNotEmpty ) {
ESERVICESDV defaultValue =
await MyAttendanceApiClient ( ) . getDefaultValue ( segmentId , structureList . dESCFLEXCONTEXTCODE ! , structureList . dESCFLEXNAME ! , getSetList , empID: dynamicParams ! . selectedEmp ) ;
int index = getEitDffStructureList ! . indexWhere ( ( element ) = > element . sEGMENTNAME = = segmentId ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = defaultValue ;
GetEITDFFStructureList defaultValueCheck = getEitDffStructureList ! . where ( ( GetEITDFFStructureList element ) = > element . sEGMENTNAME = = segmentId ) . toList ( ) . first ;
if ( defaultValueCheck . cHILDSEGMENTSDVSplited ! . isNotEmpty & & defaultValueCheck . rEADONLY = = ' Y ' ) {
await getDefaultValues ( defaultValueCheck , showLoading: false ) ;
// GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId);
// List<Map<String, dynamic>> getSetList = getDefaultValuesIonicLogic(parent);
// ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, defaultValueCheck.dESCFLEXCONTEXTCODE!, defaultValueCheck.dESCFLEXNAME!, getSetList);
// int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId);
// getEitDffStructureList![index].eSERVICESDV = defaultValue;
} else if ( defaultValueCheck . cHILDSEGMENTSVSSplited ! . isNotEmpty & & defaultValueCheck . rEADONLY = = ' Y ' ) {
await calGetValueSetValues ( defaultValueCheck , showLoading: false ) ;
// Utils.hideLoading(context);
}
} else if ( values . isNotEmpty ) {
ESERVICESDV defaultValue =
await MyAttendanceApiClient ( ) . getDefaultValue ( segmentId , structureList . dESCFLEXCONTEXTCODE ! , structureList . dESCFLEXNAME ! , values , empID: dynamicParams ! . selectedEmp ) ;
int index = getEitDffStructureList ! . indexWhere ( ( element ) = > element . sEGMENTNAME = = segmentId ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = defaultValue ;
}
}
if ( showLoading ) {
await Future . delayed ( const Duration ( seconds: 1 ) ) ;
Utils . hideLoading ( context ) ;
}
setState ( ( ) { } ) ;
} catch ( ex ) {
if ( showLoading ) Utils . hideLoading ( context ) ;
Utils . handleException ( ex , context , null ) ;
}
}
// List<Map<String, dynamic>> calGetValueSetValuesIonicLogic(GetEITDFFStructureList structureElement) {
// let descFlexName: any = "";
// let descFlexContextCode: any = "";
// let parentValue: any = [];
// let ParentsList: any = [];
// let parentVal: any = null;
// let dependenciesList: any = [];
// let validationType: string = "";
// }
List < Map < String , dynamic > > getDefaultValuesIonicLogic ( GetEITDFFStructureList structureElement ) {
try {
List < PARENTSEGMENTSVSSplitedVS > parentValue = structureElement . pARENTSEGMENTSVSSplitedVS ? ? [ ] ;
List < PARENTSEGMENTSDVSplited > parentsList = structureElement . pARENTSEGMENTSDVSplited ? ? [ ] ;
List < Map < String , dynamic > > dependenciesList = [ ] ;
String ? parentVal ;
bool isStandardDate = false ;
bool isStandardTimeDate = false ;
bool isStandardTime = false ;
bool isHidden = false ;
bool isReadOnlyList = false ;
bool isSelectElement = false ;
// isStandardDate = this.isStandardDate(obj);
// isStandardTimeDate = this.isStandardDateTime(obj);
// isStandardTime = this.isStandardTime(obj);
if ( structureElement . dISPLAYFLAG = = " N " ) isHidden = true ;
if ( structureElement . vALIDATIONTYPE ! = " N " & & structureElement . rEADONLY = = " Y " ) {
isReadOnlyList = true ;
}
if ( structureElement . vALIDATIONTYPE ! = " N " & & structureElement . rEADONLY = = " N " ) {
isSelectElement = true ;
}
if ( parentValue . isNotEmpty & & ( structureElement . vALIDATIONTYPE = = " D " | | structureElement . vALIDATIONTYPE = = " Y " ) ) {
List parValue = getDependenciesParams ( parentValue ) ;
if ( parValue . isNotEmpty ) {
parentVal = parValue . first . ID_COLUMN_NAME ;
}
if ( parentVal = = null ) {
return [ ] ;
}
}
if ( parentsList . isNotEmpty ) {
if ( parentValue . isNotEmpty ) {
parentsList = parentsList + parentValue . map ( ( e ) = > PARENTSEGMENTSDVSplited . fromJson ( e . toJson ( ) ) ) . toList ( ) ;
// parentsList.addAll(parentValue.map((e) => PARENTSEGMENTSDVSplited.fromJson(e.toJson())));
// parentsList.concat(parentValue);
}
dependenciesList = getDependenciesParams ( parentsList ) ;
}
return dependenciesList ;
// for (int i = 0; i < (structureList.cHILDSEGMENTSDVSplited?.length ?? 0); i++) {
// String segmentId = structureList.cHILDSEGMENTSDVSplited![i];
// print("segmentId:$segmentId");
// print("segmentName:${structureList.sEGMENTNAME}");
// GetEITDFFStructureList? parent = getEitDffStructureList!.firstWhere((element) => element.sEGMENTNAME == segmentId);
// List<PARENTSEGMENTSDVSplited> parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? [];
// List<PARENTSEGMENTSVSSplitedVS> parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? [];
//
// List<GetEITDFFStructureList> filteredList =
// getEitDffStructureList!.where((outerElement) => parentDvRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).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();
// print("values:$values");
//
// ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values);
// int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId);
// getEitDffStructureList![index].eSERVICESDV = defaultValue;
// }
// Utils.hideLoading(context);
// setState(() {});
} catch ( ex ) {
Utils . hideLoading ( context ) ;
Utils . handleException ( ex , context , null ) ;
return [ ] ;
}
}
List < Map < String , dynamic > > getDependenciesParams ( parentsList ) {
List < Map < String , dynamic > > parentArr = [ ] ;
for ( int i = 0 ; i < parentsList . length ; i + + ) {
for ( int j = 0 ; j < ( getEitDffStructureList ? . length ? ? 0 ) ; j + + ) {
if ( getEitDffStructureList ! [ j ] . sEGMENTNAME = = parentsList [ i ] . name ) {
if ( getEitDffStructureList ! [ j ] . dISPLAYFLAG ! = " N " ) {
if ( getEitDffStructureList ! [ j ] . vALIDATIONTYPE = = " N " ) {
String ? idColName ;
String ? val ;
if ( getEitDffStructureList ! [ j ] . fORMATTYPE = = " Y " | | getEitDffStructureList ! [ j ] . fORMATTYPE = = " I " ) {
//standard date time or //time
val = getEitDffStructureList ! [ j ] . eSERVICESDV ? . pVALUECOLUMNNAME ;
// val = getEitDffStructureList![j].eSERVICESDV?.pVALUECOLUMNNAME;
// var elem = document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLDivElement;
if ( ( val ? ? " " ) . isEmpty & & parentsList [ i ] . isRequired = = " REQUIRED " ) {
//alert(parentsList[i].Name +" Is required");
return [ ] ;
// return false;
}
idColName = val ;
if ( getEitDffStructureList ! [ j ] . fORMATTYPE = = " Y " ) {
// if (idColName!.contains("/")) {
// DateTime date = DateFormat('yyyy/MM/dd').parse(idColName);
// idColName = DateFormat('yyyy/MM/dd HH:mm:ss').format(DateTime(date.year, date.month, date.day));
// } else {
// DateTime date = DateFormat('yyyy-MM-dd').parse(idColName);
// idColName = DateFormat('yyyy/MM/dd HH:mm:ss').format(DateTime(date.year, date.month, date.day));
// }
idColName = Utils . formatStandardDate ( idColName ! ) ;
}
} else {
val = getEitDffStructureList ! [ j ] . eSERVICESDV ? . pVALUECOLUMNNAME ;
// val = (document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLInputElement).value;
if ( ( val ? ? " " ) . isEmpty & & parentsList [ i ] . isRequired = = " REQUIRED " ) {
//alert(parentsList[i].Name +" Is required");
return [ ] ;
}
idColName = val ;
if ( getEitDffStructureList ! [ j ] . fORMATTYPE = = " X " ) {
idColName = Utils . reverseFormatDate ( idColName ! ) ;
if ( Utils . isDate ( Utils . reverseFormatDate ( Utils . formatDateNew ( idColName ! ) ) , " yyyy-MM-dd " ) ) {
idColName = Utils . formatStandardDate ( Utils . formatStandardDate ( Utils . formatDateNew ( idColName ! ) ) ) ;
} else if ( Utils . isDate ( Utils . reverseFormatDate ( idColName ! ) , " dd-MM-yyyy " ) ) {
DateTime date = DateFormat ( ' dd-MM-yyyy ' ) . parse ( idColName ! ) ;
idColName = DateFormat ( ' yyyy-MM-dd HH:mm:ss ' ) . format ( date ) ;
}
if ( getEitDffStructureList ! [ j ] . isDefaultTypeIsCDPS ) {
// if (displayText.contains(" 00:00:00")) {
// displayText = displayText.replaceAll(" 00:00:00", "");
// }
// if (displayText.contains("/")) {
// displayText = DateFormat('yyyy-MM-dd', "en_US").format(DateFormat("yyyy/MM/dd", "en_US").parse(displayText));
// }
if ( idColName . contains ( " - " ) ) {
idColName = idColName . parseMonth ( ) ;
}
}
}
}
parentArr . add ( GetSetValuesRequestModel (
sEGMENTNAME: getEitDffStructureList ! [ j ] . sEGMENTNAME ,
vALUECOLUMNNAME: val ,
dESCRIPTION: " " ,
iDCOLUMNNAME: idColName ,
fLEXVALUESETNAME: getEitDffStructureList ! [ j ] . fLEXVALUESETNAME ,
) . toJson ( ) ) ;
break ;
} else {
if ( getEitDffStructureList ! [ j ] . rEADONLY ! = " Y " ) {
var data = getEitDffStructureList ! [ j ] . eSERVICESDV ;
//let x = document.getElementById(getEitDffStructureList![j].aPPLICATIONCOLUMNNAME) as HTMLSelectElement;
String ? text = data ? . pIDCOLUMNNAME ; //x.options[x.selectedIndex] ? x.options[x.selectedIndex].text : "";
String ? val = data ? . pVALUECOLUMNNAME ; //x.options[x.selectedIndex] ? x.options[x.selectedIndex].value : null;
if ( ( val ? ? " " ) . isEmpty & & parentsList [ i ] . isRequired = = " REQUIRED " ) {
//alert(parentsList[i].Name +" Is required");
return [ ] ;
} else { }
text ? ? = " " ;
parentArr . add ( GetSetValuesRequestModel (
sEGMENTNAME: getEitDffStructureList ! [ j ] . sEGMENTNAME ,
vALUECOLUMNNAME: val ,
dESCRIPTION: " " ,
iDCOLUMNNAME: text ,
fLEXVALUESETNAME: getEitDffStructureList ! [ j ] . fLEXVALUESETNAME ,
) . toJson ( ) ) ;
break ;
} else {
var data = getEitDffStructureList ! [ j ] . eSERVICESDV ;
String ? text = data ? . pVALUECOLUMNNAME ;
String ? val = data ? . pIDCOLUMNNAME ;
if ( ( val ? ? " " ) . isEmpty & & parentsList [ i ] . isRequired = = " REQUIRED " ) {
//alert(parentsList[i].Name +" Is required");
return [ ] ;
} else { }
text ? ? = " " ;
parentArr . add ( GetSetValuesRequestModel (
sEGMENTNAME: getEitDffStructureList ! [ j ] . sEGMENTNAME ,
vALUECOLUMNNAME: text ,
dESCRIPTION: " " ,
iDCOLUMNNAME: val ,
fLEXVALUESETNAME: getEitDffStructureList ! [ j ] . fLEXVALUESETNAME ,
) . toJson ( ) ) ;
//break;
}
}
} else {
var data = getEitDffStructureList ! [ j ] . eSERVICESDV ;
String ? text = data ? . pVALUECOLUMNNAME ;
String ? val = data ? . pIDCOLUMNNAME ;
if ( ( val ? ? " " ) . isEmpty & & parentsList [ i ] . isRequired = = " REQUIRED " ) {
//alert(parentsList[i].Name +" Is required");
return [ ] ;
} else { }
text ? ? = " " ;
parentArr . add ( GetSetValuesRequestModel (
sEGMENTNAME: getEitDffStructureList ! [ j ] . sEGMENTNAME ,
vALUECOLUMNNAME: text ,
dESCRIPTION: " " ,
iDCOLUMNNAME: val ,
fLEXVALUESETNAME: getEitDffStructureList ! [ j ] . fLEXVALUESETNAME ,
) . toJson ( ) ) ;
// break;
}
}
}
}
return parentArr ;
}
@ override
void dispose ( ) {
super . dispose ( ) ;
}
@ override
Widget build ( BuildContext context ) {
if ( dynamicParams = = null ) {
dynamicParams = ModalRoute . of ( context ) ! . settings . arguments as DynamicListViewParams ;
getTransactionsStructure ( ) ;
}
return Scaffold (
backgroundColor: Colors . white ,
appBar: AppBarWidget (
context ,
title: dynamicParams ! . title ,
) ,
body: Column (
children: [
( getEitDffStructureList = = null
? const SizedBox ( )
: ( getEitDffStructureList ! . isEmpty
? Utils . getNoDataWidget ( context )
: ListView . separated (
physics: const BouncingScrollPhysics ( ) ,
padding: const EdgeInsets . all ( 21 ) ,
itemBuilder: ( cxt , int parentIndex ) = > parseDynamicFormatType ( getEitDffStructureList ! [ parentIndex ] , parentIndex ) ,
separatorBuilder: ( cxt , index ) = > 0. height ,
itemCount: getEitDffStructureList ! . length ,
) ) )
. expanded ,
// 12.height,
DefaultButton (
LocaleKeys . next . tr ( ) ,
( getEitDffStructureList ? ? [ ] ) . isEmpty
? null
: ( ) {
validateTransaction ( ) ;
//Navigator.of(context).pushNamed(LOGIN_TYPE)
} ,
) . insideContainer ,
] ,
) ,
) ;
}
Widget parseDynamicFormatType ( GetEITDFFStructureList 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 . fieldAnswer = text ;
model . eSERVICESDV ? ? = ESERVICESDV ( ) ;
model . eSERVICESDV ! . pIDCOLUMNNAME = text ;
} ,
) . paddingOnly ( bottom: 12 ) ;
} else if ( model . fORMATTYPE = = " N " ) {
String displayText = model . eSERVICESDV ? . pIDCOLUMNNAME ? ? ( getEitDffStructureList ! [ index ] . fieldAnswer ? ? " " ) ;
if ( getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ) {
if ( displayText . contains ( " 00:00:00 " ) ) {
displayText = displayText . replaceAll ( " 00:00:00 " , " " ) ;
}
if ( displayText . contains ( " / " ) ) {
displayText = DateFormat ( ' yyyy-MM-dd ' , " en_US " ) . format ( DateFormat ( " yyyy/MM/dd " , " en_US " ) . parse ( displayText ) ) ;
}
}
return DynamicTextFieldWidget (
( model . sEGMENTPROMPT ? ? " " ) + ( model . rEQUIREDFLAG = = " Y " ? " * " : " " ) ,
displayText , // model.eSERVICESDV?.pIDCOLUMNNAME ?? "",
isReadOnly: model . rEADONLY = = " Y " ,
isInputTypeNum: true ,
onChange: ( text ) {
model . fieldAnswer = text ;
model . eSERVICESDV ? ? = ESERVICESDV ( ) ;
model . eSERVICESDV ! . pIDCOLUMNNAME = text ;
} ,
) . paddingOnly ( bottom: 12 ) ;
} else if ( model . fORMATTYPE = = " X " ) {
String displayText = model . eSERVICESDV ? . pIDCOLUMNNAME ? ? ( getEitDffStructureList ! [ index ] . fieldAnswer ? ? " " ) ;
if ( getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ) {
if ( displayText . contains ( " 00:00:00 " ) ) {
displayText = displayText . replaceAll ( " 00:00:00 " , " " ) ;
}
if ( displayText . contains ( " / " ) ) {
displayText = DateFormat ( ' yyyy-MM-dd ' , " en_US " ) . format ( DateFormat ( " yyyy/MM/dd " , " en_US " ) . parse ( displayText ) ) ;
}
}
return DynamicTextFieldWidget (
( model . sEGMENTPROMPT ? ? " " ) + ( model . rEQUIREDFLAG = = " Y " ? " * " : " " ) ,
displayText ,
suffixIconData: Icons . calendar_today ,
isEnable: false ,
onTap: ( ) async {
if ( ( getEitDffStructureList ! [ index ] . eSERVICESDV ? . pVALUECOLUMNNAME ! = null ) ) {
if ( getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ) {
if ( displayText . contains ( " 00:00:00 " ) ) {
displayText = displayText . replaceAll ( " 00:00:00 " , " " ) ;
}
if ( displayText . contains ( " / " ) ) {
displayText = DateFormat ( ' yyyy-MM-dd ' , " en_US " ) . format ( DateFormat ( " yyyy/MM/dd " , " en_US " ) . parse ( displayText ) ) ;
}
}
}
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 ( getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ) {
eservicesdv = ESERVICESDV (
pIDCOLUMNNAME: Utils . formatDate ( dateString ) ,
pRETURNMSG: " null " ,
pRETURNSTATUS: getEitDffStructureList ! [ index ] . dEFAULTVALUE ,
pVALUECOLUMNNAME:
getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ? Utils . reverseFormatStandardDate ( Utils . formatDate ( dateString ) ) : DateFormat ( ' yyyy-MM-ddThh:mm:ss.s ' ) . format ( date ) ) ;
} else {
eservicesdv = ESERVICESDV (
pIDCOLUMNNAME: dateString ,
pRETURNMSG: " null " ,
pRETURNSTATUS: getEitDffStructureList ! [ index ] . dEFAULTVALUE ,
pVALUECOLUMNNAME:
getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ? Utils . reverseFormatStandardDate ( Utils . formatDate ( dateString ) ) : DateFormat ( ' yyyy-MM-ddThh:mm:ss.s ' ) . format ( date ) ) ;
}
getEitDffStructureList ! [ index ] . eSERVICESDV = eservicesdv ;
setState ( ( ) { } ) ;
if ( model . cHILDSEGMENTSVSSplited ? . isNotEmpty ? ? false ) {
await calGetValueSetValues ( model ) ;
}
if ( model . cHILDSEGMENTSDVSplited ? . isNotEmpty ? ? false ) {
await getDefaultValues ( model ) ;
}
} ,
) . paddingOnly ( bottom: 12 ) ;
} else if ( model . fORMATTYPE = = " Y " ) {
String displayText = model . eSERVICESDV ? . pIDCOLUMNNAME ? ? ( getEitDffStructureList ! [ index ] . fieldAnswer ? ? " " ) ;
if ( getEitDffStructureList ! [ 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 ( ( getEitDffStructureList ! [ index ] . eSERVICESDV ? . pVALUECOLUMNNAME ! = null ) ) {
if ( getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ) {
String tempDate = getEitDffStructureList ! [ index ] . eSERVICESDV ! . pVALUECOLUMNNAME ! ;
if ( tempDate . contains ( " 00:00:00 " ) ) {
tempDate = tempDate . replaceAll ( " 00:00:00 " , ' ' ) . trim ( ) ;
}
if ( tempDate . contains ( " / " ) ) {
selectedDate = DateFormat ( " yyyy/MM/dd " , " en_US " ) . parse ( tempDate ) ;
} else {
selectedDate = DateFormat ( " yyyy-MM-dd " , " en_US " ) . parse ( tempDate ) ;
}
} else {
selectedDate = DateTime . parse ( getEitDffStructureList ! [ index ] . eSERVICESDV ! . pVALUECOLUMNNAME ! ) ;
}
}
DateTime date = await _selectDate ( context ) ;
String dateString = date . toString ( ) . split ( ' ' ) . first ;
// getEitDffStructureList![index].fieldAnswer = date.toString();
ESERVICESDV eservicesdv ;
if ( getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ) {
eservicesdv = ESERVICESDV (
pIDCOLUMNNAME: Utils . formatDate ( dateString ) ,
pRETURNMSG: " null " ,
pRETURNSTATUS: getEitDffStructureList ! [ index ] . dEFAULTVALUE ,
pVALUECOLUMNNAME:
getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ? Utils . reverseFormatStandardDate ( Utils . formatDate ( dateString ) ) : DateFormat ( ' yyyy-MM-ddThh:mm:ss.s ' ) . format ( date ) ) ;
} else {
eservicesdv = ESERVICESDV (
pIDCOLUMNNAME: dateString ,
pRETURNMSG: " null " ,
pRETURNSTATUS: getEitDffStructureList ! [ index ] . dEFAULTVALUE ,
pVALUECOLUMNNAME:
getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ? Utils . reverseFormatStandardDate ( Utils . formatDate ( dateString ) ) : DateFormat ( ' yyyy-MM-ddThh:mm:ss.s ' ) . format ( date ) ) ;
}
getEitDffStructureList ! [ index ] . eSERVICESDV = eservicesdv ;
setState ( ( ) { } ) ;
if ( model . cHILDSEGMENTSVSSplited ? . isNotEmpty ? ? false ) {
await calGetValueSetValues ( model ) ;
}
if ( model . cHILDSEGMENTSDVSplited ? . isNotEmpty ? ? false ) {
await getDefaultValues ( model ) ;
}
} ,
) . paddingOnly ( bottom: 12 ) ;
}
} else {
//condition need to be added here.
if ( model . vSSRCHFLAG = = ' Y ' ) {
return DynamicTextFieldWidget (
LocaleKeys . selectEmployee . tr ( ) ,
" " ,
// selectedReplacementEmployee == null ? LocaleKeys.searchForEmployee
// .tr() : selectedReplacementEmployee!.employeeDisplayName ?? "",
isEnable: false ,
onTap: ( ) {
showMyBottomSheet (
context ,
callBackFunc: ( ) { } ,
child: SearchEmployeeBottomSheet (
title: LocaleKeys . searchForEmployee . tr ( ) ,
apiMode: LocaleKeys . delegate . tr ( ) ,
fromDynamicScreen: true ,
fromChat: false ,
onSelectEmployee: ( _selectedEmployee ) {
// Navigator.pop(context);
// selectedReplacementEmployee = _selectedEmployee;
ESERVICESDV eservicesdv = ESERVICESDV (
pIDCOLUMNNAME: _selectedEmployee . userName ,
pRETURNMSG: " null " ,
pRETURNSTATUS: " null " , //getEitDffStructureList![popipIndex].dEFAULTVALUE,
pVALUECOLUMNNAME: _selectedEmployee . employeeDisplayName ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = eservicesdv ;
setState ( ( ) { } ) ;
} ,
onSearchClick: ( String empID ) async {
ESERVICESDV eservicesdv =
ESERVICESDV ( pSRCHVALUECOLUMNNAME: empID , pRETURNMSG: " null " , pRETURNSTATUS: " null " , pVALUECOLUMNNAME: " " ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = eservicesdv ;
setState ( ( ) { } ) ;
if ( model . cHILDSEGMENTSVSSplited ? . isNotEmpty ? ? false ) {
await calGetValueSetValuesSearch ( model , empID ) ;
}
if ( model . cHILDSEGMENTSDVSplited ? . isNotEmpty ? ? false ) {
await getDefaultValues ( model ) ;
}
} ,
) ,
) ;
} ,
) ;
} else {
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: Column (
children: [
Text ( model . eSERVICESVS ! [ i ] . vALUECOLUMNNAME ! ) ,
const PopupMenuDivider ( ) ,
] ,
) ) ,
] ,
onSelected: ( int popipIndex ) async {
ESERVICESDV eservicesdv = ESERVICESDV (
pIDCOLUMNNAME: model . eSERVICESVS ! [ popipIndex ] . iDCOLUMNNAME ,
pRETURNMSG: " null " ,
pRETURNSTATUS: " null " ,
//getEitDffStructureList![popipIndex].dEFAULTVALUE,
pVALUECOLUMNNAME: model . eSERVICESVS ! [ popipIndex ]
. vALUECOLUMNNAME ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = eservicesdv ;
setState ( ( ) { } ) ;
if ( model . cHILDSEGMENTSVSSplited ? . isNotEmpty ? ? false ) {
await calGetValueSetValues ( model ) ;
}
if ( model . cHILDSEGMENTSDVSplited ? . isNotEmpty ? ? false ) {
await getDefaultValues ( 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 ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = eservicesdv ;
setState ( ( ) { } ) ;
if ( model . cHILDSEGMENTSVSSplited ? . isNotEmpty ? ? false ) {
await calGetValueSetValues ( model ) ;
}
if ( model . cHILDSEGMENTSDVSplited ? . isNotEmpty ? ? false ) {
await getDefaultValues ( 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 ? ? ( getEitDffStructureList ! [ index ] . fieldAnswer ? ? " " ) ;
if ( getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ) {
if ( displayText . contains ( " 00:00:00 " ) ) {
displayText = displayText . replaceAll ( " 00:00:00 " , " " ) ;
}
if ( ! displayText . contains ( " - " ) ) {
displayText = DateFormat ( ' yyyy-MM-dd ' , " en_US " ) . format ( DateFormat ( " yyyy/MM/dd " , " en_US " ) . parse ( displayText ) ) ;
}
}
return DynamicTextFieldWidget (
( model . sEGMENTPROMPT ? ? " " ) + ( model . rEQUIREDFLAG = = " Y " ? " * " : " " ) ,
displayText ,
suffixIconData: Icons . calendar_today ,
isEnable: false ,
onTap: ( ) async {
if ( ( getEitDffStructureList ! [ index ] . eSERVICESDV ? . pVALUECOLUMNNAME ! = null ) ) {
if ( getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ) {
selectedDate = DateFormat ( " yyyy/MM/dd " ) . parse ( getEitDffStructureList ! [ index ] . eSERVICESDV ! . pVALUECOLUMNNAME ! . replaceAll ( ' /" ' , ' ' ) . replaceAll ( " 00:00:00 " , " " ) ) ;
} else {
selectedDate = DateTime . parse ( getEitDffStructureList ! [ index ] . eSERVICESDV ! . pVALUECOLUMNNAME ! ) ;
}
}
DateTime date = await _selectDate ( context ) ;
String dateString = date . toString ( ) . split ( ' ' ) . first ;
getEitDffStructureList ! [ index ] . fieldAnswer = date . toString ( ) ;
ESERVICESDV eservicesdv = ESERVICESDV (
pIDCOLUMNNAME: dateString ,
pRETURNMSG: " null " ,
pRETURNSTATUS: getEitDffStructureList ! [ index ] . dEFAULTVALUE ,
pVALUECOLUMNNAME: getEitDffStructureList ! [ index ] . isDefaultTypeIsCDPS ? Utils . reverseFormatStandardDate ( Utils . formatDate ( dateString ) ) : DateFormat ( ' yyyy-MM-ddThh:mm:ss.s ' ) . format ( date ) ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = eservicesdv ;
setState ( ( ) { } ) ;
if ( model . cHILDSEGMENTSVSSplited ? . isNotEmpty ? ? false ) {
await calGetValueSetValues ( model ) ;
}
if ( model . cHILDSEGMENTSDVSplited ? . isNotEmpty ? ? false ) {
await getDefaultValues ( model ) ;
}
} ,
) . paddingOnly ( bottom: 12 ) ;
} else if ( model . fORMATTYPE = = " I " ) {
return DynamicTextFieldWidget (
( model . sEGMENTPROMPT ? ? " " ) + ( model . rEQUIREDFLAG = = " Y " ? " * " : " " ) ,
model . eSERVICESDV ? . pIDCOLUMNNAME ? ? ( getEitDffStructureList ! [ index ] . fieldAnswer ? ? " " ) ,
suffixIconData: Icons . access_time_filled_rounded ,
isEnable: false ,
onTap: ( ) async {
if ( ( getEitDffStructureList ! [ index ] . eSERVICESDV ? . pVALUECOLUMNNAME ! = null ) ) {
var timeString = getEitDffStructureList ! [ 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: getEitDffStructureList ! [ index ] . dEFAULTVALUE , pVALUECOLUMNNAME: time ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = eservicesdv ;
setState ( ( ) { } ) ;
if ( model . cHILDSEGMENTSVSSplited ? . isNotEmpty ? ? false ) {
await calGetValueSetValues ( model ) ;
}
if ( model . cHILDSEGMENTSDVSplited ? . isNotEmpty ? ? false ) {
await getDefaultValues ( 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: Localizations . override ( context: context , locale: const Locale ( ' en ' , ' US ' ) , 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 ;
}
Future calGetValueSetValuesSearch ( GetEITDFFStructureList structureList , String userID , { bool showLoading = true } ) async {
try {
if ( showLoading ) Utils . showLoading ( context ) ;
for ( int i = 0 ; i < ( structureList . cHILDSEGMENTSVSSplited ? . length ? ? 0 ) ; i + + ) {
List < Map < String , dynamic > > values = [ ] ;
String segmentId = structureList . cHILDSEGMENTSVSSplited ! [ i ] ;
if ( dESCFLEXCONTEXTCODE . isEmpty ) dESCFLEXCONTEXTCODE = structureList . dESCFLEXCONTEXTCODE ! ;
List < GetEITDFFStructureList > filteredList = getEitDffStructureList ? . where ( ( element ) = > element . cHILDSEGMENTSVSSplited ! . contains ( segmentId ) ) . toList ( ) ? ? [ ] ;
if ( filteredList . isEmpty & & structureList . cHILDSEGMENTSVSSplited ! . isNotEmpty ) {
segmentId = structureList . cHILDSEGMENTSVSSplited ! [ 0 ] ;
filteredList = getEitDffStructureList ? . where ( ( element ) = > element . cHILDSEGMENTSVSSplited ! . contains ( segmentId ) ) . toList ( ) ? ? [ ] ;
}
values = filteredList
. map ( ( e ) = > GetSetValuesRequestModel (
sEGMENTNAME: e . sEGMENTNAME , vALUECOLUMNNAME: e . eSERVICESDV ! . pVALUECOLUMNNAME , dESCRIPTION: " " , iDCOLUMNNAME: e . eSERVICESDV ! . pIDCOLUMNNAME , fLEXVALUESETNAME: e . fLEXVALUESETNAME , pSRCHVALUECOLUMNNAME: userID )
. toJson ( ) )
. toList ( ) ;
String ? selectedEmp = dynamicParams ! . selectedEmp ;
bool hasParentId = false ;
if ( segmentId . isNotEmpty & & selectedEmp = = null ) {
for ( var element in getEitDffStructureList ! ) {
try {
if ( element . sEGMENTNAME = = segmentId & & selectedEmp = = null ) {
var selectedElement = element ;
if ( selectedElement . vALIDATIONTYPE = = " Y " | | selectedElement . vALIDATIONTYPE = = " D " ) {
hasParentId = true ;
break ;
}
}
} catch ( ex ) {
print ( " err: $ ex " ) ;
}
}
}
List < ESERVICESVS > eServicesResponseModel = await MyAttendanceApiClient ( ) . getValueSetValuesSearch ( segmentId , structureList . dESCFLEXCONTEXTCODE ! , structureList . dESCFLEXNAME ! , values ,
empID: selectedEmp , parentValue: structureList . eSERVICESDV ! . pVALUECOLUMNNAME , hasParent: hasParentId ) ;
List < GetEITDFFStructureList > abc = genericResponseModel ? . getEITDFFStructureList ? ? [ ] ;
getEitDffStructureList = abc ;
int index = getEitDffStructureList ! . indexWhere ( ( element ) = > element . sEGMENTNAME = = segmentId ) ;
getEitDffStructureList ! [ index ] . eSERVICESVS ! . clear ( ) ;
getEitDffStructureList ! [ index ] . eSERVICESDV = ESERVICESDV ( ) ;
if ( eServicesResponseModel . isNotEmpty ) getEitDffStructureList ! [ index ] . eSERVICESVS ! . addAll ( eServicesResponseModel ) ;
// getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? [];
//getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList();
}
if ( showLoading ) {
await Future . delayed ( const Duration ( seconds: 1 ) ) ;
Utils . hideLoading ( context ) ;
}
setState ( ( ) { } ) ;
} catch ( ex ) {
if ( showLoading ) Utils . hideLoading ( context ) ;
Utils . handleException ( ex , context , null ) ;
}
}
}