diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index 24f62800..ac0f4b6e 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -176,6 +176,9 @@ class AllRequestsProvider extends ChangeNotifier { // list = [16]; list.add(16); } + if (context.userProvider.isHouseKeeper) { + list = [5]; + } return list; } diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart index 84997ec0..bba417dc 100644 --- a/lib/dashboard_latest/dashboard_provider.dart +++ b/lib/dashboard_latest/dashboard_provider.dart @@ -45,11 +45,11 @@ class DashBoardProvider extends ChangeNotifier { notifyListeners(); } - int _currentListIndex = 0; + int? _currentListIndex = 0; - int get currentListIndex => _currentListIndex; + int? get currentListIndex => _currentListIndex; - set currentListIndex(int value) { + set currentListIndex(int? value) { _currentListIndex = value; notifyListeners(); } @@ -114,7 +114,7 @@ class DashBoardProvider extends ChangeNotifier { setTabs(userType: userType, context: context); getDashBoardCount(usersType: userType); resetRequestDataList(); - getRequestDetail(usersType: userType, status: tabs[currentListIndex].tag, tabId: tabs[currentListIndex].id); + getRequestDetail(usersType: userType, status: tabs[currentListIndex!].tag, tabId: tabs[currentListIndex!].id); // notifyListeners(); } @@ -148,6 +148,7 @@ class DashBoardProvider extends ChangeNotifier { UsersTypes.engineer: URLs.engineerDashboardCountUrl, UsersTypes.assessor: URLs.engineerDashboardCountUrl, UsersTypes.assessorTl: URLs.engineerDashboardCountUrl, + UsersTypes.houseKeeper: URLs.engineerDashboardCountUrl, }; url = urlMap[usersType] ?? URLs.nurseDashboardCountUrl; Response response; @@ -281,6 +282,7 @@ class DashBoardProvider extends ChangeNotifier { case UsersTypes.engineer: case UsersTypes.assessor: case UsersTypes.assessorTl: + case UsersTypes.houseKeeper: if (status == 0) { return URLs.engineerDashboardUpcoming; } else if (status == 1 && tabId == 1) { @@ -447,6 +449,12 @@ class CategoryTabs { return tabs; } + if (userType == UsersTypes.houseKeeper) { + tabs.add(CategoryTabs(label: 'In Progress', tag: 2, id: 2, requestType: RequestTypeEnum.inProgress, icon: "dashboard/inprogress_icon", iconColor: AppColor.primary10)); + tabs.add(CategoryTabs(label: 'Completed', tag: 4, id: 3, requestType: RequestTypeEnum.completed, icon: "complete_request", iconColor: AppColor.completedColor)); + return tabs; + } + if (userType == UsersTypes.qualityUser) { tabs.add(CategoryTabs(label: 'Open', tag: 1, id: 2, requestType: RequestTypeEnum.open, icon: "dashboard/open_icon", iconColor: AppColor.openColor)); diff --git a/lib/dashboard_latest/dashboard_view.dart b/lib/dashboard_latest/dashboard_view.dart index 52b715fb..0a801677 100644 --- a/lib/dashboard_latest/dashboard_view.dart +++ b/lib/dashboard_latest/dashboard_view.dart @@ -6,6 +6,7 @@ import 'package:nfc_manager/nfc_manager.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/notification/firebase_notification_manger.dart'; import 'package:test_sa/controllers/notification/notification_manger.dart'; +import 'package:test_sa/controllers/providers/api/all_requests_provider.dart'; import 'package:test_sa/controllers/providers/api/notifications_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; @@ -58,13 +59,28 @@ class _DashboardViewState extends State { _dashBoardProvider.setTabs(userType: userProvider.user!.type!, context: context); _dashBoardProvider.getDashBoardCount(usersType: userProvider.user!.type!); _dashBoardProvider.resetRequestDataList(); - _dashBoardProvider.currentListIndex = 0; - _dashBoardProvider.getRequestDetail( + if (userProvider.isHouseKeeper) { + _dashBoardProvider.currentListIndex = 0; + _dashBoardProvider.getRequestDetail( usersType: userProvider.user!.type!, - status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].tag, - tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].id, - isHighPriority: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].isHighPriority, - isOverdue: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].isOverDue); + showLoader: true, + status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex!].tag, + tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex!].id, + // isAscending: _dashBoardProvider.isAscending, + ); + } else { + _dashBoardProvider.currentListIndex = null; + Provider.of(context, listen: false) + ..reset() + ..getAllRequests(context); + } + // _dashBoardProvider.currentListIndex = 0; + // _dashBoardProvider.getRequestDetail( + // usersType: userProvider.user!.type!, + // status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].tag, + // tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].id, + // isHighPriority: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].isHighPriority, + // isOverdue: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].isOverDue); } void getInitialData() { @@ -96,7 +112,7 @@ class _DashboardViewState extends State { if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent && !_dashBoardProvider.isDetailLoading) { _dashBoardProvider.pageNum = _dashBoardProvider.pageNum + 1; _dashBoardProvider.getRequestDetail( - usersType: user.type!, showLoader: false, status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].tag, tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].id); + usersType: user.type!, showLoader: false, status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex??0].tag, tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex??0].id); } }); } diff --git a/lib/dashboard_latest/widgets/app_bar_widget.dart b/lib/dashboard_latest/widgets/app_bar_widget.dart index f130d70c..ad54a030 100644 --- a/lib/dashboard_latest/widgets/app_bar_widget.dart +++ b/lib/dashboard_latest/widgets/app_bar_widget.dart @@ -194,7 +194,7 @@ class _AppBarWidgetState extends State with TickerProviderStateMix dashBoardProvider.setTabs(userType: settingProvider.user!.type!, context: context); dashBoardProvider.getDashBoardCount(usersType: settingProvider.user!.type!); dashBoardProvider.resetRequestDataList(); - dashBoardProvider.getRequestDetail(usersType: settingProvider.user!.type!, status: dashBoardProvider.tabs[dashBoardProvider.currentListIndex].tag); + dashBoardProvider.getRequestDetail(usersType: settingProvider.user!.type!, status: dashBoardProvider.tabs[dashBoardProvider.currentListIndex??0].tag); }); } else { ApiManager.instance.assetGroup = tempGroup; diff --git a/lib/dashboard_latest/widgets/progress_fragment.dart b/lib/dashboard_latest/widgets/progress_fragment.dart index 4d48e4c2..95fc8ec9 100644 --- a/lib/dashboard_latest/widgets/progress_fragment.dart +++ b/lib/dashboard_latest/widgets/progress_fragment.dart @@ -232,7 +232,14 @@ class _ProgressFragmentState extends State with SingleTickerPr ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.inProgressChartColor, "dashboard/inprogress_icon"), ChartData('Closed', snapshot.dashboardCount?.data?.countComplete?.toDouble() ?? 0.0, AppColor.completeChartColor, "dashboard/completed_icon"), ]; - } else { + }else if (_userProvider.isHouseKeeper) { + total = (snapshot.dashboardCount?.data?.countClose ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0); + chartData = [ + ChartData('In Progress', snapshot.dashboardCount?.data?.countInprogress?.toDouble() ?? 0.0, AppColor.inProgressChartColor, "dashboard/inprogress_icon"), + ChartData('Completed', snapshot.dashboardCount?.data?.countClose?.toDouble() ?? 0.0, AppColor.completeChartColor, "dashboard/completed_icon"), + ]; + } + else { total = (snapshot.dashboardCount?.data?.countComplete ?? 0) + (snapshot.dashboardCount?.data?.countInprogress ?? 0) + (snapshot.dashboardCount?.data?.countOpen ?? 0); chartData = [ ChartData('Open', snapshot.dashboardCount?.data?.countOpen?.toDouble() ?? 0.0, AppColor.openChartColor, "dashboard/open_icon"), diff --git a/lib/dashboard_latest/widgets/request_category_fragment.dart b/lib/dashboard_latest/widgets/request_category_fragment.dart index 18c8d313..6df63993 100644 --- a/lib/dashboard_latest/widgets/request_category_fragment.dart +++ b/lib/dashboard_latest/widgets/request_category_fragment.dart @@ -5,6 +5,7 @@ import 'package:test_sa/dashboard_latest/dashboard_provider.dart'; import 'package:test_sa/dashboard_latest/widgets/request_category_list.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; +import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/enums/user_types.dart'; @@ -76,8 +77,8 @@ class _RequestCategoryFragmentState extends State with dashboardProvider.getRequestDetail( usersType: userType ?? UsersTypes.normal_user, showLoader: true, - status: tabs[dashboardProvider.currentListIndex].tag, - tabId: tabs[dashboardProvider.currentListIndex].id, + status: tabs[dashboardProvider.currentListIndex??0].tag, + tabId: tabs[dashboardProvider.currentListIndex??0].id, isAscending: isAscending, ); } @@ -91,7 +92,7 @@ class _RequestCategoryFragmentState extends State with // Check if user is FMS Engineer using SettingProvider final bool isFMSEngineer = user?.type == UsersTypes.engineer && settingProvider.isUserFMS; - + final bool isHouseKeeper = user?.type == UsersTypes.houseKeeper; return Column(mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ getTabs( requestsProvider: dashboardProvider, @@ -102,7 +103,7 @@ class _RequestCategoryFragmentState extends State with opacity: _headerFadeAnimation, child: SlideTransition( position: _headerSlideAnimation, - child: !isNurse && dashboardProvider.tabs.isNotEmpty && dashboardProvider.tabs[dashboardProvider.currentListIndex].tag == 0 + child: !isNurse && dashboardProvider.tabs.isNotEmpty && dashboardProvider.tabs[dashboardProvider.currentListIndex??0].tag == 0 ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -125,7 +126,23 @@ class _RequestCategoryFragmentState extends State with ) : const SizedBox(), ], - ).paddingOnly(start: 14, end: 12) + ).paddingOnly(start: 14, end: 12): + isHouseKeeper + ? Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + 'All Tasks'.addTranslation.heading4(context), + 'add_icon' + .toSvgAsset( + width: 24, + height: 24, + ) + .onPress(() { + Navigator.of(context).pushNamed('/cleaner_search'); + }), + ], + ).paddingOnly(start: 16, end: 16) + : Row( spacing: 16, children: [ diff --git a/lib/dashboard_latest/widgets/request_category_fragment_housekeeper.dart b/lib/dashboard_latest/widgets/request_category_fragment_housekeeper.dart index 6a7fd948..01501147 100644 --- a/lib/dashboard_latest/widgets/request_category_fragment_housekeeper.dart +++ b/lib/dashboard_latest/widgets/request_category_fragment_housekeeper.dart @@ -105,7 +105,7 @@ class _RequestCategoryFragmentHouseKeeperState extends State(builder: (context, dashboardProvider, child) { List tabs = CategoryTabs.getTabs(userType: UsersTypes.houseKeeper, context: context); - + print('i am here..'); return Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, diff --git a/lib/dashboard_latest/widgets/request_category_list.dart b/lib/dashboard_latest/widgets/request_category_list.dart index f61f08bd..a4ba5cd5 100644 --- a/lib/dashboard_latest/widgets/request_category_list.dart +++ b/lib/dashboard_latest/widgets/request_category_list.dart @@ -4,6 +4,7 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/new_models/dashboard_detail.dart'; import 'package:test_sa/modules/asset_delivery_module/pages/asset_delivery_item_view.dart'; import 'package:test_sa/modules/asset_inventory_module/pages/inventory_session_item_view.dart'; +import 'package:test_sa/modules/cleaner_module/widgets/one_time_task_item_view.dart'; import 'package:test_sa/modules/demo_module/demo_request_item_view.dart'; import 'package:test_sa/modules/internal_audit_module/pages/equipment_internal_audit/equipment_internal_audit_item_view.dart'; import 'package:test_sa/modules/loan_module/pages/loan_equipment_item_view.dart'; @@ -131,6 +132,8 @@ class _RequestCategoryListState extends State with SingleTi return MedicalGasInspectionItemView(requestData: request); case 15: return DemoRequestItemView(requestData: request); + case 17: + return OneTimeTaskItemView(requestData: request); default: return Container( height: 100, diff --git a/lib/new_views/common_widgets/app_bottom_nav_bar.dart b/lib/new_views/common_widgets/app_bottom_nav_bar.dart index d2274958..5ade02e2 100644 --- a/lib/new_views/common_widgets/app_bottom_nav_bar.dart +++ b/lib/new_views/common_widgets/app_bottom_nav_bar.dart @@ -19,12 +19,13 @@ class AppBottomNavigationBar extends StatelessWidget { bool isEngineer = (Provider.of(context, listen: false).user?.type) == UsersTypes.engineer; bool isUserFMS = Provider.of(context, listen: false).isUserFMS; bool commissioningEng = context.userProvider.isCommissioningEngineer; + bool isHouseKeeper = context.userProvider.isHouseKeeper; List navItems = [ NavItemModel(0, "overview", context.translation.overview), - NavItemModel(1, "request_icon", context.translation.workOrder), - if (!commissioningEng) NavItemModel(2, "add_icon", context.translation.calendar, showLabel: false), - NavItemModel(3, "assets", context.translation.assets), + if(!isHouseKeeper) NavItemModel(1, "request_icon", context.translation.workOrder), + if (!commissioningEng&& !isHouseKeeper) NavItemModel(2, "add_icon", context.translation.calendar, showLabel: false), + if(!isHouseKeeper) NavItemModel(3, "assets", context.translation.assets), NavItemModel(4, "contact", context.translation.contact), ]; diff --git a/lib/new_views/pages/land_page/land_page.dart b/lib/new_views/pages/land_page/land_page.dart index 0248c236..0dedddcd 100644 --- a/lib/new_views/pages/land_page/land_page.dart +++ b/lib/new_views/pages/land_page/land_page.dart @@ -115,7 +115,9 @@ class _LandPageState extends State { WidgetsBinding.instance.addPostFrameCallback((_) { _userProvider!.getSwipeLastTransaction(userId: _userProvider!.user!.userID!); _userProvider!.getSiteContactInfo(); - Provider.of(context, listen: false).getData(); + if(!_userProvider!.isHouseKeeper) { + Provider.of(context, listen: false).getData(); + } }); } _pages = [ diff --git a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart index 6e7684af..d0eb358d 100644 --- a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart +++ b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart @@ -144,7 +144,11 @@ class _AllRequestsFilterPageState extends State { types['Incidents'] = 16; } - final statuses = { + if (context.userProvider.isHouseKeeper) { + types = {context.translation.recurrentWo: 5}; + } + + var statuses = { "All WO": 0, context.translation.open: 1, context.translation.inProgress: 2, @@ -152,6 +156,16 @@ class _AllRequestsFilterPageState extends State { context.translation.closed: 3, "Canceled": 5, }; + if (context.userProvider.isHouseKeeper) { + statuses = { + "All WO": 0, + // context.translation.open: 1, + context.translation.inProgress: 2, + // context.translation.completed: 4, + context.translation.closed: 3, + // "Canceled": 5, + }; + } return Scaffold( appBar: DefaultAppBar( title: context.translation.filter, diff --git a/lib/new_views/pages/land_page/my_request/my_requests_page.dart b/lib/new_views/pages/land_page/my_request/my_requests_page.dart index 49527cd7..d2c3ebfc 100644 --- a/lib/new_views/pages/land_page/my_request/my_requests_page.dart +++ b/lib/new_views/pages/land_page/my_request/my_requests_page.dart @@ -147,6 +147,13 @@ class _MyRequestsPageState extends State with SingleTickerProvid if (context.settingProvider.isUserFlowMedical && !context.userProvider.isNurse) { requestsList.add(Request(16, "Incidents")); } + if (context.userProvider.isHouseKeeper) { + requestsList = [ + Request(null, context.translation.allWorkOrder), + Request(5, context.translation.recurrentWo), + // Request(15, 'Demo'), moved to permission api + ]; + } _provider = Provider.of(context, listen: false); _provider!.reset();