From 23326a769aa7a61e7eb5e9e02412ba95443d6ee8 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Sun, 19 Jun 2022 15:01:37 +0300 Subject: [PATCH 01/10] PHONE NUMBERS --- lib/api/profile_api_client.dart | 12 ++++++++++ lib/models/generic_response_model.dart | 4 +++- .../profile/submit_phone_transactions.dart | 24 +++++++++++++++++++ lib/ui/profile/phone_numbers.dart | 21 ++++++++++++---- 4 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 lib/models/profile/submit_phone_transactions.dart diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index 3039e67..3dc1980 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; @@ -9,6 +10,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/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; +import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart'; import 'api_client.dart'; class ProfileApiClient { @@ -129,4 +131,14 @@ class ProfileApiClient { return responseData.getObjectValuesList ?? []; }, url, postParams); } + + Future submitPhoneNumbers(List empList) async { + String url = "${ApiConsts.erpRest}SUBMIT_PHONES_TRANSACTION"; + Map postParams = {"P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": -999, "P_FUNCTION_NAME": "HR_PERINFO_SS", "P_MBL_PHONES_TBL": empList}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.submitPhonesTransactionList ?? SubmitPhonesTransactionList(); + }, url, postParams); + } } diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index fa65b1f..a368a92 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -26,6 +26,7 @@ import 'package:mohem_flutter_app/models/notification_get_respond_attributes_lis 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/phone_number_types_modek.dart'; +import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart'; import 'package:mohem_flutter_app/models/subordinates_on_leaves_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart'; @@ -264,7 +265,7 @@ class GenericResponseModel { String? submitContactTransactionList; String? submitEITTransactionList; String? submitHrTransactionList; - String? submitPhonesTransactionList; + SubmitPhonesTransactionList? submitPhonesTransactionList; String? submitSITTransactionList; String? submitTermTransactionList; List? subordinatesOnLeavesList; @@ -950,6 +951,7 @@ class GenericResponseModel { submitEITTransactionList = json['SubmitEITTransactionList']; submitHrTransactionList = json['SubmitHrTransactionList']; submitPhonesTransactionList = json['SubmitPhonesTransactionList']; + submitSITTransactionList = json['SubmitSITTransactionList']; submitTermTransactionList = json['SubmitTermTransactionList']; diff --git a/lib/models/profile/submit_phone_transactions.dart b/lib/models/profile/submit_phone_transactions.dart new file mode 100644 index 0000000..6b7afd1 --- /dev/null +++ b/lib/models/profile/submit_phone_transactions.dart @@ -0,0 +1,24 @@ +class SubmitPhonesTransactionList { + String? pITEMKEY; + String? pRETURNMSG; + String? pRETURNSTATUS; + int? pTRANSACTIONID; + + SubmitPhonesTransactionList({this.pITEMKEY, this.pRETURNMSG, this.pRETURNSTATUS, this.pTRANSACTIONID}); + + SubmitPhonesTransactionList.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/ui/profile/phone_numbers.dart b/lib/ui/profile/phone_numbers.dart index cba17d5..9136c0f 100644 --- a/lib/ui/profile/phone_numbers.dart +++ b/lib/ui/profile/phone_numbers.dart @@ -1,3 +1,5 @@ +import 'dart:convert'; + import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; @@ -11,6 +13,7 @@ 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/models/profile/phone_number_types_modek.dart'; +import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.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'; @@ -27,6 +30,7 @@ class PhoneNumbers extends StatefulWidget { class _PhoneNumbersState extends State { List getPhoneNumberTypesList = []; + SubmitPhonesTransactionList submitPhoneNumbers = SubmitPhonesTransactionList(); @override void initState() { super.initState(); @@ -155,7 +159,6 @@ class _PhoneNumbersState extends State { footer() { return Container( decoration: BoxDecoration( - // borderRadius: BorderRadius.circular(10), color: MyColors.white, boxShadow: [ BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3), @@ -163,16 +166,26 @@ class _PhoneNumbersState extends State { ), child: DefaultButton(LocaleKeys.update.tr(), () async { updatePhone(); - // context.setLocale(const Locale("en", "US")); // to change Loacle - // Profile(); }).insideContainer, ); } - void updatePhone() { + void updatePhone() async { + Utils.showLoading(context); + setUpdateStatus(); + submitPhoneNumbers = await ProfileApiClient().submitPhoneNumbers(widget.getEmployeePhonesList); + setState(() {}); + Utils.hideLoading(context); + print(widget.getEmployeePhonesList); } + void setUpdateStatus() { + widget.getEmployeePhonesList.forEach((element) { + if (element.aCTION == null) element.aCTION = 'UPDATE_ROW'; + }); + } + void addNewRow() { setState(() { widget.getEmployeePhonesList.add(GetEmployeePhonesList(aCTION: 'NEW_ROW')); From ea5178fe207cebf21bc4be29e04671def92a4d89 Mon Sep 17 00:00:00 2001 From: Sultan Khan Date: Tue, 21 Jun 2022 11:34:42 +0300 Subject: [PATCH 02/10] profle dynamic forms --- lib/api/profile_api_client.dart | 30 +++++++++- lib/models/generic_response_model.dart | 2 +- lib/ui/misc/request_submit_screen.dart | 28 +++++++--- .../dynamic_screens/dynamic_input_screen.dart | 2 +- .../my_attendance/my_attendance_screen.dart | 15 ++--- lib/ui/profile/basic_details.dart | 18 +----- lib/ui/profile/contact_details.dart | 52 ++--------------- .../dynamic_input_profile_screen.dart | 56 ++++++++++++++++--- lib/ui/profile/phone_numbers.dart | 14 +++-- lib/ui/screens/profile/profile_screen.dart | 3 + 10 files changed, 126 insertions(+), 94 deletions(-) diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index 676a8ed..5993a59 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -11,6 +11,7 @@ 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/phone_number_types_modek.dart'; import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart'; +import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart'; import 'api_client.dart'; class ProfileApiClient { @@ -135,11 +136,36 @@ class ProfileApiClient { Future submitPhoneNumbers(List empList) async { String url = "${ApiConsts.erpRest}SUBMIT_PHONES_TRANSACTION"; - Map postParams = {"P_MENU_TYPE": "E", "P_SELECTED_RESP_ID": -999, "P_FUNCTION_NAME": "HR_PERINFO_SS", "P_MBL_PHONES_TBL": empList}; + Map postParams = { + "P_MENU_TYPE": "E", + "P_SELECTED_RESP_ID": -999, + "P_FUNCTION_NAME": "HR_PERINFO_SS", + "P_MBL_PHONES_TBL": empList.map((element) { + return element.toJson(); + }).toList() + }; + + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return SubmitPhonesTransactionList.fromJson(responseData.submitPhonesTransactionList ?? {}); + }, url, postParams); + } + + 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, + "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.submitPhonesTransactionList ?? SubmitPhonesTransactionList(); + return responseData.startEitApprovalProcess; }, url, postParams); } } diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 68d8bbb..1b91839 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -277,7 +277,7 @@ class GenericResponseModel { String? submitContactTransactionList; SubmitEITTransactionList? submitEITTransactionList; String? submitHrTransactionList; - SubmitPhonesTransactionList? submitPhonesTransactionList; + Map? submitPhonesTransactionList; String? submitSITTransactionList; String? submitTermTransactionList; List? subordinatesOnLeavesList; diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index a0722da..a4d0052 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -5,6 +5,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:file_picker/file_picker.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/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; @@ -25,8 +26,8 @@ class RequestSubmitScreenParams { String title; int transactionId; String pItemId; - - RequestSubmitScreenParams(this.title, this.transactionId, this.pItemId); + String approvalFlag; + RequestSubmitScreenParams(this.title, this.transactionId, this.pItemId, this.approvalFlag); } class RequestSubmitScreen extends StatefulWidget { @@ -83,12 +84,23 @@ class _RequestSubmitScreenState extends State { }); } await MyAttendanceApiClient().addAttachment(list); - await MyAttendanceApiClient().startEitApprovalProcess( - "SUBMIT", - comments.text, - params!.pItemId, - params!.transactionId, - ); + + if (params!.approvalFlag == 'phone_numbers') { + await ProfileApiClient().startPhoneApprovalProcess( + "SUBMIT", + comments.text, + params!.pItemId, + params!.transactionId, + ); + } else { + await MyAttendanceApiClient().startEitApprovalProcess( + "SUBMIT", + comments.text, + params!.pItemId, + params!.transactionId, + ); + } + Utils.hideLoading(context); Utils.showToast(LocaleKeys.yourRequestHasBeenSubmittedForApprovals.tr(), longDuration: true); Navigator.of(context).popUntil((route) { diff --git a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart index ec129c8..7ab59c9 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -79,7 +79,7 @@ class _DynamicInputScreenState extends State { genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams("title", submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!)); + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams("title", submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); diff --git a/lib/ui/my_attendance/my_attendance_screen.dart b/lib/ui/my_attendance/my_attendance_screen.dart index cb347a1..e1db55c 100644 --- a/lib/ui/my_attendance/my_attendance_screen.dart +++ b/lib/ui/my_attendance/my_attendance_screen.dart @@ -32,13 +32,14 @@ class MyAttendanceScreen extends StatelessWidget { ? LocaleKeys.noDataAvailable.tr().toText16().center : Column( children: [ - itemView( - "assets/images/pdf.svg", - LocaleKeys.missingSwipes.tr(), - ).onPress(() { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS")); - }), - 12.height, + //commenting this because missing wipe coming as duplicate in the screen + // itemView( + // "assets/images/pdf.svg", + // LocaleKeys.missingSwipes.tr(), + // ).onPress(() { + // Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS")); + // }), + // 12.height, ListView.separated( padding: const EdgeInsets.all(21), itemBuilder: (cxt, index) => itemView( diff --git a/lib/ui/profile/basic_details.dart b/lib/ui/profile/basic_details.dart index e74d21d..795563e 100644 --- a/lib/ui/profile/basic_details.dart +++ b/lib/ui/profile/basic_details.dart @@ -74,29 +74,13 @@ class _BasicDetailsState extends State { context, title: LocaleKeys.profile_basicDetails.tr(), ), - // appBar: AppBar( - // backgroundColor: MyColors.white, - // leading: Row( - // mainAxisAlignment: MainAxisAlignment.spaceBetween, - // children: [ - // IconButton( - // icon: const Icon( - // Icons.arrow_back_ios, - // color: MyColors.backgroundBlackColor, - // ), - // onPressed: () => Navigator.pop(context), - // ), - // "Basic Details".toText24(isBold: true, color: MyColors.blackColor), - // ], - // ), - // ), backgroundColor: MyColors.backgroundColor, bottomSheet: footer(), body: Column( children: [ Container( width: double.infinity, - margin: EdgeInsets.only(top: 20, left: 21, right: 21,bottom: 20), + margin: EdgeInsets.only(top: 20, left: 21, right: 21, bottom: 20), padding: EdgeInsets.only(left: 14, right: 14, top: 13, bottom: 5), height: 280, decoration: BoxDecoration( diff --git a/lib/ui/profile/contact_details.dart b/lib/ui/profile/contact_details.dart index d4927cf..9dbc462 100644 --- a/lib/ui/profile/contact_details.dart +++ b/lib/ui/profile/contact_details.dart @@ -84,7 +84,7 @@ class _ContactDetailsState extends State { left: 26, right: 26, ), - padding: EdgeInsets.only(left: 14, right: 14, top: 5, bottom: 20), + padding: EdgeInsets.all(15), ///height: 200, decoration: BoxDecoration( @@ -99,7 +99,7 @@ class _ContactDetailsState extends State { color: Colors.white, borderRadius: BorderRadius.circular(10.0), ), - child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + child: Stack(children: [ Row( mainAxisAlignment: MainAxisAlignment.end, children: [ @@ -122,17 +122,7 @@ class _ContactDetailsState extends State { "${e.pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor), ])) .toList()) - ]) - - // [ - // "${getEmployeePhonesList[0].pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor), - // "${getEmployeePhonesList[0].pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor), - // SizedBox( - // height: 20,), - // "${getEmployeePhonesList[1].pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor), - // "${getEmployeePhonesList[1].pHONENUMBER}".toText16(isBold: true, color: MyColors.blackColor), - // ] - ), + ])), Container( width: double.infinity, margin: EdgeInsets.only( @@ -140,8 +130,8 @@ class _ContactDetailsState extends State { left: 26, right: 26, ), - padding: EdgeInsets.only(left: 14, right: 14, top: 5, bottom: 20), - height: 400, + padding: EdgeInsets.all(15), + // height: 400, decoration: BoxDecoration( boxShadow: [ BoxShadow( @@ -154,7 +144,7 @@ class _ContactDetailsState extends State { color: Colors.white, borderRadius: BorderRadius.circular(10.0), ), - child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + child: Stack(children: [ Row( mainAxisAlignment: MainAxisAlignment.end, children: [ @@ -179,36 +169,6 @@ class _ContactDetailsState extends State { ])) .toList()) ])) - // "${getEmployeeAddressList[0].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - // "${getEmployeeAddressList[0].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - // SizedBox( - // height: 20, - // ), - // "${getEmployeeAddressList[2].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - // "${getEmployeeAddressList[2].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - // SizedBox( - // height: 20, - // ), - // "${getEmployeeAddressList[3].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - // "${getEmployeeAddressList[3].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - // SizedBox( - // height: 20, - // ), - // "${getEmployeeAddressList[4].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - // "${getEmployeeAddressList[4].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - // SizedBox( - // height: 20, - // ), - // "${getEmployeeAddressList[5].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - // "${getEmployeeAddressList[5].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - // SizedBox( - // height: 20, - // ), - // "${getEmployeeAddressList[6].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - // "${getEmployeeAddressList[6].sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - //]), - //), - //], ]))); } diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart index 3e25917..95d80a9 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_profile_screen.dart @@ -1,23 +1,25 @@ 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_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/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'; @@ -31,7 +33,6 @@ class DynamicProfileParams { String colsURL; List? getEmployeeBasicDetailsList; - DynamicProfileParams(this.title, this.dynamicId, {this.uRL = 'GET_EIT_DFF_STRUCTURE', this.requestID = '', this.colsURL = '', this.getEmployeeBasicDetailsList = const []}); } @@ -51,6 +52,7 @@ class _DynamicInputScreenState extends State { List? getBasicDetColsStructureList; DynamicProfileParams? dynamicParams; + String dESCFLEXCONTEXTCODE = ""; @override void initState() { super.initState(); @@ -153,11 +155,7 @@ class _DynamicInputScreenState extends State { // 12.height, DefaultButton( LocaleKeys.next.tr(), - (getBasicDetDffStructureList ?? []).isEmpty - ? null - : () => { - //Navigator.of(context).pushNamed(LOGIN_TYPE) - }, + (getBasicDetDffStructureList ?? []).isEmpty ? null : () => {validateTransaction()}, ).insideContainer, ], ), @@ -194,7 +192,6 @@ class _DynamicInputScreenState extends State { isReadOnly: model.rEADONLY == "Y", onChange: (text) { getBasicDetDffStructureList![index].userBasicDetail!.sEGMENTVALUEDSP = text; - }, ).paddingOnly(bottom: 12); } else if (model.fORMATTYPE == "X") { @@ -326,4 +323,47 @@ class _DynamicInputScreenState extends State { } return time; } + + void validateTransaction() async { + try { + Utils.showLoading(context); + List> values = getBasicDetDffStructureList!.map((e) { + String tempVar = e.eSERVICESDV?.pIDCOLUMNNAME ?? ""; + 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('yyyy/MM/dd HH:mm:ss').format(date); + } + } + return ValidateEitTransactionModel(dATEVALUE: null, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).toJson(); + }).toList(); + + 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()); + 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); + } + } + return ValidateEitTransactionModel(dATEVALUE: tempVar, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: null, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: tempVar.toString()).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); + Utils.hideLoading(context); + // Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams("title", submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } } diff --git a/lib/ui/profile/phone_numbers.dart b/lib/ui/profile/phone_numbers.dart index 9136c0f..14ce3ff 100644 --- a/lib/ui/profile/phone_numbers.dart +++ b/lib/ui/profile/phone_numbers.dart @@ -5,6 +5,7 @@ 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/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; @@ -14,6 +15,7 @@ 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/models/profile/phone_number_types_modek.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'; @@ -174,15 +176,19 @@ class _PhoneNumbersState extends State { Utils.showLoading(context); setUpdateStatus(); submitPhoneNumbers = await ProfileApiClient().submitPhoneNumbers(widget.getEmployeePhonesList); - setState(() {}); - Utils.hideLoading(context); - print(widget.getEmployeePhonesList); + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.profile_contactDetails.tr(), submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'phone_numbers')); } void setUpdateStatus() { widget.getEmployeePhonesList.forEach((element) { - if (element.aCTION == null) element.aCTION = 'UPDATE_ROW'; + if (element.aCTION == null) { + element.aCTION = 'UPDATE_ROW'; + element.dATEFROM = ''; + element.dATETO = ''; + } }); } diff --git a/lib/ui/screens/profile/profile_screen.dart b/lib/ui/screens/profile/profile_screen.dart index 76f8a20..8b015b0 100644 --- a/lib/ui/screens/profile/profile_screen.dart +++ b/lib/ui/screens/profile/profile_screen.dart @@ -27,7 +27,10 @@ class _ProfileScreenState extends State { @override void initState() { super.initState(); + memberInformationList = AppState().memberInformationList!; + + setState(() {}); //getEmployeeBasicDetails(); } From c3945d2583b8945c288d472fb46a990f7de2c6e9 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 21 Jun 2022 11:36:16 +0300 Subject: [PATCH 03/10] family member in progress --- lib/api/profile_api_client.dart | 44 ++++++ lib/config/routes.dart | 4 +- lib/models/generic_response_model.dart | 8 +- ...submit_contact_transaction_list_model.dart | 34 ++++ lib/ui/profile/delete_familyMember.dart | 74 --------- lib/ui/profile/delete_family_member.dart | 148 ++++++++++++++++++ lib/ui/profile/family_members.dart | 6 +- 7 files changed, 238 insertions(+), 80 deletions(-) create mode 100644 lib/models/profile/submit_contact_transaction_list_model.dart delete mode 100644 lib/ui/profile/delete_familyMember.dart create mode 100644 lib/ui/profile/delete_family_member.dart diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index 3768a64..827a625 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -3,12 +3,14 @@ import 'dart:async'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; +import 'package:mohem_flutter_app/models/get_approves_list_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/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/models/profile/phone_number_types_modek.dart'; +import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; import 'api_client.dart'; class ProfileApiClient { @@ -130,4 +132,46 @@ class ProfileApiClient { return responseData.getObjectValuesList ?? []; }, url, postParams); } + + 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", + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.submitContactTransactionList; + }, url, postParams); + } + + Future getApproves(int transactionId) async { + String url = "${ApiConsts.erpRest}GET_APPROVERS_LIST"; + Map postParams = { + "P_AME_TRANSACTION_TYPE": "SSHRMS", + "P_PAGE_LIMIT": 1000, + "P_PAGE_NUM": 1, + "P_TRANSACTION_ID": transactionId, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + // return responseData.getApprovesList; + return (responseData.getApprovesList?.length ?? 0) > 0 ? responseData.getApprovesList!.first : null; + }, url, postParams); + } } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 8abcfdc..3872d51 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -14,7 +14,7 @@ import 'package:mohem_flutter_app/ui/my_attendance/dynamic_screens/dynamic_listv import 'package:mohem_flutter_app/ui/my_attendance/my_attendance_screen.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_familyMember.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/family_members.dart'; import 'package:mohem_flutter_app/ui/profile/personal_info.dart'; @@ -114,7 +114,7 @@ class AppRoutes { dynamicScreen: (context) => DynamicListViewScreen(), addDynamicInput: (context) => DynamicInputScreen(), addDynamicInputProfile: (context) => DynamicInputScreenProfile(), - deleteFamilyMember: (context) => DeleteFamilyMember(), + deleteFamilyMember: (context) => DeleteFamilyMember(ModalRoute.of(context)!.settings.arguments as int), requestSubmitScreen: (context) => RequestSubmitScreen(), }; } diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 952b9e6..f850249 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -40,6 +40,7 @@ import 'package:mohem_flutter_app/models/worklist/hr/get_phones_notification_bod import 'package:mohem_flutter_app/models/worklist/replacement_list_model.dart'; import 'package:mohem_flutter_app/models/validate_eit_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/worklist_response_model.dart'; +import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; import 'basic_member_information_model.dart'; import 'dashboard/get_accrual_balances_list_model.dart'; @@ -273,7 +274,7 @@ class GenericResponseModel { String? submitBasicDetTransactionList; String? submitCEITransactionList; String? submitCcpTransactionList; - String? submitContactTransactionList; + SubmitContactTransactionList? submitContactTransactionList; SubmitEITTransactionList? submitEITTransactionList; String? submitHrTransactionList; String? submitPhonesTransactionList; @@ -974,7 +975,10 @@ class GenericResponseModel { submitBasicDetTransactionList = json['SubmitBasicDetTransactionList']; submitCEITransactionList = json['SubmitCEITransactionList']; submitCcpTransactionList = json['SubmitCcpTransactionList']; - submitContactTransactionList = json['SubmitContactTransactionList']; + submitContactTransactionList = json['SubmitContactTransactionList'] != null + ? new SubmitContactTransactionList.fromJson( + json['SubmitContactTransactionList']) + : null; submitEITTransactionList = json['SubmitEITTransactionList'] != null ? new SubmitEITTransactionList.fromJson(json['SubmitEITTransactionList']) : null; submitHrTransactionList = json['SubmitHrTransactionList']; diff --git a/lib/models/profile/submit_contact_transaction_list_model.dart b/lib/models/profile/submit_contact_transaction_list_model.dart new file mode 100644 index 0000000..3510473 --- /dev/null +++ b/lib/models/profile/submit_contact_transaction_list_model.dart @@ -0,0 +1,34 @@ + +class SubmitContactTransactionList { + String? pITEMKEY; + String? pRETURNMSG; + String? pRETURNSTATUS; + int? pTRANSACTIONID; + + SubmitContactTransactionList( + {this.pITEMKEY, + this.pRETURNMSG, + this.pRETURNSTATUS, + this.pTRANSACTIONID}); + + SubmitContactTransactionList.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; + } +} + +// if (this.submitContactTransactionList != null) { +// data['SubmitContactTransactionList'] = +// this.submitContactTransactionList!.toJson(); +// } \ No newline at end of file diff --git a/lib/ui/profile/delete_familyMember.dart b/lib/ui/profile/delete_familyMember.dart deleted file mode 100644 index 4876ef3..0000000 --- a/lib/ui/profile/delete_familyMember.dart +++ /dev/null @@ -1,74 +0,0 @@ - - -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/classes/colors.dart'; -import 'package:mohem_flutter_app/classes/utils.dart'; -import 'package:mohem_flutter_app/config/routes.dart'; -import 'package:mohem_flutter_app/dialogs/otp_dialog.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_basic_details.model.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/dynamic_screens/dynamic_input_profile_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'; - -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: [ - - ], - ) - - ); - } - 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 new file mode 100644 index 0000000..3aae19b --- /dev/null +++ b/lib/ui/profile/delete_family_member.dart @@ -0,0 +1,148 @@ +import 'package:easy_localization/easy_localization.dart'; +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/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/get_approves_list_model.dart'; +import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; +import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'dart:io'; +import 'package:flutter/cupertino.dart'; +import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; + +class DeleteFamilyMember extends StatefulWidget { + int relationId; + DeleteFamilyMember(@required this.relationId, {Key? key}) : super(key: key); + + @override + _DeleteFamilyMemberState createState() => _DeleteFamilyMemberState(); +} + +class _DeleteFamilyMemberState extends State { + String pFunctionName = "HR_PERINFO_SS"; + String actionType = "DELETE"; + // int? contactRelationId; + String? date="MM/DD/YYYY"; + String? datePar; + + SubmitContactTransactionList? submitContactTransactionList; + GetApprovesList? getApprovesList; + + //int? relationId; + @override + void initState() { + print(widget.relationId); + super.initState(); + } + + void deleteFamilyMember(datePar) async { + try { + Utils.showLoading(context); + submitContactTransactionList = await ProfileApiClient().submetConatctTransaction(pFunctionName.toString(), actionType.toString(), widget.relationId!.toInt(), datePar.toString()); + var transactionId = submitContactTransactionList!.pTRANSACTIONID; + getApprovesList = await ProfileApiClient().getApproves(transactionId!.toInt()); + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), submitContactTransactionList!.pTRANSACTIONID!.toInt(), submitContactTransactionList!.pITEMKEY!)); + Utils.hideLoading(context); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBarWidget( + context, + title: "Dependents And Beneficiaries", + ), + backgroundColor: MyColors.backgroundColor, + bottomSheet: footer(), + body: Column( + children: [ + DynamicTextFieldWidget( + "*End Date", date.toString(), + // suffixIconData: Icons.calendar_today, + 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); + setState(() {}); + if (date !=null) { + print(datePar); + deleteFamilyMember(datePar); + } + }, + ).paddingOnly(bottom: 12) + ], + )); + } + + 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: () { + deleteFamilyMember(datePar); + + }, + child: Text( + LocaleKeys.next.tr(), + style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600), + ), + )), + ], + ); + } + + 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/family_members.dart b/lib/ui/profile/family_members.dart index bcc5b32..cd1dccf 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -151,7 +151,8 @@ class _FamilyMembersState extends State { Container( child: InkWell( onTap: () { - showRemoveAlertDialog(context, getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt()); + relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); + showRemoveAlertDialog(context, relationId!.toInt()); }, child: RichText( text: TextSpan( @@ -262,7 +263,8 @@ class _FamilyMembersState extends State { Widget continueButton = TextButton( child: Text(LocaleKeys.ok.tr(),), onPressed: () { - Navigator.pushNamed(context, AppRoutes.deleteFamilyMember); + // var relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); + Navigator.pushNamed(context, AppRoutes.deleteFamilyMember, arguments: relationId); // continueDynamicForms(); }, ); From a4ca7433a44a1146175d9faa32a7a9619e69ffd6 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Sun, 26 Jun 2022 07:49:58 +0300 Subject: [PATCH 04/10] add and update family member in progress --- lib/api/profile_api_client.dart | 70 +++- lib/config/routes.dart | 3 + lib/models/generic_response_model.dart | 34 +- .../get_contact_dff_structure_list.dart | 255 ++++++++++++++ .../get_contact_clos_structure_list.dart | 88 +++++ .../profile/get_contact_details_list.dart | 54 +++ lib/ui/misc/request_submit_screen.dart | 7 + lib/ui/profile/add_update_family_member.dart | 98 ++++++ lib/ui/profile/delete_family_member.dart | 21 +- lib/ui/profile/family_members.dart | 329 +++++++++--------- 10 files changed, 775 insertions(+), 184 deletions(-) create mode 100644 lib/models/get_contact_dff_structure_list.dart create mode 100644 lib/models/profile/get_contact_clos_structure_list.dart create mode 100644 lib/models/profile/get_contact_details_list.dart create mode 100644 lib/ui/profile/add_update_family_member.dart diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index c631f7c..9ee1e80 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -3,11 +3,16 @@ import 'dart:async'; import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/consts.dart'; import 'package:mohem_flutter_app/models/generic_response_model.dart'; +import 'package:mohem_flutter_app/models/get_approves_list_model.dart'; +import 'package:mohem_flutter_app/models/get_contact_dff_structure_list.dart'; import 'package:mohem_flutter_app/models/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/get_employee_phones_model.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_contact_transaction_list_model.dart'; import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart'; @@ -160,13 +165,15 @@ class ProfileApiClient { }, url, postParams); } - Future getApproves(int transactionId) 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", "P_PAGE_LIMIT": 1000, "P_PAGE_NUM": 1, "P_TRANSACTION_ID": transactionId, + "P_ACTION_MODE": action, + "P_COMMENTS": comments, }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { @@ -210,4 +217,65 @@ class ProfileApiClient { return responseData.startEitApprovalProcess; }, 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}; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.getBasicDetDffStructureList ?? []; + }, url, postParams); + } + + // add & update family member + Future> getContactColsStructureList() async { + String url = "${ApiConsts.erpRest}GET_CONTACT_COLS_STRUCTURE"; + Map postParams = { + "P_ACTION": "ADD", + // "P_ACTION":actionType, + "P_FUNCTION_NAME": "HR_PERINFO_SS", + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.getContactColsStructureList ?? []; + }, url, postParams); + } + + // 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, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.getContactDetailsList ?? []; + }, url, postParams); + } + + // add & update family member + Future> getContactDffStructureList() async { + String url = "${ApiConsts.erpRest}GET_CONTACT_DFF_STRUCTURE"; + Map postParams = { + "P_DESC_FLEX_CONTEXT_CODE": "HMG_ADD_CONTACT_DETAILS", + "P_FUNCTION_NAME": "HR_PERINFO_SS", + "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.getContactDffStructureList ?? []; + }, url, postParams); + } } diff --git a/lib/config/routes.dart b/lib/config/routes.dart index 2f52a11..101bafb 100644 --- a/lib/config/routes.dart +++ b/lib/config/routes.dart @@ -18,6 +18,7 @@ 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/family_members.dart'; import 'package:mohem_flutter_app/ui/profile/personal_info.dart'; +import 'package:mohem_flutter_app/ui/profile/add_update_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'; @@ -77,6 +78,7 @@ class AppRoutes { static const String contactDetails = "/contactDetails"; static const String familyMembers = "/familyMembers"; static const String deleteFamilyMember = "/deleteFamilyMember"; + static const String addUpdateFamilyMember = "/addUpdateFamilyMember"; // Mowadhafhi static const String mowadhafhi = "/mowadhafhi"; @@ -125,6 +127,7 @@ class AppRoutes { addDynamicInputProfile: (context) => DynamicInputScreenProfile(), deleteFamilyMember: (context) => DeleteFamilyMember(ModalRoute.of(context)!.settings.arguments as int), requestSubmitScreen: (context) => RequestSubmitScreen(), + addUpdateFamilyMember: (context) => AddUpdateFamilyMember(), //mowadhafhi mowadhafhi: (context) => MowadhafhiHome(), diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 8f3e8a8..cec969f 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -4,6 +4,7 @@ import 'package:mohem_flutter_app/models/get_absence_collection_notification_bod import 'package:mohem_flutter_app/models/get_action_history_list_model.dart'; import 'package:mohem_flutter_app/models/get_approves_list_model.dart'; import 'package:mohem_flutter_app/models/get_attachement_list_model.dart'; +import 'package:mohem_flutter_app/models/get_contact_dff_structure_list.dart'; import 'package:mohem_flutter_app/models/get_day_hours_type_details_list_model.dart'; import 'package:mohem_flutter_app/models/get_default_value_list_model.dart'; import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; @@ -36,6 +37,8 @@ import 'package:mohem_flutter_app/models/notification_action_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_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_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_phone_transactions.dart'; import 'package:mohem_flutter_app/models/start_eit_approval_process_model.dart'; @@ -133,9 +136,9 @@ class GenericResponseModel { List? getCcpTransactionsList; List? getCcpTransactionsListNew; List? getConcurrentProgramsList; - List? getContactColsStructureList; - List? getContactDetailsList; - List? getContactDffStructureList; + List? getContactColsStructureList; + List? getContactDetailsList; + List? getContactDffStructureList; GetContactNotificationBodyList? getContactNotificationBodyList; List? getCountriesList; List? getDayHoursTypeDetailsList; @@ -704,8 +707,19 @@ class GenericResponseModel { getCcpTransactionsListNew = json['GetCcpTransactionsList_New']; getConcurrentProgramsList = json['GetConcurrentProgramsList']; getContactColsStructureList = json['GetContactColsStructureList']; - getContactDetailsList = json['GetContactDetailsList']; - getContactDffStructureList = json['GetContactDffStructureList']; + if (json['GetContactDetailsList'] != null) { + getContactDetailsList = []; + json['GetContactDetailsList'].forEach((v) { + getContactDetailsList!.add(new GetContactDetailsList.fromJson(v)); + }); + } + if (json['GetContactColsStructureList'] != null) { + getContactColsStructureList = []; + json['GetContactColsStructureList'].forEach((v) { + getContactColsStructureList! + .add(new GetContactColsStructureList.fromJson(v)); + }); + } getContactNotificationBodyList = json["GetContactNotificationBodyList"] == null ? null : GetContactNotificationBodyList.fromJson(json["GetContactNotificationBodyList"]); getCountriesList = json['GetCountriesList']; if (json['GetDayHoursTypeDetailsList'] != null) { @@ -1205,8 +1219,14 @@ class GenericResponseModel { data['GetCcpTransactionsList_New'] = this.getCcpTransactionsListNew; data['GetConcurrentProgramsList'] = this.getConcurrentProgramsList; data['GetContactColsStructureList'] = this.getContactColsStructureList; - data['GetContactDetailsList'] = this.getContactDetailsList; - data['GetContactDffStructureList'] = this.getContactDffStructureList; + if (this.getContactDetailsList != null) { + data['GetContactDetailsList'] = + this.getContactDetailsList!.map((v) => v.toJson()).toList(); + } + if (this.getContactColsStructureList != null) { + data['GetContactColsStructureList'] = + this.getContactColsStructureList!.map((v) => v.toJson()).toList(); + } data['GetContactNotificationBodyList'] = this.getContactNotificationBodyList; data['GetCountriesList'] = this.getCountriesList; if (this.getDayHoursTypeDetailsList != null) { diff --git a/lib/models/get_contact_dff_structure_list.dart b/lib/models/get_contact_dff_structure_list.dart new file mode 100644 index 0000000..9427aaa --- /dev/null +++ b/lib/models/get_contact_dff_structure_list.dart @@ -0,0 +1,255 @@ + + +class GetContactDffStructureList { + String? aLPHANUMERICALLOWEDFLAG; + String? aPPLICATIONCOLUMNNAME; + String? cHILDSEGMENTSVS; + dynamic? 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; + 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; + + GetContactDffStructureList( + {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.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}); + + GetContactDffStructureList.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']; + 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(new Null.fromJson(v)); + // }); + // } + pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS']; + // if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) { + // pARENTSEGMENTSVSSplitedVS = []; + // json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) { + // pARENTSEGMENTSVSSplitedVS!.add(new Null.fromJson(v)); + // }); + // } + rEADONLY = json['READ_ONLY']; + rEQUIREDFLAG = json['REQUIRED_FLAG']; + sEGMENTNAME = json['SEGMENT_NAME']; + 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']; + } + + 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['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.toJson()).toList(); + } + data['PARENT_SEGMENTS_VS'] = this.pARENTSEGMENTSVS; + if (this.pARENTSEGMENTSVSSplitedVS != null) { + data['PARENT_SEGMENTS_VS_SplitedVS'] = + this.pARENTSEGMENTSVSSplitedVS!.map((v) => v.toJson()).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; + return data; + } +} + +// class ESERVICESDV { +// String? pIDCOLUMNNAME; +// String? pRETURNMSG; +// String? pRETURNSTATUS; +// String? pVALUECOLUMNNAME; +// +// ESERVICESDV( +// {this.pIDCOLUMNNAME, +// this.pRETURNMSG, +// this.pRETURNSTATUS, +// this.pVALUECOLUMNNAME}); +// +// ESERVICESDV.fromJson(Map json) { +// pIDCOLUMNNAME = json['P_ID_COLUMN_NAME']; +// pRETURNMSG = json['P_RETURN_MSG']; +// pRETURNSTATUS = json['P_RETURN_STATUS']; +// pVALUECOLUMNNAME = json['P_VALUE_COLUMN_NAME']; +// } +// +// Map toJson() { +// final Map data = new Map(); +// data['P_ID_COLUMN_NAME'] = this.pIDCOLUMNNAME; +// data['P_RETURN_MSG'] = this.pRETURNMSG; +// data['P_RETURN_STATUS'] = this.pRETURNSTATUS; +// data['P_VALUE_COLUMN_NAME'] = this.pVALUECOLUMNNAME; +// return data; +// } +// } +// +// class ESERVICESVS { +// String? dESCRIPTION; +// int? fROMROWNUM; +// String? iDCOLUMNNAME; +// int? nOOFROWS; +// int? rOWNUM; +// int? tOROWNUM; +// String? vALUECOLUMNNAME; +// +// ESERVICESVS( +// {this.dESCRIPTION, +// this.fROMROWNUM, +// this.iDCOLUMNNAME, +// this.nOOFROWS, +// this.rOWNUM, +// this.tOROWNUM, +// this.vALUECOLUMNNAME}); +// +// ESERVICESVS.fromJson(Map json) { +// dESCRIPTION = json['DESCRIPTION']; +// fROMROWNUM = json['FROM_ROW_NUM']; +// iDCOLUMNNAME = json['ID_COLUMN_NAME']; +// nOOFROWS = json['NO_OF_ROWS']; +// rOWNUM = json['ROW_NUM']; +// tOROWNUM = json['TO_ROW_NUM']; +// vALUECOLUMNNAME = json['VALUE_COLUMN_NAME']; +// } +// +// Map toJson() { +// final Map data = new Map(); +// data['DESCRIPTION'] = this.dESCRIPTION; +// data['FROM_ROW_NUM'] = this.fROMROWNUM; +// data['ID_COLUMN_NAME'] = this.iDCOLUMNNAME; +// data['NO_OF_ROWS'] = this.nOOFROWS; +// data['ROW_NUM'] = this.rOWNUM; +// data['TO_ROW_NUM'] = this.tOROWNUM; +// data['VALUE_COLUMN_NAME'] = this.vALUECOLUMNNAME; +// return data; +// } +// } \ No newline at end of file diff --git a/lib/models/profile/get_contact_clos_structure_list.dart b/lib/models/profile/get_contact_clos_structure_list.dart new file mode 100644 index 0000000..63728fc --- /dev/null +++ b/lib/models/profile/get_contact_clos_structure_list.dart @@ -0,0 +1,88 @@ + + +class GetContactColsStructureList { + String? aPPLICATIONCOLUMNNAME; + String? dATATYPE; + String? dISPLAYFLAG; + int? gROUPNUM; + int? mAXIMUMSIZE; + String? oBJECTNAME; + String? oBJECTTYPE; + List? objectValuesList; + String? rEQUIREDFLAG; + String? sEGMENTPROMPT; + int? sEGMENTSEQNUM; + + GetContactColsStructureList( + {this.aPPLICATIONCOLUMNNAME, + this.dATATYPE, + this.dISPLAYFLAG, + this.gROUPNUM, + this.mAXIMUMSIZE, + this.oBJECTNAME, + this.oBJECTTYPE, + this.objectValuesList, + this.rEQUIREDFLAG, + this.sEGMENTPROMPT, + this.sEGMENTSEQNUM}); + + GetContactColsStructureList.fromJson(Map json) { + aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; + dATATYPE = json['DATATYPE']; + dISPLAYFLAG = json['DISPLAY_FLAG']; + gROUPNUM = json['GROUP_NUM']; + mAXIMUMSIZE = json['MAXIMUM_SIZE']; + oBJECTNAME = json['OBJECT_NAME']; + oBJECTTYPE = json['OBJECT_TYPE']; + if (json['ObjectValuesList'] != null) { + objectValuesList = []; + json['ObjectValuesList'].forEach((v) { + objectValuesList!.add(new ObjectValuesList.fromJson(v)); + }); + } + rEQUIREDFLAG = json['REQUIRED_FLAG']; + sEGMENTPROMPT = json['SEGMENT_PROMPT']; + sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM']; + } + + Map toJson() { + final Map data = new Map(); + data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME; + data['DATATYPE'] = this.dATATYPE; + data['DISPLAY_FLAG'] = this.dISPLAYFLAG; + data['GROUP_NUM'] = this.gROUPNUM; + data['MAXIMUM_SIZE'] = this.mAXIMUMSIZE; + data['OBJECT_NAME'] = this.oBJECTNAME; + data['OBJECT_TYPE'] = this.oBJECTTYPE; + if (this.objectValuesList != null) { + data['ObjectValuesList'] = + this.objectValuesList!.map((v) => v.toJson()).toList(); + } + data['REQUIRED_FLAG'] = this.rEQUIREDFLAG; + data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT; + data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM; + return data; + } +} + +class ObjectValuesList { + String? cODE; + String? dESCRIPTION; + String? mEANING; + + ObjectValuesList({this.cODE, this.dESCRIPTION, this.mEANING}); + + ObjectValuesList.fromJson(Map json) { + cODE = json['CODE']; + dESCRIPTION = json['DESCRIPTION']; + mEANING = json['MEANING']; + } + + Map toJson() { + final Map data = new Map(); + data['CODE'] = this.cODE; + data['DESCRIPTION'] = this.dESCRIPTION; + data['MEANING'] = this.mEANING; + return data; + } +} \ No newline at end of file diff --git a/lib/models/profile/get_contact_details_list.dart b/lib/models/profile/get_contact_details_list.dart new file mode 100644 index 0000000..67f3b38 --- /dev/null +++ b/lib/models/profile/get_contact_details_list.dart @@ -0,0 +1,54 @@ + + +class GetContactDetailsList { + String? aPPLICATIONCOLUMNNAME; + String? dATATYPE; + String? dATEVALUE; + String? dISPLAYFLAG; + int? gROUPNUM; + int? nUMBERVALUE; + String? sEGMENTPROMPT; + int? sEGMENTSEQNUM; + String? sEGMENTVALUEDSP; + String? vARCHAR2VALUE; + + GetContactDetailsList( + {this.aPPLICATIONCOLUMNNAME, + this.dATATYPE, + this.dATEVALUE, + this.dISPLAYFLAG, + this.gROUPNUM, + this.nUMBERVALUE, + this.sEGMENTPROMPT, + this.sEGMENTSEQNUM, + this.sEGMENTVALUEDSP, + this.vARCHAR2VALUE}); + + GetContactDetailsList.fromJson(Map json) { + aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; + dATATYPE = json['DATATYPE']; + dATEVALUE = json['DATE_VALUE']; + dISPLAYFLAG = json['DISPLAY_FLAG']; + gROUPNUM = json['GROUP_NUM']; + nUMBERVALUE = json['NUMBER_VALUE']; + sEGMENTPROMPT = json['SEGMENT_PROMPT']; + sEGMENTSEQNUM = json['SEGMENT_SEQ_NUM']; + sEGMENTVALUEDSP = json['SEGMENT_VALUE_DSP']; + vARCHAR2VALUE = json['VARCHAR2_VALUE']; + } + + Map toJson() { + final Map data = new Map(); + data['APPLICATION_COLUMN_NAME'] = this.aPPLICATIONCOLUMNNAME; + data['DATATYPE'] = this.dATATYPE; + data['DATE_VALUE'] = this.dATEVALUE; + data['DISPLAY_FLAG'] = this.dISPLAYFLAG; + data['GROUP_NUM'] = this.gROUPNUM; + data['NUMBER_VALUE'] = this.nUMBERVALUE; + data['SEGMENT_PROMPT'] = this.sEGMENTPROMPT; + data['SEGMENT_SEQ_NUM'] = this.sEGMENTSEQNUM; + data['SEGMENT_VALUE_DSP'] = this.sEGMENTVALUEDSP; + data['VARCHAR2_VALUE'] = this.vARCHAR2VALUE; + return data; + } +} \ No newline at end of file diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index a4d0052..915118f 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -92,6 +92,13 @@ class _RequestSubmitScreenState extends State { params!.pItemId, params!.transactionId, ); + } else if(params!.approvalFlag == 'family_member') { + await ProfileApiClient().getApproves( + "SUBMIT", + comments.text, + params!.transactionId!.toInt(), + params!.pItemId.toString(), + ); } else { await MyAttendanceApiClient().startEitApprovalProcess( "SUBMIT", diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart new file mode 100644 index 0000000..de3e71f --- /dev/null +++ b/lib/ui/profile/add_update_family_member.dart @@ -0,0 +1,98 @@ +import 'package:easy_localization/easy_localization.dart'; +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/extensions/widget_extensions.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/get_approves_list_model.dart'; +import 'package:mohem_flutter_app/models/get_contact_dff_structure_list.dart'; +import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; +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/submit_contact_transaction_list_model.dart'; +import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; +import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; +import 'dart:io'; +import 'package:flutter/cupertino.dart'; +import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; + +class AddUpdateFamilyMember extends StatefulWidget { + const AddUpdateFamilyMember({Key? key}) : super(key: key); + + @override + _AddUpdateFamilyMemberState createState() => _AddUpdateFamilyMemberState(); +} + +class _AddUpdateFamilyMemberState extends State { + List getBasicDetDffStructureList = []; + List getContactColsStructureList = []; + List getContactDffStructureList = []; + List getContactDetailsList = []; + dynamic args; + + @override + void initState() { + + + // + super.initState(); + + } + void callAddFamilyMember() async { + try { + Utils.showLoading(context); + getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure(); + getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(); + getContactDffStructureList = await ProfileApiClient().getContactDffStructureList(); + Utils.hideLoading(context); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + void callUpdateFamilyMember() async { + try { + Utils.showLoading(context); + getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']); + getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure(); + getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(); + getContactDffStructureList = await ProfileApiClient().getContactDffStructureList(); + Utils.hideLoading(context); + setState(() {}); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } + + @override + Widget build(BuildContext context) { + args= ModalRoute.of(context)!.settings.arguments; + callUpdateFamilyMember(); + return Scaffold( + appBar: AppBarWidget( + context, + title: LocaleKeys.profile_familyDetails.tr(), + ), + backgroundColor: MyColors.backgroundColor, + body: args['flag']== 1 + ? Column( + children: [ + + ], + ) + : args['flag'] == 2 + ? Column( + children: [ + "update".toText16(color: MyColors.blackColor), + ], + ) + : Container(), + ); + } +} diff --git a/lib/ui/profile/delete_family_member.dart b/lib/ui/profile/delete_family_member.dart index 3aae19b..9ed132c 100644 --- a/lib/ui/profile/delete_family_member.dart +++ b/lib/ui/profile/delete_family_member.dart @@ -7,7 +7,6 @@ import 'package:mohem_flutter_app/config/routes.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_approves_list_model.dart'; -import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; import 'package:mohem_flutter_app/models/profile/submit_contact_transaction_list_model.dart'; import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; @@ -29,6 +28,7 @@ class _DeleteFamilyMemberState extends State { // int? contactRelationId; String? date="MM/DD/YYYY"; String? datePar; + // String? itemKey; SubmitContactTransactionList? submitContactTransactionList; GetApprovesList? getApprovesList; @@ -45,10 +45,11 @@ class _DeleteFamilyMemberState extends State { Utils.showLoading(context); submitContactTransactionList = await ProfileApiClient().submetConatctTransaction(pFunctionName.toString(), actionType.toString(), widget.relationId!.toInt(), datePar.toString()); var transactionId = submitContactTransactionList!.pTRANSACTIONID; - getApprovesList = await ProfileApiClient().getApproves(transactionId!.toInt()); - Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, - arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), submitContactTransactionList!.pTRANSACTIONID!.toInt(), submitContactTransactionList!.pITEMKEY!)); + 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')); + setState(() {}); } catch (ex) { Utils.hideLoading(context); @@ -61,7 +62,7 @@ class _DeleteFamilyMemberState extends State { return Scaffold( appBar: AppBarWidget( context, - title: "Dependents And Beneficiaries", + title: LocaleKeys.profile_familyDetails.tr(), ), backgroundColor: MyColors.backgroundColor, bottomSheet: footer(), @@ -77,10 +78,10 @@ class _DeleteFamilyMemberState extends State { date = DateFormat('yyyy/MM/dd').format(dateValue); datePar = DateFormat('yyyy/MM/dd hh:mm:ss').format(dateValue); setState(() {}); - if (date !=null) { - print(datePar); - deleteFamilyMember(datePar); - } + // if (date !=null) { + // print(datePar); + // deleteFamilyMember(datePar); + // } }, ).paddingOnly(bottom: 12) ], @@ -93,7 +94,7 @@ class _DeleteFamilyMemberState extends State { children: [ Container( color: MyColors.gradiantEndColor, - // margin: EdgeInsets.only(left: 50,right: 20), + margin: EdgeInsets.only(bottom: 20, top: 20), padding: EdgeInsets.only(left: 50, right: 50), child: TextButton( style: TextButton.styleFrom( diff --git a/lib/ui/profile/family_members.dart b/lib/ui/profile/family_members.dart index cd1dccf..9f0157a 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -1,8 +1,3 @@ - - - - - import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; @@ -30,15 +25,14 @@ class FamilyMembers extends StatefulWidget { } class _FamilyMembersState extends State { - List getEmployeeContactsList = []; int? relationId; + int? flag; @override void initState() { super.initState(); getEmployeeContacts(); - } void getEmployeeContacts() async { @@ -53,7 +47,6 @@ class _FamilyMembersState extends State { } } - Widget build(BuildContext context) { return Scaffold( appBar: AppBarWidget( @@ -61,155 +54,145 @@ class _FamilyMembersState extends State { title: LocaleKeys.profile_familyDetails.tr(), ), backgroundColor: MyColors.backgroundColor, - bottomSheet:footer(), + bottomSheet: footer(), body: Container( width: MediaQuery.of(context).size.width, - child: getEmployeeContactsList.length != 0 - ? SingleChildScrollView( - scrollDirection: Axis.vertical, - child: Column( - children: [ - ListView.builder( - scrollDirection: Axis.vertical, - shrinkWrap: true, - physics: ScrollPhysics(), - itemCount: getEmployeeContactsList.length, - itemBuilder: (context, index) { - return Container( - child: Column( - children: [ - Container( - width: double.infinity, - margin: EdgeInsets.only(top: 20, left: 21, right: 21,), - padding: EdgeInsets.only(left: 14, right: 14,top: 13, ), - height: 110, - decoration: BoxDecoration( - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 5, - blurRadius: 26, - offset: Offset(0, 3), - ), - ], - color: Colors.white, - borderRadius: BorderRadius.circular(10.0), - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "${getEmployeeContactsList[index].cONTACTNAME}".toText16(color: MyColors.blackColor), - "${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor), - SizedBox(height: 5,), - Divider( - color: MyColors.lightGreyEFColor, - height: 20, - thickness: 1, - indent: 0, - endIndent: 0, - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: [ - Container( - child: InkWell( - onTap: () { - showUpdateAlertDialog(context); - }, - child: RichText( - text: TextSpan( - children: [ - WidgetSpan( - child: Icon( - Icons.edit, - size: 15, - color: MyColors.grey67Color, - ), - ), - TextSpan( - text: LocaleKeys.update.tr(), - style: TextStyle( - color: MyColors.grey67Color, - fontSize: 12, - fontWeight: FontWeight.bold, - ), - ), - ], - ), - ), - ) + child: getEmployeeContactsList.length != 0 + ? SingleChildScrollView( + scrollDirection: Axis.vertical, + child: Column( + children: [ + ListView.builder( + scrollDirection: Axis.vertical, + shrinkWrap: true, + physics: ScrollPhysics(), + itemCount: getEmployeeContactsList.length, + itemBuilder: (context, index) { + return Container( + child: Column( + children: [ + Container( + width: double.infinity, + margin: EdgeInsets.only( + top: 20, + left: 21, + right: 21, + ), + padding: EdgeInsets.only( + left: 14, + right: 14, + top: 13, ), - Padding( - padding: const EdgeInsets.symmetric(horizontal: 8), - child: SizedBox( - child: Container( - width: 3, - color: MyColors.lightGreyEFColor, + height: 110, + decoration: BoxDecoration( + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 5, + blurRadius: 26, + offset: Offset(0, 3), ), - ), + ], + color: Colors.white, + borderRadius: BorderRadius.circular(10.0), ), - Container( - child: InkWell( - onTap: () { - relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); - showRemoveAlertDialog(context, relationId!.toInt()); - }, - child: RichText( - text: TextSpan( - children: [ - WidgetSpan( - child: Icon( - Icons.delete, - size: 15, - color: Color(0x99FF0000), + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + "${getEmployeeContactsList[index].cONTACTNAME}".toText16(color: MyColors.blackColor), + "${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor), + SizedBox( + height: 5, + ), + Divider( + color: MyColors.lightGreyEFColor, + height: 20, + thickness: 1, + indent: 0, + endIndent: 0, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Container( + child: InkWell( + onTap: () { + relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); + showUpdateAlertDialog(context, relationId!.toInt(), 2); + }, + child: RichText( + text: TextSpan( + children: [ + WidgetSpan( + child: Icon( + Icons.edit, + size: 15, + color: MyColors.grey67Color, + ), ), - ), - TextSpan( - text:LocaleKeys.remove.tr(), - style: TextStyle( - color: MyColors.DarkRedColor, - fontSize: 12, - fontWeight: FontWeight.bold, + TextSpan( + text: LocaleKeys.update.tr(), + style: TextStyle( + color: MyColors.grey67Color, + fontSize: 12, + fontWeight: FontWeight.bold, + ), ), - ), - ], + ], + ), + ), + )), + Padding( + padding: const EdgeInsets.symmetric(horizontal: 8), + child: SizedBox( + child: Container( + width: 3, + color: MyColors.lightGreyEFColor, + ), ), ), - ) - ), - // ElevatedButton.icon( - // icon: Icon( - // Icons.delete, - // size: 15, - // color: Color(0x99FF0000), - // ), - // style: ElevatedButton.styleFrom( - // shadowColor: Colors.white, - // primary: Colors.white, - // ), - // label: "remove".toText12(color: MyColors.DarkRedColor), - // onPressed: (){}, - // ), - ], - ), - ] - ), - ), + Container( + child: InkWell( + onTap: () { + relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); + showRemoveAlertDialog(context, relationId!.toInt()); + }, + child: RichText( + text: TextSpan( + children: [ + WidgetSpan( + child: Icon( + Icons.delete, + size: 15, + color: Color(0x99FF0000), + ), + ), + TextSpan( + text: LocaleKeys.remove.tr(), + style: TextStyle( + color: MyColors.DarkRedColor, + fontSize: 12, + fontWeight: FontWeight.bold, + ), + ), + ], + ), + ), + )), + ], + ), + ]), + ), + ], + )); + }) ], - ) - ); - }) - ], - ), - ):Container(), - // SizedBox(height: 20), - ) - - - ); + ), + ) + : Container(), + // SizedBox(height: 20), + )); } - footer(){ + footer() { return Container( decoration: BoxDecoration( // borderRadius: BorderRadius.circular(10), @@ -219,27 +202,35 @@ class _FamilyMembersState extends State { ], ), child: DefaultButton("Add New Family Member", () async { + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":1}); // context.setLocale(const Locale("en", "US")); // to change Loacle - Profile(); + // Profile(); }).insideContainer, ); } - showUpdateAlertDialog(BuildContext context) { + showUpdateAlertDialog(BuildContext context, int relationId, int flag) { Widget cancelButton = TextButton( - child: Text(LocaleKeys.cancel.tr(),), - onPressed: () { + child: Text( + LocaleKeys.cancel.tr(), + ), + onPressed: () { Navigator.pop(context); }, ); Widget continueButton = TextButton( - child: Text(LocaleKeys.ok.tr(),), - onPressed: () { - continueDynamicForms(); + child: Text( + LocaleKeys.ok.tr(), + ), + onPressed: () { + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":flag}, ); + // continueDynamicForms(); }, ); AlertDialog alert = AlertDialog( - title: Text(LocaleKeys.confirm.tr(),), + title: Text( + LocaleKeys.confirm.tr(), + ), content: Text("Are You Sure You Want to Update this Member?"), actions: [ cancelButton, @@ -253,23 +244,30 @@ class _FamilyMembersState extends State { }, ); } - showRemoveAlertDialog(BuildContext context,int relationId) { + + showRemoveAlertDialog(BuildContext context, int relationId) { Widget cancelButton = TextButton( - child: Text(LocaleKeys.cancel.tr(),), - onPressed: () { + child: Text( + LocaleKeys.cancel.tr(), + ), + onPressed: () { Navigator.pop(context); }, ); Widget continueButton = TextButton( - child: Text(LocaleKeys.ok.tr(),), - onPressed: () { - // var relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); + child: Text( + LocaleKeys.ok.tr(), + ), + onPressed: () { + // var relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); Navigator.pushNamed(context, AppRoutes.deleteFamilyMember, arguments: relationId); - // continueDynamicForms(); + // continueDynamicForms(); }, ); AlertDialog alert = AlertDialog( - title: Text(LocaleKeys.confirm.tr(),), + title: Text( + LocaleKeys.confirm.tr(), + ), content: Text("Are You Sure You Want to Remove this Member?"), actions: [ cancelButton, @@ -284,10 +282,9 @@ class _FamilyMembersState extends State { ); } - - void continueDynamicForms() { - Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile, - arguments: DynamicFamilyMembersParams(LocaleKeys.profile_familyDetails.tr(), getEmployeeContactsList: getEmployeeContactsList)); - } + // void continueDynamicForms() { + // Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile, + // arguments: DynamicFamilyMembersParams(LocaleKeys.profile_familyDetails.tr(), getEmployeeContactsList: getEmployeeContactsList)); + // } } From 23110b792fd6f24da5a0c6adf720013d03c62188 Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 5 Jul 2022 11:21:01 +0300 Subject: [PATCH 05/10] completed add and update family member --- lib/api/profile_api_client.dart | 22 +- lib/models/generic_response_model.dart | 13 +- .../get_contact_dff_structure_list.dart | 126 +---- .../profile/basic_details_dff_structure.dart | 13 +- .../get_contact_clos_structure_list.dart | 9 +- .../profile/get_contact_details_list.dart | 2 +- lib/ui/profile/add_update_family_member.dart | 437 ++++++++++++++++-- lib/ui/profile/family_members.dart | 8 +- 8 files changed, 487 insertions(+), 143 deletions(-) diff --git a/lib/api/profile_api_client.dart b/lib/api/profile_api_client.dart index 9ee1e80..5c1f2b7 100644 --- a/lib/api/profile_api_client.dart +++ b/lib/api/profile_api_client.dart @@ -234,11 +234,10 @@ class ProfileApiClient { } // add & update family member - Future> getContactColsStructureList() async { + Future> getContactColsStructureList(String actionType) async { String url = "${ApiConsts.erpRest}GET_CONTACT_COLS_STRUCTURE"; Map postParams = { - "P_ACTION": "ADD", - // "P_ACTION":actionType, + "P_ACTION":actionType, "P_FUNCTION_NAME": "HR_PERINFO_SS", }; postParams.addAll(AppState().postParamsJson); @@ -278,4 +277,21 @@ class ProfileApiClient { return responseData.getContactDffStructureList ?? []; }, url, postParams); } + + Future submetConatctTransactionAddAndUpdate(String actionType, int relationId ,List> list) async { + String url = "${ApiConsts.erpRest}SUBMIT_CONTACT_TRANSACTION"; + Map postParams = { + "P_MENU_TYPE": "E", + "P_SELECTED_RESP_ID": -999, + "P_FUNCTION_NAME":"HR_PERINFO_SS", + "P_ACTION": actionType, + "P_CONTACT_RELATIONSHIP_ID": relationId, + }; + postParams["EITTransactionTBL"] =list; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + return responseData.submitContactTransactionList; + }, url, postParams); + } } diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index cec969f..687c514 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -691,6 +691,13 @@ class GenericResponseModel { getBasicDetDffStructureList!.add(new GetBasicDetDffStructureList.fromJson(v)); }); } + if (json['GetContactDffStructureList'] != null) { + getContactDffStructureList = []; + json['GetContactDffStructureList'].forEach((v) { + getContactDffStructureList!.add(new GetContactDffStructureList.fromJson(v)); + }); + } + if (json['GetBasicDetNtfBodyList'] != null) { getBasicDetNtfBodyList = []; json['GetBasicDetNtfBodyList'].forEach((v) { @@ -706,7 +713,6 @@ class GenericResponseModel { getCcpTransactionsList = json['GetCcpTransactionsList']; getCcpTransactionsListNew = json['GetCcpTransactionsList_New']; getConcurrentProgramsList = json['GetConcurrentProgramsList']; - getContactColsStructureList = json['GetContactColsStructureList']; if (json['GetContactDetailsList'] != null) { getContactDetailsList = []; json['GetContactDetailsList'].forEach((v) { @@ -1218,7 +1224,6 @@ class GenericResponseModel { data['GetCcpTransactionsList'] = this.getCcpTransactionsList; data['GetCcpTransactionsList_New'] = this.getCcpTransactionsListNew; data['GetConcurrentProgramsList'] = this.getConcurrentProgramsList; - data['GetContactColsStructureList'] = this.getContactColsStructureList; if (this.getContactDetailsList != null) { data['GetContactDetailsList'] = this.getContactDetailsList!.map((v) => v.toJson()).toList(); @@ -1227,6 +1232,10 @@ class GenericResponseModel { data['GetContactColsStructureList'] = this.getContactColsStructureList!.map((v) => v.toJson()).toList(); } + if (this.getContactDffStructureList != null) { + data['GetContactDffStructureList'] = + this.getContactDffStructureList!.map((v) => v.toJson()).toList(); + } data['GetContactNotificationBodyList'] = this.getContactNotificationBodyList; data['GetCountriesList'] = this.getCountriesList; if (this.getDayHoursTypeDetailsList != null) { diff --git a/lib/models/get_contact_dff_structure_list.dart b/lib/models/get_contact_dff_structure_list.dart index 9427aaa..44a86be 100644 --- a/lib/models/get_contact_dff_structure_list.dart +++ b/lib/models/get_contact_dff_structure_list.dart @@ -1,5 +1,8 @@ +import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; +import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; + class GetContactDffStructureList { String? aLPHANUMERICALLOWEDFLAG; String? aPPLICATIONCOLUMNNAME; @@ -12,8 +15,8 @@ class GetContactDffStructureList { String? dESCFLEXNAME; String? dISPLAYFLAG; String? eNABLEDFLAG; - // ESERVICESDV? eSERVICESDV; - // List? eSERVICESVS; + ESERVICESDV? eSERVICESDV; + List? eSERVICESVS; String? fLEXVALUESETNAME; String? fORMATTYPE; String? fORMATTYPEDSP; @@ -37,6 +40,7 @@ class GetContactDffStructureList { String? uSEDFLAG; String? vALIDATIONTYPE; String? vALIDATIONTYPEDSP; + GetContactDetailsList? getContactDetailsList; GetContactDffStructureList( {this.aLPHANUMERICALLOWEDFLAG, @@ -50,8 +54,8 @@ class GetContactDffStructureList { this.dESCFLEXNAME, this.dISPLAYFLAG, this.eNABLEDFLAG, - // this.eSERVICESDV, - // this.eSERVICESVS, + this.eSERVICESDV, + this.eSERVICESVS, this.fLEXVALUESETNAME, this.fORMATTYPE, this.fORMATTYPEDSP, @@ -74,7 +78,8 @@ class GetContactDffStructureList { this.uPPERCASEONLYFLAG, this.uSEDFLAG, this.vALIDATIONTYPE, - this.vALIDATIONTYPEDSP}); + this.vALIDATIONTYPEDSP, + this.getContactDetailsList}); GetContactDffStructureList.fromJson(Map json) { aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; @@ -88,15 +93,15 @@ class GetContactDffStructureList { dESCFLEXNAME = json['DESC_FLEX_NAME']; dISPLAYFLAG = json['DISPLAY_FLAG']; eNABLEDFLAG = json['ENABLED_FLAG']; - // eSERVICESDV = json['E_SERVICES_DV'] != null - // ? new ESERVICESDV.fromJson(json['E_SERVICES_DV']) - // : null; - // if (json['E_SERVICES_VS'] != null) { - // eSERVICESVS = []; - // json['E_SERVICES_VS'].forEach((v) { - // eSERVICESVS!.add(new ESERVICESVS.fromJson(v)); - // }); - // } + eSERVICESDV = json['E_SERVICES_DV'] != null + ? new ESERVICESDV.fromJson(json['E_SERVICES_DV']) + : null; + if (json['E_SERVICES_VS'] != null) { + eSERVICESVS = []; + json['E_SERVICES_VS'].forEach((v) { + eSERVICESVS!.add(new ESERVICESVS.fromJson(v)); + }); + } fLEXVALUESETNAME = json['FLEX_VALUE_SET_NAME']; fORMATTYPE = json['FORMAT_TYPE']; fORMATTYPEDSP = json['FORMAT_TYPE_DSP']; @@ -108,19 +113,7 @@ class GetContactDffStructureList { nUMBERPRECISION = json['NUMBER_PRECISION']; nUMERICMODEENABLEDFLAG = json['NUMERIC_MODE_ENABLED_FLAG']; pARENTSEGMENTSDV = json['PARENT_SEGMENTS_DV']; - // if (json['PARENT_SEGMENTS_DV_Splited'] != null) { - // pARENTSEGMENTSDVSplited = []; - // json['PARENT_SEGMENTS_DV_Splited'].forEach((v) { - // pARENTSEGMENTSDVSplited!.add(new Null.fromJson(v)); - // }); - // } pARENTSEGMENTSVS = json['PARENT_SEGMENTS_VS']; - // if (json['PARENT_SEGMENTS_VS_SplitedVS'] != null) { - // pARENTSEGMENTSVSSplitedVS = []; - // json['PARENT_SEGMENTS_VS_SplitedVS'].forEach((v) { - // pARENTSEGMENTSVSSplitedVS!.add(new Null.fromJson(v)); - // }); - // } rEADONLY = json['READ_ONLY']; rEQUIREDFLAG = json['REQUIRED_FLAG']; sEGMENTNAME = json['SEGMENT_NAME']; @@ -145,12 +138,12 @@ class GetContactDffStructureList { data['DESC_FLEX_NAME'] = this.dESCFLEXNAME; data['DISPLAY_FLAG'] = this.dISPLAYFLAG; data['ENABLED_FLAG'] = this.eNABLEDFLAG; - // if (this.eSERVICESDV != null) { - // data['E_SERVICES_DV'] = this.eSERVICESDV!.toJson(); - // } - // if (this.eSERVICESVS != null) { - // data['E_SERVICES_VS'] = this.eSERVICESVS!.map((v) => v.toJson()).toList(); - // } + if (this.eSERVICESDV != null) { + data['E_SERVICES_DV'] = this.eSERVICESDV!.toJson(); + } + if (this.eSERVICESVS != null) { + data['E_SERVICES_VS'] = this.eSERVICESVS!.map((v) => v.toJson()).toList(); + } data['FLEX_VALUE_SET_NAME'] = this.fLEXVALUESETNAME; data['FORMAT_TYPE'] = this.fORMATTYPE; data['FORMAT_TYPE_DSP'] = this.fORMATTYPEDSP; @@ -184,72 +177,3 @@ class GetContactDffStructureList { } } -// class ESERVICESDV { -// String? pIDCOLUMNNAME; -// String? pRETURNMSG; -// String? pRETURNSTATUS; -// String? pVALUECOLUMNNAME; -// -// ESERVICESDV( -// {this.pIDCOLUMNNAME, -// this.pRETURNMSG, -// this.pRETURNSTATUS, -// this.pVALUECOLUMNNAME}); -// -// ESERVICESDV.fromJson(Map json) { -// pIDCOLUMNNAME = json['P_ID_COLUMN_NAME']; -// pRETURNMSG = json['P_RETURN_MSG']; -// pRETURNSTATUS = json['P_RETURN_STATUS']; -// pVALUECOLUMNNAME = json['P_VALUE_COLUMN_NAME']; -// } -// -// Map toJson() { -// final Map data = new Map(); -// data['P_ID_COLUMN_NAME'] = this.pIDCOLUMNNAME; -// data['P_RETURN_MSG'] = this.pRETURNMSG; -// data['P_RETURN_STATUS'] = this.pRETURNSTATUS; -// data['P_VALUE_COLUMN_NAME'] = this.pVALUECOLUMNNAME; -// return data; -// } -// } -// -// class ESERVICESVS { -// String? dESCRIPTION; -// int? fROMROWNUM; -// String? iDCOLUMNNAME; -// int? nOOFROWS; -// int? rOWNUM; -// int? tOROWNUM; -// String? vALUECOLUMNNAME; -// -// ESERVICESVS( -// {this.dESCRIPTION, -// this.fROMROWNUM, -// this.iDCOLUMNNAME, -// this.nOOFROWS, -// this.rOWNUM, -// this.tOROWNUM, -// this.vALUECOLUMNNAME}); -// -// ESERVICESVS.fromJson(Map json) { -// dESCRIPTION = json['DESCRIPTION']; -// fROMROWNUM = json['FROM_ROW_NUM']; -// iDCOLUMNNAME = json['ID_COLUMN_NAME']; -// nOOFROWS = json['NO_OF_ROWS']; -// rOWNUM = json['ROW_NUM']; -// tOROWNUM = json['TO_ROW_NUM']; -// vALUECOLUMNNAME = json['VALUE_COLUMN_NAME']; -// } -// -// Map toJson() { -// final Map data = new Map(); -// data['DESCRIPTION'] = this.dESCRIPTION; -// data['FROM_ROW_NUM'] = this.fROMROWNUM; -// data['ID_COLUMN_NAME'] = this.iDCOLUMNNAME; -// data['NO_OF_ROWS'] = this.nOOFROWS; -// data['ROW_NUM'] = this.rOWNUM; -// data['TO_ROW_NUM'] = this.tOROWNUM; -// data['VALUE_COLUMN_NAME'] = this.vALUECOLUMNNAME; -// return data; -// } -// } \ No newline at end of file diff --git a/lib/models/profile/basic_details_dff_structure.dart b/lib/models/profile/basic_details_dff_structure.dart index db3312e..9d44b85 100644 --- a/lib/models/profile/basic_details_dff_structure.dart +++ b/lib/models/profile/basic_details_dff_structure.dart @@ -1,11 +1,12 @@ import 'package:mohem_flutter_app/models/get_eit_dff_structure_list_model.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; +import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; class GetBasicDetDffStructureList { String? aLPHANUMERICALLOWEDFLAG; String? aPPLICATIONCOLUMNNAME; String? cHILDSEGMENTSVS; - Null? cHILDSEGMENTSVSSplited; + dynamic? cHILDSEGMENTSVSSplited; String? dEFAULTTYPE; String? dEFAULTVALUE; String? dESCFLEXCONTEXTCODE; @@ -27,9 +28,9 @@ class GetBasicDetDffStructureList { String? nUMBERPRECISION; String? nUMERICMODEENABLEDFLAG; String? pARENTSEGMENTSDV; - List? pARENTSEGMENTSDVSplited; + List? pARENTSEGMENTSDVSplited; String? pARENTSEGMENTSVS; - List? pARENTSEGMENTSVSSplitedVS; + List? pARENTSEGMENTSVSSplitedVS; String? rEADONLY; String? rEQUIREDFLAG; String? sEGMENTNAME; @@ -40,6 +41,7 @@ class GetBasicDetDffStructureList { String? vALIDATIONTYPE; String? vALIDATIONTYPEDSP; GetEmployeeBasicDetailsList? userBasicDetail; + GetContactDetailsList? getContactDetailsList; GetBasicDetDffStructureList( {this.aLPHANUMERICALLOWEDFLAG, @@ -79,7 +81,9 @@ class GetBasicDetDffStructureList { this.uSEDFLAG, this.vALIDATIONTYPE, this.vALIDATIONTYPEDSP, - this.userBasicDetail}); + this.userBasicDetail, + this.getContactDetailsList + }); GetBasicDetDffStructureList.fromJson(Map json) { aLPHANUMERICALLOWEDFLAG = json['ALPHANUMERIC_ALLOWED_FLAG']; @@ -134,6 +138,7 @@ class GetBasicDetDffStructureList { uSEDFLAG = json['USED_FLAG']; vALIDATIONTYPE = json['VALIDATION_TYPE']; vALIDATIONTYPEDSP = json['VALIDATION_TYPE_DSP']; + } Map toJson() { diff --git a/lib/models/profile/get_contact_clos_structure_list.dart b/lib/models/profile/get_contact_clos_structure_list.dart index 63728fc..7f3ad90 100644 --- a/lib/models/profile/get_contact_clos_structure_list.dart +++ b/lib/models/profile/get_contact_clos_structure_list.dart @@ -1,17 +1,21 @@ +import 'package:mohem_flutter_app/models/profile/get_contact_details_list.dart'; + class GetContactColsStructureList { String? aPPLICATIONCOLUMNNAME; String? dATATYPE; String? dISPLAYFLAG; int? gROUPNUM; - int? mAXIMUMSIZE; + dynamic? mAXIMUMSIZE; String? oBJECTNAME; String? oBJECTTYPE; List? objectValuesList; + //List? objectValuesList; String? rEQUIREDFLAG; String? sEGMENTPROMPT; int? sEGMENTSEQNUM; + GetContactDetailsList? getContactDetailsList; GetContactColsStructureList( {this.aPPLICATIONCOLUMNNAME, @@ -24,7 +28,8 @@ class GetContactColsStructureList { this.objectValuesList, this.rEQUIREDFLAG, this.sEGMENTPROMPT, - this.sEGMENTSEQNUM}); + this.sEGMENTSEQNUM, + this.getContactDetailsList}); GetContactColsStructureList.fromJson(Map json) { aPPLICATIONCOLUMNNAME = json['APPLICATION_COLUMN_NAME']; diff --git a/lib/models/profile/get_contact_details_list.dart b/lib/models/profile/get_contact_details_list.dart index 67f3b38..9097291 100644 --- a/lib/models/profile/get_contact_details_list.dart +++ b/lib/models/profile/get_contact_details_list.dart @@ -6,7 +6,7 @@ class GetContactDetailsList { String? dATEVALUE; String? dISPLAYFLAG; int? gROUPNUM; - int? nUMBERVALUE; + dynamic? nUMBERVALUE; String? sEGMENTPROMPT; int? sEGMENTSEQNUM; String? sEGMENTVALUEDSP; diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index de3e71f..e5a59f9 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -4,9 +4,11 @@ import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/extensions/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; +import 'package:mohem_flutter_app/models/dyanmic_forms/validate_eit_transaction_model.dart'; import 'package:mohem_flutter_app/models/get_approves_list_model.dart'; import 'package:mohem_flutter_app/models/get_contact_dff_structure_list.dart'; import 'package:mohem_flutter_app/models/profile/basic_details_dff_structure.dart'; @@ -18,6 +20,7 @@ import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'dart:io'; import 'package:flutter/cupertino.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; +import 'package:easy_localization/src/public_ext.dart'; class AddUpdateFamilyMember extends StatefulWidget { const AddUpdateFamilyMember({Key? key}) : super(key: key); @@ -31,37 +34,64 @@ class _AddUpdateFamilyMemberState extends State { List getContactColsStructureList = []; List getContactDffStructureList = []; List getContactDetailsList = []; + SubmitContactTransactionList? submitContactTransactionList; dynamic args; + String? date="MM/DD/YYYY"; + // String actionType = "UPDATE"; + + GetApprovesList? getApprovesList; @override void initState() { - - - // + // super.initState(); - - } - void callAddFamilyMember() async { - try { - Utils.showLoading(context); - getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure(); - getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(); - getContactDffStructureList = await ProfileApiClient().getContactDffStructureList(); - Utils.hideLoading(context); - setState(() {}); - } catch (ex) { - Utils.hideLoading(context); - Utils.handleException(ex, context, null); - } } - void callUpdateFamilyMember() async { + // void callFamilyMemberData() async { + // try { + // Utils.showLoading(context); + // callAddAndUpdateFamilyMember(); + // Utils.hideLoading(context); + // setState(() {}); + // } catch (ex) { + // Utils.hideLoading(context); + // Utils.handleException(ex, context, null); + // } + // } + + void callAddAndUpdateFamilyMember() async { try { Utils.showLoading(context); - getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']); getBasicDetDffStructureList = await ProfileApiClient().getBasicDetDffStructure(); - getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(); + getContactColsStructureList = await ProfileApiClient().getContactColsStructureList(args['actionType']); getContactDffStructureList = await ProfileApiClient().getContactDffStructureList(); +if(args['actionType']== "ADD"){ + + getBasicDetDffStructureList?.forEach((element) { + element?.getContactDetailsList = new GetContactDetailsList(); + }); + getContactColsStructureList?.forEach((element) { + element?.getContactDetailsList = new GetContactDetailsList(); + }); + getContactDffStructureList?.forEach((element) { + element?.getContactDetailsList = new GetContactDetailsList(); + }); +} +else if(args['actionType']== "UPDATE") { + getContactDetailsList = await ProfileApiClient().getContactDetailsList(args['relationID']); + + getBasicDetDffStructureList?.forEach((element) { + element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME); + }); + getContactColsStructureList?.forEach((element) { + element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME); + }); + + + getContactDffStructureList?.forEach((element) { + element?.getContactDetailsList = getContactDetailsList?.singleWhere((userDetail) => userDetail?.aPPLICATIONCOLUMNNAME == element?.aPPLICATIONCOLUMNNAME); + }); +} Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -70,29 +100,384 @@ class _AddUpdateFamilyMemberState extends State { } } + @override Widget build(BuildContext context) { - args= ModalRoute.of(context)!.settings.arguments; - callUpdateFamilyMember(); + if (args == null) { + args = ModalRoute.of(context)!.settings.arguments; + callAddAndUpdateFamilyMember(); + + } return Scaffold( appBar: AppBarWidget( context, title: LocaleKeys.profile_familyDetails.tr(), ), backgroundColor: MyColors.backgroundColor, - body: args['flag']== 1 + bottomSheet: footer(), + body: args['flag'] == 1 ? Column( children: [ - + ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getContactColsStructureList!.length), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getBasicDetDffStructureList!.length), + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getContactDffStructureList!.length), + ]).expanded, + SizedBox( + height: 50, + ), ], ) - : args['flag'] == 2 + : args['flag'] == 2 ? Column( children: [ - "update".toText16(color: MyColors.blackColor), + getContactDetailsList!.isEmpty + ? LocaleKeys.noDataAvailable.tr().toText16().center + : ListView(physics: const BouncingScrollPhysics(), padding: const EdgeInsets.all(21), children: [ + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeCols(getContactColsStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getContactColsStructureList!.length), + 12.height, + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeBasicDetDff(getBasicDetDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getBasicDetDffStructureList!.length), + ListView.separated( + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemBuilder: (BuildContext cxt, int parentIndex) { + return parseDynamicFormatTypeContactDff(getContactDffStructureList![parentIndex], parentIndex); + }, + separatorBuilder: (cxt, index) => 0.height, + itemCount: getContactDffStructureList!.length), + ]).expanded, + SizedBox( + height: 50, + ), ], ) : Container(), ); } + + Widget parseDynamicFormatTypeCols(GetContactColsStructureList? model, int index) { + if (model!.dISPLAYFLAG != "N") { + } else { + return const SizedBox(); + } + if (model.dATATYPE == "VARCHAR2") { + if (model!.objectValuesList?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => + >[ + for (int i = 0; i < getContactColsStructureList[index]!.objectValuesList!.length; i++) + PopupMenuItem(child: Text(getContactColsStructureList[index]!.objectValuesList![i].mEANING.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getContactColsStructureList[index]!.objectValuesList![popupIndex].mEANING.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getContactColsStructureList[index]!.objectValuesList![popupIndex].cODE.toString(); + setState(() {}); + }); + } else { + return DynamicTextFieldWidget( + (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + onChange: (text) { + model!.getContactDetailsList!.sEGMENTVALUEDSP = text; + }, + ).paddingOnly(bottom: 12); + } + }else if (model.dATATYPE == "DATE") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + DateTime dateValue = await _selectDate(context); + date = DateFormat('yyyy/MM/dd').format(dateValue); + model!.getContactDetailsList!.sEGMENTVALUEDSP = date; + setState(() {}); + }, + ).paddingOnly(bottom: 12); + } + return Container(); + } + + Widget parseDynamicFormatTypeBasicDetDff(GetBasicDetDffStructureList? model, int index) { + if (model!.dISPLAYFLAG != "N") { + } else { + return const SizedBox(); + } + if (model!.fORMATTYPE == "C") { + if (model!.eSERVICESVS?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < getBasicDetDffStructureList[index]!.eSERVICESVS!.length; i++) + PopupMenuItem(child: Text(getBasicDetDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getBasicDetDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); + + setState(() {}); + }); + } else { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + onChange: (text) { + model.getContactDetailsList!.sEGMENTVALUEDSP = text; + }, + ).paddingOnly(bottom: 12); + } + }else if (model.fORMATTYPE == "X") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + DateTime dateValue = await _selectDate(context); + date = DateFormat('yyyy/MM/dd').format(dateValue); + model!.getContactDetailsList!.sEGMENTVALUEDSP = date; + setState(() {}); + }, + ).paddingOnly(bottom: 12); + } + return Container(); + } + + Widget parseDynamicFormatTypeContactDff(GetContactDffStructureList? model, int index) { + if (model!.dISPLAYFLAG != "N") { + } else { + return const SizedBox(); + } + if (model!.fORMATTYPE == "C") { + if (model.eSERVICESVS?.isNotEmpty ?? false) { + return PopupMenuButton( + child: DynamicTextFieldWidget( + (model!.sEGMENTPROMPT ?? "") + (model!.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + isEnable: false, + isPopup: true, + ).paddingOnly(bottom: 12), + itemBuilder: (_) => >[ + for (int i = 0; i < getContactDffStructureList[index]!.eSERVICESVS!.length; i++) + PopupMenuItem(child: Text(getContactDffStructureList[index]!.eSERVICESVS![i].vALUECOLUMNNAME.toString()), value: i), + ], + onSelected: (int popupIndex) { + model.getContactDetailsList!.sEGMENTVALUEDSP = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].vALUECOLUMNNAME.toString(); + model.getContactDetailsList!.vARCHAR2VALUE = getContactDffStructureList[index]!.eSERVICESVS![popupIndex].iDCOLUMNNAME.toString(); + setState(() {}); + }); + } else { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + onChange: (text) { + model.getContactDetailsList!.sEGMENTVALUEDSP = text; + }, + ).paddingOnly(bottom: 12); + } + }else if (model.fORMATTYPE == "X") { + return DynamicTextFieldWidget( + (model.sEGMENTPROMPT ?? "") + (model.rEQUIREDFLAG == "Y" ? "*" : ""), + model!.getContactDetailsList!.sEGMENTVALUEDSP ?? "", + suffixIconData: Icons.calendar_today, + isEnable: false, + onTap: () async { + DateTime dateValue = await _selectDate(context); + date = DateFormat('yyyy/MM/dd').format(dateValue); + model!.getContactDetailsList!.sEGMENTVALUEDSP = date; + setState(() {}); + }, + ).paddingOnly(bottom: 12); + } + return Container(); + } + + DateTime selectedDate = DateTime.now(); + + Future _selectDate(BuildContext context) async { + DateTime time = selectedDate; + if (!Platform.isIOS) { + await showCupertinoModalPopup( + context: context, + builder: (cxt) => Container( + height: 250, + color: Colors.white, + child: CupertinoDatePicker( + backgroundColor: Colors.white, + mode: CupertinoDatePickerMode.date, + onDateTimeChanged: (value) { + if (value != null && value != selectedDate) { + time = value; + } + }, + initialDateTime: selectedDate, + ), + ), + ); + } else { + final DateTime? picked = + await showDatePicker(context: context, initialDate: selectedDate, initialEntryMode: DatePickerEntryMode.calendarOnly, firstDate: DateTime(2015, 8), lastDate: DateTime(2101)); + if (picked != null && picked != selectedDate) { + time = picked; + } + } + return time; + } + + footer() { + return Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + color: MyColors.gradiantEndColor, + margin: EdgeInsets.only(bottom: 20, top: 20), + padding: EdgeInsets.only(left: 50, right: 50), + child: TextButton( + style: TextButton.styleFrom( + primary: MyColors.white, + onSurface: MyColors.white, + backgroundColor: MyColors.gradiantEndColor, + ), + onPressed: () { + submitUpdateForm(); + }, + child: Text( + LocaleKeys.next.tr(), + style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600), + ), + )), + ], + ); + } + + void submitUpdateForm() async { + try { + List> values1 = getBasicDetDffStructureList!.map((e) { + String? dateVal =''; + String? vatcherVal =''; + int? numberVal; + if(e!.fORMATTYPE =='N'){ + dateVal= null; + vatcherVal= null; + numberVal = e!.getContactDetailsList!.nUMBERVALUE; + } else if(e.fORMATTYPE =='X'){ + dateVal= e!.getContactDetailsList!.dATEVALUE.toString(); + vatcherVal= null; + numberVal = null; + }else{ + dateVal= null; + vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString(); + numberVal = null; + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); + }).toList(); + List> values2 = getContactDffStructureList!.map((e) { + //String tempVar = e!.getContactDetailsList!.vARCHAR2VALUE ?? ""; + String? dateVal =''; + String? vatcherVal =''; + int? numberVal; + if(e!.fORMATTYPE =='N'){ + dateVal= null; + vatcherVal= null; + numberVal= e!.getContactDetailsList!.nUMBERVALUE; + } else if(e.fORMATTYPE =='X'){ + dateVal= e!.getContactDetailsList!.dATEVALUE.toString(); + vatcherVal= null; + numberVal= null; + }else{ + dateVal= null; + numberVal= null; + vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString(); + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); + }).toList(); + List> values3 = getContactColsStructureList!.map((e) { + // String tempVar = e!.getContactDetailsList!.sEGMENTVALUEDSP ?? ""; + String? dateVal =''; + String? vatcherVal =''; + int? numberVal; + if(e!.dATATYPE =='VARCHAR2'){ + dateVal= null; + numberVal= null; + vatcherVal= e!.getContactDetailsList!.vARCHAR2VALUE.toString(); + } else if(e.dATATYPE =='DATE'){ + dateVal= e!.getContactDetailsList!.dATEVALUE.toString(); + vatcherVal= null; + numberVal= null; + }else if(e.dATATYPE =='NUMBER'){ + dateVal= null; + vatcherVal= null; + numberVal= e!.getContactDetailsList!.nUMBERVALUE; + }else{ + } + return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); + }).toList(); + List> valuesFinal = [...values1, ...values2,...values3]; + Utils.showLoading(context); + if(args['actionType']== "ADD") { + var relationID = null; + submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], relationID, valuesFinal); + }else if(args['actionType']== "UPDATE"){ + submitContactTransactionList = await ProfileApiClient().submetConatctTransactionAddAndUpdate(args['actionType'], args['relationID'], valuesFinal); + } + var transactionId = submitContactTransactionList!.pTRANSACTIONID; + var itemKey = submitContactTransactionList!.pITEMKEY; + Utils.hideLoading(context); + Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, + arguments: RequestSubmitScreenParams(LocaleKeys.profile_familyDetails.tr(), transactionId!.toInt(), itemKey.toString(), 'family_member')); + setState(() {} + ); + } catch (ex) { + Utils.hideLoading(context); + Utils.handleException(ex, context, null); + } + } } diff --git a/lib/ui/profile/family_members.dart b/lib/ui/profile/family_members.dart index 9f0157a..d0e04f3 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -116,7 +116,7 @@ class _FamilyMembersState extends State { child: InkWell( onTap: () { relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); - showUpdateAlertDialog(context, relationId!.toInt(), 2); + showUpdateAlertDialog(context, relationId!.toInt(), 2, "UPDATE"); }, child: RichText( text: TextSpan( @@ -202,14 +202,14 @@ class _FamilyMembersState extends State { ], ), child: DefaultButton("Add New Family Member", () async { - Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":1}); + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":1, "actionType":"ADD"}); // context.setLocale(const Locale("en", "US")); // to change Loacle // Profile(); }).insideContainer, ); } - showUpdateAlertDialog(BuildContext context, int relationId, int flag) { + showUpdateAlertDialog(BuildContext context, int relationId, int flag, String actionType) { Widget cancelButton = TextButton( child: Text( LocaleKeys.cancel.tr(), @@ -223,7 +223,7 @@ class _FamilyMembersState extends State { LocaleKeys.ok.tr(), ), onPressed: () { - Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":flag}, ); + Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":flag, "actionType": "UPDATE"}, ); // continueDynamicForms(); }, ); From d74d8ff3696fb5c817a1642932c6e179fc21e72a Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Wed, 6 Jul 2022 10:42:37 +0300 Subject: [PATCH 06/10] fixed footer design. --- lib/ui/profile/add_update_family_member.dart | 47 +++++++++++--------- lib/ui/profile/delete_family_member.dart | 47 +++++++++++--------- 2 files changed, 50 insertions(+), 44 deletions(-) diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index e5a59f9..30e6d3f 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -373,28 +373,31 @@ else if(args['actionType']== "UPDATE") { } footer() { - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - color: MyColors.gradiantEndColor, - margin: EdgeInsets.only(bottom: 20, top: 20), - padding: EdgeInsets.only(left: 50, right: 50), - child: TextButton( - style: TextButton.styleFrom( - primary: MyColors.white, - onSurface: MyColors.white, - backgroundColor: MyColors.gradiantEndColor, - ), - onPressed: () { - submitUpdateForm(); - }, - child: Text( - LocaleKeys.next.tr(), - style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600), - ), - )), - ], + return Container( + color: MyColors.white, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + color: MyColors.gradiantEndColor, + margin: EdgeInsets.only(bottom: 20, top: 20), + padding: EdgeInsets.only(left: 50, right: 50), + child: TextButton( + style: TextButton.styleFrom( + primary: MyColors.white, + onSurface: MyColors.white, + backgroundColor: MyColors.gradiantEndColor, + ), + onPressed: () { + submitUpdateForm(); + }, + child: Text( + LocaleKeys.next.tr(), + style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600), + ), + )), + ], + ), ); } diff --git a/lib/ui/profile/delete_family_member.dart b/lib/ui/profile/delete_family_member.dart index 9ed132c..9e12252 100644 --- a/lib/ui/profile/delete_family_member.dart +++ b/lib/ui/profile/delete_family_member.dart @@ -89,29 +89,32 @@ class _DeleteFamilyMemberState extends State { } footer() { - return Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Container( - color: MyColors.gradiantEndColor, - margin: EdgeInsets.only(bottom: 20, top: 20), - padding: EdgeInsets.only(left: 50, right: 50), - child: TextButton( - style: TextButton.styleFrom( - primary: MyColors.white, - onSurface: MyColors.white, - backgroundColor: MyColors.gradiantEndColor, - ), - onPressed: () { - deleteFamilyMember(datePar); + return Container( + color: MyColors.white, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Container( + color: MyColors.gradiantEndColor, + margin: EdgeInsets.only(bottom: 20, top: 20), + padding: EdgeInsets.only(left: 50, right: 50), + child: TextButton( + style: TextButton.styleFrom( + primary: MyColors.white, + onSurface: MyColors.white, + backgroundColor: MyColors.gradiantEndColor, + ), + onPressed: () { + deleteFamilyMember(datePar); - }, - child: Text( - LocaleKeys.next.tr(), - style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600), - ), - )), - ], + }, + child: Text( + LocaleKeys.next.tr(), + style: TextStyle(fontStyle: FontStyle.normal, fontSize: 16, color: Colors.white, fontWeight: FontWeight.w600), + ), + )), + ], + ), ); } From 30ca1894db02914905638e4ad3fbb72209c825ed Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Sun, 24 Jul 2022 15:15:44 +0300 Subject: [PATCH 07/10] fix issues. --- assets/langs/ar-SA.json | 14 +++ assets/langs/en-US.json | 14 +++ lib/api/payslip/payslip_api_client.dart | 94 +++++++++++++++++++ lib/generated/codegen_loader.g.dart | 28 ++++++ lib/generated/locale_keys.g.dart | 14 +++ lib/models/generic_response_model.dart | 76 ++++++++++++--- lib/models/payslip/get_deductions_list.dart | 36 +++++++ lib/models/payslip/get_earnings_list.dart | 37 ++++++++ .../payslip/get_payment_information.dart | 33 +++++++ lib/models/payslip/get_payslip.dart | 38 ++++++++ .../payslip/get_summary_of_payment.dart | 38 ++++++++ lib/ui/landing/widget/app_drawer.dart | 42 ++++++--- lib/ui/misc/request_submit_screen.dart | 10 +- .../my_attendance/my_attendance_screen.dart | 16 ++-- lib/ui/profile/add_update_family_member.dart | 11 --- lib/ui/profile/basic_details.dart | 12 +-- lib/ui/profile/delete_family_member.dart | 2 +- .../dynamic_input_familyMembers_screen.dart | 17 +--- lib/ui/profile/family_members.dart | 8 +- lib/ui/profile/phone_numbers.dart | 6 +- lib/ui/screens/profile/profile_screen.dart | 6 +- 21 files changed, 467 insertions(+), 85 deletions(-) create mode 100644 lib/api/payslip/payslip_api_client.dart create mode 100644 lib/models/payslip/get_deductions_list.dart create mode 100644 lib/models/payslip/get_earnings_list.dart create mode 100644 lib/models/payslip/get_payment_information.dart create mode 100644 lib/models/payslip/get_payslip.dart create mode 100644 lib/models/payslip/get_summary_of_payment.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 7f22931..89f2ef6 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -251,6 +251,20 @@ "writeComment": "أكتب تعليقا", "approversList": "قائمة الموافقين", "yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات", + "correctCurrentDatails": "تعديل او اكمال التفاصيل الحالية", + "selectType": " حدد نوع التغيير الذي تريد القيام به", + "enterNewInfo": " أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية", + "endDate": "تاريخ الانتهاء", + "removeThisMember": "هل انت متأكد تريد ازالة هذا العضو؟", + "updateThisMember ": "هل انت متأكد تريد تحديث بيانات هذا العضو؟", + "addNewFamilyMember": "اضافة عضو جديد", + "addRow": "اضافة صف جديد", + "pleaseSelect": "الرجاء اختيار", + "delete" : "حذف", + "edit" : "تعديل", + "add" : "اضافه", + "myProfile": "معلوماتي", + "mowadhafhi": "موظفي", "profile": { "reset_password": { "label": "Reset Password", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 5934ab3..272e621 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -252,6 +252,20 @@ "writeComment": "Write a comment", "approversList": "Approvers List", "yourRequestHasBeenSubmittedForApprovals": "Your request has been submitted for approvals", + "correctCurrentDatails": "correct or complete the current details", + "selectType": "Select the type of change you want to make", + "enterNewInfo": "Enter new Information because of a real change to the current details (e.g because of a change in marital status)", + "endDate": "*End Date", + "removeThisMember": "Are You Sure You Want to Remove this Member?", + "updateThisMember": "Are You Sure You Want to Update this Member?", + "addNewFamilyMember": "Add New Family Member", + "addRow": "Add new row", + "pleaseSelect": "Please Select *", + "delete" : "delete", + "add" : "Add", + "edit" : "Edit", + "myProfile": "My Profile", + "mowadhafhi": "Mowadhafhi", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/api/payslip/payslip_api_client.dart b/lib/api/payslip/payslip_api_client.dart new file mode 100644 index 0000000..eff8608 --- /dev/null +++ b/lib/api/payslip/payslip_api_client.dart @@ -0,0 +1,94 @@ + + +import 'dart:async'; + +import 'package:mohem_flutter_app/api/api_client.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; +import 'package:mohem_flutter_app/classes/consts.dart'; +import 'package:mohem_flutter_app/models/generic_response_model.dart'; +import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; +import 'package:mohem_flutter_app/models/payslip/get_deductions_list.dart'; +import 'package:mohem_flutter_app/models/payslip/get_earnings_list.dart'; +import 'package:mohem_flutter_app/models/payslip/get_payment_information.dart'; +import 'package:mohem_flutter_app/models/payslip/get_payslip.dart'; +import 'package:mohem_flutter_app/models/payslip/get_summary_of_payment.dart'; + + +class PayslipApiClient { + static final PayslipApiClient _instance = PayslipApiClient._internal(); + + PayslipApiClient._internal(); + + factory PayslipApiClient() => _instance; + + Future> getPayslip() async { + String url = "${ApiConsts.erpRest}GET_PAYSLIP"; + 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); + print(responseData); + return responseData.getPayslipList ?? []; + }, url, postParams); + } + + Future> getSummaryOfPayment() async { + String url = "${ApiConsts.erpRest}GET_SUMMARY_OF_PAYMENT"; + Map postParams = { + "P_ACTION_CONTEXT_ID": 188844253, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + print(responseData); + return responseData.getSummaryOfPaymentList ?? []; + }, url, postParams); + } + + Future> getPaymentInfo() async { + String url = "${ApiConsts.erpRest}GET_PAYMENT_INFORMATION"; + Map postParams = { + "P_ACTION_CONTEXT_ID": 188844253, + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + print(responseData); + return responseData.getPaymentInformationList ?? []; + }, url, postParams); + } + + Future> getDeductionsList() async { + String url = "${ApiConsts.erpRest}GET_DEDUCTIONS"; + Map postParams = { + "P_ACTION_CONTEXT_ID": 188844253, + "P_PAGE_LIMIT": 100, + "P_PAGE_NUM": 1 + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + print(responseData); + return responseData.getDeductionsList ?? []; + }, url, postParams); + } + + + Future> getEarningsList() async { + String url = "${ApiConsts.erpRest}GET_EARNINGS"; + Map postParams = { + "P_ACTION_CONTEXT_ID": 188844253, + "P_PAGE_LIMIT": 100, + "P_PAGE_NUM": 1 + }; + postParams.addAll(AppState().postParamsJson); + return await ApiClient().postJsonForObject((json) { + GenericResponseModel? responseData = GenericResponseModel.fromJson(json); + print(responseData); + return responseData.getEarningsList ?? []; + }, url, postParams); + } +} \ No newline at end of file diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index ad3a70e..a45063a 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -267,6 +267,20 @@ class CodegenLoader extends AssetLoader{ "writeComment": "أكتب تعليقا", "approversList": "قائمة الموافقين", "yourRequestHasBeenSubmittedForApprovals": "تم تقديم طلبك للموافقات", + "correctCurrentDatails": "تعديل او اكمال التفاصيل الحالية", + "selectType": " حدد نوع التغيير الذي تريد القيام به", + "enterNewInfo": " أدخل معلومات جديدة بسبب تغيير حقيقي في التفاصيل الحالية (على سبيل المثال بسبب تغيير في الحالة الاجتماعية", + "endDate": "تاريخ الانتهاء", + "removeThisMember": "هل انت متأكد تريد ازالة هذا العضو؟", + "updateThisMember ": "هل انت متأكد تريد تحديث بيانات هذا العضو؟", + "addNewFamilyMember": "اضافة عضو جديد", + "addRow": "اضافة صف جديد", + "pleaseSelect": "الرجاء اختيار", + "delete": "حذف", + "edit": "تعديل", + "add": "اضافه", + "myProfile": "معلوماتي", + "mowadhafhi": "موظفي", "profile": { "reset_password": { "label": "Reset Password", @@ -560,6 +574,20 @@ static const Map en_US = { "writeComment": "Write a comment", "approversList": "Approvers List", "yourRequestHasBeenSubmittedForApprovals": "Your request has been submitted for approvals", + "correctCurrentDatails": "correct or complete the current details", + "selectType": "Select the type of change you want to make", + "enterNewInfo": "Enter new Information because of a real change to the current details (e.g because of a change in marital status)", + "endDate": "*End Date", + "removeThisMember": "Are You Sure You Want to Remove this Member?", + "updateThisMember": "Are You Sure You Want to Update this Member?", + "addNewFamilyMember": "Add New Family Member", + "addRow": "Add new row", + "pleaseSelect": "Please Select *", + "delete": "delete", + "add": "Add", + "edit": "Edit", + "myProfile": "My Profile", + "mowadhafhi": "Mowadhafhi", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 21d18f5..26dca5b 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -252,6 +252,20 @@ abstract class LocaleKeys { static const writeComment = 'writeComment'; static const approversList = 'approversList'; static const yourRequestHasBeenSubmittedForApprovals = 'yourRequestHasBeenSubmittedForApprovals'; + static const correctCurrentDatails = 'correctCurrentDatails'; + static const selectType = 'selectType'; + static const enterNewInfo = 'enterNewInfo'; + static const endDate = 'endDate'; + static const removeThisMember = 'removeThisMember'; + static const updateThisMember = 'updateThisMember '; + static const addNewFamilyMember = 'addNewFamilyMember'; + static const addRow = 'addRow'; + static const pleaseSelect = 'pleaseSelect'; + static const delete = 'delete'; + static const edit = 'edit'; + static const add = 'add'; + static const myProfile = 'myProfile'; + static const mowadhafhi = 'mowadhafhi'; static const profile_reset_password_label = 'profile.reset_password.label'; static const profile_reset_password_username = 'profile.reset_password.username'; static const profile_reset_password_password = 'profile.reset_password.password'; diff --git a/lib/models/generic_response_model.dart b/lib/models/generic_response_model.dart index 687c514..b72fd53 100644 --- a/lib/models/generic_response_model.dart +++ b/lib/models/generic_response_model.dart @@ -35,6 +35,11 @@ import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_types.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_tickets_list.dart'; import 'package:mohem_flutter_app/models/notification_action_model.dart'; import 'package:mohem_flutter_app/models/notification_get_respond_attributes_list_model.dart'; +import 'package:mohem_flutter_app/models/payslip/get_deductions_list.dart'; +import 'package:mohem_flutter_app/models/payslip/get_earnings_list.dart'; +import 'package:mohem_flutter_app/models/payslip/get_payment_information.dart'; +import 'package:mohem_flutter_app/models/payslip/get_payslip.dart'; +import 'package:mohem_flutter_app/models/payslip/get_summary_of_payment.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_contact_clos_structure_list.dart'; @@ -142,12 +147,12 @@ class GenericResponseModel { GetContactNotificationBodyList? getContactNotificationBodyList; List? getCountriesList; List? getDayHoursTypeDetailsList; - List? getDeductionsList; + List? getDeductionsList; GetDefaultValueList? getDefaultValueList; List? getEITCollectionNotificationBodyList; List? getEITDFFStructureList; List? getEITTransactionList; - List? getEarningsList; + List? getEarningsList; List? getEmployeeAddressList; List? getEmployeeBasicDetailsList; List? getEmployeeContactsList; @@ -171,8 +176,8 @@ class GenericResponseModel { List? getOpenNotificationsNumList; List? getOpenPeriodDatesList; List? getOrganizationsSalariesList; - List? getPaymentInformationList; - List? getPayslipList; + List? getPaymentInformationList; + List? getPayslipList; List? getPendingReqDetailsList; List? getPendingReqFunctionsList; List? getPerformanceAppraisalList; @@ -193,7 +198,7 @@ class GenericResponseModel { List? getSubordinatesAttdStatusList; List? getSubordinatesLeavesList; List? getSubordinatesLeavesTotalVacationsList; - List? getSummaryOfPaymentList; + List? getSummaryOfPaymentList; List? getSwipesList; List? getTermColsStructureList; List? getTermDffStructureList; @@ -734,7 +739,12 @@ class GenericResponseModel { getDayHoursTypeDetailsList!.add(new GetDayHoursTypeDetailsList.fromJson(v)); }); } - getDeductionsList = json['GetDeductionsList']; + if (json['GetDeductionsList'] != null) { + getDeductionsList = []; + json['GetDeductionsList'].forEach((v) { + getDeductionsList!.add(new GetDeductionsList.fromJson(v)); + }); + } getDefaultValueList = json['GetDefaultValueList'] != null ? GetDefaultValueList.fromJson(json['GetDefaultValueList']) : null; getEITCollectionNotificationBodyList = json["GetEITCollectionNotificationBodyList"] == null ? null @@ -751,7 +761,12 @@ class GenericResponseModel { getEITTransactionList!.add(new GetEITTransactionList.fromJson(v)); }); } - getEarningsList = json['GetEarningsList']; + if (json['GetEarningsList'] != null) { + getEarningsList = []; + json['GetEarningsList'].forEach((v) { + getEarningsList!.add(new GetEarningsList.fromJson(v)); + }); + } if (json['GetEmployeeAddressList'] != null) { getEmployeeAddressList = []; json['GetEmployeeAddressList'].forEach((v) { @@ -820,8 +835,19 @@ class GenericResponseModel { getOpenNotificationsNumList = json['GetOpenNotificationsNumList']; getOpenPeriodDatesList = json['GetOpenPeriodDatesList']; getOrganizationsSalariesList = json['GetOrganizationsSalariesList']; - getPaymentInformationList = json['GetPaymentInformationList']; - getPayslipList = json['GetPayslipList']; + if (json['GetPaymentInformationList'] != null) { + getPaymentInformationList = []; + json['GetPaymentInformationList'].forEach((v) { + getPaymentInformationList! + .add(new GetPaymentInformationList.fromJson(v)); + }); + } + if (json['GetPayslipList'] != null) { + getPayslipList = []; + json['GetPayslipList'].forEach((v) { + getPayslipList!.add(new GetPayslipList.fromJson(v)); + }); + } getPendingReqDetailsList = json['GetPendingReqDetailsList']; getPendingReqFunctionsList = json['GetPendingReqFunctionsList']; getPerformanceAppraisalList = json['GetPerformanceAppraisalList']; @@ -877,7 +903,12 @@ class GenericResponseModel { } getSubordinatesLeavesTotalVacationsList = json['GetSubordinatesLeavesTotalVacationsList']; - getSummaryOfPaymentList = json['GetSummaryOfPaymentList']; + if (json['GetSummaryOfPaymentList'] != null) { + getSummaryOfPaymentList = []; + json['GetSummaryOfPaymentList'].forEach((v) { + getSummaryOfPaymentList!.add(new GetSummaryOfPaymentList.fromJson(v)); + }); + } getSwipesList = json['GetSwipesList']; getTermColsStructureList = json['GetTermColsStructureList']; getTermDffStructureList = json['GetTermDffStructureList']; @@ -1241,7 +1272,10 @@ class GenericResponseModel { if (this.getDayHoursTypeDetailsList != null) { data['GetDayHoursTypeDetailsList'] = this.getDayHoursTypeDetailsList!.map((v) => v.toJson()).toList(); } - data['GetDeductionsList'] = this.getDeductionsList; + if (this.getDeductionsList != null) { + data['GetDeductionsList'] = + this.getDeductionsList!.map((v) => v.toJson()).toList(); + } if (this.getDefaultValueList != null) { data['GetDefaultValueList'] = this.getDefaultValueList!.toJson(); } @@ -1252,7 +1286,10 @@ class GenericResponseModel { if (this.getEITTransactionList != null) { data['GetEITTransactionList'] = this.getEITTransactionList!.map((v) => v.toJson()).toList(); } - data['GetEarningsList'] = this.getEarningsList; + if (this.getEarningsList != null) { + data['GetEarningsList'] = + this.getEarningsList!.map((v) => v.toJson()).toList(); + } if (this.getEmployeeAddressList != null) { data['GetEmployeeAddressList'] = this.getEmployeeAddressList!.map((v) => v.toJson()).toList(); } @@ -1297,8 +1334,14 @@ class GenericResponseModel { data['GetOpenNotificationsNumList'] = this.getOpenNotificationsNumList; data['GetOpenPeriodDatesList'] = this.getOpenPeriodDatesList; data['GetOrganizationsSalariesList'] = this.getOrganizationsSalariesList; - data['GetPaymentInformationList'] = this.getPaymentInformationList; - data['GetPayslipList'] = this.getPayslipList; + if (this.getPaymentInformationList != null) { + data['GetPaymentInformationList'] = + this.getPaymentInformationList!.map((v) => v.toJson()).toList(); + } + if (this.getPayslipList != null) { + data['GetPayslipList'] = + this.getPayslipList!.map((v) => v.toJson()).toList(); + } data['GetPendingReqDetailsList'] = this.getPendingReqDetailsList; data['GetPendingReqFunctionsList'] = this.getPendingReqFunctionsList; data['GetPerformanceAppraisalList'] = this.getPerformanceAppraisalList; @@ -1341,7 +1384,10 @@ class GenericResponseModel { } data['GetSubordinatesLeavesTotalVacationsList'] = this.getSubordinatesLeavesTotalVacationsList; - data['GetSummaryOfPaymentList'] = this.getSummaryOfPaymentList; + if (this.getSummaryOfPaymentList != null) { + data['GetSummaryOfPaymentList'] = + this.getSummaryOfPaymentList!.map((v) => v.toJson()).toList(); + } data['GetSwipesList'] = this.getSwipesList; data['GetTermColsStructureList'] = this.getTermColsStructureList; data['GetTermDffStructureList'] = this.getTermDffStructureList; diff --git a/lib/models/payslip/get_deductions_list.dart b/lib/models/payslip/get_deductions_list.dart new file mode 100644 index 0000000..7a99447 --- /dev/null +++ b/lib/models/payslip/get_deductions_list.dart @@ -0,0 +1,36 @@ +class GetDeductionsList { + int? aMOUNT; + String? eLEMENTNAME; + int? fROMROWNUM; + int? nOOFROWS; + int? rOWNUM; + int? tOROWNUM; + + GetDeductionsList( + {this.aMOUNT, + this.eLEMENTNAME, + this.fROMROWNUM, + this.nOOFROWS, + this.rOWNUM, + this.tOROWNUM}); + + GetDeductionsList.fromJson(Map json) { + aMOUNT = json['AMOUNT']; + eLEMENTNAME = json['ELEMENT_NAME']; + fROMROWNUM = json['FROM_ROW_NUM']; + nOOFROWS = json['NO_OF_ROWS']; + rOWNUM = json['ROW_NUM']; + tOROWNUM = json['TO_ROW_NUM']; + } + + Map toJson() { + final Map data = new Map(); + data['AMOUNT'] = this.aMOUNT; + data['ELEMENT_NAME'] = this.eLEMENTNAME; + data['FROM_ROW_NUM'] = this.fROMROWNUM; + data['NO_OF_ROWS'] = this.nOOFROWS; + data['ROW_NUM'] = this.rOWNUM; + data['TO_ROW_NUM'] = this.tOROWNUM; + return data; + } +} \ No newline at end of file diff --git a/lib/models/payslip/get_earnings_list.dart b/lib/models/payslip/get_earnings_list.dart new file mode 100644 index 0000000..272dab3 --- /dev/null +++ b/lib/models/payslip/get_earnings_list.dart @@ -0,0 +1,37 @@ + +class GetEarningsList { + int? aMOUNT; + String? eLEMENTNAME; + int? fROMROWNUM; + int? nOOFROWS; + int? rOWNUM; + int? tOROWNUM; + + GetEarningsList( + {this.aMOUNT, + this.eLEMENTNAME, + this.fROMROWNUM, + this.nOOFROWS, + this.rOWNUM, + this.tOROWNUM}); + + GetEarningsList.fromJson(Map json) { + aMOUNT = json['AMOUNT']; + eLEMENTNAME = json['ELEMENT_NAME']; + fROMROWNUM = json['FROM_ROW_NUM']; + nOOFROWS = json['NO_OF_ROWS']; + rOWNUM = json['ROW_NUM']; + tOROWNUM = json['TO_ROW_NUM']; + } + + Map toJson() { + final Map data = new Map(); + data['AMOUNT'] = this.aMOUNT; + data['ELEMENT_NAME'] = this.eLEMENTNAME; + data['FROM_ROW_NUM'] = this.fROMROWNUM; + data['NO_OF_ROWS'] = this.nOOFROWS; + data['ROW_NUM'] = this.rOWNUM; + data['TO_ROW_NUM'] = this.tOROWNUM; + return data; + } +} \ No newline at end of file diff --git a/lib/models/payslip/get_payment_information.dart b/lib/models/payslip/get_payment_information.dart new file mode 100644 index 0000000..277b409 --- /dev/null +++ b/lib/models/payslip/get_payment_information.dart @@ -0,0 +1,33 @@ + +class GetPaymentInformationList { + String? aCCOUNTNUMBER; + String? aMOUNT; + String? bANKNAME; + String? bRANCHNAME; + String? pAYMENTMETHODNAME; + + GetPaymentInformationList( + {this.aCCOUNTNUMBER, + this.aMOUNT, + this.bANKNAME, + this.bRANCHNAME, + this.pAYMENTMETHODNAME}); + + GetPaymentInformationList.fromJson(Map json) { + aCCOUNTNUMBER = json['ACCOUNT_NUMBER']; + aMOUNT = json['AMOUNT']; + bANKNAME = json['BANK_NAME']; + bRANCHNAME = json['BRANCH_NAME']; + pAYMENTMETHODNAME = json['PAYMENT_METHOD_NAME']; + } + + Map toJson() { + final Map data = new Map(); + data['ACCOUNT_NUMBER'] = this.aCCOUNTNUMBER; + data['AMOUNT'] = this.aMOUNT; + data['BANK_NAME'] = this.bANKNAME; + data['BRANCH_NAME'] = this.bRANCHNAME; + data['PAYMENT_METHOD_NAME'] = this.pAYMENTMETHODNAME; + return data; + } +} \ No newline at end of file diff --git a/lib/models/payslip/get_payslip.dart b/lib/models/payslip/get_payslip.dart new file mode 100644 index 0000000..2bb8280 --- /dev/null +++ b/lib/models/payslip/get_payslip.dart @@ -0,0 +1,38 @@ + + +class GetPayslipList { + int? aCTIONCONTEXTID; + String? pAYMENTDATE; + String? pAYSLIPCHOICE; + String? pERIODENDDATE; + String? pERIODNAME; + String? pERIODSTARTDATE; + + GetPayslipList( + {this.aCTIONCONTEXTID, + this.pAYMENTDATE, + this.pAYSLIPCHOICE, + this.pERIODENDDATE, + this.pERIODNAME, + this.pERIODSTARTDATE}); + + GetPayslipList.fromJson(Map json) { + aCTIONCONTEXTID = json['ACTION_CONTEXT_ID']; + pAYMENTDATE = json['PAYMENT_DATE']; + pAYSLIPCHOICE = json['PAYSLIP_CHOICE']; + pERIODENDDATE = json['PERIOD_END_DATE']; + pERIODNAME = json['PERIOD_NAME']; + pERIODSTARTDATE = json['PERIOD_START_DATE']; + } + + Map toJson() { + final Map data = new Map(); + data['ACTION_CONTEXT_ID'] = this.aCTIONCONTEXTID; + data['PAYMENT_DATE'] = this.pAYMENTDATE; + data['PAYSLIP_CHOICE'] = this.pAYSLIPCHOICE; + data['PERIOD_END_DATE'] = this.pERIODENDDATE; + data['PERIOD_NAME'] = this.pERIODNAME; + data['PERIOD_START_DATE'] = this.pERIODSTARTDATE; + return data; + } +} \ No newline at end of file diff --git a/lib/models/payslip/get_summary_of_payment.dart b/lib/models/payslip/get_summary_of_payment.dart new file mode 100644 index 0000000..abf3dc4 --- /dev/null +++ b/lib/models/payslip/get_summary_of_payment.dart @@ -0,0 +1,38 @@ + + +class GetSummaryOfPaymentList { + int? tOTALDEDUCTIONSAMOUNT; + int? tOTALDEDUCTIONSPERCENTAGE; + int? tOTALEARNINGSAMOUNT; + int? tOTALEARNINGSPERCENTAGE; + int? tOTALPAYAMOUNT; + int? tOTALPAYPERCENTAGE; + + GetSummaryOfPaymentList( + {this.tOTALDEDUCTIONSAMOUNT, + this.tOTALDEDUCTIONSPERCENTAGE, + this.tOTALEARNINGSAMOUNT, + this.tOTALEARNINGSPERCENTAGE, + this.tOTALPAYAMOUNT, + this.tOTALPAYPERCENTAGE}); + + GetSummaryOfPaymentList.fromJson(Map json) { + tOTALDEDUCTIONSAMOUNT = json['TOTAL_DEDUCTIONS_AMOUNT']; + tOTALDEDUCTIONSPERCENTAGE = json['TOTAL_DEDUCTIONS_PERCENTAGE']; + tOTALEARNINGSAMOUNT = json['TOTAL_EARNINGS_AMOUNT']; + tOTALEARNINGSPERCENTAGE = json['TOTAL_EARNINGS_PERCENTAGE']; + tOTALPAYAMOUNT = json['TOTAL_PAY_AMOUNT']; + tOTALPAYPERCENTAGE = json['TOTAL_PAY_PERCENTAGE']; + } + + Map toJson() { + final Map data = new Map(); + data['TOTAL_DEDUCTIONS_AMOUNT'] = this.tOTALDEDUCTIONSAMOUNT; + data['TOTAL_DEDUCTIONS_PERCENTAGE'] = this.tOTALDEDUCTIONSPERCENTAGE; + data['TOTAL_EARNINGS_AMOUNT'] = this.tOTALEARNINGSAMOUNT; + data['TOTAL_EARNINGS_PERCENTAGE'] = this.tOTALEARNINGSPERCENTAGE; + data['TOTAL_PAY_AMOUNT'] = this.tOTALPAYAMOUNT; + data['TOTAL_PAY_PERCENTAGE'] = this.tOTALPAYPERCENTAGE; + return data; + } +} \ No newline at end of file diff --git a/lib/ui/landing/widget/app_drawer.dart b/lib/ui/landing/widget/app_drawer.dart index 4732d36..d1de8d7 100644 --- a/lib/ui/landing/widget/app_drawer.dart +++ b/lib/ui/landing/widget/app_drawer.dart @@ -1,6 +1,8 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/landing/widget/drawer_item.dart'; class AppDrawer extends StatefulWidget { @@ -20,26 +22,38 @@ class _AppDrawerState extends State { ), Expanded( child: ListView(padding: const EdgeInsets.all(21), physics: const BouncingScrollPhysics(), children: [ - const Divider(), - InkWell( - child: const DrawerItem( - 'My Profile', - icon: Icons.person, - color: Colors.grey, - ), - onTap: () { - drawerNavigator(context, AppRoutes.profile); - }), + // const Divider(), + // InkWell( + // child: const DrawerItem( + // 'My Profile', + // icon: Icons.person, + // color: Colors.grey, + // ), + // onTap: () { + // drawerNavigator(context, AppRoutes.profile); + // }), const Divider(), InkWell( - child: const DrawerItem( - 'Mowadhafhi', + child: new DrawerItem( + // 'Mowadhafhi', + LocaleKeys.myProfile.tr(), icon: Icons.person, color: Colors.grey, ), onTap: () { - drawerNavigator(context, AppRoutes.mowadhafhi); - }) + drawerNavigator(context, AppRoutes.profile); + }), + const Divider(), + InkWell( + child: new DrawerItem( + // 'Mowadhafhi', + LocaleKeys.mowadhafhi.tr(), + icon: Icons.person, + color: Colors.grey, + ), + onTap: () { + drawerNavigator(context, AppRoutes.mowadhafhi); + }) ])) ]))); } diff --git a/lib/ui/misc/request_submit_screen.dart b/lib/ui/misc/request_submit_screen.dart index 915118f..4a72756 100644 --- a/lib/ui/misc/request_submit_screen.dart +++ b/lib/ui/misc/request_submit_screen.dart @@ -87,21 +87,21 @@ class _RequestSubmitScreenState extends State { if (params!.approvalFlag == 'phone_numbers') { await ProfileApiClient().startPhoneApprovalProcess( - "SUBMIT", + LocaleKeys.submit.tr(), comments.text, params!.pItemId, params!.transactionId, ); } else if(params!.approvalFlag == 'family_member') { await ProfileApiClient().getApproves( - "SUBMIT", + LocaleKeys.submit.tr(), comments.text, params!.transactionId!.toInt(), params!.pItemId.toString(), ); } else { await MyAttendanceApiClient().startEitApprovalProcess( - "SUBMIT", + LocaleKeys.submit.tr(), comments.text, params!.pItemId, params!.transactionId, @@ -143,7 +143,7 @@ class _RequestSubmitScreenState extends State { padding: const EdgeInsets.all(21).copyWith(top: 14), physics: const BouncingScrollPhysics(), children: [ - attachmentView("Attachments"), + attachmentView(LocaleKeys.attachments.tr(),), 14.height, InputWidget( LocaleKeys.comments.tr(), @@ -233,7 +233,7 @@ class _RequestSubmitScreenState extends State { children: [ title.toText16().expanded, 6.width, - SimpleButton("Add", () async { + SimpleButton(LocaleKeys.add.tr(), () async { FilePickerResult? result = await FilePicker.platform.pickFiles(allowMultiple: true); if (result != null) { attachmentFiles = attachmentFiles + result.paths.map((path) => File(path!)).toList(); diff --git a/lib/ui/my_attendance/my_attendance_screen.dart b/lib/ui/my_attendance/my_attendance_screen.dart index e1db55c..48a3aa0 100644 --- a/lib/ui/my_attendance/my_attendance_screen.dart +++ b/lib/ui/my_attendance/my_attendance_screen.dart @@ -32,14 +32,14 @@ class MyAttendanceScreen extends StatelessWidget { ? LocaleKeys.noDataAvailable.tr().toText16().center : Column( children: [ - //commenting this because missing wipe coming as duplicate in the screen - // itemView( - // "assets/images/pdf.svg", - // LocaleKeys.missingSwipes.tr(), - // ).onPress(() { - // Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS")); - // }), - // 12.height, + // commenting this because missing wipe coming as duplicate in the screen + itemView( + "assets/images/pdf.svg", + LocaleKeys.myAttendance.tr(), + ).onPress(() { + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS")); + }), + 12.height, ListView.separated( padding: const EdgeInsets.all(21), itemBuilder: (cxt, index) => itemView( diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index 30e6d3f..cd84051 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -47,17 +47,6 @@ class _AddUpdateFamilyMemberState extends State { super.initState(); } - // void callFamilyMemberData() async { - // try { - // Utils.showLoading(context); - // callAddAndUpdateFamilyMember(); - // Utils.hideLoading(context); - // setState(() {}); - // } catch (ex) { - // Utils.hideLoading(context); - // Utils.handleException(ex, context, null); - // } - // } void callAddAndUpdateFamilyMember() async { try { diff --git a/lib/ui/profile/basic_details.dart b/lib/ui/profile/basic_details.dart index 795563e..42e165f 100644 --- a/lib/ui/profile/basic_details.dart +++ b/lib/ui/profile/basic_details.dart @@ -137,13 +137,13 @@ class _BasicDetailsState extends State { showAlertDialog(BuildContext context) { dynamic changeOrNew = 1; Widget cancelButton = TextButton( - child: Text("Cancel"), + child: Text(LocaleKeys.cancel.tr()), onPressed: () { Navigator.pop(context); }, ); Widget continueButton = TextButton( - child: Text("Next"), + child: Text(LocaleKeys.next.tr()), onPressed: () { continueDynamicForms(); }, @@ -151,7 +151,7 @@ class _BasicDetailsState extends State { StatefulBuilder alert = StatefulBuilder(builder: (context, setState) { return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0))), - title: Text("Confirm"), + title: Text(LocaleKeys.confirm.tr()), 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; @@ -159,14 +159,14 @@ class _BasicDetailsState extends State { height: height, child: Column(children: [ Text( - "Select the type of change you want to make.", + LocaleKeys.selectType.tr(), style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), Divider(), Column( children: [ ListTile( - title: Text("correct or complete the current details"), + title: Text(LocaleKeys.correctCurrentDatails.tr()), leading: Radio( value: 1, groupValue: changeOrNew, @@ -179,7 +179,7 @@ class _BasicDetailsState extends State { ), ), ListTile( - title: Text("Enter new Information because of a real change to the current details (e.g because of a change in marital status)"), + title: Text(LocaleKeys.enterNewInfo.tr()), leading: Radio( value: 2, groupValue: changeOrNew, diff --git a/lib/ui/profile/delete_family_member.dart b/lib/ui/profile/delete_family_member.dart index 9e12252..e9c252c 100644 --- a/lib/ui/profile/delete_family_member.dart +++ b/lib/ui/profile/delete_family_member.dart @@ -69,7 +69,7 @@ class _DeleteFamilyMemberState extends State { body: Column( children: [ DynamicTextFieldWidget( - "*End Date", date.toString(), + LocaleKeys.endDate.tr(), date.toString(), // suffixIconData: Icons.calendar_today, isEnable: false, onTap: () async { diff --git a/lib/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart b/lib/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart index 0fa6845..7278318 100644 --- a/lib/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart +++ b/lib/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart @@ -5,24 +5,9 @@ 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/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/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_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/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 DynamicFamilyMembersParams { String title; diff --git a/lib/ui/profile/family_members.dart b/lib/ui/profile/family_members.dart index d0e04f3..055c54c 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -116,7 +116,7 @@ class _FamilyMembersState extends State { child: InkWell( onTap: () { relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); - showUpdateAlertDialog(context, relationId!.toInt(), 2, "UPDATE"); + showUpdateAlertDialog(context, relationId!.toInt(), 2, LocaleKeys.update.tr()); }, child: RichText( text: TextSpan( @@ -201,7 +201,7 @@ class _FamilyMembersState extends State { BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3), ], ), - child: DefaultButton("Add New Family Member", () async { + child: DefaultButton(LocaleKeys.addNewFamilyMember.tr(), () async { Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID":relationId, "flag":1, "actionType":"ADD"}); // context.setLocale(const Locale("en", "US")); // to change Loacle // Profile(); @@ -231,7 +231,7 @@ class _FamilyMembersState extends State { title: Text( LocaleKeys.confirm.tr(), ), - content: Text("Are You Sure You Want to Update this Member?"), + content: Text(LocaleKeys.updateThisMember.tr()), actions: [ cancelButton, continueButton, @@ -268,7 +268,7 @@ class _FamilyMembersState extends State { title: Text( LocaleKeys.confirm.tr(), ), - content: Text("Are You Sure You Want to Remove this Member?"), + content: Text(LocaleKeys.removeThisMember.tr()), actions: [ cancelButton, continueButton, diff --git a/lib/ui/profile/phone_numbers.dart b/lib/ui/profile/phone_numbers.dart index 14ce3ff..294a0b7 100644 --- a/lib/ui/profile/phone_numbers.dart +++ b/lib/ui/profile/phone_numbers.dart @@ -69,7 +69,7 @@ class _PhoneNumbersState extends State { color: Color(0xff259CB8), ), Text( - 'Add new row', + LocaleKeys.addRow.tr(), style: TextStyle(color: Color(0xff259CB8), fontWeight: FontWeight.bold), ) ]), @@ -106,7 +106,7 @@ class _PhoneNumbersState extends State { child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ PopupMenuButton( child: DynamicTextFieldWidget( - "Please Select *", + LocaleKeys.pleaseSelect.tr(), e.pHONETYPEMEANING ?? "", isEnable: false, isPopup: true, @@ -135,7 +135,7 @@ class _PhoneNumbersState extends State { size: 18, ), Text( - 'Delete', + LocaleKeys.delete.tr(), style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold), ) ]), diff --git a/lib/ui/screens/profile/profile_screen.dart b/lib/ui/screens/profile/profile_screen.dart index 8b015b0..44a0afe 100644 --- a/lib/ui/screens/profile/profile_screen.dart +++ b/lib/ui/screens/profile/profile_screen.dart @@ -1,11 +1,13 @@ import 'dart:ui'; import 'dart:convert'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.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/utils.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/member_information_list_model.dart'; import 'package:mohem_flutter_app/ui/screens/profile/widgets/header.dart'; @@ -79,7 +81,7 @@ class _ProfileScreenState extends State { child: Row(children: [ Icon(Icons.photo, color: Colors.white), Text( - 'Edit', + LocaleKeys.edit.tr(), style: TextStyle(color: Colors.white, fontSize: 12), ) ]))), @@ -100,7 +102,7 @@ class _ProfileScreenState extends State { padding: EdgeInsets.only(left: 20, right: 20), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [Text('OK'), Text('CANCEL')], + children: [Text(LocaleKeys.ok.tr()), Text(LocaleKeys.cancel.tr())], )), BottomSheetItem( onTap: () { From 57bf34a93a6c94fc59d5ae85e9c8370a6917e1ce Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 26 Jul 2022 10:43:28 +0300 Subject: [PATCH 08/10] fix translation. --- assets/langs/ar-SA.json | 28 ++++++ assets/langs/en-US.json | 27 ++++++ lib/api/payslip/payslip_api_client.dart | 94 ------------------- lib/generated/codegen_loader.g.dart | 54 +++++++++++ lib/generated/locale_keys.g.dart | 28 ++++++ lib/ui/landing/dashboard_screen.dart | 8 +- lib/ui/landing/widget/app_drawer.dart | 6 +- .../my_attendance/my_attendance_screen.dart | 4 +- lib/ui/profile/add_update_family_member.dart | 2 +- lib/ui/profile/delete_family_member.dart | 2 +- lib/ui/profile/family_members.dart | 4 +- .../announcements/announcement_details.dart | 4 +- .../screens/announcements/announcements.dart | 6 +- lib/ui/screens/eit/add_eit.dart | 6 +- .../screens/mowadhafhi/mowadhafhi_home.dart | 2 +- .../mowadhafhi/mowadhafhi_hr_request.dart | 24 ++--- .../screens/mowadhafhi/request_details.dart | 14 +-- .../pending_transactions.dart | 8 +- .../pending_transactions_details.dart | 6 +- lib/ui/work_list/worklist_detail_screen.dart | 4 +- 20 files changed, 194 insertions(+), 137 deletions(-) delete mode 100644 lib/api/payslip/payslip_api_client.dart diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 219f367..2a0ba20 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -277,6 +277,34 @@ "add" : "اضافه", "myProfile": "معلوماتي", "mowadhafhi": "موظفي", + "searchAnnouncements": "بحث الاعلانات", + "announcements": "اعلانات", + "swipeRequest": "طلب تسجيل حضور", + "serviceType":"نوع الخدمه", + "departmentName":"اسم القسم", + "selectDepartment": "اختر القسم", + "relatedSection":"قسم ذو صله", + "selectSection": "اختيار القسم", + "relatedTopic": "عنوان ذو صله", + "selectTopic": "اختر العنوان", + "supportingDocument":"ارفاق مستند", + "mowadhafhiRequest": "طلب موظفي", + "ticketReference":"مرجع التذكره", + "section": "القسم", + "topic": "العنوان", + "actionBy":"الرد بواسطة", + "pending" : "معلق", + "pendingTransactions": "المعاملات المعلقه", + "selectRequestType":"الرجاء اختيار نوع الطلب", + "dateFrom":"من تاريخ", + "dateTo":"الى تاريخ", + "requestName":"اسم الطلب", + "createdFor":"انشاء لأجل", + "requestCreatedSuccessfully": "تم انشاء الطلب بنجاح", + "search": "Search", + "wantToReject": "هل انت متأكد تريد الرفض", + "Reject": "رفض", + "requestType":"نوع الطلب", "profile": { "reset_password": { "label": "Reset Password", diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index f66f22c..59f3bf4 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -278,6 +278,33 @@ "edit" : "Edit", "myProfile": "My Profile", "mowadhafhi": "Mowadhafhi", + "searchAnnouncements": "Search Announcements", + "announcements": "Announcements", + "swipeRequest": "Swipe Request", + "serviceType":"Service Type", + "departmentName":"Department Name", + "selectDepartment": "Select Department", + "relatedSection":"Related Section", + "selectSection": "Select Section", + "relatedTopic": "Related Topic", + "selectTopic": "Select Topic", + "supportingDocument":"Supporting Document", + "mowadhafhiRequest": "Mowadhafhi Request", + "ticketReference":"Ticket Reference", + "section": "Section", + "topic": "Topic", + "actionBy":"Action By", + "pendingTransactions": "Pending Transactions", + "selectRequestType":"Please select request type", + "dateFrom":"Date From", + "dateTo":"Date To", + "requestName":"Request Name", + "createdFor":"Created For", + "requestType":"Request Type", + "requestCreatedSuccessfully": "Request created successfully", + "search": "Search", + "wantToReject": "Are you sure want to reject?", + "reject": "Reject", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/api/payslip/payslip_api_client.dart b/lib/api/payslip/payslip_api_client.dart deleted file mode 100644 index eff8608..0000000 --- a/lib/api/payslip/payslip_api_client.dart +++ /dev/null @@ -1,94 +0,0 @@ - - -import 'dart:async'; - -import 'package:mohem_flutter_app/api/api_client.dart'; -import 'package:mohem_flutter_app/app_state/app_state.dart'; -import 'package:mohem_flutter_app/classes/consts.dart'; -import 'package:mohem_flutter_app/models/generic_response_model.dart'; -import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; -import 'package:mohem_flutter_app/models/payslip/get_deductions_list.dart'; -import 'package:mohem_flutter_app/models/payslip/get_earnings_list.dart'; -import 'package:mohem_flutter_app/models/payslip/get_payment_information.dart'; -import 'package:mohem_flutter_app/models/payslip/get_payslip.dart'; -import 'package:mohem_flutter_app/models/payslip/get_summary_of_payment.dart'; - - -class PayslipApiClient { - static final PayslipApiClient _instance = PayslipApiClient._internal(); - - PayslipApiClient._internal(); - - factory PayslipApiClient() => _instance; - - Future> getPayslip() async { - String url = "${ApiConsts.erpRest}GET_PAYSLIP"; - 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); - print(responseData); - return responseData.getPayslipList ?? []; - }, url, postParams); - } - - Future> getSummaryOfPayment() async { - String url = "${ApiConsts.erpRest}GET_SUMMARY_OF_PAYMENT"; - Map postParams = { - "P_ACTION_CONTEXT_ID": 188844253, - }; - postParams.addAll(AppState().postParamsJson); - return await ApiClient().postJsonForObject((json) { - GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData); - return responseData.getSummaryOfPaymentList ?? []; - }, url, postParams); - } - - Future> getPaymentInfo() async { - String url = "${ApiConsts.erpRest}GET_PAYMENT_INFORMATION"; - Map postParams = { - "P_ACTION_CONTEXT_ID": 188844253, - }; - postParams.addAll(AppState().postParamsJson); - return await ApiClient().postJsonForObject((json) { - GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData); - return responseData.getPaymentInformationList ?? []; - }, url, postParams); - } - - Future> getDeductionsList() async { - String url = "${ApiConsts.erpRest}GET_DEDUCTIONS"; - Map postParams = { - "P_ACTION_CONTEXT_ID": 188844253, - "P_PAGE_LIMIT": 100, - "P_PAGE_NUM": 1 - }; - postParams.addAll(AppState().postParamsJson); - return await ApiClient().postJsonForObject((json) { - GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData); - return responseData.getDeductionsList ?? []; - }, url, postParams); - } - - - Future> getEarningsList() async { - String url = "${ApiConsts.erpRest}GET_EARNINGS"; - Map postParams = { - "P_ACTION_CONTEXT_ID": 188844253, - "P_PAGE_LIMIT": 100, - "P_PAGE_NUM": 1 - }; - postParams.addAll(AppState().postParamsJson); - return await ApiClient().postJsonForObject((json) { - GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - print(responseData); - return responseData.getEarningsList ?? []; - }, url, postParams); - } -} \ No newline at end of file diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 13b2b3e..2d198cb 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -293,6 +293,34 @@ class CodegenLoader extends AssetLoader{ "add": "اضافه", "myProfile": "معلوماتي", "mowadhafhi": "موظفي", + "searchAnnouncements": "بحث الاعلانات", + "announcements": "اعلانات", + "swipeRequest": "طلب تسجيل حضور", + "serviceType": "نوع الخدمه", + "departmentName": "اسم القسم", + "selectDepartment": "اختر القسم", + "relatedSection": "قسم ذو صله", + "selectSection": "اختيار القسم", + "relatedTopic": "عنوان ذو صله", + "selectTopic": "اختر العنوان", + "supportingDocument": "ارفاق مستند", + "mowadhafhiRequest": "طلب موظفي", + "ticketReference": "مرجع التذكره", + "section": "القسم", + "topic": "العنوان", + "actionBy": "الرد بواسطة", + "pending": "معلق", + "pendingTransactions": "المعاملات المعلقه", + "selectRequestType": "الرجاء اختيار نوع الطلب", + "dateFrom": "من تاريخ", + "dateTo": "الى تاريخ", + "requestName": "اسم الطلب", + "createdFor": "انشاء لأجل", + "requestCreatedSuccessfully": "تم انشاء الطلب بنجاح", + "search": "Search", + "wantToReject": "هل انت متأكد تريد الرفض", + "Reject": "رفض", + "requestType": "نوع الطلب", "profile": { "reset_password": { "label": "Reset Password", @@ -604,6 +632,32 @@ static const Map en_US = { "edit": "Edit", "myProfile": "My Profile", "mowadhafhi": "Mowadhafhi", + "searchAnnouncements": "Search Announcements", + "announcements": "Announcements", + "swipeRequest": "Swipe Request", + "serviceType": "Service Type", + "departmentName": "Department Name", + "selectDepartment": "Select Department", + "relatedSection": "Related Section", + "selectSection": "Select Section", + "relatedTopic": "Related Topic", + "selectTopic": "Select Topic", + "supportingDocument": "Supporting Document", + "mowadhafhiRequest": "Mowadhafhi Request", + "ticketReference": "Ticket Reference", + "section": "Section", + "topic": "Topic", + "actionBy": "Action By", + "pendingTransactions": "Pending Transactions", + "selectRequestType": "Please select request type", + "dateFrom": "Date From", + "dateTo": "Date To", + "requestName": "Request Name", + "createdFor": "Created For", + "requestType": "Request Type", + "requestCreatedSuccessfully": "Request created successfully", + "search": "Search", + "wantToReject": "Are you sure want to reject?", "profile": { "reset_password": { "label": "Reset Password", diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 07c5cde..8b9f42a 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -278,6 +278,34 @@ abstract class LocaleKeys { static const add = 'add'; static const myProfile = 'myProfile'; static const mowadhafhi = 'mowadhafhi'; + static const searchAnnouncements = 'searchAnnouncements'; + static const announcements = 'announcements'; + static const swipeRequest = 'swipeRequest'; + static const serviceType = 'serviceType'; + static const departmentName = 'departmentName'; + static const selectDepartment = 'selectDepartment'; + static const relatedSection = 'relatedSection'; + static const selectSection = 'selectSection'; + static const relatedTopic = 'relatedTopic'; + static const selectTopic = 'selectTopic'; + static const supportingDocument = 'supportingDocument'; + static const mowadhafhiRequest = 'mowadhafhiRequest'; + static const ticketReference = 'ticketReference'; + static const section = 'section'; + static const topic = 'topic'; + static const actionBy = 'actionBy'; + static const pending = 'pending'; + static const pendingTransactions = 'pendingTransactions'; + static const selectRequestType = 'selectRequestType'; + static const dateFrom = 'dateFrom'; + static const dateTo = 'dateTo'; + static const requestName = 'requestName'; + static const createdFor = 'createdFor'; + static const requestCreatedSuccessfully = 'requestCreatedSuccessfully'; + static const search = 'search'; + static const wantToReject = 'wantToReject'; + static const Reject = 'Reject'; + static const requestType = 'requestType'; static const profile_reset_password_label = 'profile.reset_password.label'; static const profile_reset_password_username = 'profile.reset_password.username'; static const profile_reset_password_password = 'profile.reset_password.password'; diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index c125c2d..74688da 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -334,7 +334,7 @@ class _DashboardScreenState extends State { height: 20, ), ), - label: 'Home', + label: LocaleKeys.home.tr(), ), BottomNavigationBarItem( icon: Padding( @@ -345,7 +345,7 @@ class _DashboardScreenState extends State { height: 20, ), ), - label: 'Create Request', + label: LocaleKeys.createRequest.tr(), ), BottomNavigationBarItem( icon: Padding( @@ -356,7 +356,7 @@ class _DashboardScreenState extends State { height: 20, ), ), - label: 'Work List', + label: LocaleKeys.workList.tr(), ), BottomNavigationBarItem( icon: Padding( @@ -367,7 +367,7 @@ class _DashboardScreenState extends State { height: 20, ), ), - label: 'Items for Sale', + label: LocaleKeys.itemsForSale.tr(), ), ], currentIndex: 0, diff --git a/lib/ui/landing/widget/app_drawer.dart b/lib/ui/landing/widget/app_drawer.dart index 9b63ded..fb7421b 100644 --- a/lib/ui/landing/widget/app_drawer.dart +++ b/lib/ui/landing/widget/app_drawer.dart @@ -1,6 +1,8 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:mohem_flutter_app/config/routes.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/ui/landing/widget/drawer_item.dart'; class AppDrawer extends StatefulWidget { @@ -26,7 +28,7 @@ class _AppDrawerState extends State { children: [ const Divider(), InkWell( - child: const DrawerItem( + child: new DrawerItem( //'My Profile', LocaleKeys.myProfile.tr(), icon: Icons.person, @@ -37,7 +39,7 @@ class _AppDrawerState extends State { }), const Divider(), InkWell( - child: const DrawerItem( + child: new DrawerItem( // 'Mowadhafhi', LocaleKeys.mowadhafhi.tr(), icon: Icons.person, diff --git a/lib/ui/my_attendance/my_attendance_screen.dart b/lib/ui/my_attendance/my_attendance_screen.dart index e037d6f..cfa8eee 100644 --- a/lib/ui/my_attendance/my_attendance_screen.dart +++ b/lib/ui/my_attendance/my_attendance_screen.dart @@ -38,8 +38,8 @@ class MyAttendanceScreen extends StatelessWidget { "assets/images/pdf.svg", LocaleKeys.myAttendance.tr(), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS")); - }), + Navigator.pushNamed(context, AppRoutes.monthlyAttendance, arguments: DynamicListViewParams(LocaleKeys.missingSwipes.tr(), "HMG_OTL_MISSING_SWIPE_EIT_SS")); + }).paddingOnly(left: 21, right: 21), 12.height, ListView.separated( padding: const EdgeInsets.all(21), diff --git a/lib/ui/profile/add_update_family_member.dart b/lib/ui/profile/add_update_family_member.dart index cd84051..777f00d 100644 --- a/lib/ui/profile/add_update_family_member.dart +++ b/lib/ui/profile/add_update_family_member.dart @@ -361,7 +361,7 @@ else if(args['actionType']== "UPDATE") { return time; } - footer() { + Widget footer() { return Container( color: MyColors.white, child: Row( diff --git a/lib/ui/profile/delete_family_member.dart b/lib/ui/profile/delete_family_member.dart index e9c252c..a699fc9 100644 --- a/lib/ui/profile/delete_family_member.dart +++ b/lib/ui/profile/delete_family_member.dart @@ -88,7 +88,7 @@ class _DeleteFamilyMemberState extends State { )); } - footer() { + Widget footer() { return Container( color: MyColors.white, child: Row( diff --git a/lib/ui/profile/family_members.dart b/lib/ui/profile/family_members.dart index 3578aff..ffb52c2 100644 --- a/lib/ui/profile/family_members.dart +++ b/lib/ui/profile/family_members.dart @@ -200,7 +200,7 @@ class _FamilyMembersState extends State { )); } - footer() { + Widget footer() { return Container( decoration: BoxDecoration( // borderRadius: BorderRadius.circular(10), @@ -252,7 +252,7 @@ class _FamilyMembersState extends State { ); } - showRemoveAlertDialog(BuildContext context, int relationId) { + void showRemoveAlertDialog(BuildContext context, int relationId) { Widget cancelButton = TextButton( child: Text( LocaleKeys.cancel.tr(), diff --git a/lib/ui/screens/announcements/announcement_details.dart b/lib/ui/screens/announcements/announcement_details.dart index 6909be5..a788b5d 100644 --- a/lib/ui/screens/announcements/announcement_details.dart +++ b/lib/ui/screens/announcements/announcement_details.dart @@ -1,9 +1,11 @@ import 'dart:convert'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_html/flutter_html.dart'; import 'package:mohem_flutter_app/api/pending_transactions_api_client.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; +import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/get_announcement_details.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; @@ -33,7 +35,7 @@ class _AnnouncementDetailsState extends State { backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Announcements", + title: LocaleKeys.announcements.tr(), ), body: SingleChildScrollView( child: Container( diff --git a/lib/ui/screens/announcements/announcements.dart b/lib/ui/screens/announcements/announcements.dart index cad3a9a..f367157 100644 --- a/lib/ui/screens/announcements/announcements.dart +++ b/lib/ui/screens/announcements/announcements.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/pending_transactions_api_client.dart'; import 'package:mohem_flutter_app/app_state/app_state.dart'; @@ -8,6 +9,7 @@ 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/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/get_announcements.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; @@ -40,7 +42,7 @@ class _AnnouncementsState extends State { backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Announcements", + title: LocaleKeys.announcements.tr(), ), body: getAnnouncementsObject.isNotEmpty ? Container( @@ -54,7 +56,7 @@ class _AnnouncementsState extends State { margin: const EdgeInsets.fromLTRB(12.0, 0.0, 12.0, 0.0), child: DynamicTextFieldWidget( "Search", - "Search Announcements", + LocaleKeys.searchAnnouncements.tr(), isEnable: true, suffixIconData: Icons.search, isPopup: false, diff --git a/lib/ui/screens/eit/add_eit.dart b/lib/ui/screens/eit/add_eit.dart index 0dbcd1c..629fbd0 100644 --- a/lib/ui/screens/eit/add_eit.dart +++ b/lib/ui/screens/eit/add_eit.dart @@ -1,5 +1,7 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/classes/colors.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/dashboard/menus.dart'; import 'package:mohem_flutter_app/provider/eit_provider_model.dart'; @@ -45,10 +47,10 @@ class AddEITScreen extends StatelessWidget { labelColor: Colors.white, tabs: [ Tab( - text: "Missing Swipe", + text: LocaleKeys.missingSwipes.tr(), ), Tab( - text: "Swipe Request", + text: LocaleKeys.swipeRequest.tr(), ), ], ), diff --git a/lib/ui/screens/mowadhafhi/mowadhafhi_home.dart b/lib/ui/screens/mowadhafhi/mowadhafhi_home.dart index f3ae4f8..edf6b03 100644 --- a/lib/ui/screens/mowadhafhi/mowadhafhi_home.dart +++ b/lib/ui/screens/mowadhafhi/mowadhafhi_home.dart @@ -34,7 +34,7 @@ class _MowadhafhiHomeState extends State { backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Mowadhafhi Request", + title: LocaleKeys.mowadhafhiRequest.tr(), ), body: Container( margin: const EdgeInsets.only(top: 10.0), diff --git a/lib/ui/screens/mowadhafhi/mowadhafhi_hr_request.dart b/lib/ui/screens/mowadhafhi/mowadhafhi_hr_request.dart index 4ee819d..b557ab9 100644 --- a/lib/ui/screens/mowadhafhi/mowadhafhi_hr_request.dart +++ b/lib/ui/screens/mowadhafhi/mowadhafhi_hr_request.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'dart:io'; +import 'package:easy_localization/easy_localization.dart'; import 'package:file_picker/file_picker.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/mowadhafhi/mowadhafhi_api_client.dart'; @@ -9,6 +10,7 @@ import 'package:mohem_flutter_app/classes/utils.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/mowadhafhi/get_department_sections.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_project_departments.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_projects.dart'; @@ -56,7 +58,7 @@ class _MowadhafhiHRRequestState extends State { backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Mowadhafhi Request", + title: LocaleKeys.mowadhafhiRequest.tr(), ), body: SingleChildScrollView( child: getTicketTypesList.isNotEmpty @@ -78,7 +80,7 @@ class _MowadhafhiHRRequestState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Service Type: ".toText16(), + LocaleKeys.serviceType.tr().toText16(), 12.height, Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, @@ -108,11 +110,11 @@ class _MowadhafhiHRRequestState extends State { ], ), 12.height, - "Department Name: ".toText16(), + LocaleKeys.departmentName.tr().toText16(), 12.height, PopupMenuButton( child: DynamicTextFieldWidget( - "Select Department", + LocaleKeys.selectDepartment.tr(), selectedDepartment?.departmentName ?? "", isEnable: false, isPopup: true, @@ -128,11 +130,11 @@ class _MowadhafhiHRRequestState extends State { setState(() {}); }), 12.height, - "Related Section: ".toText16(), + LocaleKeys.relatedSection.tr().toText16(), 12.height, PopupMenuButton( child: DynamicTextFieldWidget( - "Select Section", + LocaleKeys.selectSection.tr(), selectedSection?.sectionName ?? "", isEnable: false, isPopup: true, @@ -148,11 +150,11 @@ class _MowadhafhiHRRequestState extends State { setState(() {}); }), 12.height, - "Related Topic: ".toText16(), + LocaleKeys.relatedTopic.tr().toText16(), 12.height, PopupMenuButton( child: DynamicTextFieldWidget( - "Select Topic", + LocaleKeys.selectTopic.tr(), selectedTopic?.topicName ?? "", isEnable: false, isPopup: true, @@ -168,11 +170,11 @@ class _MowadhafhiHRRequestState extends State { setState(() {}); }), 12.height, - "Supporting Document: ".toText16(), + LocaleKeys.supportingDocument.tr().toText16(), 12.height, attachmentView("Attachments"), 12.height, - "Description: ".toText16(), + LocaleKeys.description.tr().toText16(), 12.height, DynamicTextFieldWidget( "", @@ -203,7 +205,7 @@ class _MowadhafhiHRRequestState extends State { 12.width, Expanded( child: DefaultButton( - "Submit", + LocaleKeys.submit.tr(), !checkValidation() ? null : () { diff --git a/lib/ui/screens/mowadhafhi/request_details.dart b/lib/ui/screens/mowadhafhi/request_details.dart index 9426929..aa22bdd 100644 --- a/lib/ui/screens/mowadhafhi/request_details.dart +++ b/lib/ui/screens/mowadhafhi/request_details.dart @@ -1,9 +1,11 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/mowadhafhi/mowadhafhi_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/int_extensions.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/mowadhafhi/get_ticket_details.dart'; import 'package:mohem_flutter_app/models/mowadhafhi/get_ticket_transactions.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; @@ -41,7 +43,7 @@ class _RequestDetailsState extends State { backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Mowadhafhi Request", + title: LocaleKeys.mowadhafhiRequest.tr(), ), body: SingleChildScrollView( child: getTicketsByEmployeeList.length != 0 @@ -74,16 +76,16 @@ class _RequestDetailsState extends State { ], ), 8.height, - "Ticket Reference: ".toText12(color: MyColors.grey98Color), + LocaleKeys.ticketReference.tr().toText12(color: MyColors.grey98Color), getTicketsByEmployeeList![0].ticketReferenceNo!.toText14(color: MyColors.grey57Color), 8.height, - "Section: ".toText12(color: MyColors.grey98Color), + LocaleKeys.section.tr().toText12(color: MyColors.grey98Color), getTicketsByEmployeeList![0].sectionName!.toText14(color: MyColors.grey57Color), 8.height, - "Topic: ".toText12(color: MyColors.grey98Color), + LocaleKeys.topic.tr().toText12(color: MyColors.grey98Color), getTicketsByEmployeeList![0].topicName!.toText14(color: MyColors.grey57Color), 8.height, - "Description: ".toText12(color: MyColors.grey98Color), + LocaleKeys.description.tr().toText12(color: MyColors.grey98Color), getTicketsByEmployeeList![0].description!.toText14(color: MyColors.grey57Color), ], ), @@ -125,7 +127,7 @@ class _RequestDetailsState extends State { children: [ Row( children: [ - "Action By: ".toText14(color: MyColors.grey57Color), + LocaleKeys.actionBy.tr().toText14(color: MyColors.grey57Color), getTicketTransactionsList![index].actionBy!.toText14(color: MyColors.grey57Color), ], ), diff --git a/lib/ui/screens/pending_transactions/pending_transactions.dart b/lib/ui/screens/pending_transactions/pending_transactions.dart index 98d7fe3..997ec0d 100644 --- a/lib/ui/screens/pending_transactions/pending_transactions.dart +++ b/lib/ui/screens/pending_transactions/pending_transactions.dart @@ -42,7 +42,7 @@ class _PendingTransactionsState extends State { backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Pending Transactions", + title: LocaleKeys.pendingTransactions.tr(), ), body: SingleChildScrollView( child: Container( @@ -65,7 +65,7 @@ class _PendingTransactionsState extends State { 12.height, PopupMenuButton( child: DynamicTextFieldWidget( - "Please select request type", + LocaleKeys.selectRequestType.tr(), selectedFunction?.fUNCTIONPROMPT ?? "", isEnable: false, isPopup: true, @@ -81,7 +81,7 @@ class _PendingTransactionsState extends State { }), 12.height, DynamicTextFieldWidget( - "Date From: ", + LocaleKeys.dateFrom.tr(), selectedDateFrom.toString().split(" ")[0], suffixIconData: Icons.calendar_today, isEnable: false, @@ -92,7 +92,7 @@ class _PendingTransactionsState extends State { ).paddingOnly(bottom: 12), 12.height, DynamicTextFieldWidget( - "Date To: ", + LocaleKeys.dateTo.tr(), selectedDateTo.toString().split(" ")[0], suffixIconData: Icons.calendar_today, isEnable: false, diff --git a/lib/ui/screens/pending_transactions/pending_transactions_details.dart b/lib/ui/screens/pending_transactions/pending_transactions_details.dart index 1877c5b..2c8895a 100644 --- a/lib/ui/screens/pending_transactions/pending_transactions_details.dart +++ b/lib/ui/screens/pending_transactions/pending_transactions_details.dart @@ -1,9 +1,11 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/pending_transactions_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/int_extensions.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/pending_transactions/get_pending_transactions_details.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; @@ -43,7 +45,7 @@ class _PendingTransactionsDetailsState extends State backgroundColor: Colors.white, appBar: AppBarWidget( context, - title: "Pending Transactions", + title: LocaleKeys.pendingTransactions.tr(), ), body: getPendingTransactionsDetails.isNotEmpty ? Container( @@ -105,7 +107,7 @@ class _PendingTransactionsDetailsState extends State padding: const EdgeInsets.only(top: 0.0), child: Row( children: [ - "Request Type: ".toText14(color: MyColors.grey57Color), + LocaleKeys.requestType.tr().toText14(color: MyColors.grey57Color), getPendingTransactionsDetails[index].rEQUESTTYPE!.toText14(color: MyColors.redColor), ], ), diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 6ad0a79..d2a0e0b 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -395,8 +395,8 @@ class _WorkListDetailScreenState extends State { showDialog( context: context, builder: (cxt) => ConfirmDialog( - message: "Are you sure want to reject?", - okTitle: "Reject", + message: LocaleKeys.wantToReject.tr(), + okTitle: LocaleKeys.reject.tr(), onTap: () async { Navigator.pop(cxt); Utils.showLoading(context); From 1604cba140f8b482b17f261450b73b372b7bcb8e Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Tue, 26 Jul 2022 14:57:37 +0300 Subject: [PATCH 09/10] fix translation. --- assets/langs/ar-SA.json | 2 +- lib/generated/codegen_loader.g.dart | 2 +- lib/ui/attendance/monthly_attendance.dart | 3 ++- lib/widgets/shimmer/dashboard_shimmer_widget.dart | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 2a0ba20..60f956f 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -41,7 +41,7 @@ "confirmPassword": "تأكيد كلمة المرور", "update": "تحديث", "title": "عنوان", - "home": "مسكن", + "home": "الرئيسية", "mySalary": "راتبي", "createRequest": "إنشاء طلب", "forgotPassword": "هل نسيت كلمة السر", diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index 2d198cb..9fc4efe 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -57,7 +57,7 @@ class CodegenLoader extends AssetLoader{ "confirmPassword": "تأكيد كلمة المرور", "update": "تحديث", "title": "عنوان", - "home": "مسكن", + "home": "الرئيسية", "mySalary": "راتبي", "createRequest": "إنشاء طلب", "forgotPassword": "هل نسيت كلمة السر", diff --git a/lib/ui/attendance/monthly_attendance.dart b/lib/ui/attendance/monthly_attendance.dart index de5c9c9..5077c41 100644 --- a/lib/ui/attendance/monthly_attendance.dart +++ b/lib/ui/attendance/monthly_attendance.dart @@ -286,6 +286,7 @@ class _MonthlyAttendanceState extends State { showDatePickerButton: false, controller: _calendarController, headerHeight: 0, + viewNavigationMode: ViewNavigationMode.none, todayHighlightColor: MyColors.grey3AColor, showNavigationArrow: false, showCurrentTimeIndicator: false, @@ -302,7 +303,7 @@ class _MonthlyAttendanceState extends State { dayFormat: 'EEE', showTrailingAndLeadingDates: false, showAgenda: false, - navigationDirection: MonthNavigationDirection.horizontal, + //navigationDirection: MonthNavigationDirection.vertical, monthCellStyle: MonthCellStyle( textStyle: TextStyle( fontStyle: FontStyle.normal, diff --git a/lib/widgets/shimmer/dashboard_shimmer_widget.dart b/lib/widgets/shimmer/dashboard_shimmer_widget.dart index 5b5bd60..cd5d88f 100644 --- a/lib/widgets/shimmer/dashboard_shimmer_widget.dart +++ b/lib/widgets/shimmer/dashboard_shimmer_widget.dart @@ -174,7 +174,7 @@ class ServicesMenuShimmer extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.end, children: [ Expanded( - child: "Attendance".toText11(isBold: false).toShimmer(), + child: LocaleKeys.attendance.tr().toText11(isBold: false).toShimmer(), ), 6.width, SvgPicture.asset("assets/images/arrow_next.svg").paddingOnly(bottom: 4).toShimmer() From 2e5a8e7a6bddecbdf89e2422aa20b9dcd495841d Mon Sep 17 00:00:00 2001 From: Fatimah Alshammari Date: Wed, 27 Jul 2022 14:46:16 +0300 Subject: [PATCH 10/10] fix issue. --- lib/ui/attendance/monthly_attendance.dart | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/ui/attendance/monthly_attendance.dart b/lib/ui/attendance/monthly_attendance.dart index 5077c41..1206ebf 100644 --- a/lib/ui/attendance/monthly_attendance.dart +++ b/lib/ui/attendance/monthly_attendance.dart @@ -186,7 +186,7 @@ class _MonthlyAttendanceState extends State { ), Container( margin: const EdgeInsets.only(left: 5, right: 5), - child: "${LocaleKeys.present.tr()} ${getTimeCardSummaryList!.aTTENDEDDAYS}".toText16(isBold: true, color: MyColors.lightGreenColor), + child: "${LocaleKeys.present.tr()} ${getTimeCardSummaryList?.aTTENDEDDAYS}".toText16(isBold: true, color: MyColors.lightGreenColor), ), ], ).paddingOnly(left: 21, right: 23), @@ -203,7 +203,7 @@ class _MonthlyAttendanceState extends State { ), Container( margin: const EdgeInsets.only(left: 5, right: 5), - child: "${LocaleKeys.absent.tr()} ${getTimeCardSummaryList!.aBSENTDAYS}".toText16( + child: "${LocaleKeys.absent.tr()} ${getTimeCardSummaryList?.aBSENTDAYS}".toText16( isBold: true, color: MyColors.backgroundBlackColor, ), @@ -319,7 +319,7 @@ class _MonthlyAttendanceState extends State { if (details.date.month == formattedDate.month && details.date.year == formattedDate.year) { int val = details.date.day; //check day is off - if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList[val - 1].dAYTYPE == 'OFF') { + if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList?[val - 1].dAYTYPE == 'OFF') { return Container( margin: const EdgeInsets.all(4), decoration: BoxDecoration( @@ -338,7 +338,7 @@ class _MonthlyAttendanceState extends State { ); } //check day is Present - else if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'Y') { + else if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'Y') { return Container( margin: const EdgeInsets.all(4), decoration: BoxDecoration( @@ -369,7 +369,7 @@ class _MonthlyAttendanceState extends State { ); } //check day is Absent - else if (getDayHoursTypeDetailsList[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList[val - 1].aBSENTFLAG == 'Y') { + else if (getDayHoursTypeDetailsList?[val - 1].aTTENDEDFLAG == 'N' && getDayHoursTypeDetailsList?[val - 1].aBSENTFLAG == 'Y') { return Container( margin: const EdgeInsets.all(4), decoration: BoxDecoration(