|
|
|
|
@ -21,6 +21,8 @@ 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';
|
|
|
|
|
|
|
|
|
|
@ -37,7 +39,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
|
|
|
|
|
GenericResponseModel? genericResponseModel;
|
|
|
|
|
List<GetEITDFFStructureList>? getEitDffStructureList;
|
|
|
|
|
DynamicListViewParams? dynamicParams;
|
|
|
|
|
|
|
|
|
|
String? selectedReplacementEmployee;
|
|
|
|
|
@override
|
|
|
|
|
void initState() {
|
|
|
|
|
super.initState();
|
|
|
|
|
@ -684,42 +686,96 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
|
|
|
|
|
).paddingOnly(bottom: 12);
|
|
|
|
|
}
|
|
|
|
|
} 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);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
//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();
|
|
|
|
|
@ -914,4 +970,65 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
|
|
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|