From 40c7e75fa47cb7a9931301225601e038fd34ee9c Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 20 Oct 2025 16:30:10 +0300 Subject: [PATCH] assessor role added for TRAF. --- .../providers/api/all_requests_provider.dart | 13 +++++++++---- lib/controllers/providers/api/user_provider.dart | 7 +++++++ lib/models/enums/user_types.dart | 2 ++ lib/models/user.dart | 12 ++++++++---- .../land_page/create_request-type_bottomsheet.dart | 14 ++++++++------ lib/new_views/pages/land_page/land_page.dart | 3 +-- .../my_request/all_requests_filter_page.dart | 6 +++++- .../land_page/my_request/my_requests_page.dart | 7 +++++++ 8 files changed, 47 insertions(+), 17 deletions(-) diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index 048e39f6..470f803d 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -134,19 +134,24 @@ class AllRequestsProvider extends ChangeNotifier { List getStatues(BuildContext context) { List list = [1, 2, 3, 4]; - if (context.userProvider.user!.type != UsersTypes.normal_user) { + if (context.userProvider.isAssessor) { + list = [9]; + return list; + } + + if (!context.userProvider.isNurse) { list.add(5); } list.add(6); // task module - if (context.settingProvider.isUserFlowMedical && context.userProvider.user!.type != UsersTypes.normal_user) { + if (context.settingProvider.isUserFlowMedical && !context.userProvider.isNurse) { list.add(7); // task mod } - if (context.userProvider.user!.type != UsersTypes.normal_user) { + if (!context.userProvider.isNurse) { list.add(8); // } - if (context.userProvider.user!.type == UsersTypes.normal_user) { + if (context.userProvider.isNurse) { list.add(9); // } diff --git a/lib/controllers/providers/api/user_provider.dart b/lib/controllers/providers/api/user_provider.dart index 6e6fc577..f8c93d63 100644 --- a/lib/controllers/providers/api/user_provider.dart +++ b/lib/controllers/providers/api/user_provider.dart @@ -8,6 +8,7 @@ import 'package:http/http.dart'; import 'package:test_sa/controllers/api_routes/api_manager.dart'; import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/extensions/context_extension.dart'; +import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/new_models/general_response_model.dart'; import 'package:test_sa/models/new_models/update_password.dart'; import 'package:test_sa/models/new_models/verify_otp_model.dart'; @@ -39,6 +40,12 @@ class UserProvider extends ChangeNotifier { File? profileImage; + bool get isEngineer => user!.type == UsersTypes.engineer; + + bool get isNurse => user!.type == UsersTypes.normal_user; + + bool get isAssessor => user!.type == UsersTypes.assessor || user!.type == UsersTypes.assessorTl; + VerifyOtpModel _verifyOtpModel = VerifyOtpModel(); SwipeTransaction _swipeTransactionModel = SwipeTransaction(); List _swipeHistory = []; diff --git a/lib/models/enums/user_types.dart b/lib/models/enums/user_types.dart index e84e2493..63f1d9d7 100644 --- a/lib/models/enums/user_types.dart +++ b/lib/models/enums/user_types.dart @@ -2,4 +2,6 @@ enum UsersTypes { engineer, // 0 normal_user, // 1 nurse, // 1 + assessor, + assessorTl } diff --git a/lib/models/user.dart b/lib/models/user.dart index a1ed40b0..3ffc5b29 100644 --- a/lib/models/user.dart +++ b/lib/models/user.dart @@ -88,12 +88,13 @@ class User { Future> toLoginJson() async { String notificationType = (Platform.isAndroid && !(await FirebaseNotificationManger.isGoogleServicesAvailable())) ? "HMC" : "FCM"; - if(FirebaseNotificationManger.token==null){ + if (FirebaseNotificationManger.token == null) { //calling this agin to check for token as sometimes token is null fresh install.. await FirebaseNotificationManger.getToken(); } return {"username": userName, "password": password, "fireBaseToken": FirebaseNotificationManger?.token ?? "", "notificationType": notificationType}; } + UsersTypes? get type { switch (userRoles?.first.value) { case "R-6": @@ -102,11 +103,16 @@ class User { return UsersTypes.normal_user; case "R-33": // Head Nurse Role return UsersTypes.normal_user; + case "R-32": // Head Nurse Role + return UsersTypes.assessor; + case "R-19": // Head Nurse Role + return UsersTypes.assessorTl; default: return null; } } + Map toUpdateProfileJson() { Map jsonObject = {}; // if (departmentId != null) jsonObject["department"] = departmentId; @@ -309,9 +315,7 @@ class AssetGroup { } @override - bool operator ==(Object other) => - identical(this, other) || - other is AssetGroup && runtimeType == other.runtimeType && id == other.id; + bool operator ==(Object other) => identical(this, other) || other is AssetGroup && runtimeType == other.runtimeType && id == other.id; @override int get hashCode => id.hashCode; diff --git a/lib/new_views/pages/land_page/create_request-type_bottomsheet.dart b/lib/new_views/pages/land_page/create_request-type_bottomsheet.dart index f644e951..cca09e6e 100644 --- a/lib/new_views/pages/land_page/create_request-type_bottomsheet.dart +++ b/lib/new_views/pages/land_page/create_request-type_bottomsheet.dart @@ -5,6 +5,7 @@ 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/models/enums/user_types.dart'; import 'package:test_sa/modules/cm_module/views/nurse/create_new_request_view.dart'; import 'package:test_sa/modules/tm_module/tasks_wo/create_task_view.dart'; import 'package:test_sa/modules/traf_module/create_traf_request_page.dart'; @@ -13,13 +14,11 @@ import 'package:test_sa/new_views/pages/gas_refill_request_form.dart'; import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart'; class CreateRequestTypeBottomSheet extends StatelessWidget { - final bool isEngineer; - - const CreateRequestTypeBottomSheet({super.key, required this.isEngineer}); + const CreateRequestTypeBottomSheet({super.key}); @override Widget build(BuildContext context) { - List requestList = CreateRequestModel.requestsList(context, isEngineer); + List requestList = CreateRequestModel.requestsList(context); return SafeArea( top: false, @@ -89,9 +88,12 @@ class CreateRequestModel { CreateRequestModel(this.title, this.icon, this.routeName); - static List requestsList(BuildContext context, bool isEngineer) { + static List requestsList(BuildContext context) { List list = []; - if (isEngineer) { + + if (context.userProvider.isAssessor) { + list.add(CreateRequestModel("TRAF".addTranslation, "add_icon", CreateTRAFRequestPage.id)); + } else if (context.userProvider.isEngineer) { if (Provider.of(context, listen: false).engineerCanCreateCM) { list.add(CreateRequestModel(context.translation.correctiveMaintenance, "add_icon", CreateNewRequest.id)); } diff --git a/lib/new_views/pages/land_page/land_page.dart b/lib/new_views/pages/land_page/land_page.dart index 0aebe82e..b28b6eb2 100644 --- a/lib/new_views/pages/land_page/land_page.dart +++ b/lib/new_views/pages/land_page/land_page.dart @@ -161,13 +161,12 @@ class _LandPageState extends State { : AppBottomNavigationBar( selectedIndex: currentPageIndex, onPressed: (index) { - bool isEngineer = _userProvider!.user!.type == UsersTypes.engineer; if (index == 2) { showModalBottomSheet( context: context, useSafeArea: true, backgroundColor: Colors.white, - builder: (context) => CreateRequestTypeBottomSheet(isEngineer: isEngineer), + builder: (context) => CreateRequestTypeBottomSheet(), ); } else if (index == 4) { showModalBottomSheet( 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 cbfbbf68..c1c4729f 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 @@ -60,7 +60,7 @@ class _AllRequestsFilterPageState extends State { ); search!.searchBySelectedValue = search?.requestNumber; } - final types = { + var types = { context.translation.correctiveMaintenance: 1, context.translation.gasRefill: 2, context.translation.transferAsset: 3, @@ -79,6 +79,10 @@ class _AllRequestsFilterPageState extends State { if (!isEngineer) { types['TRAF'] = 9; } + if (context.userProvider.isAssessor) { + types = {"TRAF": 9}; + } + final statuses = { "All WO": 0, context.translation.open: 1, 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 46ef9af8..8ac38ab6 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 @@ -54,6 +54,13 @@ class _MyRequestsPageState extends State { requestsList.add(Request(9, 'TRAF')); } + if (context.userProvider.isAssessor) { + requestsList = [ + Request(null, context.translation.allWorkOrder), + Request(9, 'TRAF'), + ]; + } + _provider = Provider.of(context, listen: false); _provider!.reset(); WidgetsBinding.instance.addPostFrameCallback((_) {