From b073399ef4970e88706055e1176bf7d9f73db0bb Mon Sep 17 00:00:00 2001 From: Sultan khan <> Date: Thu, 25 May 2023 17:23:04 +0300 Subject: [PATCH 1/2] MOE bug fixes --- lib/generated/codegen_loader.g.dart | 14 ++++++- lib/generated/locale_keys.g.dart | 2 + lib/provider/dashboard_provider_model.dart | 7 +++- lib/ui/landing/widget/menus_widget.dart | 9 ++-- .../add_leave_balance_screen.dart | 42 +++++++++---------- .../leave_balance/leave_balance_screen.dart | 5 ++- lib/ui/login/login_screen.dart | 2 +- lib/widgets/balances_dashboard_widget.dart | 37 ++++++++-------- 8 files changed, 72 insertions(+), 46 deletions(-) diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index a800ab5..947d6b8 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -551,7 +551,12 @@ class CodegenLoader extends AssetLoader{ "attendanceType": "نوع الحضور", "help": "يساعد", "dear": "عزيزي", - "assistant": "للحصول على المساعدة ، يمكنك تقديم الطلب على نظام سعيد أو الاتصال بمركز الاتصال الموحد على 8310200" + "assistant": "للحصول على المساعدة ، يمكنك تقديم الطلب على نظام سعيد أو الاتصال بمركز الاتصال الموحد على 8310200", + "employee_leaves_calender": "تقويم أوراق الموظفين", + "view_your_leave_information": "عرض معلومات إجازتك", + "view_details": "عرض التفاصيل", + "create_absence_request": "إنشاء طلب الغياب", + "business_mission": "طلب مهمة العمل" }; static const Map en_US = { "mohemm": "Mohemm", @@ -1090,7 +1095,12 @@ static const Map en_US = { "attendanceType": "Attendance Type", "help": "Help", "dear": "Dear", - "assistant": "For assistance, you can submit the request on the Saeed system or call the unified call center on 8310200" + "assistant": "For assistance, you can submit the request on the Saeed system or call the unified call center on 8310200", + "employee_leaves_calender": "Employee Leaves Calender", + "view_your_leave_information": "View Your Leave Information", + "view_details": "View Details", + "create_absence_request": "Create Absence Request", + "business_mission": "Business Mission Request" }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index 3aab5c7..be65f7a 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -525,5 +525,7 @@ abstract class LocaleKeys { static const employee_leaves_calender = 'employee_leaves_calender'; static const view_your_leave_information = 'view_your_leave_information'; static const view_details = 'view_details'; + static const create_absence_request = 'create_absence_request'; + static const business_mission = 'business_mission'; } diff --git a/lib/provider/dashboard_provider_model.dart b/lib/provider/dashboard_provider_model.dart index f3febdf..46b3eea 100644 --- a/lib/provider/dashboard_provider_model.dart +++ b/lib/provider/dashboard_provider_model.dart @@ -49,8 +49,10 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { List? accrualList; GetAccrualBalancesList? leaveBalanceAccrual; + GetAccrualBalancesList? oldLeaveBalanceAccrual; - double get leaveBalance => leaveBalanceAccrual?.accrualNetEntitlement ?? 0; + + double? get leaveBalance => ((leaveBalanceAccrual?.accrualNetEntitlement! ?? 0) + (oldLeaveBalanceAccrual?.accrualNetEntitlement! ??0)); GetAccrualBalancesList? businessTripAccrual; @@ -107,6 +109,7 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { isLeaveTicketBalanceLoading = true; accrualList = null; leaveBalanceAccrual = null; + oldLeaveBalanceAccrual = null; businessTripAccrual = null; ticketBalance = 0; @@ -209,6 +212,8 @@ class DashboardProviderModel with ChangeNotifier, DiagnosticableTreeMixin { accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy", "en_US").format(date)); isLeaveTicketBalanceLoading = false; leaveBalanceAccrual = accrualList!.singleWhere((element) => element.accuralPlanName == 'Annual Vacation Accrual' || element.accuralPlanName == "خطة استحقاق الاجازة الاعتيادية", orElse: null); + oldLeaveBalanceAccrual = accrualList!.singleWhere((element) => element.accuralPlanName == 'Old Leave Balance' || element.accuralPlanName == "خطة فصل الارصدة 1439", orElse: null); + businessTripAccrual = accrualList!.singleWhere((element) => element.accuralPlanName == 'Business Trip Accrual' || element.accuralPlanName == "خطة استحقاق الإنتدابات", orElse: null); ticketBalance = (accrualList![1].accrualNetEntitlement ?? 0.0) + (accrualList![2].accrualNetEntitlement ?? 0.0) + (accrualList![3].accrualNetEntitlement ?? 0.0); notifyListeners(); diff --git a/lib/ui/landing/widget/menus_widget.dart b/lib/ui/landing/widget/menus_widget.dart index abcddf2..521c2a3 100644 --- a/lib/ui/landing/widget/menus_widget.dart +++ b/lib/ui/landing/widget/menus_widget.dart @@ -99,7 +99,7 @@ class MenusWidget extends StatelessWidget { Row( children: [ Expanded( - child: data.leaveBalance.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1), + child: (data.leaveBalance)!.toStringAsFixed(0).toText16(color: Colors.white, isBold: true, maxlines: 1), ), RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)), ], @@ -126,7 +126,7 @@ class MenusWidget extends StatelessWidget { Row( children: [ Expanded( - child: data.businessTrip.toStringAsFixed(2).toText16(color: Colors.white, isBold: true, maxlines: 1), + child: data.businessTrip.toStringAsFixed(0).toText16(color: Colors.white, isBold: true, maxlines: 1), ), RotatedBox(quarterTurns: AppState().isArabic(context) ? 2 : 4, child: SvgPicture.asset("assets/images/arrow_next.svg", color: Colors.white)), ], @@ -134,7 +134,10 @@ class MenusWidget extends StatelessWidget { ], ).paddingOnly(left: 10, right: 10, bottom: 6, top: 6), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.leaveBalance); + //Navigator.pushNamed(context, AppRoutes.leaveBalance); + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.business_mission.tr(), "XXX_HR_EIT_BUSINESS_MISSION_SS")); + + }), if (env.dashboard.ticketBalance) data.isLeaveTicketBalanceLoading diff --git a/lib/ui/leave_balance/add_leave_balance_screen.dart b/lib/ui/leave_balance/add_leave_balance_screen.dart index d8ba32f..1d803f2 100644 --- a/lib/ui/leave_balance/add_leave_balance_screen.dart +++ b/lib/ui/leave_balance/add_leave_balance_screen.dart @@ -236,27 +236,27 @@ class _AddLeaveBalanceScreenState extends State { }, ), 12.height, - DynamicTextFieldWidget( - LocaleKeys.selectEmployee.tr(), - selectedReplacementEmployee == null ? LocaleKeys.searchForEmployee.tr() : selectedReplacementEmployee!.employeeDisplayName ?? "", - isEnable: false, - onTap: () { - showMyBottomSheet( - context, - callBackFunc: () {}, - child: SearchEmployeeBottomSheet( - title: LocaleKeys.searchForEmployee.tr(), - apiMode: LocaleKeys.delegate.tr(), - fromChat: false, - onSelectEmployee: (_selectedEmployee) { - // Navigator.pop(context); - selectedReplacementEmployee = _selectedEmployee; - setState(() {}); - }, - ), - ); - }, - ), + // DynamicTextFieldWidget( + // LocaleKeys.selectEmployee.tr(), + // selectedReplacementEmployee == null ? LocaleKeys.searchForEmployee.tr() : selectedReplacementEmployee!.employeeDisplayName ?? "", + // isEnable: false, + // onTap: () { + // showMyBottomSheet( + // context, + // callBackFunc: () {}, + // child: SearchEmployeeBottomSheet( + // title: LocaleKeys.searchForEmployee.tr(), + // apiMode: LocaleKeys.delegate.tr(), + // fromChat: false, + // onSelectEmployee: (_selectedEmployee) { + // // Navigator.pop(context); + // selectedReplacementEmployee = _selectedEmployee; + // setState(() {}); + // }, + // ), + // ); + // }, + // ), 12.height, DynamicTextFieldWidget( LocaleKeys.comments.tr(), diff --git a/lib/ui/leave_balance/leave_balance_screen.dart b/lib/ui/leave_balance/leave_balance_screen.dart index 9fb925c..ca3529f 100644 --- a/lib/ui/leave_balance/leave_balance_screen.dart +++ b/lib/ui/leave_balance/leave_balance_screen.dart @@ -8,6 +8,7 @@ import 'package:mohem_flutter_app/extensions/int_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/leave_balance/get_absence_transaction_list_model.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/balances_dashboard_widget.dart'; import 'package:mohem_flutter_app/widgets/item_detail_view_widget.dart'; @@ -117,7 +118,9 @@ class _LeaveBalanceState extends State { ), child: const Icon(Icons.add, color: Colors.white, size: 30), ).onPress(() { - Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: employeeId); + //Navigator.pushNamed(context, AppRoutes.addLeaveBalance, arguments: employeeId); + + Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(LocaleKeys.create_absence_request.tr(), "XXX_HR_EIT_LOA_CREATE_SS")); }), ); } diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index b9cfce9..86ecaa4 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -191,7 +191,7 @@ class _LoginScreenState extends State { // username.text = "1100313582"; // password.text = "moe123456"; - username.text = "1002528733"; + username.text = "1024056812"; password.text = "moe123456"; // 1) Normal user : diff --git a/lib/widgets/balances_dashboard_widget.dart b/lib/widgets/balances_dashboard_widget.dart index 9c1fafe..da84f08 100644 --- a/lib/widgets/balances_dashboard_widget.dart +++ b/lib/widgets/balances_dashboard_widget.dart @@ -45,8 +45,8 @@ class BalancesDashboardWidget extends StatefulWidget { class _BalancesDashboardWidgetState extends State { List chartModelList = []; late DateTime accrualDateTime; - GetAccrualBalancesList? leaveBalanceAccrual; - List? ticketBalanceAccrualList; + List? leaveBalanceAccrual =[]; + List? ticketBalanceAccrualList =[]; @override void initState() { @@ -66,17 +66,20 @@ class _BalancesDashboardWidgetState extends State { List accrualList = await DashboardApiClient().getAccrualBalances(DateFormat("MM/dd/yyyy", "en_US").format(accrualDateTime), empID: widget.selectedEmp); if (accrualList.isNotEmpty) { if (widget.isLeaveBalance) { - leaveBalanceAccrual = accrualList[0]; + leaveBalanceAccrual = accrualList; chartModelList = [ - PieChartModel(LocaleKeys.currentBalance.tr(), leaveBalanceAccrual?.accrualNetEntitlement ?? 0, MyColors.textMixColor, titleAppend: ""), - PieChartModel(LocaleKeys.usedBalance.tr(), leaveBalanceAccrual?.accrualUsedEntitlement?.toDouble() ?? 0, MyColors.backgroundBlackColor, titleAppend: ""), + PieChartModel(LocaleKeys.currentBalance.tr(), ((leaveBalanceAccrual![0]?.accrualNetEntitlement! ?? 0)! + (leaveBalanceAccrual![1]?.accrualNetEntitlement! ??0)!).toDouble() , MyColors.textMixColor, titleAppend: ""), + PieChartModel(LocaleKeys.usedBalance.tr(), ((leaveBalanceAccrual![0]?.accrualUsedEntitlement! ?? 0)! + (leaveBalanceAccrual![1]?.accrualUsedEntitlement! ??0)!).toDouble() , MyColors.backgroundBlackColor, titleAppend: ""), ]; - } else { + } + + else if(accrualList.isNotEmpty){ chartModelList = [ PieChartModel(LocaleKeys.adult.tr(), accrualList[1].accrualNetEntitlement?.toDouble() ?? 0, MyColors.textMixColor, titleAppend: ""), PieChartModel(LocaleKeys.child.tr(), accrualList[2].accrualNetEntitlement?.toDouble() ?? 0, MyColors.backgroundBlackColor, titleAppend: ""), PieChartModel(LocaleKeys.infants.tr(), accrualList[3].accrualNetEntitlement?.toDouble() ?? 0, MyColors.pinkColor, titleAppend: ""), ]; + } } if (showLoading) Utils.hideLoading(context); @@ -89,15 +92,15 @@ class _BalancesDashboardWidgetState extends State { @override Widget build(BuildContext context) { - if (leaveBalanceAccrual == null && widget.isLeaveBalance) { - leaveBalanceAccrual = Provider.of(context, listen: false).leaveBalanceAccrual; - chartModelList = [ - PieChartModel(LocaleKeys.currentBalance.tr(), leaveBalanceAccrual?.accrualNetEntitlement ?? 0, MyColors.textMixColor, titleAppend: ""), - PieChartModel(LocaleKeys.usedBalance.tr(), leaveBalanceAccrual?.accrualUsedEntitlement?.toDouble() ?? 0, MyColors.backgroundBlackColor, titleAppend: ""), - ]; - } - - if (ticketBalanceAccrualList == null && !widget.isLeaveBalance) { + // if (leaveBalanceAccrual == null && widget.isLeaveBalance) { + // leaveBalanceAccrual = Provider.of(context, listen: false).leaveBalanceAccrual; + // chartModelList = [ + // PieChartModel(LocaleKeys.currentBalance.tr(), leaveBalanceAccrual?.accrualNetEntitlement ?? 0, MyColors.textMixColor, titleAppend: ""), + // PieChartModel(LocaleKeys.usedBalance.tr(), leaveBalanceAccrual?.accrualUsedEntitlement?.toDouble() ?? 0, MyColors.backgroundBlackColor, titleAppend: ""), + // ]; + // } + + if (ticketBalanceAccrualList!.isEmpty && !widget.isLeaveBalance) { ticketBalanceAccrualList = Provider.of(context, listen: false).accrualList ?? []; if (ticketBalanceAccrualList!.isNotEmpty) { chartModelList = [ @@ -130,7 +133,7 @@ class _BalancesDashboardWidgetState extends State { ], ), 8.height, - Row( + (leaveBalanceAccrual!.isNotEmpty || ticketBalanceAccrualList!.isNotEmpty) ? Row( children: [ ListView.separated( shrinkWrap: true, @@ -144,7 +147,7 @@ class _BalancesDashboardWidgetState extends State { .expanded, getChart(chartModelList) ], - ) + ) :const Center(child:CircularProgressIndicator(backgroundColor:MyColors.gradiantStartColor,)) ], ).paddingOnly(top: 19, bottom: 11, right: 6, left: 14).objectContainerView(disablePadding: true, radius: 10); } From 12bfd034c9869fc17910f3f1e73088d9ad50e935 Mon Sep 17 00:00:00 2001 From: "mirza.shafique" Date: Thu, 25 May 2023 17:36:20 +0300 Subject: [PATCH 2/2] fixes 1.2 --- lib/api/my_requests_api_client.dart | 4 +- lib/api/worklist/worklist_api_client.dart | 5 +- lib/classes/colors.dart | 9 +- lib/generated/codegen_loader.g.dart | 10 +- .../moe_monthly_attendance_screen.dart | 41 +++++-- lib/ui/landing/dashboard_screen.dart | 14 +-- lib/ui/landing/widget/services_widget.dart | 3 +- lib/ui/login/login_screen.dart | 3 + lib/ui/profile/basic_details.dart | 102 +++++++++--------- lib/ui/screens/my_requests/my_requests.dart | 8 +- lib/ui/screens/my_requests/new_request.dart | 13 ++- .../work_list/sheets/selected_item_sheet.dart | 5 +- lib/ui/work_list/worklist_detail_screen.dart | 2 +- .../worklist_fragments/actions_fragment.dart | 2 +- 14 files changed, 125 insertions(+), 96 deletions(-) diff --git a/lib/api/my_requests_api_client.dart b/lib/api/my_requests_api_client.dart index 96c3b54..67fe056 100644 --- a/lib/api/my_requests_api_client.dart +++ b/lib/api/my_requests_api_client.dart @@ -60,7 +60,7 @@ class MyRequestsApiClient { }, url, postParams); } - Future getSubmitNewRequest(List> list, {String? functionName}) async { + Future getSubmitNewRequest(List> list, {String? functionName}) async { String url = "${ApiConsts.erpRest}SUBMIT_CCP_TRANSACTION"; Map postParams = { "P_MENU_TYPE": "E", @@ -72,7 +72,7 @@ class MyRequestsApiClient { postParams["EITTransactionTBL"] = list; return await ApiClient().postJsonForObject((json) { GenericResponseModel? responseData = GenericResponseModel.fromJson(json); - return responseData.submitCcpTransactionList; + return responseData; }, url, postParams); } diff --git a/lib/api/worklist/worklist_api_client.dart b/lib/api/worklist/worklist_api_client.dart index de65d35..a5f44c1 100644 --- a/lib/api/worklist/worklist_api_client.dart +++ b/lib/api/worklist/worklist_api_client.dart @@ -149,12 +149,13 @@ class WorkListApiClient { }, url, postParams); } - Future getUserInformation(int pSelectedResopID, String selectedEmployeeNumber) async { + Future getUserInformation(int pSelectedResopID, String selectedEmployeeNumber, String noficationId) async { String url = "${ApiConsts.erpRest}Get_Notification_UserInformation"; Map postParams = { "P_SELECTED_RESP_ID": pSelectedResopID, "P_PAGE_LIMIT": 100, "P_PAGE_NUM": 1, + "P_NOTIFICATION_ID": noficationId, }; postParams.addAll(AppState().postParamsJson); if (selectedEmployeeNumber != null) postParams["P_SELECTED_EMPLOYEE_NUMBER"] = selectedEmployeeNumber; @@ -413,7 +414,7 @@ class WorkListApiClient { "EmployeeNumber": employeeNumber, "Comments": "", "AdditionalFields": null, - "NewUserEMPId":newUserEMPId + "NewUserEMPId": newUserEMPId }; postParams.addAll(AppState().postParamsJson); return await ApiClient().postJsonForObject((json) { diff --git a/lib/classes/colors.dart b/lib/classes/colors.dart index 5c9b30e..ec369c8 100644 --- a/lib/classes/colors.dart +++ b/lib/classes/colors.dart @@ -6,8 +6,8 @@ class MyColors { static const Color darkTextColor = Color(0xff2B353E); static const Color normalTextColor = Color(0xff5A5A5A); static const Color lightTextColor = Color(0xffBFBFBF); - static const Color gradiantStartColor = Color(0xff33c0a5); - static const Color gradiantEndColor = Color(0xff259db7); + static const Color gradiantStartColor = Color(0xff259db7); + static const Color gradiantEndColor = Color(0xff33c0a5); static const Color textMixColor = Color(0xff2BB8A6); static const Color backgroundColor = Color(0xffF8F8F8); static const Color grey41Color = Color(0xff414141); @@ -30,7 +30,7 @@ class MyColors { static const Color darkWhiteColor = Color(0xffE0E0E0); static const Color redColor = Color(0xffD02127); static const Color pinkColor = Color(0xffEBA9A9); - static const Color pinkDarkColor = Color(0xffe3797d); + static const Color pinkDarkColor = Color(0xffdb5b6a); static const Color yellowColor = Color(0xffF4E31C); static const Color orange = Color(0xFFCC9B14); static const Color yellowFavColor = Color(0xffEAC321); @@ -41,6 +41,7 @@ class MyColors { static const Color borderColor = Color(0xffE8E8E8); static const Color borderE3Color = Color(0xffE3E3E3); static const Color borderCEColor = Color(0xffCECECE); + //static const Color grey67Color = Color(0xff676767); static const Color whiteColor = Color(0xFFEEEEEE); static const Color greenColor = Color(0xff1FA269); @@ -55,7 +56,7 @@ class MyColors { static const Color lightGreyColor = Color(0xffC7C7C7); static const Color green69Color = Color(0xff1FA169); static const Color redA3Color = Color(0xffCA3332); - static const Color green9CColor = Color(0xff259CB8); + static const Color green9CColor = Color(0xff259CB8); static const Color green2DColor = Color(0xff32D892); static const Color greyC4Color = Color(0xffC4C4C4); static const Color grey35Color = Color(0xff535353); diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart index a800ab5..8834ace 100644 --- a/lib/generated/codegen_loader.g.dart +++ b/lib/generated/codegen_loader.g.dart @@ -551,7 +551,10 @@ class CodegenLoader extends AssetLoader{ "attendanceType": "نوع الحضور", "help": "يساعد", "dear": "عزيزي", - "assistant": "للحصول على المساعدة ، يمكنك تقديم الطلب على نظام سعيد أو الاتصال بمركز الاتصال الموحد على 8310200" + "assistant": "للحصول على المساعدة ، يمكنك تقديم الطلب على نظام سعيد أو الاتصال بمركز الاتصال الموحد على 8310200", + "employee_leaves_calender": "تقويم أوراق الموظفين", + "view_your_leave_information": "عرض معلومات إجازتك", + "view_details": "عرض التفاصيل" }; static const Map en_US = { "mohemm": "Mohemm", @@ -1090,7 +1093,10 @@ static const Map en_US = { "attendanceType": "Attendance Type", "help": "Help", "dear": "Dear", - "assistant": "For assistance, you can submit the request on the Saeed system or call the unified call center on 8310200" + "assistant": "For assistance, you can submit the request on the Saeed system or call the unified call center on 8310200", + "employee_leaves_calender": "Employee Leaves Calender", + "view_your_leave_information": "View Your Leave Information", + "view_details": "View Details" }; static const Map> mapLocales = {"ar_SA": ar_SA, "en_US": en_US}; } diff --git a/lib/ui/attendance/moe_monthly_attendance_screen.dart b/lib/ui/attendance/moe_monthly_attendance_screen.dart index fef843c..57c1614 100644 --- a/lib/ui/attendance/moe_monthly_attendance_screen.dart +++ b/lib/ui/attendance/moe_monthly_attendance_screen.dart @@ -21,6 +21,7 @@ import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/circular_step_progress_bar.dart'; import 'package:month_picker_dialog_2/month_picker_dialog_2.dart'; import 'package:pie_chart/pie_chart.dart'; +import 'package:sizer/sizer.dart'; import 'package:syncfusion_flutter_calendar/calendar.dart'; enum LeaveType { ABSENCE, BUSINESS_TRIP, HOLIDAY, NORMAL } @@ -104,6 +105,18 @@ class _MoeMonthlyAttendanceScreenState extends State }), 18.height, AspectRatio(aspectRatio: 304 / 244, child: calendarWidget()), + 12.height, + SizedBox( + width: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + showColorItem("Absence", MyColors.pinkDarkColor), + showColorItem("Business Trip", MyColors.gradiantStartColor), + showColorItem("Holiday", MyColors.gradiantEndColor), + ], + ), + ), ], ).paddingOnly(left: 21, right: 21, top: 21), ], @@ -113,6 +126,20 @@ class _MoeMonthlyAttendanceScreenState extends State ); } + Widget showColorItem(String title, Color color) { + return Row( + children: [ + Container( + width: 20, + height: 20, + color: color, + ).circle(2000), + 8.width, + title.toText12() + ], + ); + } + Widget calendarWidget() { return SfCalendar( view: CalendarView.month, @@ -180,11 +207,11 @@ class _MoeMonthlyAttendanceScreenState extends State ), 6.height, showText(LocaleKeys.leaveType.tr(), leaves.leaveType.toString()), - if (leaves.absenceAttendanceTypeName.toString().isNotEmpty) - const Divider( - color: MyColors.borderCEColor, - ), - if (leaves.absenceAttendanceTypeName.toString().isNotEmpty) showText(LocaleKeys.attendanceType.tr(), leaves.absenceAttendanceTypeName.toString()), + // if (leaves.absenceAttendanceTypeName.toString().isNotEmpty) + // const Divider( + // color: MyColors.borderCEColor, + // ), + // if (leaves.absenceAttendanceTypeName.toString().isNotEmpty) showText(LocaleKeys.attendanceType.tr(), leaves.absenceAttendanceTypeName.toString()), const Divider( color: MyColors.borderCEColor, ), @@ -232,7 +259,7 @@ class _MoeMonthlyAttendanceScreenState extends State margin: const EdgeInsets.all(4), decoration: BoxDecoration( color: leaveType == LeaveType.ABSENCE - ? MyColors.redColor + ? MyColors.pinkDarkColor : leaveType == LeaveType.BUSINESS_TRIP ? MyColors.gradiantStartColor : leaveType == LeaveType.HOLIDAY @@ -241,7 +268,7 @@ class _MoeMonthlyAttendanceScreenState extends State shape: BoxShape.circle, border: Border.all( color: leaveType == LeaveType.ABSENCE - ? MyColors.redColor + ? MyColors.pinkDarkColor : leaveType == LeaveType.BUSINESS_TRIP ? MyColors.gradiantStartColor : leaveType == LeaveType.HOLIDAY diff --git a/lib/ui/landing/dashboard_screen.dart b/lib/ui/landing/dashboard_screen.dart index ca3eb69..75b2449 100644 --- a/lib/ui/landing/dashboard_screen.dart +++ b/lib/ui/landing/dashboard_screen.dart @@ -437,6 +437,7 @@ class _DashboardScreenState extends State with WidgetsBindingOb Navigator.pushNamed(context, AppRoutes.monthlyAttendance); }, ), + 21.height, Visibility( visible: env.offersDiscount, child: Column( @@ -624,7 +625,6 @@ class _DashboardScreenState extends State with WidgetsBindingOb icon: Stack( alignment: Alignment.centerLeft, children: [ - SvgPicture.asset( "assets/icons/chat/chat.svg", color: currentIndex == 4 @@ -696,16 +696,4 @@ class _DashboardScreenState extends State with WidgetsBindingOb Navigator.pushNamed(context, AppRoutes.offersAndDiscountsDetails, arguments: getOffersDetailList); } - } - - - - - - - - - - - diff --git a/lib/ui/landing/widget/services_widget.dart b/lib/ui/landing/widget/services_widget.dart index f023955..0d50df0 100644 --- a/lib/ui/landing/widget/services_widget.dart +++ b/lib/ui/landing/widget/services_widget.dart @@ -225,6 +225,7 @@ class ServicesWidget extends StatelessWidget { } List menuList = pro.getMenuEntriesList?.where((element) => element.parentMenuName == menuEntry.menuName && (element.menuEntryType == "FUNCTION")).toList() ?? []; menuEntry.icon = ""; + menuList = []; if (menuList.isEmpty) { if (menuEntry.requestType == "EIT") { Navigator.pushNamed(context, AppRoutes.dynamicScreen, arguments: DynamicListViewParams(menuEntry.prompt!, menuEntry.functionName!)); @@ -277,4 +278,4 @@ class ServicesWidget extends StatelessWidget { ], ); } -} \ No newline at end of file +} diff --git a/lib/ui/login/login_screen.dart b/lib/ui/login/login_screen.dart index b9cfce9..3e9976a 100644 --- a/lib/ui/login/login_screen.dart +++ b/lib/ui/login/login_screen.dart @@ -185,8 +185,11 @@ class _LoginScreenState extends State { @override Widget build(BuildContext context) { + username.text = "1002528733"; + password.text = "moe123456"; if (isAppOpenBySystem == null) { isAppOpenBySystem = (ModalRoute.of(context)!.settings.arguments ?? true) as bool; + if (!kReleaseMode) { // username.text = "1100313582"; // password.text = "moe123456"; diff --git a/lib/ui/profile/basic_details.dart b/lib/ui/profile/basic_details.dart index ff4c904..23a4e89 100644 --- a/lib/ui/profile/basic_details.dart +++ b/lib/ui/profile/basic_details.dart @@ -88,62 +88,58 @@ class _BasicDetailsState extends State { ? const SizedBox() : (getEmployeeBasicDetailsList!.isEmpty ? Utils.getNoDataWidget(context) - : Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.profile_basicDetails.tr().toText20(isBold:true), - 14.height, - ...getEmployeeBasicDetailsList! - .map((e) => Column( - children: [ - e.dISPLAYFLAG == "Y" - ? Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), - "${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), - 12.height - ]) - : Container(), - ], - )) - .toList() - ]) - .objectContainerView()), + : Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + LocaleKeys.profile_basicDetails.tr().toText20(isBold: true), + 14.height, + ...getEmployeeBasicDetailsList! + .map((e) => Column( + children: [ + e.dISPLAYFLAG == "Y" + ? Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + "${e.sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), + "${e.sEGMENTVALUEDSP}".toText16(isBold: true, color: MyColors.blackColor), + 12.height + ]) + : Container(), + ], + )) + .toList() + ]).objectContainerView()), 20.height, getEmployeeQualificationsList == null ? const SizedBox() - : (getEmployeeQualificationsList!.isEmpty - ? Utils.getNoDataWidget(context) - : Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.qualification.tr().toText20(isBold:true), - 14.height, - ...getEmployeeQualificationsList! - .map((e) => SizedBox( - width: double.infinity, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.esteblishmentName.tr().toText13(color: MyColors.lightGrayColor), - "${e.establishment}".toText16(isBold: true, color: MyColors.blackColor), - 12.height, - LocaleKeys.grade.tr().toText13(color: MyColors.lightGrayColor), - "${e.grade}".toText16(isBold: true, color: MyColors.blackColor), - 12.height, - LocaleKeys.gradeDescription.tr().toText13(color: MyColors.lightGrayColor), - "${e.gradeDescription}".toText16(isBold: true, color: MyColors.blackColor), - 12.height, - LocaleKeys.type.tr().toText13(color: MyColors.lightGrayColor), - "${e.qualificationType}".toText16(isBold: true, color: MyColors.blackColor), - 12.height, - LocaleKeys.status.tr().toText13(color: MyColors.lightGrayColor), - "${e.status}".toText16(isBold: true, color: MyColors.blackColor), - ], - ), - )) - .toList() - ]) - .objectContainerView()) + : ((getEmployeeQualificationsList!.isEmpty && getEmployeeBasicDetailsList!.isEmpty) + ? Utils.getNoDataWidget(context) + : getEmployeeQualificationsList!.isEmpty + ? Container() + : Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + LocaleKeys.qualification.tr().toText20(isBold: true), + 14.height, + ...getEmployeeQualificationsList! + .map((e) => SizedBox( + width: double.infinity, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.esteblishmentName.tr().toText13(color: MyColors.lightGrayColor), + "${e.establishment}".toText16(isBold: true, color: MyColors.blackColor), + 12.height, + LocaleKeys.grade.tr().toText13(color: MyColors.lightGrayColor), + "${e.grade}".toText16(isBold: true, color: MyColors.blackColor), + 12.height, + LocaleKeys.gradeDescription.tr().toText13(color: MyColors.lightGrayColor), + "${e.gradeDescription}".toText16(isBold: true, color: MyColors.blackColor), + 12.height, + LocaleKeys.type.tr().toText13(color: MyColors.lightGrayColor), + "${e.qualificationType}".toText16(isBold: true, color: MyColors.blackColor), + 12.height, + LocaleKeys.status.tr().toText13(color: MyColors.lightGrayColor), + "${e.status}".toText16(isBold: true, color: MyColors.blackColor), + ], + ), + )) + .toList() + ]).objectContainerView()) ], ), ), diff --git a/lib/ui/screens/my_requests/my_requests.dart b/lib/ui/screens/my_requests/my_requests.dart index 93302b8..29a8d41 100644 --- a/lib/ui/screens/my_requests/my_requests.dart +++ b/lib/ui/screens/my_requests/my_requests.dart @@ -54,7 +54,6 @@ class _MyRequestsState extends State { } return Scaffold( - backgroundColor: Colors.white, appBar: AppBarWidget( context, title: LocaleKeys.concurrentReports.tr(), @@ -81,6 +80,7 @@ class _MyRequestsState extends State { ], onSelected: (int popupIndex) { selectedConcurrentProgramList = getConcurrentProgramsList[popupIndex]; + requestModel!.functionName = getConcurrentProgramsList[popupIndex].cONCURRENTPROGRAMNAME; getCCPTransactions(selectedConcurrentProgramList?.cONCURRENTPROGRAMNAME); setState(() {}); }), @@ -164,8 +164,10 @@ class _MyRequestsState extends State { } void openNewRequest() async { - await Navigator.pushNamed(context, AppRoutes.newRequest, arguments: NewRequestModel(groupID: requestModel!.groupID)).then((value) { - // getOpenTickets(); + await Navigator.pushNamed(context, AppRoutes.newRequest, arguments: NewRequestModel(groupID: requestModel!.groupID, functionName: requestModel!.functionName)).then((value) { + if (value != null && value == "refresh") { + getCCPTransactions(requestModel!.functionName); + } }); } diff --git a/lib/ui/screens/my_requests/new_request.dart b/lib/ui/screens/my_requests/new_request.dart index cba00c4..47aeb8f 100644 --- a/lib/ui/screens/my_requests/new_request.dart +++ b/lib/ui/screens/my_requests/new_request.dart @@ -11,6 +11,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/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/my_requests/get_ccp_transactions_model.dart'; import 'package:mohem_flutter_app/models/my_requests/get_ccp_transations_list_model.dart'; @@ -79,7 +80,7 @@ class _NewRequestState extends State { isEnable: false, isPopup: true, isInputTypeNum: true, - isReadOnly:getConcurrentProgramsList.isEmpty? true:false, + isReadOnly: getConcurrentProgramsList.isEmpty ? true : false, ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ for (int i = 0; i < getConcurrentProgramsList.length; i++) PopupMenuItem(child: Text(getConcurrentProgramsList[i].uSERCONCURRENTPROGRAMNAME!), value: i), @@ -142,11 +143,13 @@ class _NewRequestState extends State { return ValidateEitTransactionModel(dATEVALUE: dateVal, nAME: e.aPPLICATIONCOLUMNNAME, nUMBERVALUE: numberVal, tRANSACTIONNUMBER: 1, vARCHAR2VALUE: vatcherVal.toString()).toJson(); }).toList(); Utils.showLoading(context); - submitCcpTransactionList = await MyRequestsApiClient().getSubmitNewRequest(values, functionName: requestModel?.functionName ?? "HMG_EMP_BUS_TRIP_SET_SS"); - getCCPTransactionsList = await MyRequestsApiClient().getCcpTransactions(values, functionName: requestModel?.functionName ?? "HMG_EMP_BUS_TRIP_SET_SS"); + GenericResponseModel responseData = await MyRequestsApiClient().getSubmitNewRequest(values, functionName: requestModel?.functionName ?? "HMG_EMP_BUS_TRIP_SET_SS"); Utils.hideLoading(context); - Navigator.pushNamed(context, AppRoutes.myRequests, arguments: requestModel); - setState(() {}); + if (responseData.messageStatus == 1) { + Navigator.pop(context, "refresh"); + } else { + Utils.showToast(responseData.errorEndUserMessage ?? ""); + } } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); diff --git a/lib/ui/work_list/sheets/selected_item_sheet.dart b/lib/ui/work_list/sheets/selected_item_sheet.dart index 54f87d0..49f5559 100644 --- a/lib/ui/work_list/sheets/selected_item_sheet.dart +++ b/lib/ui/work_list/sheets/selected_item_sheet.dart @@ -127,7 +127,7 @@ class SelectedItemSheet extends StatelessWidget { if (favoriteReplacements != null) empID = favoriteReplacements!.userName; if (replacementList != null) empID = replacementList!.userName; try { - memberInformationListModel = await WorkListApiClient().getUserInformation(-999, empID!); + memberInformationListModel = await WorkListApiClient().getUserInformation(-999, empID!, notificationID.toString()); if (actionHistoryList != null) empID = actionHistoryList!.eMPLOYEEIMAGE = memberInformationListModel!.eMPLOYEEIMAGE ?? AppState().getBase64ImageEmp; if (favoriteReplacements != null) empID = favoriteReplacements!.employeeImage = memberInformationListModel!.eMPLOYEEIMAGE ?? AppState().getBase64ImageEmp; if (replacementList != null) empID = replacementList!.employeeImage = memberInformationListModel!.eMPLOYEEIMAGE ?? AppState().getBase64ImageEmp; @@ -140,7 +140,8 @@ class SelectedItemSheet extends StatelessWidget { Future performNetworkCall(BuildContext context, {String? email, String? userId}) async { Utils.showLoading(context); try { - await WorkListApiClient().submitComment(comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode, approverIndex: actionHistoryList != null ? actionHistoryList!.sEQUENCE : null); + await WorkListApiClient().submitComment( + comment: comment, email: email, userId: userId, notificationId: notificationID, apiMode: apiMode, approverIndex: actionHistoryList != null ? actionHistoryList!.sEQUENCE : null); Utils.hideLoading(context); // Navigator.pop(context); // Navigator.pop(context); diff --git a/lib/ui/work_list/worklist_detail_screen.dart b/lib/ui/work_list/worklist_detail_screen.dart index 9bc0222..0e13140 100644 --- a/lib/ui/work_list/worklist_detail_screen.dart +++ b/lib/ui/work_list/worklist_detail_screen.dart @@ -753,7 +753,7 @@ class _WorkListDetailScreenState extends State { if (apiCallCount == 0) Utils.showLoading(context); apiCallCount++; memberInformationListModel = null; - memberInformationListModel = await WorkListApiClient().getUserInformation(-999, workListData!.sELECTEDEMPLOYEENUMBER!); + memberInformationListModel = await WorkListApiClient().getUserInformation(-999, workListData!.sELECTEDEMPLOYEENUMBER!, workListData!.nOTIFICATIONID.toString()); apiCallCount--; if (apiCallCount == 0) { Utils.hideLoading(context); diff --git a/lib/ui/work_list/worklist_fragments/actions_fragment.dart b/lib/ui/work_list/worklist_fragments/actions_fragment.dart index 98b5b72..c6ab75c 100644 --- a/lib/ui/work_list/worklist_fragments/actions_fragment.dart +++ b/lib/ui/work_list/worklist_fragments/actions_fragment.dart @@ -93,7 +93,7 @@ class ActionsFragment extends StatelessWidget { ], ), 10.height, - getActionDuration(index).toText11(maxLine: 1, color: const Color(0xff1FA269)) + // getActionDuration(index).toText11(maxLine: 1, color: const Color(0xff1FA269)) ], ), )