diff --git a/assets/images/services_icons/change_bank_details.svg b/assets/images/services_icons/change_bank_details.svg new file mode 100644 index 0000000..ac53bed --- /dev/null +++ b/assets/images/services_icons/change_bank_details.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/services_icons/employee_certificates.svg b/assets/images/services_icons/employee_certificates.svg new file mode 100644 index 0000000..6333b3c --- /dev/null +++ b/assets/images/services_icons/employee_certificates.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/services_icons/housing_allowance.svg b/assets/images/services_icons/housing_allowance.svg new file mode 100644 index 0000000..bda38d3 --- /dev/null +++ b/assets/images/services_icons/housing_allowance.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/services_icons/monthly_attendance.svg b/assets/images/services_icons/monthly_attendance.svg new file mode 100644 index 0000000..b77ccc3 --- /dev/null +++ b/assets/images/services_icons/monthly_attendance.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/my_attendance.svg b/assets/images/services_icons/my_attendance.svg new file mode 100644 index 0000000..ec35835 --- /dev/null +++ b/assets/images/services_icons/my_attendance.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/my_leaves.svg b/assets/images/services_icons/my_leaves.svg new file mode 100644 index 0000000..3c16f47 --- /dev/null +++ b/assets/images/services_icons/my_leaves.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/services_icons/other_requests.svg b/assets/images/services_icons/other_requests.svg new file mode 100644 index 0000000..446a085 --- /dev/null +++ b/assets/images/services_icons/other_requests.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/payslips.svg b/assets/images/services_icons/payslips.svg new file mode 100644 index 0000000..ca9fa88 --- /dev/null +++ b/assets/images/services_icons/payslips.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/services_icons/profile_info.svg b/assets/images/services_icons/profile_info.svg new file mode 100644 index 0000000..db08144 --- /dev/null +++ b/assets/images/services_icons/profile_info.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/ticket_bal.svg b/assets/images/services_icons/ticket_bal.svg new file mode 100644 index 0000000..8fadde8 --- /dev/null +++ b/assets/images/services_icons/ticket_bal.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/services_icons/vacation_rule.svg b/assets/images/services_icons/vacation_rule.svg new file mode 100644 index 0000000..0a536f7 --- /dev/null +++ b/assets/images/services_icons/vacation_rule.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/assets/images/services_icons/work_from_home.svg b/assets/images/services_icons/work_from_home.svg new file mode 100644 index 0000000..a807320 --- /dev/null +++ b/assets/images/services_icons/work_from_home.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/worklist/answer_hr.svg b/assets/images/worklist/answer_hr.svg new file mode 100644 index 0000000..ed7c211 --- /dev/null +++ b/assets/images/worklist/answer_hr.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/assets/images/worklist/approve_and_forward.svg b/assets/images/worklist/approve_and_forward.svg new file mode 100644 index 0000000..ac96589 --- /dev/null +++ b/assets/images/worklist/approve_and_forward.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/worklist/doable.svg b/assets/images/worklist/doable.svg new file mode 100644 index 0000000..2eec837 --- /dev/null +++ b/assets/images/worklist/doable.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/worklist/forward.svg b/assets/images/worklist/forward.svg new file mode 100644 index 0000000..367ad5c --- /dev/null +++ b/assets/images/worklist/forward.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/worklist/not_doable.svg b/assets/images/worklist/not_doable.svg new file mode 100644 index 0000000..7ed42e4 --- /dev/null +++ b/assets/images/worklist/not_doable.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/images/worklist/report_generated.svg b/assets/images/worklist/report_generated.svg new file mode 100644 index 0000000..83c293c --- /dev/null +++ b/assets/images/worklist/report_generated.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/worklist/return.svg b/assets/images/worklist/return.svg new file mode 100644 index 0000000..5f67f12 --- /dev/null +++ b/assets/images/worklist/return.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/worklist/transfer.svg b/assets/images/worklist/transfer.svg new file mode 100644 index 0000000..8bebb56 --- /dev/null +++ b/assets/images/worklist/transfer.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/worklist/update_action.svg b/assets/images/worklist/update_action.svg new file mode 100644 index 0000000..7814f10 --- /dev/null +++ b/assets/images/worklist/update_action.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/lib/api/my_attendance_api_client.dart b/lib/api/my_attendance_api_client.dart index c11885c..9bb16a8 100644 --- a/lib/api/my_attendance_api_client.dart +++ b/lib/api/my_attendance_api_client.dart @@ -22,8 +22,8 @@ class MyAttendanceApiClient { String url = "${ApiConsts.erpRest}GET_EIT_TRANSACTIONS"; Map postParams = {"P_PAGE_LIMIT": 50, "P_PAGE_NUM": 1, "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName}; postParams.addAll(AppState().postParamsJson); - // postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty){ + // postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; // AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = empID; print(empID); @@ -38,7 +38,7 @@ class MyAttendanceApiClient { String url = "${ApiConsts.erpRest}GET_EIT_DFF_STRUCTURE"; Map postParams = {"P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_FUNCTION_NAME": pFunctionName}; postParams.addAll(AppState().postParamsJson); - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { @@ -47,21 +47,21 @@ class MyAttendanceApiClient { }, url, postParams); } - Future> getValueSetValues(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list,{ String? empID, String? parentValue}) async { + Future> getValueSetValues(String pSegmentName, String pDescFlexContextCode, String pDescFlexName, List> list, {String? empID, String? parentValue}) async { String url = "${ApiConsts.erpRest}GET_VALUE_SET_VALUES"; Map postParams = { "P_SELECTED_RESP_ID": -999, "P_MENU_TYPE": "E", "P_PAGE_LIMIT": 1000, "P_PAGE_NUM": 1, - "P_PARENT_VALUE": empID!.isNotEmpty? parentValue : null, + "P_PARENT_VALUE": empID!.isNotEmpty ? parentValue : null, "P_SEGMENT_NAME": pSegmentName, "P_DESC_FLEX_CONTEXT_CODE": pDescFlexContextCode, "P_DESC_FLEX_NAME": pDescFlexName, "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + if (empID.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { @@ -82,7 +82,7 @@ class MyAttendanceApiClient { "GetValueSetValuesTBL": list, }; postParams.addAll(AppState().postParamsJson); - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { @@ -91,7 +91,7 @@ class MyAttendanceApiClient { }, url, postParams); } - Future validateEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list, { String? empID}) async { + Future validateEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list, {String? empID}) async { String url = "${ApiConsts.erpRest}VALIDATE_EIT_TRANSACTION"; Map postParams = { "P_SELECTED_RESP_ID": -999, @@ -101,7 +101,7 @@ class MyAttendanceApiClient { "EITTransactionTBL": list, }; postParams.addAll(AppState().postParamsJson); - if('P_SELECTED_EMPLOYEE_NUMBER'.isNotEmpty) { + if (empID!.isNotEmpty) { postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; } return await ApiClient().postJsonForObject((json) { @@ -110,7 +110,7 @@ class MyAttendanceApiClient { }, url, postParams); } - Future submitEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list) async { + Future submitEitTransaction(String pDescFlexContextCode, String pFunctionName, List> list, {String? empID}) async { String url = "${ApiConsts.erpRest}SUBMIT_EIT_TRANSACTION"; Map postParams = { "P_SELECTED_RESP_ID": -999, @@ -121,6 +121,9 @@ class MyAttendanceApiClient { "EITTransactionTBLModel": list, }; postParams.addAll(AppState().postParamsJson); + if (empID!.isNotEmpty) { + postParams['P_SELECTED_EMPLOYEE_NUMBER'] = empID; + } return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); return responseData.submitEITTransactionList!; //ESERVICESDV.fromJson(responseData.getDefaultValueList!.toJson()); @@ -129,12 +132,7 @@ class MyAttendanceApiClient { Future reSubmitEitTransaction(String itemKey, var notifID, List> list) async { String url = "${ApiConsts.erpRest}RESUBMIT_EIT_TRANSACTION"; - Map postParams = { - "P_NOTIFICATION_ID": notifID, - "P_ITEM_KEY": itemKey, - "P_EMAIL_ADDRESS": AppState().memberInformationList!.eMPLOYEEEMAILADDRESS, - "EITTransactionTBL": list - }; + Map postParams = {"P_NOTIFICATION_ID": notifID, "P_ITEM_KEY": itemKey, "P_EMAIL_ADDRESS": AppState().memberInformationList!.eMPLOYEEEMAILADDRESS, "EITTransactionTBL": list}; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { GenericResponseModel responseData = GenericResponseModel.fromJson(json); diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index 64aaae8..b52ef3e 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -44,7 +44,7 @@ extension WidgetExtensions on Widget { child: this, ); - Widget objectContainerView({String title = "", String note = "", bool disablePadding = false, double radius = 15}) { + Widget objectContainerView({String title = "", String note = "", bool disablePadding = false, double radius = 15, bool center = true}) { return Container( padding: disablePadding ? EdgeInsets.zero : const EdgeInsets.only(top: 15, bottom: 15, left: 14, right: 14), decoration: BoxDecoration( @@ -58,7 +58,7 @@ extension WidgetExtensions on Widget { ), ], ), - alignment: Alignment.center, + alignment: center == true ? Alignment.center : null, child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, 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 6cda072..ad7ad50 100644 --- a/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart +++ b/lib/ui/my_attendance/dynamic_screens/dynamic_input_screen.dart @@ -92,8 +92,9 @@ class _DynamicInputScreenState extends State { 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()); - genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID:dynamicParams!.selectedEmp ??''); - SubmitEITTransactionList submitEITTransactionList = await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values); + genericResponseModel = await MyAttendanceApiClient().validateEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp ?? ''); + SubmitEITTransactionList submitEITTransactionList = + await MyAttendanceApiClient().submitEitTransaction(dESCFLEXCONTEXTCODE, dynamicParams!.dynamicId, values, empID: dynamicParams!.selectedEmp ?? ''); Utils.hideLoading(context); await Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.submit.tr(), submitEITTransactionList.pTRANSACTIONID!, submitEITTransactionList.pITEMKEY!, 'eit')); @@ -112,23 +113,27 @@ class _DynamicInputScreenState extends State { Future calGetValueSetValues(GetEITDFFStructureList structureList) async { try { Utils.showLoading(context); - String segmentId = structureList.cHILDSEGMENTSVS!; - if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; - List filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; - List> values = filteredList - .map((e) => GetSetValuesRequestModel( - sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) - .toJson()) - .toList(); - List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, - values, empID:dynamicParams!.selectedEmp ??'', parentValue: structureList.eSERVICESDV!.pVALUECOLUMNNAME ); - List abc = genericResponseModel?.getEITDFFStructureList ?? []; - getEitDffStructureList = abc; - int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == structureList.cHILDSEGMENTSVS); - getEitDffStructureList![index].eSERVICESVS!.clear(); - if (eServicesResponseModel.isNotEmpty) getEitDffStructureList![index].eSERVICESVS!.addAll(eServicesResponseModel); - // getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; - //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); + for (int i = 0; i < (structureList.cHILDSEGMENTSVSSplited?.length ?? 0); i++) { + String segmentId = structureList.cHILDSEGMENTSVSSplited![i]; + + if (dESCFLEXCONTEXTCODE.isEmpty) dESCFLEXCONTEXTCODE = structureList.dESCFLEXCONTEXTCODE!; + List filteredList = getEitDffStructureList?.where((element) => element.cHILDSEGMENTSVSSplited!.contains(segmentId)).toList() ?? []; + List> values = filteredList + .map((e) => GetSetValuesRequestModel( + sEGMENTNAME: e.sEGMENTNAME, vALUECOLUMNNAME: e.eSERVICESDV!.pVALUECOLUMNNAME, dESCRIPTION: "", iDCOLUMNNAME: e.eSERVICESDV!.pIDCOLUMNNAME, fLEXVALUESETNAME: e.fLEXVALUESETNAME) + .toJson()) + .toList(); + List eServicesResponseModel = await MyAttendanceApiClient().getValueSetValues(segmentId, structureList.dESCFLEXCONTEXTCODE!, structureList.dESCFLEXNAME!, values, + empID: dynamicParams!.selectedEmp ?? '', parentValue: structureList.eSERVICESDV!.pVALUECOLUMNNAME); + List abc = genericResponseModel?.getEITDFFStructureList ?? []; + getEitDffStructureList = abc; + int index = getEitDffStructureList!.indexWhere((element) => element.sEGMENTNAME == segmentId); + getEitDffStructureList![index].eSERVICESVS!.clear(); + if (eServicesResponseModel.isNotEmpty) getEitDffStructureList![index].eSERVICESVS!.addAll(eServicesResponseModel); + // getEitDffStructureList = genericResponseModel?.getEITDFFStructureList ?? []; + //getEitDffStructureList = getEitDffStructureList!.where((element) => element.dISPLAYFLAG != "N").toList(); + } + await Future.delayed(const Duration(seconds: 1)); Utils.hideLoading(context); setState(() {}); } catch (ex) { @@ -394,7 +399,7 @@ class _DynamicInputScreenState extends State { Widget build(BuildContext context) { if (dynamicParams == null) { dynamicParams = ModalRoute.of(context)!.settings.arguments as DynamicListViewParams; - if(dynamicParams!.selectedEmp.isNotEmpty){ + if (dynamicParams!.selectedEmp.isNotEmpty) { AppState().postParamsJson['P_SELECTED_EMPLOYEE_NUMBER'] = dynamicParams!.selectedEmp; } getTransactionsStructure(); diff --git a/lib/ui/my_team/team_members.dart b/lib/ui/my_team/team_members.dart index e7336bb..f6d33d8 100644 --- a/lib/ui/my_team/team_members.dart +++ b/lib/ui/my_team/team_members.dart @@ -39,7 +39,7 @@ class _TeamMembersState extends State { try { Utils.showLoading(context); getEmployeeSubordinatesList = await MyTeamApiClient().getEmployeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString()); - // getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(),getEmployeeSubordinates?.eMPLOYEENUMBER); + getEmployeeSubordinatesList = await MyTeamApiClient().employeeSubordinates(searchEmpEmail.toString(), searchEmpName.toString(), searchEmpNo.toString(),getEmployeeSubordinates?.eMPLOYEENUMBER); Utils.hideLoading(context); setState(() {}); } catch (ex) { diff --git a/lib/ui/profile/personal_info.dart b/lib/ui/profile/personal_info.dart index bd7eebd..b715cdc 100644 --- a/lib/ui/profile/personal_info.dart +++ b/lib/ui/profile/personal_info.dart @@ -25,7 +25,8 @@ class PersonalInfo extends StatelessWidget { width: MediaQuery.of(context).size.width, child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, + // mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, children: [ LocaleKeys.category.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.eMPLOYMENTCATEGORYMEANING ?? "").toText16(), @@ -42,7 +43,7 @@ class PersonalInfo extends StatelessWidget { LocaleKeys.Payroll.tr().toText13(color: MyColors.lightGrayColor), (memberInformationList.pAYROLLNAME ?? "").toText16(), ], - ).objectContainerView().paddingAll(21), + ).objectContainerView(center: false).paddingAll(21), ), ); } diff --git a/lib/ui/work_list/itg_fragments/approval_level_fragment.dart b/lib/ui/work_list/itg_fragments/approval_level_fragment.dart index 52915ab..09e44d4 100644 --- a/lib/ui/work_list/itg_fragments/approval_level_fragment.dart +++ b/lib/ui/work_list/itg_fragments/approval_level_fragment.dart @@ -1,11 +1,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.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/itg_forms_models/wf_history_model.dart'; +import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/selected_itg_item_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; @@ -109,6 +111,19 @@ class ApprovalLevelfragment extends StatelessWidget { }).expanded, Container(width: 1, height: 30, color: MyColors.lightGreyEFColor), LocaleKeys.delegate.tr().toText12(color: MyColors.gradiantEndColor).center.paddingOnly(top: 6, bottom: 6).onPress(() { + if (history.employeeID == AppState().memberInformationList?.eMPLOYEENUMBER) { + showMyBottomSheet(context, + callBackFunc: voidCallback, + child: DelegateSheet( + title: LocaleKeys.delegate.tr(), + apiMode: "Delegate", + notificationID: null, + actionHistoryList: null, + wFHistory: wFHistory, + callBackFunc: voidCallback, + )); + return; + } showMyBottomSheet( context, callBackFunc: voidCallback, @@ -135,11 +150,7 @@ class ApprovalLevelfragment extends StatelessWidget { return MyColors.yellowColor; } else if (code.toLowerCase() == "not doable" || code.toLowerCase() == "rejected") { return MyColors.redColor; - } else if (code.toLowerCase() == "approved" || - code.toLowerCase() == "auto-approve" || - code.toLowerCase() == "auto-approved" || - code.toLowerCase() == "doable" || - code.toLowerCase() == "answer") { + } else if (code.toLowerCase() == "approved" || code.toLowerCase() == "auto-approve" || code.toLowerCase() == "auto-approved" || code.toLowerCase() == "doable" || code.toLowerCase() == "answer") { return MyColors.greenColor; } else if (code.toLowerCase() == "requested information" || code.toLowerCase() == "assign" || code.toLowerCase() == "reassign") { return MyColors.orange; diff --git a/lib/ui/work_list/worklist_fragments/actions_fragment.dart b/lib/ui/work_list/worklist_fragments/actions_fragment.dart index 58e9ac7..fa29d65 100644 --- a/lib/ui/work_list/worklist_fragments/actions_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/actions_fragment.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; +import 'package:mohem_flutter_app/app_state/app_state.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/date_uitl.dart'; import 'package:mohem_flutter_app/extensions/int_extensions.dart'; @@ -7,6 +8,7 @@ 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_action_history_list_model.dart'; +import 'package:mohem_flutter_app/ui/work_list/sheets/delegate_sheet.dart'; import 'package:mohem_flutter_app/ui/work_list/sheets/selected_item_sheet.dart'; import 'package:mohem_flutter_app/widgets/bottom_sheet.dart'; import 'package:mohem_flutter_app/widgets/circular_avatar.dart'; @@ -109,6 +111,18 @@ class ActionsFragment extends StatelessWidget { }).expanded, Container(width: 1, height: 30, color: MyColors.lightGreyEFColor), LocaleKeys.delegate.tr().toText12(color: MyColors.gradiantEndColor).center.paddingOnly(top: 6, bottom: 6).onPress(() { + if (actionHistory.uSERNAME == AppState().memberInformationList?.eMPLOYEENUMBER) { + showMyBottomSheet(context, + callBackFunc: voidCallback, + child: DelegateSheet( + title: LocaleKeys.delegate.tr(), + apiMode: "DELEGATE", + notificationID: notificationID, + actionHistoryList: actionHistoryList, + callBackFunc: voidCallback, + )); + return; + } showMyBottomSheet( context, callBackFunc: voidCallback, @@ -132,7 +146,10 @@ class ActionsFragment extends StatelessWidget { String getActionDuration(int index) { if (actionHistoryList[index].aCTIONCODE == "SUBMIT") { return ""; - } else if(actionHistoryList[index].aCTIONCODE == "PENDING") { + } else if (actionHistoryList[index].aCTIONCODE == "PENDING") { + if (actionHistoryList[++index].nOTIFICATIONDATE!.isEmpty) { + return ""; + } DateTime dateTimeFrom = DateUtil.convertSimpleStringDateToDate(actionHistoryList[++index].nOTIFICATIONDATE!); Duration duration = DateTime.now().difference(dateTimeFrom); return "Action duration: " + DateUtil.formatDuration(duration);