From 23110b792fd6f24da5a0c6adf720013d03c62188 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 5 Jul 2022 11:21:01 +0300 Subject: [PATCH] completed add and update family member --- lib/api/profile_api_client.dart | 22 +- lib/models/generic_response_model.dart | 13 +- .../get_contact_dff_structure_list.dart | 126 +---- .../profile/basic_details_dff_structure.dart | 13 +- .../get_contact_clos_structure_list.dart | 9 +- .../profile/get_contact_details_list.dart | 2 +- lib/ui/profile/add_update_family_member.dart | 437 ++++++++++++++++-- lib/ui/profile/family_members.dart | 8 +- 8 files changed, 487 insertions(+), 143 deletions(-) diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index 9ee1e80..5c1f2b7 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -234,11 +234,10 @@ class ProfileApiClient { } // add & update family member - Future> getContactColsStructureList() async { + Future> getContactColsStructureList(String actionType) async { String url = "${ApiConsts.erpRest}GET_CONTACT_COLS_STRUCTURE"; Map postParams = { - "P_ACTION": "ADD", - // "P_ACTION":actionType, + "P_ACTION":actionType, "P_FUNCTION_NAME": "HR_PERINFO_SS", }; postParams.addAll(AppState().postParamsJson); @@ -278,4 +277,21 @@ class ProfileApiClient { return responseData.getContactDffStructureList ?? []; }, url, postParams); } + + Future submetConatctTransactionAddAndUpdate(String actionType, int relationId ,List> list) async { + String url = "${ApiConsts.erpRest}SUBMIT_CONTACT_TRANSACTION"; + Map postParams = { + "P_MENU_TYPE": "E", + "P_SELECTED_RESP_ID": -999, + "P_FUNCTION_NAME":"HR_PERINFO_SS", + "P_ACTION": actionType, + "P_CONTACT_RELATIONSHIP_ID": relationId, + }; + postParams["EITTransactionTBL"] =list; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.submitContactTransactionList; + }, url, postParams); + } } diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index cec969f..687c514 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -691,6 +691,13 @@ class GenericResponseModel { getBasicDetDffStructureList!.add(new GetBasicDetDffStructureList.fromJson(v)); }); } + if (json['GetContactDffStructureList'] != null) { + getContactDffStructureList = []; + json['GetContactDffStructureList'].forEach((v) { + getContactDffStructureList!.add(new GetContactDffStructureList.fromJson(v)); + }); + } + if (json['GetBasicDetNtfBodyList'] != null) { getBasicDetNtfBodyList = []; json['GetBasicDetNtfBodyList'].forEach((v) { @@ -706,7 +713,6 @@ class GenericResponseModel { getCcpTransactionsList = json['GetCcpTransactionsList']; getCcpTransactionsListNew = json['GetCcpTransactionsList_New']; getConcurrentProgramsList = json['GetConcurrentProgramsList']; - getContactColsStructureList = json['GetContactColsStructureList']; if (json['GetContactDetailsList'] != null) { getContactDetailsList = []; json['GetContactDetailsList'].forEach((v) { @@ -1218,7 +1224,6 @@ class GenericResponseModel { data['GetCcpTransactionsList'] = this.getCcpTransactionsList; data['GetCcpTransactionsList_New'] = this.getCcpTransactionsListNew; data['GetConcurrentProgramsList'] = this.getConcurrentProgramsList; - data['GetContactColsStructureList'] = this.getContactColsStructureList; if (this.getContactDetailsList != null) { data['GetContactDetailsList'] = this.getContactDetailsList!.map((v) => v.toJson()).toList(); @@ -1227,6 +1232,10 @@ class GenericResponseModel { data['GetContactColsStructureList'] = this.getContactColsStructureList!.map((v) => v.toJson()).toList(); } + if (this.getContactDffStructureList != null) { + data['GetContactDffStructureList'] = + this.getContactDffStructureList!.map((v) => v.toJson()).toList(); + } data['GetContactNotificationBodyList'] = this.getContactNotificationBodyList; data['GetCountriesList'] = this.getCountriesList; if (this.getDayHoursTypeDetailsList != null) { diff --git a/lib/models/get_contact_dff_structure_list.dart b/lib/models/get_contact_dff_structure_list.dart index 9427aaa..44a86be 100644 --- a/lib/models/get_contact_dff_structure_list.dart +++ b/lib/models/get_contact_dff_structure_list.dart @@ -1,5 +1,8 @@ +import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; + class GetContactDffStructureList { String? aLPHANUMERICALLOWEDFLAG; String? aPPLICATIONCOLUMNNAME; @@ -12,8 +15,8 @@ class GetContactDffStructureList { String? dESCFLEXNAME; String? dISPLAYFLAG; String? eNABLEDFLAG; - // ESERVICESDV? eSERVICESDV; - // List? eSERVICESVS; + ESERVICESDV? eSERVICESDV; + List? eSERVICESVS; String? fLEXVALUESETNAME; String? fORMATTYPE; String? fORMATTYPEDSP; @@ -37,6 +40,7 @@ class GetContactDffStructureList { String? uSEDFLAG; String? vALIDATIONTYPE; String? vALIDATIONTYPEDSP; + GetContactDetailsList? getContactDetailsList; GetContactDffStructureList( {this.aLPHANUMERICALLOWEDFLAG, @@ -50,8 +54,8 @@ class GetContactDffStructureList { this.dESCFLEXNAME, this.dISPLAYFLAG, this.eNABLEDFLAG, - // this.eSERVICESDV, - // this.eSERVICESVS, + this.eSERVICESDV, + this.eSERVICESVS, this.fLEXVALUESETNAME, this.fORMATTYPE, this.fORMATTYPEDSP, @@ -74,7 +78,8 @@ class GetContactDffStructureList { this.uPPERCASEONLYFLAG, this.uSEDFLAG, this.vALIDATIONTYPE, - this.vALIDATIONTYPEDSP}); + this.vALIDATIONTYPEDSP, + this.getContactDetailsList}); GetContactDffStructureList.fromJson(Map json) { aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; @@ -88,15 +93,15 @@ class GetContactDffStructureList { 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 = []; - // json['E_SERVICES_VS'].forEach((v) { - // eSERVICESVS!.add(new ESERVICESVS.fromJson(v)); - // }); - // } + eSERVICESDV = json['E_SERVICES_DV'] != null + ? new ESERVICESDV.fromJson(json['E_SERVICES_DV']) + : null; + if (json['E_SERVICES_VS'] != null) { + eSERVICESVS = []; + json['E_SERVICES_VS'].forEach((v) { + eSERVICESVS!.add(new ESERVICESVS.fromJson(v)); + }); + } fLEXVALUESETNAME = json['FLEX_VALUE_SET_NAME']; fORMATTYPE = json['FORMAT_TYPE']; fORMATTYPEDSP = json['FORMAT_TYPE_DSP']; @@ -108,19 +113,7 @@ class GetContactDffStructureList { nUMBERPRECISION = json['NUMBER_PRECISION']; nUMERICMODEENABLEDFLAG = json['NUMERIC_MODE_ENABLED_FLAG']; pARENTSEGMENTSDV = json['PARENT_SEGMENTS_DV']; - // if (json['PARENT_SEGMENTS_DV_Splited'] != null) { - // pARENTSEGMENTSDVSplited = []; - // json['PARENT_SEGMENTS_DV_Splited'].forEach((v) { - // pARENTSEGMENTSDVSplited!.add(new Null.fromJson(v)); - // }); - // } pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS']; - // if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) { - // pARENTSEGMENTSVSSplitedVS = []; - // json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) { - // pARENTSEGMENTSVSSplitedVS!.add(new Null.fromJson(v)); - // }); - // } rEADONLY = json['READ_ONLY']; rEQUIREDFLAG = json['REQUIRED_FLAG']; sEGMENTNAME = json['SEGMENT_NAME']; @@ -145,12 +138,12 @@ class GetContactDffStructureList { 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(); - // } + 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; @@ -184,72 +177,3 @@ class GetContactDffStructureList { } } -// class ESERVICESDV { -// String? pIDCOLUMNNAME; -// String? pRETURNMSG; -// String? pRETURNSTATUS; -// String? pVALUECOLUMNNAME; -// -// ESERVICESDV( -// {this.pIDCOLUMNNAME, -// this.pRETURNMSG, -// this.pRETURNSTATUS, -// this.pVALUECOLUMNNAME}); -// -// ESERVICESDV.fromJson(Map json) { -// pIDCOLUMNNAME = json['P_ID_COLUMN_NAME']; -// pRETURNMSG = json['P_RETURN_MSG']; -// pRETURNSTATUS = json['P_RETURN_STATUS']; -// pVALUECOLUMNNAME = json['P_VALUE_COLUMN_NAME']; -// } -// -// Map toJson() { -// final Map data = new Map(); -// 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 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 toJson() { -// final Map data = new Map(); -// 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; -// } -// } \ No newline at end of file diff --git a/lib/models/profile/basic_details_dff_structure.dart b/lib/models/profile/basic_details_dff_structure.dart index db3312e..9d44b85 100644 --- a/lib/models/profile/basic_details_dff_structure.dart +++ b/lib/models/profile/basic_details_dff_structure.dart @@ -1,11 +1,12 @@ import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; +import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; class GetBasicDetDffStructureList { String? aLPHANUMERICALLOWEDFLAG; String? aPPLICATIONCOLUMNNAME; String? cHILDSEGMENTSVS; - Null? cHILDSEGMENTSVSSplited; + dynamic? cHILDSEGMENTSVSSplited; String? dEFAULTTYPE; String? dEFAULTVALUE; String? dESCFLEXCONTEXTCODE; @@ -27,9 +28,9 @@ class GetBasicDetDffStructureList { String? nUMBERPRECISION; String? nUMERICMODEENABLEDFLAG; String? pARENTSEGMENTSDV; - List? pARENTSEGMENTSDVSplited; + List? pARENTSEGMENTSDVSplited; String? pARENTSEGMENTSVS; - List? pARENTSEGMENTSVSSplitedVS; + List? pARENTSEGMENTSVSSplitedVS; String? rEADONLY; String? rEQUIREDFLAG; String? sEGMENTNAME; @@ -40,6 +41,7 @@ class GetBasicDetDffStructureList { String? vALIDATIONTYPE; String? vALIDATIONTYPEDSP; GetEmployeeBasicDetailsList? userBasicDetail; + GetContactDetailsList? getContactDetailsList; GetBasicDetDffStructureList( {this.aLPHANUMERICALLOWEDFLAG, @@ -79,7 +81,9 @@ class GetBasicDetDffStructureList { this.uSEDFLAG, this.vALIDATIONTYPE, this.vALIDATIONTYPEDSP, - this.userBasicDetail}); + this.userBasicDetail, + this.getContactDetailsList + }); GetBasicDetDffStructureList.fromJson(Map json) { aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; @@ -134,6 +138,7 @@ class GetBasicDetDffStructureList { uSEDFLAG = json['USED_FLAG']; vALIDATIONTYPE = json['VALIDATION_TYPE']; vALIDATIONTYPEDSP = json['VALIDATION_TYPE_DSP']; + } Map toJson() { diff --git a/lib/models/profile/get_contact_clos_structure_list.dart b/lib/models/profile/get_contact_clos_structure_list.dart index 63728fc..7f3ad90 100644 --- a/lib/models/profile/get_contact_clos_structure_list.dart +++ b/lib/models/profile/get_contact_clos_structure_list.dart @@ -1,17 +1,21 @@ +import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; + class GetContactColsStructureList { String? aPPLICATIONCOLUMNNAME; String? dATATYPE; String? dISPLAYFLAG; int? gROUPNUM; - int? mAXIMUMSIZE; + dynamic? mAXIMUMSIZE; String? oBJECTNAME; String? oBJECTTYPE; List? objectValuesList; + //List? objectValuesList; String? rEQUIREDFLAG; String? sEGMENTPROMPT; int? sEGMENTSEQNUM; + GetContactDetailsList? getContactDetailsList; GetContactColsStructureList( {this.aPPLICATIONCOLUMNNAME, @@ -24,7 +28,8 @@ class GetContactColsStructureList { this.objectValuesList, this.rEQUIREDFLAG, this.sEGMENTPROMPT, - this.sEGMENTSEQNUM}); + this.sEGMENTSEQNUM, + this.getContactDetailsList}); GetContactColsStructureList.fromJson(Map json) { aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; diff --git a/lib/models/profile/get_contact_details_list.dart b/lib/models/profile/get_contact_details_list.dart index 67f3b38..9097291 100644 --- a/lib/models/profile/get_contact_details_list.dart +++ b/lib/models/profile/get_contact_details_list.dart @@ -6,7 +6,7 @@ class GetContactDetailsList { String? dATEVALUE; String? dISPLAYFLAG; int? gROUPNUM; - int? nUMBERVALUE; + dynamic? nUMBERVALUE; String? sEGMENTPROMPT; int? sEGMENTSEQNUM; String? sEGMENTVALUEDSP; diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index de3e71f..e5a59f9 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -4,9 +4,11 @@ import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/dyanmic_forms/validate_eit_transaction_model.dart'; import 'package:mohem_flutter_app/models/get_approves_list_model.dart'; import 'package:mohem_flutter_app/models/get_contact_dff_structure_list.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; @@ -18,6 +20,7 @@ import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; +import 'package:easy_localization/src/public_ext.dart'; class AddUpdateFamilyMember extends StatefulWidget { const AddUpdateFamilyMember({Key? key}) : super(key: key); @@ -31,37 +34,64 @@ class _AddUpdateFamilyMemberState extends State { List getContactColsStructureList = []; List getContactDffStructureList = []; List getContactDetailsList = []; + SubmitContactTransactionList? submitContactTransactionList; dynamic args; + String? date="MM/DD/YYYY"; + // String actionType = "UPDATE"; + + GetApprovesList? getApprovesList; @override void initState() { - - - // + // super.initState(); - - } - void callAddFamilyMember() async { - try { - Utils.showLoading(context); - getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure(); - getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(); - getContactDffStructureList = await ProfileApiClient().getContactDffStructureList(); - Utils.hideLoading(context); - setState(() {}); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } } - void callUpdateFamilyMember() async { + // void callFamilyMemberData() async { + // try { + // Utils.showLoading(context); + // callAddAndUpdateFamilyMember(); + // Utils.hideLoading(context); + // setState(() {}); + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } + // } + + void callAddAndUpdateFamilyMember() async { try { Utils.showLoading(context); - getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']); getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure(); - getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(); + getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(args['actionType']); getContactDffStructureList = await ProfileApiClient().getContactDffStructureList(); +if(args['actionType']== "ADD"){ + + getBasicDetDffStructureList?.forEach((element) { + element?.getContactDetailsList = new GetContactDetailsList(); + }); + getContactColsStructureList?.forEach((element) { + element?.getContactDetailsList = new GetContactDetailsList(); + }); + getContactDffStructureList?.forEach((element) { + element?.getContactDetailsList = new GetContactDetailsList(); + }); +} +else if(args['actionType']== "UPDATE") { + getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']); + + getBasicDetDffStructureList?.forEach((element) { + element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME); + }); + getContactColsStructureList?.forEach((element) { + element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME); + }); + + + getContactDffStructureList?.forEach((element) { + element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME); + }); +} Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -70,29 +100,384 @@ class _AddUpdateFamilyMemberState extends State { } } + @override Widget build(BuildContext context) { - args= ModalRoute.of(context)!.settings.arguments; - callUpdateFamilyMember(); + if (args == null) { + args = ModalRoute.of(context)!.settings.arguments; + callAddAndUpdateFamilyMember(); + + } return Scaffold( appBar: AppBarWidget( context, title: LocaleKeys.profile_familyDetails.tr(), ), backgroundColor: MyColors.backgroundColor, - body: args['flag']== 1 + bottomSheet: footer(), + body: args['flag'] == 1 ? Column( children: [ - + ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getContactColsStructureList!.length), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getBasicDetDffStructureList!.length), + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getContactDffStructureList!.length), + ]).expanded, + SizedBox( + height: 50, + ), ], ) - : args['flag'] == 2 + : args['flag'] == 2 ? Column( children: [ - "update".toText16(color: MyColors.blackColor), + getContactDetailsList!.isEmpty + ? LocaleKeys.noDataAvailable.tr().toText16().center + : ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getContactColsStructureList!.length), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getBasicDetDffStructureList!.length), + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getContactDffStructureList!.length), + ]).expanded, + SizedBox( + height: 50, + ), ], ) : Container(), ); } + + Widget parseDynamicFormatTypeCols(GetContactColsStructureList? model, int index) { + if (model!.dISPLAYFLAG != "N") { + } else { + return const SizedBox(); + } + if (model.dATATYPE == "VARCHAR2") { + if (model!.objectValuesList?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => + >[ + for (int i = 0; i < getContactColsStructureList[index]!.objectValuesList!.length; i++) + PopupMenuItem(child: Text(getContactColsStructureList[index]!.objectValuesList![i].mEANING.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString(); + setState(() {}); + }); + } else { + return DynamicTextFieldWidget( + (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + onChange: (text) { + model!.getContactDetailsList!.sEGMENTVALUEDSP = text; + }, + ).paddingOnly(bottom: 12); + } + }else if (model.dATATYPE == "DATE") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + DateTime dateValue = await _selectDate(context); + date = DateFormat('yyyy/MM/dd').format(dateValue); + model!.getContactDetailsList!.sEGMENTVALUEDSP = date; + setState(() {}); + }, + ).paddingOnly(bottom: 12); + } + return Container(); + } + + Widget parseDynamicFormatTypeBasicDetDff(GetBasicDetDffStructureList? model, int index) { + if (model!.dISPLAYFLAG != "N") { + } else { + return const SizedBox(); + } + if (model!.fORMATTYPE == "C") { + if (model!.eSERVICESVS?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < getBasicDetDffStructureList[index]!.eSERVICESVS!.length; i++) + PopupMenuItem(child: Text(getBasicDetDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); + + setState(() {}); + }); + } else { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + onChange: (text) { + model.getContactDetailsList!.sEGMENTVALUEDSP = text; + }, + ).paddingOnly(bottom: 12); + } + }else if (model.fORMATTYPE == "X") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + DateTime dateValue = await _selectDate(context); + date = DateFormat('yyyy/MM/dd').format(dateValue); + model!.getContactDetailsList!.sEGMENTVALUEDSP = date; + setState(() {}); + }, + ).paddingOnly(bottom: 12); + } + return Container(); + } + + Widget parseDynamicFormatTypeContactDff(GetContactDffStructureList? model, int index) { + if (model!.dISPLAYFLAG != "N") { + } else { + return const SizedBox(); + } + if (model!.fORMATTYPE == "C") { + if (model.eSERVICESVS?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < getContactDffStructureList[index]!.eSERVICESVS!.length; i++) + PopupMenuItem(child: Text(getContactDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); + setState(() {}); + }); + } else { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + onChange: (text) { + model.getContactDetailsList!.sEGMENTVALUEDSP = text; + }, + ).paddingOnly(bottom: 12); + } + }else if (model.fORMATTYPE == "X") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + DateTime dateValue = await _selectDate(context); + date = DateFormat('yyyy/MM/dd').format(dateValue); + model!.getContactDetailsList!.sEGMENTVALUEDSP = date; + setState(() {}); + }, + ).paddingOnly(bottom: 12); + } + return Container(); + } + + DateTime selectedDate = DateTime.now(); + + Future _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 { + 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; + } + + footer() { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + color: MyColors.gradiantEndColor, + margin: EdgeInsets.only(bottom: 20, top: 20), + padding: EdgeInsets.only(left: 50, right: 50), + child: TextButton( + style: TextButton.styleFrom( + primary: MyColors.white, + onSurface: MyColors.white, + backgroundColor: MyColors.gradiantEndColor, + ), + onPressed: () { + submitUpdateForm(); + }, + child: Text( + LocaleKeys.next.tr(), + style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600), + ), + )), + ], + ); + } + + void submitUpdateForm() async { + try { + List> values1 = getBasicDetDffStructureList!.map((e) { + String? dateVal =''; + String? vatcherVal =''; + int? numberVal; + if(e!.fORMATTYPE =='N'){ + dateVal= null; + vatcherVal= null; + numberVal = e!.getContactDetailsList!.nUMBERVALUE; + } else if(e.fORMATTYPE =='X'){ + dateVal= e!.getContactDetailsList!.dATEVALUE.toString(); + vatcherVal= null; + numberVal = null; + }else{ + dateVal= null; + vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString(); + numberVal = null; + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); + }).toList(); + List> values2 = getContactDffStructureList!.map((e) { + //String tempVar = e!.getContactDetailsList!.vARCHAR2VALUE ?? ""; + String? dateVal =''; + String? vatcherVal =''; + int? numberVal; + if(e!.fORMATTYPE =='N'){ + dateVal= null; + vatcherVal= null; + numberVal= e!.getContactDetailsList!.nUMBERVALUE; + } else if(e.fORMATTYPE =='X'){ + dateVal= e!.getContactDetailsList!.dATEVALUE.toString(); + vatcherVal= null; + numberVal= null; + }else{ + dateVal= null; + numberVal= null; + vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString(); + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); + }).toList(); + List> values3 = getContactColsStructureList!.map((e) { + // String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? ""; + String? dateVal =''; + String? vatcherVal =''; + int? numberVal; + if(e!.dATATYPE =='VARCHAR2'){ + dateVal= null; + numberVal= null; + vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString(); + } else if(e.dATATYPE =='DATE'){ + dateVal= e!.getContactDetailsList!.dATEVALUE.toString(); + vatcherVal= null; + numberVal= null; + }else if(e.dATATYPE =='NUMBER'){ + dateVal= null; + vatcherVal= null; + numberVal= e!.getContactDetailsList!.nUMBERVALUE; + }else{ + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); + }).toList(); + List> valuesFinal = [...values1, ...values2,...values3]; + Utils.showLoading(context); + if(args['actionType']== "ADD") { + var relationID = null; + submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], relationID, valuesFinal); + }else if(args['actionType']== "UPDATE"){ + submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], args['relationID'], valuesFinal); + } + var transactionId = submitContactTransactionList!.pTRANSACTIONID; + var itemKey = submitContactTransactionList!.pITEMKEY; + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); + setState(() {} + ); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } } diff --git a/lib/ui/profile/family_members.dart b/lib/ui/profile/family_members.dart index 9f0157a..d0e04f3 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -116,7 +116,7 @@ class _FamilyMembersState extends State { child: InkWell( onTap: () { relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); - showUpdateAlertDialog(context, relationId!.toInt(), 2); + showUpdateAlertDialog(context, relationId!.toInt(), 2, "UPDATE"); }, child: RichText( text: TextSpan( @@ -202,14 +202,14 @@ class _FamilyMembersState extends State { ], ), child: DefaultButton("Add New Family Member", () async { - Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":1}); + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":1, "actionType":"ADD"}); // context.setLocale(const Locale("en", "US")); // to change Loacle // Profile(); }).insideContainer, ); } - showUpdateAlertDialog(BuildContext context, int relationId, int flag) { + showUpdateAlertDialog(BuildContext context, int relationId, int flag, String actionType) { Widget cancelButton = TextButton( child: Text( LocaleKeys.cancel.tr(), @@ -223,7 +223,7 @@ class _FamilyMembersState extends State { LocaleKeys.ok.tr(), ), onPressed: () { - Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":flag}, ); + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":flag, "actionType": "UPDATE"}, ); // continueDynamicForms(); }, );