diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 3424088..ecedbdf 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -325,8 +325,11 @@ "completeProfile": "الملف الشخصي الكامل", "personalInformation": "معلومات شخصية", "basicDetails": "تفاصيل أساسية", + "address": "تبوك", "contactDetails": "بيانات التواصل", - "familyDetails": "تفاصيل عائلية" + "familyDetails": "تفاصيل عائلية", + "effectiveDate": "تاريخ النفاذ", + "country": "دولة" }, "clicked": { "zero": "You clicked {} times!", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index a3468e3..32a5e43 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -325,8 +325,11 @@ "completeProfile": "Complete Profile", "personalInformation": "Personal Information", "basicDetails": "Basic Details", + "address": "Address", "contactDetails": "Contact Details", - "familyDetails": "Family Members" + "familyDetails": "Family Members", + "effectiveDate": "Effective Date", + "country": "Country" }, "clicked": { "zero": "You clicked {} times!", diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index cb6266e..b332499 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -10,10 +10,17 @@ import 'package:mohem_flutter_app/models/get_employee_address_model.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; +import 'package:mohem_flutter_app/models/profile/get_countries_list_model.dart'; +import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart'; +import 'package:mohem_flutter_app/models/profile/start_address_approval_process_model.dart'; +import 'package:mohem_flutter_app/models/profile/submit_address_transaction.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; import 'package:mohem_flutter_app/models/profile/get_contact_clos_structure_list.dart'; import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; -import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; +import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_model.dart'; +import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; +import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart'; +import 'package:mohem_flutter_app/models/start_phone_approval_process_model.dart'; import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart'; import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart'; @@ -91,7 +98,7 @@ class ProfileApiClient { Future getDffStructure(String pFunctionName, String uRL, String requestType) async { String url = ApiConsts.erpRest + uRL; - Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName, "P_REQUEST_TYPE": requestType}; + Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_REQUEST_TYPE": pFunctionName, "P_COUNTRY_CODE": "SA"}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); @@ -139,24 +146,30 @@ class ProfileApiClient { }, url, postParams); } - Future submetConatctTransaction(String pFunctionName,String actionType, int contactRelationId, String date,) async { + Future submetConatctTransaction( + String pFunctionName, + String actionType, + int contactRelationId, + String date, + ) async { String url = "${ApiConsts.erpRest}SUBMIT_CONTACT_TRANSACTION"; Map postParams = { - "P_MENU_TYPE":"E", - "P_SELECTED_RESP_ID":-999, - "P_FUNCTION_NAME":pFunctionName, - "EITTransactionTBL": - [{ - "TRANSACTION_NUMBER":1, - "NAME":"DATE_END", - "VARCHAR2_VALUE":null, - "NUMBER_VALUE":null, - "DATE_VALUE":date, - }], - "P_CONTACT_RELATIONSHIP_ID":contactRelationId, - "P_ACTION":actionType, - "PayrollCodeStr":"CS", - "LegislationCodeStr":"SA", + "P_MENU_TYPE": "E", + "P_SELECTED_RESP_ID": -999, + "P_FUNCTION_NAME": pFunctionName, + "EITTransactionTBL": [ + { + "TRANSACTION_NUMBER": 1, + "NAME": "DATE_END", + "VARCHAR2_VALUE": null, + "NUMBER_VALUE": null, + "DATE_VALUE": date, + } + ], + "P_CONTACT_RELATIONSHIP_ID": contactRelationId, + "P_ACTION": actionType, + "PayrollCodeStr": "CS", + "LegislationCodeStr": "SA", }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { @@ -165,7 +178,7 @@ class ProfileApiClient { }, url, postParams); } - Future getApproves(String action, String comments,int transactionId, String itemKey) async { + Future getApproves(String action, String comments, int transactionId, String itemKey) async { String url = "${ApiConsts.erpRest}GET_APPROVERS_LIST"; Map postParams = { "P_AME_TRANSACTION_TYPE": "SSHRMS", @@ -178,7 +191,7 @@ class ProfileApiClient { postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - // return responseData.getApprovesList; + // return responseData.getApprovesList; return (responseData.getApprovesList?.length ?? 0) > 0 ? responseData.getApprovesList!.first : null; }, url, postParams); } @@ -201,7 +214,7 @@ class ProfileApiClient { }, url, postParams); } - Future startPhoneApprovalProcess(String action, String comments, String itemKey, int transactionId) async { + Future startPhoneApprovalProcess(String action, String comments, String itemKey, int transactionId) async { String url = "${ApiConsts.erpRest}START_PHONES_APPROVAL_PROCESS"; Map postParams = { "P_SELECTED_RESP_ID": -999, @@ -214,18 +227,106 @@ class ProfileApiClient { postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - return responseData.startEitApprovalProcess; + return responseData.startPhonesApprovalProcessList; + }, url, postParams); + } + + Future startAddressApprovalProcess(String action, String comments, String itemKey, int transactionId) async { + String url = "${ApiConsts.erpRest}START_ADDRESS_APPROVAL_PROCESS"; + Map postParams = { + "P_SELECTED_RESP_ID": -999, + "P_MENU_TYPE": "E", + "P_ACTION_MODE": action, + "P_COMMENTS": comments, + "P_ITEM_KEY": itemKey, + "P_TRANSACTION_ID": transactionId, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.startAddressApprovalProcessList; + }, url, postParams); + } + + Future submitBasicDetailsTransaction(String pDescFlexContextCode, String pFunctionName, List> list, int correctOrNew) async { + String url = "${ApiConsts.erpRest}SUBMIT_BASIC_DET_TRANSACTION"; + Map postParams = { + "P_SELECTED_RESP_ID": -999, + "P_MENU_TYPE": "E", + "P_FUNCTION_NAME": pFunctionName, + "P_ACTION_TYPE": correctOrNew == 1 ? 'CORRECT' : 'CHANGE', + //"EITTransactionTBL": list, + // "EITTransactionTBLModel": list, + }; + postParams.addAll(AppState().postParamsJson); + print("postParams:$postParams"); + postParams["EITTransactionTBL"] = list; + postParams["EITTransactionTBLModel"] = list; + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + return responseData.submitBasicDetTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); + }, url, postParams); + } + + Future startBasicDetailsApprovalProcess(String action, String comments, String itemKey, int transactionId) async { + String url = "${ApiConsts.erpRest}START_BASIC_DET_APPR_PROCESS"; + Map postParams = { + "P_SELECTED_RESP_ID": -999, + "P_MENU_TYPE": "E", + "P_ACTION_MODE": action, + "P_COMMENTS": comments, + "P_ITEM_KEY": itemKey, + "P_TRANSACTION_ID": transactionId, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.startAddressApprovalProcessList; + }, url, postParams); + } + + Future submitAddressTransaction( + String pDescFlexContextCode, String pFunctionName, List> list, int correctOrNew, String countryCode, String effectiveDate) async { + String url = "${ApiConsts.erpRest}SUBMIT_ADDRESS_TRANSACTION"; + Map postParams = { + "P_SELECTED_RESP_ID": -999, + "P_MENU_TYPE": "E", + "P_COUNTRY_CODE": countryCode, //"SA", + "P_DESC_FLEX_CONTEXT_CODE": "SA", + "P_FUNCTION_NAME": pFunctionName, + "P_ACTION": correctOrNew == 1 ? 'CORRECT' : 'NEW', + "P_EFFECTIVE_DATE": effectiveDate, + + //"EITTransactionTBL": list, + // "EITTransactionTBLModel": list, + }; + postParams.addAll(AppState().postParamsJson); + print("postParams:$postParams"); + postParams["EITTransactionTBL"] = list; + // postParams["EITTransactionTBLModel"] = list; + return await ApiClient().postJsonForObject((json) { + GenericResponseModel responseData = GenericResponseModel.fromJson(json); + return responseData.submitAddressTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); + }, url, postParams); + } + + Future> getCountriesList() async { + String url = "${ApiConsts.erpRest}GET_COUNTRIES"; + Map postParams = { + "P_MENU_TYPE": "E", + "P_SELECTED_RESP_ID": -999, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.getCountriesList ?? []; }, url, postParams); } // add & update family member Future> getBasicDetDffStructure() async { String url = "${ApiConsts.erpRest}GET_BASIC_DET_DFF_STRUCTURE"; - Map postParams = { - "P_FUNCTION_NAME": "HR_PERINFO_SS", - "P_MENU_TYPE": "E", - "P_REQUEST_TYPE": "CONTACT", - "P_SELECTED_RESP_ID": -999}; + Map postParams = {"P_FUNCTION_NAME": "HR_PERINFO_SS", "P_MENU_TYPE": "E", "P_REQUEST_TYPE": "CONTACT", "P_SELECTED_RESP_ID": -999}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); @@ -237,7 +338,7 @@ class ProfileApiClient { Future> getContactColsStructureList(String actionType) async { String url = "${ApiConsts.erpRest}GET_CONTACT_COLS_STRUCTURE"; Map postParams = { - "P_ACTION":actionType, + "P_ACTION": actionType, "P_FUNCTION_NAME": "HR_PERINFO_SS", }; postParams.addAll(AppState().postParamsJson); @@ -247,13 +348,13 @@ class ProfileApiClient { }, url, postParams); } - // update family member + // update family member Future> getContactDetailsList(int contactRelationId) async { String url = "${ApiConsts.erpRest}GET_CONTACT_DETAILS"; Map postParams = { "P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": -999, - "P_CONTACT_RELATIONSHIP_ID":contactRelationId, + "P_CONTACT_RELATIONSHIP_ID": contactRelationId, }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { @@ -278,20 +379,20 @@ class ProfileApiClient { }, url, postParams); } - Future submetConatctTransactionAddAndUpdate(String actionType, int relationId ,List> list) async { + 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); + 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/config/routes.dart b/lib/config/routes.dart index 235de7b..9285671 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -18,13 +18,13 @@ import 'package:mohem_flutter_app/ui/payslip/monthly_pay_slip_screen.dart'; import 'package:mohem_flutter_app/ui/profile/add_update_family_member.dart'; import 'package:mohem_flutter_app/ui/profile/basic_details.dart'; import 'package:mohem_flutter_app/ui/profile/contact_details.dart'; -import 'package:mohem_flutter_app/ui/profile/delete_family_member.dart'; -import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart'; +import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart'; +import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart'; import 'package:mohem_flutter_app/ui/profile/family_members.dart'; import 'package:mohem_flutter_app/ui/profile/personal_info.dart'; import 'package:mohem_flutter_app/ui/screens/announcements/announcement_details.dart'; import 'package:mohem_flutter_app/ui/screens/announcements/announcements.dart'; - +import 'package:mohem_flutter_app/ui/profile/delete_family_member.dart'; // import 'package:mohem_flutter_app/ui/my_attendance/work_from_home_screen.dart'; import 'package:mohem_flutter_app/ui/screens/eit/add_eit.dart'; import 'package:mohem_flutter_app/ui/screens/mowadhafhi/mowadhafhi_home.dart'; @@ -69,7 +69,7 @@ class AppRoutes { //profile static const String addDynamicInputProfile = 'addDynamicInputProfile'; - + static const String addDynamicAddressScreen = 'addDynamicAddressProfile'; //Attendance static const String attendance = "/attendance"; static const String monthlyAttendance = "/monthlyAttendance"; @@ -146,6 +146,8 @@ class AppRoutes { dynamicScreen: (context) => DynamicListViewScreen(), addDynamicInput: (context) => DynamicInputScreen(), addDynamicInputProfile: (context) => DynamicInputScreenProfile(), + addDynamicAddressScreen: (context) => DynamicInputScreenAddress(), + deleteFamilyMember: (context) => DeleteFamilyMember(ModalRoute.of(context)!.settings.arguments as int), requestSubmitScreen: (context) => RequestSubmitScreen(), addUpdateFamilyMember: (context) => AddUpdateFamilyMember(), diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 9df924e..2fa8d35 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -338,8 +338,11 @@ class CodegenLoader extends AssetLoader{ "completeProfile": "الملف الشخصي الكامل", "personalInformation": "معلومات شخصية", "basicDetails": "تفاصيل أساسية", + "address": "تبوك", "contactDetails": "بيانات التواصل", - "familyDetails": "تفاصيل عائلية" + "familyDetails": "تفاصيل عائلية", + "effectiveDate": "تاريخ النفاذ", + "country": "دولة" }, "clicked": { "zero": "You clicked {} times!", @@ -683,8 +686,11 @@ static const Map en_US = { "completeProfile": "Complete Profile", "personalInformation": "Personal Information", "basicDetails": "Basic Details", + "address": "Address", "contactDetails": "Contact Details", - "familyDetails": "Family Members" + "familyDetails": "Family Members", + "effectiveDate": "Effective Date", + "country": "Country" }, "clicked": { "zero": "You clicked {} times!", diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index f9975b0..eac063d 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -324,8 +324,11 @@ abstract class LocaleKeys { static const profile_completeProfile = 'profile.completeProfile'; static const profile_personalInformation = 'profile.personalInformation'; static const profile_basicDetails = 'profile.basicDetails'; + static const profile_address = 'profile.address'; static const profile_contactDetails = 'profile.contactDetails'; static const profile_familyDetails = 'profile.familyDetails'; + static const profile_effectiveDate = 'profile.effectiveDate'; + static const profile_country = 'profile.country'; static const profile = 'profile'; static const clicked = 'clicked'; static const gender_with_arg = 'gender.with_arg'; diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 5d93f16..782fb7c 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -54,11 +54,17 @@ import 'package:mohem_flutter_app/models/pending_transactions/get_req_functions. import 'package:mohem_flutter_app/models/privilege_list_model.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; +import 'package:mohem_flutter_app/models/profile/get_address_dff_structure_list.dart'; +import 'package:mohem_flutter_app/models/profile/get_countries_list_model.dart'; +import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart'; +import 'package:mohem_flutter_app/models/profile/start_address_approval_process_model.dart'; +import 'package:mohem_flutter_app/models/profile/submit_address_transaction.dart'; import 'package:mohem_flutter_app/models/profile/get_contact_clos_structure_list.dart'; import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; -import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; +import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_model.dart'; import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart'; +import 'package:mohem_flutter_app/models/start_phone_approval_process_model.dart'; import 'package:mohem_flutter_app/models/submit_eit_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/subordinates_on_leaves_model.dart'; import 'package:mohem_flutter_app/models/vacation_rule/get_item_type_notifications_list_model.dart'; @@ -117,7 +123,7 @@ class GenericResponseModel { String? companyImageDescription; String? companyImageURL; String? companyMainCompany; - String? countryList; + List? countryList; String? createVacationRuleList; String? deleteAttachmentList; String? deleteVacationRuleList; @@ -131,7 +137,7 @@ class GenericResponseModel { List? getAbsenceTransactionList; List? getAccrualBalancesList; List? getActionHistoryList; - List? getAddressDffStructureList; + List? getAddressDffStructureList; List? getAddressNotificationBodyList; List? getApprovesList; List? getAttachementList; @@ -151,7 +157,7 @@ class GenericResponseModel { List? getContactDetailsList; List? getContactDffStructureList; GetContactNotificationBodyList? getContactNotificationBodyList; - List? getCountriesList; + List? getCountriesList; List? getDayHoursTypeDetailsList; List? getDeductionsList; GetDefaultValueList? getDefaultValueList; @@ -295,17 +301,17 @@ class GenericResponseModel { String? sFHGetPoNotificationBodyList; String? sFHGetPrNotificationBodyList; String? startAbsenceApprovalProccess; - String? startAddressApprovalProcessList; + StartAddressApprovalProcess? startAddressApprovalProcessList; String? startBasicDetApprProcessList; String? startCeiApprovalProcess; String? startContactApprovalProcessList; StartEitApprovalProcess? startEitApprovalProcess; String? startHrApprovalProcessList; - String? startPhonesApprovalProcessList; + StartPhoneApprovalProcess? startPhonesApprovalProcessList; String? startSitApprovalProcess; String? startTermApprovalProcessList; - String? submitAddressTransactionList; - String? submitBasicDetTransactionList; + SubmitAddressTransaction? submitAddressTransactionList; + SubmitBasicDetailsTransactionList? submitBasicDetTransactionList; String? submitCEITransactionList; String? submitCcpTransactionList; SubmitContactTransactionList? submitContactTransactionList; @@ -649,7 +655,13 @@ class GenericResponseModel { companyImageDescription = json['CompanyImageDescription']; companyImageURL = json['CompanyImageURL']; companyMainCompany = json['CompanyMainCompany']; - countryList = json['CountryList']; + + if (json['CountryList'] != null) { + countryList = []; + json['CountryList'].forEach((v) { + countryList!.add(new GetCountriesListModel.fromJson(v)); + }); + } createVacationRuleList = json['CreateVacationRuleList']; deleteAttachmentList = json['DeleteAttachmentList']; deleteVacationRuleList = json['DeleteVacationRuleList']; @@ -677,7 +689,12 @@ class GenericResponseModel { }); } - getAddressDffStructureList = json['GetAddressDffStructureList']; + if (json['GetAddressDffStructureList'] != null) { + getAddressDffStructureList = []; + json['GetAddressDffStructureList'].forEach((v) { + getAddressDffStructureList!.add(new GetAddressDffStructureList.fromJson(v)); + }); + } getAddressNotificationBodyList = json['GetAddressNotificationBodyList']; if (json['GetApprovesList'] != null) { @@ -742,7 +759,14 @@ class GenericResponseModel { }); } getContactNotificationBodyList = json["GetContactNotificationBodyList"] == null ? null : GetContactNotificationBodyList.fromJson(json["GetContactNotificationBodyList"]); - getCountriesList = json['GetCountriesList']; + + if (json['GetCountriesList'] != null) { + getCountriesList = []; + json['GetCountriesList'].forEach((v) { + getCountriesList!.add(new GetCountriesListModel.fromJson(v)); + }); + } + if (json['GetDayHoursTypeDetailsList'] != null) { getDayHoursTypeDetailsList = []; json['GetDayHoursTypeDetailsList'].forEach((v) { @@ -1146,18 +1170,21 @@ class GenericResponseModel { sFHGetPoNotificationBodyList = json['SFH_GetPoNotificationBodyList']; sFHGetPrNotificationBodyList = json['SFH_GetPrNotificationBodyList']; startAbsenceApprovalProccess = json['StartAbsenceApprovalProccess']; - startAddressApprovalProcessList = json['StartAddressApprovalProcessList']; + startAddressApprovalProcessList = json['StartAddressApprovalProcessList'] != null ? new StartAddressApprovalProcess.fromJson(json['StartAddressApprovalProcessList']) : null; + startBasicDetApprProcessList = json['StartBasicDetApprProcessList']; startCeiApprovalProcess = json['StartCeiApprovalProcess']; startContactApprovalProcessList = json['StartContactApprovalProcessList']; startEitApprovalProcess = json['StartEitApprovalProcess'] != null ? new StartEitApprovalProcess.fromJson(json['StartEitApprovalProcess']) : null; startHrApprovalProcessList = json['StartHrApprovalProcessList']; - startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList']; + + startPhonesApprovalProcessList = json['StartPhonesApprovalProcessList'] != null ? new StartPhoneApprovalProcess.fromJson(json['startPhonesApprovalProcessList']) : null; startSitApprovalProcess = json['StartSitApprovalProcess']; startTermApprovalProcessList = json['StartTermApprovalProcessList']; - submitAddressTransactionList = json['SubmitAddressTransactionList']; - submitBasicDetTransactionList = json['SubmitBasicDetTransactionList']; + + submitAddressTransactionList = json['SubmitAddressTransactionList'] != null ? new SubmitAddressTransaction.fromJson(json['SubmitAddressTransactionList']) : null; + submitBasicDetTransactionList = json['SubmitBasicDetTransactionList'] != null ? new SubmitBasicDetailsTransactionList.fromJson(json['SubmitBasicDetTransactionList']) : null; submitCEITransactionList = json['SubmitCEITransactionList']; submitCcpTransactionList = json['SubmitCcpTransactionList']; submitContactTransactionList = json['SubmitContactTransactionList'] != null ? new SubmitContactTransactionList.fromJson(json['SubmitContactTransactionList']) : null; @@ -1264,7 +1291,9 @@ class GenericResponseModel { data['CompanyImageDescription'] = this.companyImageDescription; data['CompanyImageURL'] = this.companyImageURL; data['CompanyMainCompany'] = this.companyMainCompany; - data['CountryList'] = this.countryList; + if (this.countryList != null) { + data['CountryList'] = this.countryList!.map((v) => v.toJson()).toList(); + } data['CreateVacationRuleList'] = this.createVacationRuleList; data['DeleteAttachmentList'] = this.deleteAttachmentList; data['DeleteVacationRuleList'] = this.deleteVacationRuleList; @@ -1564,8 +1593,14 @@ class GenericResponseModel { data['StartPhonesApprovalProcessList'] = this.startPhonesApprovalProcessList; data['StartSitApprovalProcess'] = this.startSitApprovalProcess; data['StartTermApprovalProcessList'] = this.startTermApprovalProcessList; - data['SubmitAddressTransactionList'] = this.submitAddressTransactionList; - data['SubmitBasicDetTransactionList'] = this.submitBasicDetTransactionList; + + if (this.submitAddressTransactionList != null) { + data['SubmitAddressTransactionList'] = this.submitAddressTransactionList!.toJson(); + } + if (this.submitBasicDetTransactionList != null) { + data['SubmitBasicDetTransactionList'] = this.submitBasicDetTransactionList!.toJson(); + } + data['SubmitCEITransactionList'] = this.submitCEITransactionList; data['SubmitCcpTransactionList'] = this.submitCcpTransactionList; data['SubmitContactTransactionList'] = this.submitContactTransactionList; diff --git a/lib/models/profile/get_address_dff_structure_list.dart b/lib/models/profile/get_address_dff_structure_list.dart new file mode 100644 index 0000000..50d9b97 --- /dev/null +++ b/lib/models/profile/get_address_dff_structure_list.dart @@ -0,0 +1,189 @@ +import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/get_employee_address_model.dart'; + +class GetAddressDffStructureList { + String? aLPHANUMERICALLOWEDFLAG; + String? aPPLICATIONCOLUMNNAME; + String? cHILDSEGMENTSVS; + Null? cHILDSEGMENTSVSSplited; + String? dEFAULTTYPE; + String? dEFAULTVALUE; + String? dESCFLEXCONTEXTCODE; + String? dESCFLEXCONTEXTNAME; + String? dESCFLEXNAME; + String? dISPLAYFLAG; + String? eNABLEDFLAG; + ESERVICESDV? eSERVICESDV; + List? eSERVICESVS; + String? fLEXVALUESETNAME; + String? fORMATTYPE; + String? fORMATTYPEDSP; + bool? isEmptyOption; + String? lONGLISTFLAG; + int? mAXIMUMSIZE; + String? mAXIMUMVALUE; + String? mINIMUMVALUE; + String? mOBILEENABLED; + String? nUMBERPRECISION; + String? nUMERICMODEENABLEDFLAG; + String? pARENTSEGMENTSDV; + List? pARENTSEGMENTSDVSplited; + String? pARENTSEGMENTSVS; + List? pARENTSEGMENTSVSSplitedVS; + String? rEADONLY; + String? rEQUIREDFLAG; + String? sEGMENTNAME; + String? sEGMENTPROMPT; + int? sEGMENTSEQNUM; + String? uPPERCASEONLYFLAG; + String? uSEDFLAG; + String? vALIDATIONTYPE; + String? vALIDATIONTYPEDSP; + GetEmployeeAddressList? getEmployeeAddressList; + GetAddressDffStructureList( + {this.aLPHANUMERICALLOWEDFLAG, + this.aPPLICATIONCOLUMNNAME, + this.cHILDSEGMENTSVS, + this.cHILDSEGMENTSVSSplited, + this.dEFAULTTYPE, + this.dEFAULTVALUE, + this.dESCFLEXCONTEXTCODE, + this.dESCFLEXCONTEXTNAME, + this.dESCFLEXNAME, + this.dISPLAYFLAG, + this.eNABLEDFLAG, + this.eSERVICESDV, + this.eSERVICESVS, + this.fLEXVALUESETNAME, + this.fORMATTYPE, + this.fORMATTYPEDSP, + this.isEmptyOption, + this.lONGLISTFLAG, + this.mAXIMUMSIZE, + this.mAXIMUMVALUE, + this.mINIMUMVALUE, + this.mOBILEENABLED, + this.nUMBERPRECISION, + this.nUMERICMODEENABLEDFLAG, + this.pARENTSEGMENTSDV, + this.pARENTSEGMENTSDVSplited, + this.pARENTSEGMENTSVS, + this.pARENTSEGMENTSVSSplitedVS, + this.rEADONLY, + this.rEQUIREDFLAG, + this.sEGMENTNAME, + this.sEGMENTPROMPT, + this.sEGMENTSEQNUM, + this.uPPERCASEONLYFLAG, + this.uSEDFLAG, + this.vALIDATIONTYPE, + this.vALIDATIONTYPEDSP, + this.getEmployeeAddressList}); + + GetAddressDffStructureList.fromJson(Map json) { + aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; + aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; + cHILDSEGMENTSVS = json['CHILD_SEGMENTS_VS']; + cHILDSEGMENTSVSSplited = json['CHILD_SEGMENTS_VS_Splited']; + dEFAULTTYPE = json['DEFAULT_TYPE']; + dEFAULTVALUE = json['DEFAULT_VALUE']; + dESCFLEXCONTEXTCODE = json['DESC_FLEX_CONTEXT_CODE']; + dESCFLEXCONTEXTNAME = json['DESC_FLEX_CONTEXT_NAME']; + dESCFLEXNAME = json['DESC_FLEX_NAME']; + dISPLAYFLAG = json['DISPLAY_FLAG']; + eNABLEDFLAG = json['ENABLED_FLAG']; + eSERVICESDV = json['E_SERVICES_DV'] != null ? new ESERVICESDV.fromJson(json['E_SERVICES_DV']) : null; + if (json['E_SERVICES_VS'] != null) { + eSERVICESVS = []; + 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']; + isEmptyOption = json['IsEmptyOption']; + lONGLISTFLAG = json['LONGLIST_FLAG']; + mAXIMUMSIZE = json['MAXIMUM_SIZE']; + mAXIMUMVALUE = json['MAXIMUM_VALUE']; + mINIMUMVALUE = json['MINIMUM_VALUE']; + mOBILEENABLED = json['MOBILE_ENABLED']; + nUMBERPRECISION = json['NUMBER_PRECISION']; + nUMERICMODEENABLEDFLAG = json['NUMERIC_MODE_ENABLED_FLAG']; + pARENTSEGMENTSDV = json['PARENT_SEGMENTS_DV']; + if (json['PARENT_SEGMENTS_DV_Splited'] != null) { + pARENTSEGMENTSDVSplited = []; + json['PARENT_SEGMENTS_DV_Splited'].forEach((v) { + pARENTSEGMENTSDVSplited!.add(v); + }); + } + pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS']; + if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) { + pARENTSEGMENTSVSSplitedVS = []; + json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) { + pARENTSEGMENTSVSSplitedVS!.add(v); + }); + } + rEADONLY = json['READ_ONLY']; + rEQUIREDFLAG = json['REQUIRED_FLAG']; + sEGMENTNAME = json['SEGMENT_NAME']; + sEGMENTPROMPT = json['SEGMENT_PROMPT']; + sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM']; + uPPERCASEONLYFLAG = json['UPPERCASE_ONLY_FLAG']; + uSEDFLAG = json['USED_FLAG']; + vALIDATIONTYPE = json['VALIDATION_TYPE']; + vALIDATIONTYPEDSP = json['VALIDATION_TYPE_DSP']; + getEmployeeAddressList = json['GetEmployeeAddressList'] != null ? new GetEmployeeAddressList.fromJson(json['GetEmployeeAddressList']) : GetEmployeeAddressList(); + } + + Map toJson() { + final Map data = new Map(); + data['ALPHANUMERIC_ALLOWED_FLAG'] = this.aLPHANUMERICALLOWEDFLAG; + data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME; + data['CHILD_SEGMENTS_VS'] = this.cHILDSEGMENTSVS; + data['CHILD_SEGMENTS_VS_Splited'] = this.cHILDSEGMENTSVSSplited; + data['DEFAULT_TYPE'] = this.dEFAULTTYPE; + data['DEFAULT_VALUE'] = this.dEFAULTVALUE; + data['DESC_FLEX_CONTEXT_CODE'] = this.dESCFLEXCONTEXTCODE; + data['DESC_FLEX_CONTEXT_NAME'] = this.dESCFLEXCONTEXTNAME; + data['DESC_FLEX_NAME'] = this.dESCFLEXNAME; + data['DISPLAY_FLAG'] = this.dISPLAYFLAG; + data['ENABLED_FLAG'] = this.eNABLEDFLAG; + if (this.eSERVICESDV != null) { + data['E_SERVICES_DV'] = this.eSERVICESDV!.toJson(); + } + if (this.eSERVICESVS != null) { + data['E_SERVICES_VS'] = this.eSERVICESVS!.map((v) => v.toJson()).toList(); + } + data['FLEX_VALUE_SET_NAME'] = this.fLEXVALUESETNAME; + data['FORMAT_TYPE'] = this.fORMATTYPE; + data['FORMAT_TYPE_DSP'] = this.fORMATTYPEDSP; + data['IsEmptyOption'] = this.isEmptyOption; + data['LONGLIST_FLAG'] = this.lONGLISTFLAG; + data['MAXIMUM_SIZE'] = this.mAXIMUMSIZE; + data['MAXIMUM_VALUE'] = this.mAXIMUMVALUE; + data['MINIMUM_VALUE'] = this.mINIMUMVALUE; + data['MOBILE_ENABLED'] = this.mOBILEENABLED; + data['NUMBER_PRECISION'] = this.nUMBERPRECISION; + data['NUMERIC_MODE_ENABLED_FLAG'] = this.nUMERICMODEENABLEDFLAG; + data['PARENT_SEGMENTS_DV'] = this.pARENTSEGMENTSDV; + if (this.pARENTSEGMENTSDVSplited != null) { + data['PARENT_SEGMENTS_DV_Splited'] = this.pARENTSEGMENTSDVSplited!.map((v) => v).toList(); + } + data['PARENT_SEGMENTS_VS'] = this.pARENTSEGMENTSVS; + if (this.pARENTSEGMENTSVSSplitedVS != null) { + data['PARENT_SEGMENTS_VS_SplitedVS'] = this.pARENTSEGMENTSVSSplitedVS!.map((v) => v).toList(); + } + data['READ_ONLY'] = this.rEADONLY; + data['REQUIRED_FLAG'] = this.rEQUIREDFLAG; + data['SEGMENT_NAME'] = this.sEGMENTNAME; + data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT; + data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM; + data['UPPERCASE_ONLY_FLAG'] = this.uPPERCASEONLYFLAG; + data['USED_FLAG'] = this.uSEDFLAG; + data['VALIDATION_TYPE'] = this.vALIDATIONTYPE; + data['VALIDATION_TYPE_DSP'] = this.vALIDATIONTYPEDSP; + data['GetEmployeeAddressList'] != null ? this.getEmployeeAddressList!.toJson() : GetEmployeeAddressList(); + return data; + } +} diff --git a/lib/models/profile/get_countries_list_model.dart b/lib/models/profile/get_countries_list_model.dart new file mode 100644 index 0000000..dc9e9c7 --- /dev/null +++ b/lib/models/profile/get_countries_list_model.dart @@ -0,0 +1,18 @@ +class GetCountriesListModel { + String? cOUNTRYCODE; + String? cOUNTRYNAME; + + GetCountriesListModel({this.cOUNTRYCODE, this.cOUNTRYNAME}); + + GetCountriesListModel.fromJson(Map json) { + cOUNTRYCODE = json['COUNTRY_CODE']; + cOUNTRYNAME = json['COUNTRY_NAME']; + } + + Map toJson() { + final Map data = new Map(); + data['COUNTRY_CODE'] = this.cOUNTRYCODE; + data['COUNTRY_NAME'] = this.cOUNTRYNAME; + return data; + } +} diff --git a/lib/models/profile/phone_number_types_modek.dart b/lib/models/profile/phone_number_types_model.dart similarity index 100% rename from lib/models/profile/phone_number_types_modek.dart rename to lib/models/profile/phone_number_types_model.dart diff --git a/lib/models/profile/start_address_approval_process_model.dart b/lib/models/profile/start_address_approval_process_model.dart new file mode 100644 index 0000000..717298d --- /dev/null +++ b/lib/models/profile/start_address_approval_process_model.dart @@ -0,0 +1,18 @@ +class StartAddressApprovalProcess { + String? pRETURNMSG; + String? pRETURNSTATUS; + + StartAddressApprovalProcess({this.pRETURNMSG, this.pRETURNSTATUS}); + + StartAddressApprovalProcess.fromJson(Map json) { + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + } + + Map toJson() { + final Map data = new Map(); + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + return data; + } +} diff --git a/lib/models/profile/submit_address_transaction.dart b/lib/models/profile/submit_address_transaction.dart new file mode 100644 index 0000000..193cb68 --- /dev/null +++ b/lib/models/profile/submit_address_transaction.dart @@ -0,0 +1,24 @@ +class SubmitAddressTransaction { + String? pITEMKEY; + String? pRETURNMSG; + String? pRETURNSTATUS; + int? pTRANSACTIONID; + + SubmitAddressTransaction({this.pITEMKEY, this.pRETURNMSG, this.pRETURNSTATUS, this.pTRANSACTIONID}); + + SubmitAddressTransaction.fromJson(Map json) { + pITEMKEY = json['P_ITEM_KEY']; + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + pTRANSACTIONID = json['P_TRANSACTION_ID']; + } + + Map toJson() { + final Map data = new Map(); + data['P_ITEM_KEY'] = this.pITEMKEY; + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + data['P_TRANSACTION_ID'] = this.pTRANSACTIONID; + return data; + } +} diff --git a/lib/models/profile/submit_basic_details_transaction_model.dart b/lib/models/profile/submit_basic_details_transaction_model.dart new file mode 100644 index 0000000..db6ea7a --- /dev/null +++ b/lib/models/profile/submit_basic_details_transaction_model.dart @@ -0,0 +1,24 @@ +class SubmitBasicDetailsTransactionList { + String? pITEMKEY; + String? pRETURNMSG; + String? pRETURNSTATUS; + int? pTRANSACTIONID; + + SubmitBasicDetailsTransactionList({this.pITEMKEY, this.pRETURNMSG, this.pRETURNSTATUS, this.pTRANSACTIONID}); + + SubmitBasicDetailsTransactionList.fromJson(Map json) { + pITEMKEY = json['P_ITEM_KEY']; + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + pTRANSACTIONID = json['P_TRANSACTION_ID']; + } + + Map toJson() { + final Map data = new Map(); + data['P_ITEM_KEY'] = this.pITEMKEY; + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + data['P_TRANSACTION_ID'] = this.pTRANSACTIONID; + return data; + } +} diff --git a/lib/models/profile_menu.model.dart b/lib/models/profile_menu.model.dart index c1b77b7..65a9069 100644 --- a/lib/models/profile_menu.model.dart +++ b/lib/models/profile_menu.model.dart @@ -1,5 +1,6 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; class ProfileMenu { final String name; @@ -8,5 +9,6 @@ class ProfileMenu { final String dynamicUrl; final String functionName; final String requestID; - ProfileMenu({this.name = '', this.icon = '', this.route = '', this.dynamicUrl = '', this.functionName = '', this.requestID = ''}); + final GetMenuEntriesList menuEntries; + ProfileMenu({this.name = '', this.icon = '', this.route = '', this.dynamicUrl = '', this.functionName = '', this.requestID = '', required this.menuEntries}); } diff --git a/lib/models/start_phone_approval_process_model.dart b/lib/models/start_phone_approval_process_model.dart new file mode 100644 index 0000000..2ce3a15 --- /dev/null +++ b/lib/models/start_phone_approval_process_model.dart @@ -0,0 +1,18 @@ +class StartPhoneApprovalProcess { + String? pRETURNMSG; + String? pRETURNSTATUS; + + StartPhoneApprovalProcess({this.pRETURNMSG, this.pRETURNSTATUS}); + + StartPhoneApprovalProcess.fromJson(Map json) { + pRETURNMSG = json['P_RETURN_MSG']; + pRETURNSTATUS = json['P_RETURN_STATUS']; + } + + Map toJson() { + final Map data = new Map(); + data['P_RETURN_MSG'] = this.pRETURNMSG; + data['P_RETURN_STATUS'] = this.pRETURNSTATUS; + return data; + } +} diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 4a72756..63874c7 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -92,13 +92,27 @@ class _RequestSubmitScreenState extends State { params!.pItemId, params!.transactionId, ); - } else if(params!.approvalFlag == 'family_member') { + } else if (params!.approvalFlag == 'address') { + await ProfileApiClient().startAddressApprovalProcess( + "SUBMIT", + comments.text, + params!.pItemId, + params!.transactionId, + ); + } else if (params!.approvalFlag == 'family_member') { await ProfileApiClient().getApproves( LocaleKeys.submit.tr(), comments.text, params!.transactionId!.toInt(), params!.pItemId.toString(), ); + } else if (params!.approvalFlag == 'basicDetails') { + await ProfileApiClient().startBasicDetailsApprovalProcess( + "SUBMIT", + comments.text, + params!.pItemId, + params!.transactionId, + ); } else { await MyAttendanceApiClient().startEitApprovalProcess( LocaleKeys.submit.tr(), diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 777f00d..9a0bd66 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -36,7 +36,7 @@ class _AddUpdateFamilyMemberState extends State { List getContactDetailsList = []; SubmitContactTransactionList? submitContactTransactionList; dynamic args; - String? date="MM/DD/YYYY"; + String? date = "MM/DD/YYYY"; // String actionType = "UPDATE"; GetApprovesList? getApprovesList; @@ -47,40 +47,36 @@ class _AddUpdateFamilyMemberState extends State { super.initState(); } - void callAddAndUpdateFamilyMember() async { try { Utils.showLoading(context); getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure(); 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']); + 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); - }); + 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); - }); -} + getContactDffStructureList?.forEach((element) { + element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME); + }); + } Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -89,13 +85,11 @@ else if(args['actionType']== "UPDATE") { } } - @override Widget build(BuildContext context) { if (args == null) { args = ModalRoute.of(context)!.settings.arguments; callAddAndUpdateFamilyMember(); - } return Scaffold( appBar: AppBarWidget( @@ -125,7 +119,7 @@ else if(args['actionType']== "UPDATE") { }, separatorBuilder: (cxt, index) => 0.height, itemCount: getBasicDetDffStructureList!.length), - ListView.separated( + ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, itemBuilder: (BuildContext cxt, int parentIndex) { @@ -134,9 +128,9 @@ else if(args['actionType']== "UPDATE") { separatorBuilder: (cxt, index) => 0.height, itemCount: getContactDffStructureList!.length), ]).expanded, - SizedBox( - height: 50, - ), + SizedBox( + height: 50, + ), ], ) : args['flag'] == 2 @@ -194,14 +188,13 @@ else if(args['actionType']== "UPDATE") { 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), - ], + 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(); + model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString(); setState(() {}); }); } else { @@ -213,7 +206,7 @@ else if(args['actionType']== "UPDATE") { }, ).paddingOnly(bottom: 12); } - }else if (model.dATATYPE == "DATE") { + } else if (model.dATATYPE == "DATE") { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", @@ -245,12 +238,12 @@ else if(args['actionType']== "UPDATE") { 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), - ], + 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(); + model.getContactDetailsList!.sEGMENTVALUEDSP = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); setState(() {}); }); @@ -263,7 +256,7 @@ else if(args['actionType']== "UPDATE") { }, ).paddingOnly(bottom: 12); } - }else if (model.fORMATTYPE == "X") { + } else if (model.fORMATTYPE == "X") { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", @@ -294,13 +287,13 @@ else if(args['actionType']== "UPDATE") { 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), - ], + 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(); + model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); setState(() {}); }); } else { @@ -312,7 +305,7 @@ else if(args['actionType']== "UPDATE") { }, ).paddingOnly(bottom: 12); } - }else if (model.fORMATTYPE == "X") { + } else if (model.fORMATTYPE == "X") { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", @@ -353,7 +346,7 @@ else if(args['actionType']== "UPDATE") { ); } else { final DateTime? picked = - await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); + await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); if (picked != null && picked != selectedDate) { time = picked; } @@ -391,85 +384,83 @@ else if(args['actionType']== "UPDATE") { } 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); + 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/basic_details.dart b/lib/ui/profile/basic_details.dart index 7b98b33..eae5c3d 100644 --- a/lib/ui/profile/basic_details.dart +++ b/lib/ui/profile/basic_details.dart @@ -1,15 +1,20 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.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/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; -import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart'; +import 'package:mohem_flutter_app/models/member_information_list_model.dart'; +import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:provider/provider.dart'; class BasicDetails extends StatefulWidget { const BasicDetails({Key? key}) : super(key: key); @@ -26,12 +31,17 @@ class _BasicDetailsState extends State { String? civilIdentityNumber = ""; String? emailAddress = ""; String? employeeNo = ""; - + int correctOrNew = 1; List getEmployeeBasicDetailsList = []; - + late MemberInformationListModel memberInformationList; + GetMenuEntriesList menuEntries = GetMenuEntriesList(); @override void initState() { super.initState(); + memberInformationList = AppState().memberInformationList!; + List menuData = Provider.of(context, listen: false).getMenuEntriesList!; + + menuEntries = menuData.where((e) => e.requestType == 'BASIC_DETAILS').toList()[0]; getEmployeeBasicDetails(); basicDetails(); } @@ -127,14 +137,18 @@ class _BasicDetailsState extends State { BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3), ], ), - child: DefaultButton(LocaleKeys.update.tr(), () async { - showAlertDialog(context); - }).insideContainer, + child: DefaultButton( + LocaleKeys.update.tr(), + menuEntries.updateButton == 'Y' + ? () async { + showAlertDialog(context); + } + : null) + .insideContainer, ); } void showAlertDialog(BuildContext context) { - dynamic changeOrNew = 1; Widget cancelButton = TextButton( child: Text(LocaleKeys.cancel.tr()), onPressed: () { @@ -168,10 +182,10 @@ class _BasicDetailsState extends State { title: Text(LocaleKeys.correctCurrentDatails.tr()), leading: Radio( value: 1, - groupValue: changeOrNew, + groupValue: correctOrNew, onChanged: (value) { setState(() { - changeOrNew = int.parse(value.toString()); + correctOrNew = int.parse(value.toString()); }); }, activeColor: Colors.green, @@ -181,10 +195,10 @@ class _BasicDetailsState extends State { title: Text(LocaleKeys.enterNewInfo.tr()), leading: Radio( value: 2, - groupValue: changeOrNew, + groupValue: correctOrNew, onChanged: (value) { setState(() { - changeOrNew = int.parse(value.toString()); + correctOrNew = int.parse(value.toString()); }); }, activeColor: Colors.green, @@ -212,6 +226,6 @@ class _BasicDetailsState extends State { void continueDynamicForms() { Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile, arguments: DynamicProfileParams(LocaleKeys.profile_basicDetails.tr(), 'HR_PERINFO_SS', - uRL: 'GET_BASIC_DET_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeBasicDetailsList: getEmployeeBasicDetailsList)); + uRL: 'GET_BASIC_DET_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeBasicDetailsList: getEmployeeBasicDetailsList, correctOrNew: correctOrNew)); } } diff --git a/lib/ui/profile/contact_details.dart b/lib/ui/profile/contact_details.dart index 4eb96c7..034292d 100644 --- a/lib/ui/profile/contact_details.dart +++ b/lib/ui/profile/contact_details.dart @@ -3,14 +3,20 @@ import 'package:flutter/material.dart'; 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/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/get_employee_address_model.dart'; +import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; +import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; +import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart'; import 'package:mohem_flutter_app/ui/profile/phone_numbers.dart'; -import 'package:mohem_flutter_app/ui/profile/profile.dart'; +import 'package:mohem_flutter_app/ui/screens/profile/profile_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:provider/provider.dart'; class ContactDetails extends StatefulWidget { const ContactDetails({Key? key}) : super(key: key); @@ -26,14 +32,20 @@ class _ContactDetailsState extends State { String? civilIdentityNumber = ""; String? emailAddress = ""; String? employeeNo = ""; - + int? correctOrNew = 1; List getEmployeePhonesList = []; List getEmployeeAddressList = []; + List getEmployeeBasicDetailsList = []; + GetMenuEntriesList menuEntriesPhone = GetMenuEntriesList(); + GetMenuEntriesList menuEntriesAddress = GetMenuEntriesList(); @override void initState() { super.initState(); + List menuData = Provider.of(context, listen: false).getMenuEntriesList!; + menuEntriesPhone = menuData.where((GetMenuEntriesList e) => e.requestType == 'PHONE_NUMBERS').toList()[0]; + menuEntriesAddress = menuData.where((GetMenuEntriesList e) => e.requestType == 'ADDRESS').toList()[0]; getEmployeePhones(); setState(() {}); @@ -71,7 +83,7 @@ class _ContactDetailsState extends State { title: LocaleKeys.profile_contactDetails.tr(), ), backgroundColor: MyColors.backgroundColor, - bottomSheet: footer(), + // bottomSheet: footer(), body: SingleChildScrollView( child: Column(children: [ Container( @@ -100,15 +112,17 @@ class _ContactDetailsState extends State { Row( mainAxisAlignment: MainAxisAlignment.end, children: [ - IconButton( - icon: Icon( - Icons.edit_location_alt_outlined, - size: 20, - ), - onPressed: () { - updatePhone(); - }, - ) + menuEntriesPhone.updateButton == 'Y' + ? IconButton( + icon: Icon( + Icons.edit_location_alt_outlined, + size: 20, + ), + onPressed: () { + updatePhone(); + }, + ) + : Container() ], ), Column( @@ -145,13 +159,17 @@ class _ContactDetailsState extends State { Row( mainAxisAlignment: MainAxisAlignment.end, children: [ - IconButton( - icon: Icon( - Icons.edit_location_alt_outlined, - size: 20, - ), - onPressed: () {}, - ) + menuEntriesAddress.updateButton == 'Y' + ? IconButton( + icon: Icon( + Icons.edit_location_alt_outlined, + size: 20, + ), + onPressed: () { + addUpdateAddress(); + }, + ) + : Container() ], ), Column( @@ -180,7 +198,7 @@ class _ContactDetailsState extends State { ), child: DefaultButton(LocaleKeys.update.tr(), () async { // context.setLocale(const Locale("en", "US")); // to change Loacle - Profile(); + ProfileScreen(); }).insideContainer, ); } @@ -191,4 +209,85 @@ class _ContactDetailsState extends State { MaterialPageRoute(builder: (context) => PhoneNumbers(getEmployeePhonesList: this.getEmployeePhonesList)), ); } + + void addUpdateAddress() { + Widget cancelButton = TextButton( + child: Text("Cancel"), + onPressed: () { + Navigator.pop(context); + }, + ); + Widget continueButton = TextButton( + child: Text("Next"), + onPressed: () { + continueDynamicForms(); + }, + ); + StatefulBuilder alert = StatefulBuilder(builder: (context, setState) { + return AlertDialog( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0))), + title: Text("Confirm"), + content: Builder(builder: (context) { + // Get available height and width of the build area of this widget. Make a choice depending on the size. + var height = MediaQuery.of(context).size.height * .5; + return Container( + height: height, + child: Column(children: [ + Text( + "Select the type of change you want to make.", + style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), + ), + Divider(), + Column( + children: [ + ListTile( + title: Text("Correct or amend this address"), + leading: Radio( + value: 1, + groupValue: correctOrNew, + onChanged: (value) { + setState(() { + correctOrNew = int.parse(value.toString()); + }); + }, + activeColor: Colors.green, + ), + ), + ListTile( + title: Text("Enter a new address if you have moved"), + leading: Radio( + value: 2, + groupValue: correctOrNew, + onChanged: (value) { + setState(() { + correctOrNew = int.parse(value.toString()); + }); + }, + activeColor: Colors.green, + ), + ), + ], + ) + ])); + }), + actions: [ + cancelButton, + continueButton, + ], + ); + }); + + showDialog( + context: context, + builder: (BuildContext context) { + return alert; + }, + ); + } + + void continueDynamicForms() { + Navigator.pushNamed(context, AppRoutes.addDynamicAddressScreen, + arguments: DynamicProfileParams(LocaleKeys.profile_address.tr(), 'HR_PERINFO_SS', + uRL: 'GET_ADDRESS_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeAddressList: getEmployeeAddressList, correctOrNew: correctOrNew!)); + } } diff --git a/lib/ui/profile/delete_familyMember.dart b/lib/ui/profile/delete_familyMember.dart deleted file mode 100644 index a988881..0000000 --- a/lib/ui/profile/delete_familyMember.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mohem_flutter_app/classes/colors.dart'; -import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; - -class DeleteFamilyMember extends StatefulWidget { - const DeleteFamilyMember({Key? key}) : super(key: key); - - @override - _DeleteFamilyMemberState createState() => _DeleteFamilyMemberState(); -} - -class _DeleteFamilyMemberState extends State { - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBarWidget( - context, - title: "Dependents And Beneficiaries", - ), - backgroundColor: MyColors.backgroundColor, - bottomSheet: footer(), - body: Column( - children: [], - )); - } - - Widget footer() { - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - color: MyColors.gradiantEndColor, - // margin: EdgeInsets.only(left: 50,right: 20), - padding: EdgeInsets.only(left: 50, right: 50), - child: TextButton( - style: TextButton.styleFrom( - primary: MyColors.white, - onSurface: MyColors.white, - backgroundColor: MyColors.gradiantEndColor, - ), - onPressed: () {}, - child: Text( - 'Next', - style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600), - ), - )), - ], - ); - } -} diff --git a/lib/ui/profile/delete_family_member.dart b/lib/ui/profile/delete_family_member.dart index a699fc9..58ec825 100644 --- a/lib/ui/profile/delete_family_member.dart +++ b/lib/ui/profile/delete_family_member.dart @@ -26,9 +26,9 @@ class _DeleteFamilyMemberState extends State { String pFunctionName = "HR_PERINFO_SS"; String actionType = "DELETE"; // int? contactRelationId; - String? date="MM/DD/YYYY"; + String? date = "MM/DD/YYYY"; String? datePar; - // String? itemKey; + // String? itemKey; SubmitContactTransactionList? submitContactTransactionList; GetApprovesList? getApprovesList; @@ -44,11 +44,12 @@ class _DeleteFamilyMemberState extends State { try { Utils.showLoading(context); submitContactTransactionList = await ProfileApiClient().submetConatctTransaction(pFunctionName.toString(), actionType.toString(), widget.relationId!.toInt(), datePar.toString()); - var transactionId = submitContactTransactionList!.pTRANSACTIONID; + var transactionId = submitContactTransactionList!.pTRANSACTIONID; var itemKey = submitContactTransactionList!.pITEMKEY; Utils.hideLoading(context); // getApprovesList = await ProfileApiClient().getApproves(transactionId!.toInt(), itemKey.toString() ); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen,arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); setState(() {}); } catch (ex) { @@ -74,9 +75,9 @@ class _DeleteFamilyMemberState extends State { isEnable: false, onTap: () async { DateTime dateValue = await _selectDate(context); - // DateTime date1 = DateTime(dateValue.year, dateValue.month, dateValue.day); - date = DateFormat('yyyy/MM/dd').format(dateValue); - datePar = DateFormat('yyyy/MM/dd hh:mm:ss').format(dateValue); + // DateTime date1 = DateTime(dateValue.year, dateValue.month, dateValue.day); + date = DateFormat('yyyy/MM/dd').format(dateValue); + datePar = DateFormat('yyyy/MM/dd hh:mm:ss').format(dateValue); setState(() {}); // if (date !=null) { // print(datePar); @@ -96,7 +97,7 @@ class _DeleteFamilyMemberState extends State { children: [ Container( color: MyColors.gradiantEndColor, - margin: EdgeInsets.only(bottom: 20, top: 20), + margin: EdgeInsets.only(bottom: 20, top: 20), padding: EdgeInsets.only(left: 50, right: 50), child: TextButton( style: TextButton.styleFrom( @@ -106,7 +107,6 @@ class _DeleteFamilyMemberState extends State { ), onPressed: () { deleteFamilyMember(datePar); - }, child: Text( LocaleKeys.next.tr(), diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart new file mode 100644 index 0000000..c4dadd2 --- /dev/null +++ b/lib/ui/profile/dynamic_screens/dynamic_input_address_screen.dart @@ -0,0 +1,336 @@ +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/my_attendance_api_client.dart'; +import 'package:mohem_flutter_app/api/profile_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'; +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/get_employee_address_model.dart'; +import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; +import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; +import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart'; +import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; +import 'package:mohem_flutter_app/models/profile/get_address_dff_structure_list.dart'; +import 'package:mohem_flutter_app/models/profile/get_countries_list_model.dart'; +import 'package:mohem_flutter_app/models/profile/submit_address_transaction.dart'; +import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; +import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'package:mohem_flutter_app/widgets/button/default_button.dart'; +import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; + +class DynamicProfileParams { + String title; + String dynamicId; + String uRL; + String requestID; + String colsURL; + int correctOrNew; + List? getEmployeeAddressList; + + DynamicProfileParams(this.title, this.dynamicId, + {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeAddressList = const [], this.correctOrNew = 2}); +} + +class DynamicInputScreenAddress extends StatefulWidget { + DynamicInputScreenAddress({Key? key}) : super(key: key); + + @override + _DynamicInputScreenState createState() { + return _DynamicInputScreenState(); + } +} + +class _DynamicInputScreenState extends State { + GenericResponseModel? genericResponseModel; + List? getAddressDffStructureList; + SubmitAddressTransaction submitPhoneNumbers = SubmitAddressTransaction(); + DynamicProfileParams? dynamicParams; + List countriesList = []; + String dESCFLEXCONTEXTCODE = ""; + String countryCode = 'SA'; + String effectiveDate = ''; + @override + void initState() { + super.initState(); + } + + void getTransactionsStructure() async { + try { + Utils.showLoading(context); + genericResponseModel = await ProfileApiClient().getDffStructure(dynamicParams!.dynamicId, dynamicParams!.uRL, dynamicParams!.requestID); + getAddressDffStructureList = genericResponseModel?.getAddressDffStructureList ?? []; + + if (dynamicParams!.correctOrNew == 1) { + getAddressDffStructureList?.forEach((element) { + dynamicParams!.getEmployeeAddressList!.forEach((userDetail) { + if (userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME) { + element.getEmployeeAddressList = userDetail; + } + }); + }); + } else { + getAddressDffStructureList!.insert(0, GetAddressDffStructureList(fORMATTYPE: 'X', sEGMENTPROMPT: LocaleKeys.profile_effectiveDate.tr())); + countriesList = await ProfileApiClient().getCountriesList(); + List eSerivceList = []; + countriesList.forEach((element) { + eSerivceList.add(ESERVICESVS( + dESCRIPTION: element.cOUNTRYCODE, + vALUECOLUMNNAME: element.cOUNTRYNAME, + )); + }); + getAddressDffStructureList! + .insert(1, GetAddressDffStructureList(fORMATTYPE: 'C', sEGMENTPROMPT: LocaleKeys.profile_country.tr(), eSERVICESVS: eSerivceList, getEmployeeAddressList: GetEmployeeAddressList())); + } + print(getAddressDffStructureList); + // genericResponseModel = await ProfileApiClient().getColStructure(dynamicParams!.dynamicId, 'GET_BASIC_DET_COLS_STRUCTURE', dynamicParams!.requestID); + // getBasicDetColsStructureList = genericResponseModel?.getBasicDetColsStructureList ?? []; + // getBasicDetColsStructureList?.forEach((element) { + // element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); + // }); + Utils.hideLoading(context); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + void calGetValueSetValues(GetAddressDffStructureList structureList) async { + try { + Utils.showLoading(context); + String segmentId = structureList.cHILDSEGMENTSVS!; + List filteredList = getAddressDffStructureList?.where((element) => element.cHILDSEGMENTSVS == segmentId).toList() ?? []; + List> values = filteredList + .map((e) => GetSetValuesRequestModel( + sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) + .toJson()) + .toList(); + ESERVICESVS genericResponseModel = await MyAttendanceApiClient().getValueSetValues(structureList.cHILDSEGMENTSVS!, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values); + + int index = getAddressDffStructureList!.indexWhere((element) => element.sEGMENTNAME == structureList.cHILDSEGMENTSVS); + getAddressDffStructureList![index].eSERVICESVS!.add(genericResponseModel); + // getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; + //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); + Utils.hideLoading(context); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + @override + void dispose() { + super.dispose(); + } + + @override + Widget build(BuildContext context) { + if (dynamicParams == null) { + dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicProfileParams; + getTransactionsStructure(); + } + return Scaffold( + backgroundColor: Colors.white, + appBar: AppBarWidget( + context, + title: dynamicParams!.title, + ), + body: Column( + children: [ + (getAddressDffStructureList == null + ? const SizedBox() + : (getAddressDffStructureList!.isEmpty + ? LocaleKeys.noDataAvailable.tr().toText16().center + : ListView( + physics: const BouncingScrollPhysics(), + padding: const EdgeInsets.all(21), + children: [ + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatType(getAddressDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getAddressDffStructureList!.length), + ], + ))) + .expanded, + // 12.height, + DefaultButton( + LocaleKeys.next.tr(), + (getAddressDffStructureList ?? []).isEmpty ? null : () => {validateTransaction()}, + ).insideContainer, + ], + ), + ); + } + + Widget parseDynamicFormatType(GetAddressDffStructureList model, int index) { + if (model.dISPLAYFLAG != "N") { + if (model.fORMATTYPE == "C") { + if (model.eSERVICESVS?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model?.getEmployeeAddressList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].vALUECOLUMNNAME!), value: i), + ], + onSelected: (int popupIndex) { + model?.getEmployeeAddressList!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME; + model?.getEmployeeAddressList!.vARCHAR2VALUE = model.eSERVICESVS![popupIndex].dESCRIPTION; + setState(() {}); + }); + } + + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getEmployeeAddressList?.sEGMENTVALUEDSP ?? "", + isReadOnly: model.rEADONLY == "Y", + onChange: (text) { + model.getEmployeeAddressList?.sEGMENTVALUEDSP = text; + }, + ).paddingOnly(bottom: 12); + } else if (model.fORMATTYPE == "N") { + if (model.eSERVICESVS?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget((model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), model?.getEmployeeAddressList!.sEGMENTVALUEDSP ?? "", + isEnable: false, isPopup: true, isInputTypeNum: true) + .paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < model.eSERVICESVS!.length; i++) PopupMenuItem(child: Text(model.eSERVICESVS![i].dESCRIPTION!), value: i), + ], + onSelected: (int popupIndex) { + model?.getEmployeeAddressList!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].dESCRIPTION; + model?.getEmployeeAddressList!.vARCHAR2VALUE = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME; + setState(() {}); + }); + } + + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getEmployeeAddressList?.sEGMENTVALUEDSP ?? "", + isReadOnly: model.rEADONLY == "Y", + onChange: (text) { + model.getEmployeeAddressList?.sEGMENTVALUEDSP = text; + }, + ).paddingOnly(bottom: 12); + } else if (model.fORMATTYPE == "X") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.eSERVICESDV?.pIDCOLUMNNAME ?? (getAddressDffStructureList![index].dESCFLEXCONTEXTNAME ?? ""), + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + DateTime date = await _selectDate(context); + DateTime date1 = DateTime(date.year, date.month, date.day); + getAddressDffStructureList![index].dESCFLEXCONTEXTNAME = date.toString(); + ESERVICESDV eservicesdv = ESERVICESDV( + pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1), + pRETURNMSG: "null", + pRETURNSTATUS: getAddressDffStructureList![index].dEFAULTVALUE, + pVALUECOLUMNNAME: DateFormat('yyyy-MM-ddThh:mm:ss.s').format(date)); + getAddressDffStructureList![index].eSERVICESDV = eservicesdv; + setState(() {}); + if (model.cHILDSEGMENTSVSSplited?.isNotEmpty ?? false) { + calGetValueSetValues(model); + } + }, + ).paddingOnly(bottom: 12); + } + + return const SizedBox(); + } else { + return const SizedBox(); + } + } + + void validateTransaction() async { + try { + Utils.showLoading(context); + List> values = getAddressDffStructureList!.map((e) { + String tempVar = ''; + if (e.fORMATTYPE == "X") { + // for date format type, date format is changed + tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? ""; + + if (tempVar.isNotEmpty) { + DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); + tempVar = DateFormat('dd/MMM/yyy').format(date); + if (e.aPPLICATIONCOLUMNNAME == null) { + effectiveDate = tempVar; + } + } + } else if (e.eSERVICESVS?.isNotEmpty ?? false) { + tempVar = e.getEmployeeAddressList!.vARCHAR2VALUE!; + if (e.aPPLICATIONCOLUMNNAME == null) { + countryCode = tempVar; + } + } else { + tempVar = e.getEmployeeAddressList!.sEGMENTVALUEDSP ?? ""; + } + + return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); + }).toList(); + + submitPhoneNumbers = await ProfileApiClient().submitAddressTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, dynamicParams!.correctOrNew, countryCode, effectiveDate); + print(values); + Utils.hideLoading(context); + + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(dynamicParams!.title, submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'address')); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + 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; + } +} diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart similarity index 78% rename from lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart rename to lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart index fa1f50a..a279305 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_basic_details_screen.dart @@ -19,6 +19,7 @@ import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_cols_structions.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; +import 'package:mohem_flutter_app/models/profile/submit_basic_details_transaction_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'; @@ -31,10 +32,11 @@ class DynamicProfileParams { String uRL; String requestID; String colsURL; + int correctOrNew; List? getEmployeeBasicDetailsList; DynamicProfileParams(this.title, this.dynamicId, - {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeBasicDetailsList = const []}); + {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeBasicDetailsList = const [], this.correctOrNew = 2}); } class DynamicInputScreenProfile extends StatefulWidget { @@ -61,18 +63,27 @@ class _DynamicInputScreenState extends State { void getTransactionsStructure() async { try { Utils.showLoading(context); - genericResponseModel = await ProfileApiClient().getDffStructure(dynamicParams!.dynamicId, dynamicParams!.uRL, dynamicParams!.requestID); + genericResponseModel = await ProfileApiClient().getDffStructure("BASIC_DETAILS", dynamicParams!.uRL, dynamicParams!.requestID); getBasicDetDffStructureList = genericResponseModel?.getBasicDetDffStructureList ?? []; - - getBasicDetDffStructureList?.forEach((element) { - element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); - }); - genericResponseModel = await ProfileApiClient().getColStructure(dynamicParams!.dynamicId, 'GET_BASIC_DET_COLS_STRUCTURE', dynamicParams!.requestID); getBasicDetColsStructureList = genericResponseModel?.getBasicDetColsStructureList ?? []; - getBasicDetColsStructureList?.forEach((element) { - element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); - }); + + if (dynamicParams!.correctOrNew == 1) { + getBasicDetDffStructureList?.forEach((element) { + element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); + }); + getBasicDetColsStructureList?.forEach((element) { + element.userBasicDetail = dynamicParams!.getEmployeeBasicDetailsList!.singleWhere((userDetail) => userDetail.aPPLICATIONCOLUMNNAME == element.aPPLICATIONCOLUMNNAME); + }); + } else { + getBasicDetDffStructureList?.forEach((element) { + element.userBasicDetail = new GetEmployeeBasicDetailsList(); + }); + getBasicDetColsStructureList?.forEach((element) { + element.userBasicDetail = GetEmployeeBasicDetailsList(); + }); + } + Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -155,7 +166,7 @@ class _DynamicInputScreenState extends State { // 12.height, DefaultButton( LocaleKeys.next.tr(), - (getBasicDetDffStructureList ?? []).isEmpty ? null : () => {validateTransaction()}, + () => {validateTransaction()}, ).insideContainer, ], ), @@ -173,7 +184,7 @@ class _DynamicInputScreenState extends State { return PopupMenuButton( child: DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - model.userBasicDetail?.sEGMENTVALUEDSP ?? "", + model.userBasicDetail?.aPPLICATIONCOLUMNNAME ?? "", isEnable: false, isPopup: true, ).paddingOnly(bottom: 12), @@ -182,6 +193,7 @@ class _DynamicInputScreenState extends State { ], onSelected: (int popupIndex) { getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.eSERVICESVS![popupIndex].vALUECOLUMNNAME; + getBasicDetDffStructureList![index].userBasicDetail!.aPPLICATIONCOLUMNNAME = model.eSERVICESVS![popupIndex].dESCRIPTION; setState(() {}); }); } @@ -234,21 +246,30 @@ class _DynamicInputScreenState extends State { if (model.dATATYPE == "VARCHAR2") { if (model.objectValuesList?.isNotEmpty ?? false) { return PopupMenuButton( - child: DynamicTextFieldWidget( - (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - model.userBasicDetail?.sEGMENTVALUEDSP ?? "", - isEnable: false, - isPopup: true, - ).paddingOnly(bottom: 12), - itemBuilder: (_) => >[ - for (int i = 0; i < model.objectValuesList!.length; i++) PopupMenuItem(child: Text(model.objectValuesList![i].mEANING!), value: i), - ], - onSelected: (int popupIndex) { + child: DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < model.objectValuesList!.length; i++) PopupMenuItem(child: Text(model.objectValuesList![i].mEANING!), value: i), + ], + onSelected: (int popupIndex) { + if (model.objectValuesList![popupIndex].cODE != '') { ESERVICESDV eservicesdv = - ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![index].dESCRIPTION, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME); - getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].dESCRIPTION; - setState(() {}); - }); + ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![popupIndex].mEANING, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME); + getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].mEANING; + getBasicDetColsStructureList![index].userBasicDetail!.vARCHAR2VALUE = model.objectValuesList![popupIndex].cODE; + } else { + ESERVICESDV eservicesdv = + ESERVICESDV(pIDCOLUMNNAME: model.objectValuesList![popupIndex].dESCRIPTION, pRETURNMSG: "null", pRETURNSTATUS: model.oBJECTNAME, pVALUECOLUMNNAME: model.aPPLICATIONCOLUMNNAME); + getBasicDetColsStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = model.objectValuesList![popupIndex].dESCRIPTION; + getBasicDetColsStructureList![index].userBasicDetail!.vARCHAR2VALUE = model.objectValuesList![popupIndex].mEANING; + } + setState(() {}); + }, + ); } return DynamicTextFieldWidget( @@ -264,13 +285,13 @@ class _DynamicInputScreenState extends State { } else if (model.dATATYPE == "DATE") { return DynamicTextFieldWidget( (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), - model.aPPLICATIONCOLUMNNAME ?? (getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP ?? ""), + (getBasicDetColsStructureList![index].userBasicDetail?.dATEVALUE ?? ""), suffixIconData: Icons.calendar_today, isEnable: false, onTap: () async { DateTime date = await _selectDate(context); DateTime date1 = DateTime(date.year, date.month, date.day); - getBasicDetColsStructureList![index].userBasicDetail?.sEGMENTVALUEDSP = date.toString(); + getBasicDetColsStructureList![index].userBasicDetail?.dATEVALUE = date.toString(); // ESERVICESDV eservicesdv = ESERVICESDV( // pIDCOLUMNNAME: DateFormat('yyyy-MM-dd').format(date1), // pRETURNMSG: "null", @@ -327,8 +348,10 @@ class _DynamicInputScreenState extends State { void validateTransaction() async { try { Utils.showLoading(context); + int numberValue = 0; List> values = getBasicDetDffStructureList!.map((e) { - String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + String tempVar = e.userBasicDetail!.vARCHAR2VALUE ?? ""; + if (e.fORMATTYPE == "X") { // for date format type, date format is changed tempVar = e.eSERVICESDV?.pVALUECOLUMNNAME ?? ""; @@ -342,25 +365,25 @@ class _DynamicInputScreenState extends State { values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_ACTION", nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: "NEW_ROW").toJson()); 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()); + //values.add(ValidateEitTransactionModel(dATEVALUE: null, nAME: "PEI_OBJECT_VERSION_NUMBER", nUMBERVALUE: 0, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: null).toJson()); List> valuesCols = getBasicDetColsStructureList!.map((e) { - String tempVar = e.userBasicDetail!.vARCHAR2VALUE ?? ""; - if (e.dATATYPE == "DATE") { - // for date format type, date format is changed - tempVar = e.userBasicDetail!.dATEVALUE ?? ""; - if (tempVar.isNotEmpty) { - DateTime date = DateFormat('yyyy-MM-dd').parse(tempVar); - tempVar = DateFormat('yyyy/MM/dd HH:mm:ss').format(date); - } + if (e.dATATYPE == 'NUMBER') { + numberValue = e.userBasicDetail!.nUMBERVALUE!; } - return ValidateEitTransactionModel(dATEVALUE: tempVar, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); + return ValidateEitTransactionModel( + dATEVALUE: e.userBasicDetail!.dATEVALUE ?? "", nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberValue, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: e.userBasicDetail!.vARCHAR2VALUE ?? "") + .toJson(); }).toList(); List> transactionValues = new List.from(values)..addAll(valuesCols); print(transactionValues); - //genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); - // SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); + + SubmitBasicDetailsTransactionList submitBasicDetails = + await ProfileApiClient().submitBasicDetailsTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, transactionValues, dynamicParams!.correctOrNew); + print(submitBasicDetails); Utils.hideLoading(context); - // Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams("title", submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); + + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(dynamicParams!.title, submitBasicDetails.pTRANSACTIONID!, submitBasicDetails.pITEMKEY!, 'basicDetails')); } 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 ffb52c2..2dd84ea 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -8,7 +8,7 @@ import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart'; -import 'package:mohem_flutter_app/ui/profile/profile.dart'; +import 'package:mohem_flutter_app/ui/screens/profile/profile_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; @@ -200,7 +200,7 @@ class _FamilyMembersState extends State { )); } - Widget footer() { + Widget footer() { return Container( decoration: BoxDecoration( // borderRadius: BorderRadius.circular(10), @@ -210,9 +210,9 @@ class _FamilyMembersState extends State { ], ), child: DefaultButton(LocaleKeys.addNewFamilyMember.tr(), () async { - Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":1, "actionType":"ADD"}); + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": 1, "actionType": "ADD"}); // context.setLocale(const Locale("en", "US")); // to change Loacle - // Profile(); + ProfileScreen(); }).insideContainer, ); } @@ -231,7 +231,11 @@ class _FamilyMembersState extends State { LocaleKeys.ok.tr(), ), onPressed: () { - Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":flag, "actionType": "UPDATE"}, ); + Navigator.pushNamed( + context, + AppRoutes.addUpdateFamilyMember, + arguments: {"relationID": relationId, "flag": flag, "actionType": "UPDATE"}, + ); }, ); AlertDialog alert = AlertDialog( diff --git a/lib/ui/profile/personal_info.dart b/lib/ui/profile/personal_info.dart index 7a44004..ce35bf1 100644 --- a/lib/ui/profile/personal_info.dart +++ b/lib/ui/profile/personal_info.dart @@ -106,7 +106,10 @@ class _PesonalInfoState extends State { BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3), ], ), - child: DefaultButton(LocaleKeys.update.tr(), () async {}).insideContainer, + child: DefaultButton( + LocaleKeys.update.tr(), + () async {}, + ).insideContainer, ); } } diff --git a/lib/ui/profile/phone_numbers.dart b/lib/ui/profile/phone_numbers.dart index 045d63c..4b27b19 100644 --- a/lib/ui/profile/phone_numbers.dart +++ b/lib/ui/profile/phone_numbers.dart @@ -4,15 +4,12 @@ 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/get_employee_phones_model.dart'; -import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; +import 'package:mohem_flutter_app/models/profile/phone_number_types_model.dart'; import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart'; import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; -import 'package:mohem_flutter_app/ui/profile/profile.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; diff --git a/lib/ui/profile/profile.dart b/lib/ui/profile/profile.dart deleted file mode 100644 index 22d062b..0000000 --- a/lib/ui/profile/profile.dart +++ /dev/null @@ -1,271 +0,0 @@ -import 'package:flutter/material.dart'; -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/extensions/string_extensions.dart'; -import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; -import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; - -class Profile extends StatefulWidget { - const Profile({Key? key}) : super(key: key); - - @override - _ProfileState createState() => _ProfileState(); -} - -// todo '@fatima' use extension methods for widgets,7 dont use hard code strings, make it localize -class _ProfileState extends State { - String? fullName = ""; - String? maritalStatus = ""; - String? birthDate = ""; - String? civilIdentityNumber = ""; - String? emailAddress = ""; - String? employeeNo = ""; - - List getEmployeeBasicDetailsList = []; - - @override - void initState() { - super.initState(); - getEmployeeBasicDetails(); - basicDetails(); - } - - void getEmployeeBasicDetails() async { - try { - Utils.showLoading(context); - getEmployeeBasicDetailsList = await ProfileApiClient().getEmployeeBasicDetails(); - Utils.hideLoading(context); - basicDetails(); - setState(() {}); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } - } - - void basicDetails() { - for (int i = 0; i < getEmployeeBasicDetailsList.length; i++) { - if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'FULL_NAME') { - fullName = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP; - } else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'MARITAL_STATUS') { - maritalStatus = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP; - } else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'DATE_OF_BIRTH') { - birthDate = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP; - } else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'NATIONAL_IDENTIFIER') { - civilIdentityNumber = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP; - } else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'EMAIL_ADDRESS') { - emailAddress = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP; - } else if (getEmployeeBasicDetailsList[i].aPPLICATIONCOLUMNNAME == 'EMPLOYEE_NUMBER') { - employeeNo = getEmployeeBasicDetailsList[i].sEGMENTVALUEDSP; - } - } - } - - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: MyColors.lightGreenColor, - leading: Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - IconButton( - icon: const Icon( - Icons.arrow_back_ios, - color: MyColors.backgroundBlackColor, - ), - onPressed: () => Navigator.pop(context), - ), - ], - ), - ), - backgroundColor: MyColors.lightGreenColor, - body: Stack(children: [ - Align( - alignment: Alignment.topRight, - child: Container( - height: 30, - width: 80, - padding: EdgeInsets.only(left: 10.0, right: 10.0, top: 5, bottom: 5), - decoration: BoxDecoration( - border: Border.all( - color: MyColors.gradiantEndColor, - style: BorderStyle.solid, - ), - color: MyColors.gradiantEndColor, - borderRadius: BorderRadius.circular(100.0)), - child: InkWell( - onTap: () {}, - child: RichText( - text: TextSpan( - children: [ - WidgetSpan( - child: Icon( - Icons.image, - size: 20, - color: Colors.white, - ), - ), - TextSpan( - text: " Edit", - ), - ], - ), - ), - )), - ), - Container( - width: double.infinity, - margin: EdgeInsets.only(top: 48), - height: double.infinity, - decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.only(topLeft: Radius.circular(30.0), topRight: Radius.circular(30.0)), - ), - child: Column( - children: [ - "$fullName".toText20(isBold: true, color: MyColors.blackColor), - "$employeeNo".toText12(isBold: false, color: MyColors.lightGrayColor), - "$emailAddress".toText12(isBold: false, color: MyColors.black), - SizedBox( - height: 5, - ), - Divider( - color: MyColors.lightGreyE6Color, - height: 20, - thickness: 8, - indent: 0, - endIndent: 0, - ), - Container( - padding: EdgeInsets.only(left: 10.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - InkWell( - onTap: () {}, - child: Row( - children: [ - SizedBox( - width: 15, - ), - "Personal Information".toText16(isBold: true, color: MyColors.grey3AColor), - ], - ), - ), - SizedBox( - height: 5, - ), - InkWell( - onTap: () {}, - child: Row( - children: [ - SizedBox( - width: 15, - ), - "Basic Details".toText16(isBold: true, color: MyColors.grey3AColor), - ], - ), - ), - SizedBox( - height: 5, - ), - InkWell( - onTap: () {}, - child: Row( - children: [ - SizedBox( - width: 20, - ), - "Contact Details".toText16(isBold: true, color: MyColors.grey3AColor), - ], - ), - ), - SizedBox( - height: 5, - ), - InkWell( - onTap: () {}, - child: Row( - children: [ - SizedBox( - width: 20, - ), - "Family Members".toText16(isBold: true, color: MyColors.grey3AColor), - ], - ), - ), - SizedBox( - height: 5, - ), - ], - ), - ), - ], - ).paddingOnly(top: 35, bottom: 36), - ), - Align( - alignment: Alignment.topCenter, - child: SizedBox( - child: CircleAvatar( - radius: 40.0, - backgroundColor: Colors.white, - child: CircleAvatar( - child: Align( - alignment: Alignment.bottomRight, - // child: CircleAvatar( - // backgroundColor: Colors.white, - // radius: 12.0, - // child: Icon( - // Icons.camera_alt, - // size: 15.0, - // color: Color(0xFF404040), - // ), - // ), - ), - radius: 38.0, - // url:"", - ), - ), - )), - ]) - // Container( - // margin: const EdgeInsets.only(top:50), - // decoration: const BoxDecoration( - // color: Colors.white, - // borderRadius: BorderRadius.only( - // topLeft: Radius.circular(30.0), - // topRight: Radius.circular(30.0)) - // ), - // // color: MyColors.white, - // child: Stack( - // children: [ - // Container( - // height: 30, - // color: MyColors.lightGreenColor, - // margin: const EdgeInsets.only(bottom: 20,), - // child: Row( - // mainAxisAlignment: MainAxisAlignment.center, - // children: [ - // CircleAvatar( - // backgroundColor: Colors.grey.shade800, - // ), - // ], - // ), - // ), - // ListView( - // scrollDirection: Axis.vertical, - // children: [ - // Column( - // children: [ - // // 20.height, - // ], - // ) - // ], - // ), - // ] - // ), - // ), - ); - } -} diff --git a/lib/ui/screens/profile/widgets/profile_info.dart b/lib/ui/screens/profile/widgets/profile_info.dart index 0bef6e9..029e50a 100644 --- a/lib/ui/screens/profile/widgets/profile_info.dart +++ b/lib/ui/screens/profile/widgets/profile_info.dart @@ -3,31 +3,42 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:mohem_flutter_app/models/profile_menu.model.dart'; +import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart'; import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listview_screen.dart'; +import 'package:provider/provider.dart'; // todo '@sultan' kindly follow structure of code written. use extension methods for widgets, also format code -class ProfileInFo extends StatelessWidget { +class ProfileInFo extends StatefulWidget { ProfileInFo(this.memberInfo); MemberInformationListModel memberInfo; + + @override + State createState() => _ProfileInFoState(); +} + +class _ProfileInFoState extends State { + static List menuData = []; String data = '.'; double sliderValue = 75; List menu = [ - ProfileMenu(name: LocaleKeys.profile_personalInformation.tr(), icon: 'personal-info.svg', route: AppRoutes.personalInfo, dynamicUrl: ''), - ProfileMenu( - name: LocaleKeys.profile_basicDetails.tr(), - icon: 'basic-details.svg', - route: AppRoutes.basicDetails, - ), - ProfileMenu(name: LocaleKeys.profile_contactDetails.tr(), icon: 'contact-details.svg', route: AppRoutes.contactDetails, dynamicUrl: ''), - ProfileMenu(name: LocaleKeys.profile_familyDetails.tr(), icon: 'family-members.svg', route: AppRoutes.familyMembers, dynamicUrl: ''), + ProfileMenu(name: LocaleKeys.profile_personalInformation.tr(), icon: 'personal-info.svg', route: AppRoutes.personalInfo, dynamicUrl: '', menuEntries: getMenuEntries('')), + ProfileMenu(name: LocaleKeys.profile_basicDetails.tr(), icon: 'basic-details.svg', route: AppRoutes.basicDetails, menuEntries: getMenuEntries('BASIC_DETAILS')), + ProfileMenu(name: LocaleKeys.profile_contactDetails.tr(), icon: 'contact-details.svg', route: AppRoutes.contactDetails, dynamicUrl: '', menuEntries: getMenuEntries('ADDRESS')), + ProfileMenu(name: LocaleKeys.profile_familyDetails.tr(), icon: 'family-members.svg', route: AppRoutes.familyMembers, dynamicUrl: '', menuEntries: getMenuEntries('CONTACT')), ]; + @override + void setState(VoidCallback fn) { + super.setState(fn); + } + @override Widget build(BuildContext context) { return Container( @@ -35,11 +46,11 @@ class ProfileInFo extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ /// card header - customLabel(memberInfo.eMPLOYEENAME.toString(), 22, Colors.black, true), + customLabel(widget.memberInfo.eMPLOYEENAME.toString(), 22, Colors.black, true), - customLabel(memberInfo.eMPLOYEENUMBER.toString() + ' | ' + memberInfo.jOBNAME.toString(), 14, Colors.grey, false), + customLabel(widget.memberInfo.eMPLOYEENUMBER.toString() + ' | ' + widget.memberInfo.jOBNAME.toString(), 14, Colors.grey, false), - customLabel(memberInfo.eMPLOYEEEMAILADDRESS.toString(), 13, Colors.black, true), + customLabel(widget.memberInfo.eMPLOYEEEMAILADDRESS.toString(), 13, Colors.black, true), Divider(height: 40, thickness: 8, color: const Color(0xffefefef)), @@ -47,22 +58,17 @@ class ProfileInFo extends StatelessWidget { SizedBox(height: 10), Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceAround, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Column( - children: [customLabel(LocaleKeys.year.tr(), 14, const Color(0xff808080), true), customLabel(memberInfo.sERVICEYEARS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)], - ), - Column( - children: [customLabel(LocaleKeys.month.tr(), 14, const Color(0xff808080), true), customLabel(memberInfo.sERVICEMONTHS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)], - ), - Column( - children: [customLabel(LocaleKeys.day.tr(), 14, const Color(0xff808080), true), customLabel(memberInfo.sERVICEDAYS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)], - ) - ], + child: Row(mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.center, children: [ + Column( + children: [customLabel(LocaleKeys.year.tr(), 14, const Color(0xff808080), true), customLabel(widget.memberInfo.sERVICEYEARS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)], ), - ), + Column( + children: [customLabel(LocaleKeys.month.tr(), 14, const Color(0xff808080), true), customLabel(widget.memberInfo.sERVICEMONTHS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)], + ), + Column( + children: [customLabel(LocaleKeys.day.tr(), 14, const Color(0xff808080), true), customLabel(widget.memberInfo.sERVICEDAYS.toString().padLeft(2, '0'), 22, Color(0xff2BB8A6), true)], + ) + ])), Divider(height: 40, thickness: 8, color: const Color(0xffefefef)), Container( @@ -143,3 +149,12 @@ class ProfileInFo extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [Text(label, style: TextStyle(color: color, fontSize: size, fontWeight: isBold ? FontWeight.bold : FontWeight.normal))])); } + +GetMenuEntriesList getMenuEntries(String type) { + List data = _ProfileInFoState.menuData.where((GetMenuEntriesList test) => test.functionName == type).toList(); + if (data.isNotEmpty) { + return data[0]; + } else { + return GetMenuEntriesList(); + } +}