From 313df6da8b1a020e2624361f4a6f5b3e576568ea Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Mon, 17 Aug 2026 15:31:31 +0300 Subject: [PATCH 1/3] improvements --- .../providers/api/user_provider.dart | 8 +- lib/main.dart | 2 + .../incident_module/incident_detail_page.dart | 80 ++++++++++--------- .../traf_module/traf_request_detail_page.dart | 50 ++++++------ 4 files changed, 76 insertions(+), 64 deletions(-) diff --git a/lib/controllers/providers/api/user_provider.dart b/lib/controllers/providers/api/user_provider.dart index f1b395b6..d1844e35 100644 --- a/lib/controllers/providers/api/user_provider.dart +++ b/lib/controllers/providers/api/user_provider.dart @@ -68,7 +68,13 @@ class UserProvider extends ChangeNotifier { List get modulesPermissionsList => _modulesPermissionsModel; - ModulesPermissionsModel currentModelPermission(int moduleId) => ModulesPermissionsModel.fromJson(_modulesPermissionsModel.singleWhere((module) => module.module!.value == moduleId).toJson()); + ModulesPermissionsModel? currentModelPermission(int moduleId) { + try { + return ModulesPermissionsModel.fromJson(_modulesPermissionsModel.singleWhere((module) => module.module!.value == moduleId).toJson()); + } catch (ex) { + return null; + } + } set swipeHistory(List value) { _swipeHistory = value; diff --git a/lib/main.dart b/lib/main.dart index 50847d8f..29987432 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -68,6 +68,7 @@ import 'package:test_sa/modules/applicationDemo/providers/application_demo_reque import 'package:test_sa/modules/applicationDemo/screens/application_demo_request_form_screen.dart'; import 'package:test_sa/modules/tm_module/gas_refill/create_gas_refill_request.dart'; import 'package:test_sa/modules/tm_module/gas_refill/update_gas_refill_request.dart'; +import 'package:test_sa/modules/traf_module/traf_request_provider.dart'; import 'package:test_sa/new_views/app_style/app_themes.dart'; import 'package:test_sa/new_views/pages/help_center_page.dart'; import 'package:test_sa/new_views/pages/land_page/land_page.dart'; @@ -332,6 +333,7 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => LoanProvider(), lazy: true), ChangeNotifierProvider(create: (_) => LoanPeriodProvider(), lazy: true), ChangeNotifierProvider(create: (_) => DemoProvider(), lazy: true), + ChangeNotifierProvider(create: (_) => TrafRequestProvider(), lazy: true), // MEDICAL GAS INSPECTION PROVIDERS (4) ChangeNotifierProvider(create: (_) => MedicalGasOrderTypeProvider(), lazy: true), diff --git a/lib/modules/incident_module/incident_detail_page.dart b/lib/modules/incident_module/incident_detail_page.dart index 4f9ade6e..e9602f8c 100644 --- a/lib/modules/incident_module/incident_detail_page.dart +++ b/lib/modules/incident_module/incident_detail_page.dart @@ -33,49 +33,51 @@ class IncidentDetailPage extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( appBar: const DefaultAppBar(title: "Request Details"), - body: FutureBuilder( - future: Provider.of(context, listen: false).getIncidentById(incidentId), - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (snapshot.connectionState == ConnectionState.waiting) return CircularProgressIndicator(color: AppColor.loadingColor(context)).center; - if (snapshot.data == null) return const NoDataFound().center; + body: SafeArea( + child: FutureBuilder( + future: Provider.of(context, listen: false).getIncidentById(incidentId), + builder: (BuildContext context, AsyncSnapshot snapshot) { + if (snapshot.connectionState == ConnectionState.waiting) return CircularProgressIndicator(color: AppColor.loadingColor(context)).center; + if (snapshot.data == null) return const NoDataFound().center; - List allAttachments = snapshot.data!.incidentAttachments!; + List allAttachments = snapshot.data!.incidentAttachments!; - return SingleChildScrollView( - padding: const EdgeInsets.all(16), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - StatusLabel( - label: snapshot.data!.incidentStatusName!, - textColor: AppColor.getRequestStatusTextColorByName(context, snapshot.data!.incidentStatusName!), - backgroundColor: AppColor.getRequestStatusColorByName(context, snapshot.data!.incidentStatusName!), - ), - 1.width.expanded, - InfoDateWidget(snapshot.data!.createdDate?.toString() ?? ""), - ], - ), - // 12.height, - ...requesterDetails(context, snapshot.data!), - const Divider().defaultStyle(context), - ...requestDetails(context, snapshot.data!), - if (snapshot.data!.ovrTicketNumber?.isNotEmpty ?? false) ovrInformation(context, snapshot.data!.ovrTicketNumber!), - const Divider().defaultStyle(context), - ...assetDetails(context, snapshot.data!), - const Divider().defaultStyle(context), - ...personInvolvedDetails(context, snapshot.data!), - if (allAttachments.isNotEmpty) ...[ + return SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + StatusLabel( + label: snapshot.data!.incidentStatusName!, + textColor: AppColor.getRequestStatusTextColorByName(context, snapshot.data!.incidentStatusName!), + backgroundColor: AppColor.getRequestStatusColorByName(context, snapshot.data!.incidentStatusName!), + ), + 1.width.expanded, + InfoDateWidget(snapshot.data!.createdDate?.toString() ?? ""), + ], + ), + // 12.height, + ...requesterDetails(context, snapshot.data!), + const Divider().defaultStyle(context), + ...requestDetails(context, snapshot.data!), + if (snapshot.data!.ovrTicketNumber?.isNotEmpty ?? false) ovrInformation(context, snapshot.data!.ovrTicketNumber!), const Divider().defaultStyle(context), - InfoHeader16Widget("Attachments".addTranslation), - FilesList(images: allAttachments.map((e) => URLs.getFileUrl(e.attachmentName ?? '') ?? '').toList() ?? []), + ...assetDetails(context, snapshot.data!), + const Divider().defaultStyle(context), + ...personInvolvedDetails(context, snapshot.data!), + if (allAttachments.isNotEmpty) ...[ + const Divider().defaultStyle(context), + InfoHeader16Widget("Attachments".addTranslation), + FilesList(images: allAttachments.map((e) => URLs.getFileUrl(e.attachmentName ?? '') ?? '').toList() ?? []), + ], ], - ], - ).toShadowContainer(context), - ); - })); + ).toShadowContainer(context), + ); + }), + )); } List requestDetails(BuildContext context, IncidentDataModel incidentData) { diff --git a/lib/modules/traf_module/traf_request_detail_page.dart b/lib/modules/traf_module/traf_request_detail_page.dart index 00673a35..7f20e018 100644 --- a/lib/modules/traf_module/traf_request_detail_page.dart +++ b/lib/modules/traf_module/traf_request_detail_page.dart @@ -67,30 +67,32 @@ class _TrafRequestDetailPageState extends State { } return trafProvider.trafRequestDataModel == null ? const NoDataFound().center - : Column( - children: [ - ListView( - padding: const EdgeInsets.all(16), - children: [ - requesterInformation(trafProvider.trafRequestDataModel!), - 12.height, - requestInformation(trafProvider.trafRequestDataModel!), - 12.height, - assetInformation(trafProvider.trafRequestDataModel!), - ], - ).expanded, - // // if (isEngineer) - // FooterActionButton.footerContainer( - // context: context, - // child: AppFilledButton( - // buttonColor: AppColor.primary10, - // label: "Update", - // onPressed: () { - // Navigator.pushNamed(context, UpdateTrafRequestPage.id); - // }), - // ), - ], - ); + : SafeArea( + child: Column( + children: [ + ListView( + padding: const EdgeInsets.all(16), + children: [ + requesterInformation(trafProvider.trafRequestDataModel!), + 12.height, + requestInformation(trafProvider.trafRequestDataModel!), + 12.height, + assetInformation(trafProvider.trafRequestDataModel!), + ], + ).expanded, + // // if (isEngineer) + // FooterActionButton.footerContainer( + // context: context, + // child: AppFilledButton( + // buttonColor: AppColor.primary10, + // label: "Update", + // onPressed: () { + // Navigator.pushNamed(context, UpdateTrafRequestPage.id); + // }), + // ), + ], + ), + ); }, )); } From 09ecf4fab401e69c8cb9860303aaffa18a3c9d51 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 18 Aug 2026 11:58:52 +0300 Subject: [PATCH 2/3] traf added. --- lib/main.dart | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/main.dart b/lib/main.dart index 29987432..acc81829 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -146,6 +146,8 @@ import 'modules/tm_module/device_transfer/device_filter_screen.dart'; import 'modules/tm_module/device_transfer/device_search_screen.dart'; import 'modules/tm_module/tasks/create_task_view.dart'; import 'modules/tm_module/gas_refill/gas_refill_request_form.dart'; +import 'modules/traf_module/create_traf_request_page.dart'; +import 'modules/traf_module/update_traf_request_page.dart'; import 'providers/lookups/classification_lookup_provider.dart'; import 'providers/lookups/customer_lookup_provider.dart'; import 'providers/lookups/department_lookup_provider.dart'; @@ -416,6 +418,8 @@ class MyApp extends StatelessWidget { LandPage.routeName: (_) => const LandPage(), GasRefillRequestForm.routeName: (_) => const GasRefillRequestForm(), CreateTaskView.id: (_) => const CreateTaskView(), + CreateTRAFRequestPage.id: (_) => CreateTRAFRequestPage(), + UpdateTrafRequestPage.id: (_) => UpdateTrafRequestPage(), CreateGasRefillRequest.id: (_) => const CreateGasRefillRequest(), CreateCMRequest.id: (_) => const CreateCMRequest(), MyAssetsPage.id: (_) => const MyAssetsPage(), From f413d467384535608a19697904bb1e8e51f99853 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 18 Aug 2026 15:55:18 +0300 Subject: [PATCH 3/3] improvements --- .../providers/api/all_requests_provider.dart | 15 ++++++++++----- .../my_request/all_requests_filter_page.dart | 5 +++++ .../land_page/my_request/my_requests_page.dart | 11 +++++++++++ 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index 0a93116b..45f62f80 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -137,7 +137,14 @@ class AllRequestsProvider extends ChangeNotifier { List list = [1, 2, 3, 4]; if (context.userProvider.isAssessor) { - list = [9, 15]; + list = [9]; + context.userProvider.modulesPermissionsList.forEach((module) { + if (module.module!.value! == 8 || module.module!.value! == 9 || module.module!.value! == 15) { + list.add(module.module!.value!); + } + }); + list.add(16); + list = list.toSet().toList(); return list; } if (context.userProvider.isQualityUser) { @@ -158,9 +165,8 @@ class AllRequestsProvider extends ChangeNotifier { list.add(7); // task mod } - //TODO uncommit this to enable TRAF in production. context.userProvider.modulesPermissionsList.forEach((module) { - if (module.module!.value! == 8 || module.module!.value! == 9) { + if (module.module!.value! == 8 || module.module!.value! == 9 || module.module!.value! == 15) { list.add(module.module!.value!); } }); @@ -184,11 +190,10 @@ class AllRequestsProvider extends ChangeNotifier { // list = [16]; list.add(16); } - if ( context.userProvider.isHouseKeeper) { + if (context.userProvider.isHouseKeeper) { list = [5]; } - return list; } 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 0c4c61ab..68f27fad 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 @@ -141,6 +141,11 @@ class _AllRequestsFilterPageState extends State { 'Assessment of Need & Technology': 9, // 'Demo': 15, moved to permission api }; + context.userProvider.modulesPermissionsList.forEach((module) { + if (module.module!.value! == 8 || module.module!.value! == 9 || module.module!.value! == 15) { + types[module.module!.name!] = module.module!.value!; + } + }); } if (context.settingProvider.isUserFlowMedical && !context.userProvider.isNurse) { types['Incidents'] = 16; 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 65e635ea..2dc66f86 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 @@ -130,6 +130,17 @@ class _MyRequestsPageState extends State with SingleTickerProvid Request(9, 'Assessment of Need & Technology'), // Request(15, 'Demo'), moved to permission api ]; + + context.userProvider.modulesPermissionsList.forEach((module) { + if (module.module!.value! == 8 || module.module!.value! == 9 || module.module!.value! == 15) { + requestsList.add(Request(module.module!.value!, module.module!.name!.addTranslation)); + } + }); + + final seenIds = {}; + requestsList = requestsList.where((req) { + return req.id == null ? true : seenIds.add(req.id!); + }).toList(); } if (context.userProvider.isCommissioningEngineer && context.settingProvider.isUserFlowMedical) { ///TODO need to show only allowed ids for all workOrder