dynamic forms logic improvement.

merge-requests/1/merge
Sikander Saleem 2 years ago
parent a7d40a696e
commit 0b2a87aaaf

@ -37,7 +37,7 @@ class PostParamsModel {
languageID = json['LanguageID'];
mobileType = json['MobileType'];
logInTokenID = json['LogInTokenID'];
payrollCodeStr = json['payrollCodeStr'];
payrollCodeStr = json['PayrollCodeStr'];
pLegislationCode = json['LegislationCodeStr'];
tokenID = json['TokenID'];
}
@ -49,7 +49,7 @@ class PostParamsModel {
data['LanguageID'] = this.languageID;
data['MobileType'] = this.mobileType;
data['LogInTokenID'] = this.logInTokenID;
data['payrollCodeStr'] = this.payrollCodeStr;
data['PayrollCodeStr'] = this.payrollCodeStr;
data['LegislationCodeStr'] = this.pLegislationCode;
data['TokenID'] = this.tokenID;
return data;
@ -67,7 +67,7 @@ class PostParamsModel {
data['UserName'] = this.userName;
data['P_EMAIL_ADDRESS'] = this.pEmailAddress;
data['P_SESSION_ID'] = this.pSessionId;
data['payrollCodeStr'] = this.payrollCodeStr;
data['PayrollCodeStr'] = this.payrollCodeStr;
data['LegislationCodeStr'] = this.pLegislationCode;
data['P_SELECTED_EMPLOYEE_NUMBER'] = this.pSelectedEmployeeNumber;
data['P_USER_NAME'] = this.pUserName;

@ -7,7 +7,6 @@ import 'package:mohem_flutter_app/api/my_attendance_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/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';
@ -63,12 +62,26 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? "";
if (e.fORMATTYPE == "X") {
// for date format type, date format is changed
tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? "";
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);
}
}
}
// 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: tempVar.toString()).toJson();
}).toList();
@ -92,8 +105,8 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
String dESCFLEXCONTEXTCODE = "";
String descFlexConTextTitle = "";
void calGetValueSetValues(GetEITDFFStructureList structureList) async {
try {
Future calGetValueSetValues(GetEITDFFStructureList structureList) async {
// try {
Utils.showLoading(context);
String segmentId = structureList.cHILDSEGMENTSVS!;
if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!;
@ -114,44 +127,278 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
//getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList();
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
}
// } catch (ex) {
// Utils.hideLoading(context);
// Utils.handleException(ex, context, null);
// }
}
void getDefaultValues(GetEITDFFStructureList structureList) async {
try {
Future getDefaultValues(GetEITDFFStructureList structureList) async {
// try {
Utils.showLoading(context);
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> parentRequired = parent.pARENTSEGMENTSDVSplited ?? [];
List<PARENTSEGMENTSDVSplited> parentDvRequired = parent.pARENTSEGMENTSDVSplited ?? [];
List<PARENTSEGMENTSVSSplitedVS> parentVsRequired = parent.pARENTSEGMENTSVSSplitedVS ?? [];
List<GetEITDFFStructureList> filteredList =
getEitDffStructureList!.where((outerElement) => parentRequired.any((element) => outerElement.sEGMENTNAME == element.name && element.isRequired == "REQUIRED")).toList();
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);
print("values:${values.length}");
List<Map<String, dynamic>> getSetList = getDefaultValuesIonicLogic(parent);
print("getSetList:${getSetList.length}");
if (getSetList.isNotEmpty) {
ESERVICESDV defaultValue = await MyAttendanceApiClient().getDefaultValue(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, getSetList);
int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId);
getEitDffStructureList![index].eSERVICESDV = defaultValue;
}
}
await Future.delayed(const Duration(seconds: 1));
Utils.hideLoading(context);
setState(() {});
} catch (ex) {
Utils.hideLoading(context);
Utils.handleException(ex, context, null);
// } catch (ex) {
// 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 {
// Utils.showLoading(context);
print("structureElementVS:${structureElement.pARENTSEGMENTSVSSplitedVS?.length}");
print("structureElementDS:${structureElement.pARENTSEGMENTSDVSplited?.length}");
print("vALIDATIONTYPE:${structureElement.vALIDATIONTYPE}");
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")) {
print("entringfirst check");
List parValue = getDependenciesParams(parentValue);
print("parValue:$parValue");
if (parValue.isNotEmpty) {
parentVal = parValue.first.ID_COLUMN_NAME;
}
if (parentVal == null) {
return [];
}
}
if (parentsList.isNotEmpty) {
print("entring2nd check");
print("parentValue:$parentValue");
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);
print("dependenciesList:${dependenciesList.length}");
}
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);
// }
}
List<Map<String, dynamic>> getDependenciesParams(parentsList) {
print("getDependenciesParams:${parentsList.length}");
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) {
// print("getEitDffStructureList![j].sEGMENTNAME:${getEitDffStructureList![j].sEGMENTNAME}");
// print("getEitDffStructureList![j].fORMATTYPE:${getEitDffStructureList![j].fORMATTYPE}");
// print("getEitDffStructureList![j].eSERVICESDV:${getEitDffStructureList![j].eSERVICESDV?.toJson()}");
if (getEitDffStructureList![j].dISPLAYFLAG != "N") {
print("getEitDffStructureList![$j].vALIDATIONTYPE:${getEitDffStructureList![j].vALIDATIONTYPE}");
print("getEitDffStructureList![$j].fORMATTYPE:${getEitDffStructureList![j].fORMATTYPE}");
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 = this.cs.formatStandardDate(val);
}
} 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 = formatDateNew(date)
DateTime date = DateFormat('yyyy-MM-dd').parse(idColName!);
idColName = DateFormat('yyyy-MM-dd HH:mm:ss').format(date);
}
print("idColName:$idColName");
}
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() {
@ -269,10 +516,10 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
getDefaultValues(model);
await getDefaultValues(model);
}
},
).paddingOnly(bottom: 12);
@ -303,7 +550,6 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
} else {
selectedDate = DateFormat("yyyy-MM-dd").parse(tempDate);
}
} else {
selectedDate = DateTime.parse(getEitDffStructureList![index].eSERVICESDV!.pVALUECOLUMNNAME!);
}
@ -329,10 +575,10 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
getDefaultValues(model);
await getDefaultValues(model);
}
},
).paddingOnly(bottom: 12);
@ -350,7 +596,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i),
],
onSelected: (int popipIndex) {
onSelected: (int popipIndex) async {
ESERVICESDV eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME,
pRETURNMSG: "null",
@ -359,10 +605,10 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
getDefaultValues(model);
await getDefaultValues(model);
}
});
}
@ -383,7 +629,7 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
itemBuilder: (_) => <PopupMenuItem<int>>[
for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem<int>(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i),
],
onSelected: (int popipIndex) {
onSelected: (int popipIndex) async {
ESERVICESDV eservicesdv = ESERVICESDV(
pIDCOLUMNNAME: model.eSERVICESVS![popipIndex].iDCOLUMNNAME,
pRETURNMSG: "null",
@ -392,10 +638,10 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
getDefaultValues(model);
await getDefaultValues(model);
}
});
}
@ -442,10 +688,10 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
getDefaultValues(model);
await getDefaultValues(model);
}
},
).paddingOnly(bottom: 12);
@ -472,10 +718,10 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
getEitDffStructureList![index].eSERVICESDV = eservicesdv;
setState(() {});
if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) {
calGetValueSetValues(model);
await calGetValueSetValues(model);
}
if (model.cHILDSEGMENTSDVSplited?.isNotEmpty ?? false) {
getDefaultValues(model);
await getDefaultValues(model);
}
},
).paddingOnly(bottom: 12);
@ -560,4 +806,59 @@ class _DynamicInputScreenState extends State<DynamicInputScreen> {
}
return time;
}
String reverseFormatDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('/', '-');
formattedDate = formattedDate.replaceAll(' 00:00:00', '');
} else {
formattedDate = date;
}
return formattedDate;
}
String formatStandardDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('-', '/');
} else {
formattedDate = date;
}
return formattedDate;
}
String reverseFormatStandardDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.replaceAll('/', '-');
} else {
formattedDate = date;
}
return formattedDate;
}
String formatDate(String date) {
String formattedDate;
if (date.isNotEmpty) {
date = date.substring(0, 10);
formattedDate = date.replaceAll('-', '/');
formattedDate = formattedDate + ' 00:00:00';
} else {
formattedDate = date;
}
return formattedDate;
}
String formatDateNew(String date) {
String formattedDate;
if (date.isNotEmpty) {
formattedDate = date.split('T')[0];
formattedDate = formattedDate + ' 00:00:00';
} else {
formattedDate = date;
}
return formattedDate;
}
}

@ -17,6 +17,7 @@ class BasicDetails extends StatefulWidget {
@override
_BasicDetailsState createState() => _BasicDetailsState();
}
// TODO(Sultan): kindly follow structure of code written. use extension methods for widgets, use localization and format code
class _BasicDetailsState extends State<BasicDetails> {
String? fullName = "";

Loading…
Cancel
Save