From 3180a80a88a658aec3e6d1e3d6d32a625a670205 Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Wed, 25 Feb 2026 11:38:20 +0300 Subject: [PATCH] demo moved to permission api. --- lib/controllers/api_routes/urls.dart | 4 +- lib/extensions/enum_extensions.dart | 2 + .../action_button/footer_action_button.dart | 1 + .../demo_module/demo_detail_view_page.dart | 80 ++++++++++--------- .../demo_module/demo_request_item_view.dart | 4 +- .../create_request_type_bottom_sheet.dart | 27 +++++-- .../my_request/all_requests_filter_page.dart | 12 ++- .../my_request/my_requests_page.dart | 12 +-- 8 files changed, 83 insertions(+), 59 deletions(-) diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 7dfbe744..3d884615 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -7,8 +7,8 @@ class URLs { // static const host1 = "https://atomsmdev.hmg.com"; // local DEV url static const host1 = "https://atomsmuat.hmg.com"; // local UAT url - static final String _baseUrl = "$_host/mobile"; // host local UAT - // static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis + // static final String _baseUrl = "$_host/mobile"; // host local UAT + static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis // static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM // static final String _baseUrl = "$_host/v4/mobile"; // v4 for Demo module // static final String _baseUrl = "$_host/v5/mobile"; // v5 for data segregation diff --git a/lib/extensions/enum_extensions.dart b/lib/extensions/enum_extensions.dart index c89835a5..3dd98eef 100644 --- a/lib/extensions/enum_extensions.dart +++ b/lib/extensions/enum_extensions.dart @@ -131,6 +131,8 @@ extension IntExtensionsDemoRequest on int { return DemoRequestStepEnum.viewOnly; case 15: return DemoRequestStepEnum.extendDemoPeriod; + case 18: + return DemoRequestStepEnum.submitEvaluation; default: return DemoRequestStepEnum.viewOnly; } diff --git a/lib/modules/cm_module/views/components/action_button/footer_action_button.dart b/lib/modules/cm_module/views/components/action_button/footer_action_button.dart index 151d5a35..65beaed7 100644 --- a/lib/modules/cm_module/views/components/action_button/footer_action_button.dart +++ b/lib/modules/cm_module/views/components/action_button/footer_action_button.dart @@ -454,6 +454,7 @@ class FooterActionButton { // }, // ), // ); + return const SizedBox(); case DemoRequestStepEnum.viewOnly: return const SizedBox(); case DemoRequestStepEnum.extendDemoPeriod: diff --git a/lib/modules/demo_module/demo_detail_view_page.dart b/lib/modules/demo_module/demo_detail_view_page.dart index 27db8ba8..8d4d30ad 100644 --- a/lib/modules/demo_module/demo_detail_view_page.dart +++ b/lib/modules/demo_module/demo_detail_view_page.dart @@ -7,6 +7,7 @@ import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/enums/demo_request_step.dart'; import 'package:test_sa/models/helper_data_models/workorder/work_order_helper_models.dart'; +import 'package:test_sa/models/module_permissions_model.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/modules/demo_module/demo_extension_bottom_sheet.dart'; import 'package:test_sa/modules/demo_module/models/demo_request_model.dart'; @@ -29,8 +30,9 @@ import 'models/demo_attachment_model.dart'; class DemoDetailViewPage extends StatefulWidget { static const String id = "/demo-detail-page"; final int demoId; + final int moduleId; - DemoDetailViewPage({Key? key, required this.demoId}) : super(key: key); + DemoDetailViewPage({Key? key, required this.demoId, required this.moduleId}) : super(key: key); @override _DemoDetailViewPageState createState() { @@ -48,11 +50,12 @@ class _DemoDetailViewPageState extends State { //Todo need to check about attachments. - // bool loading = false; + ModulesPermissionsModel? modelPermission; @override void initState() { demoProvider = Provider.of(context, listen: false); + modelPermission = context.userProvider.currentModelPermission(widget.moduleId); // WidgetsBinding.instance.addPostFrameCallback((_) { // getDetailsById(); // }); @@ -143,43 +146,44 @@ class _DemoDetailViewPageState extends State { ], ).toShadowContainer(context, padding: 12), ).expanded, - if (context.userProvider.isNurse && context.settingProvider.isUserFlowMedical && (demoData.status!.value == 2)) - FooterActionButton.footerContainer( - context: context, - child: AppFilledButton( - label: context.translation.cancel, - buttonColor: AppColor.white60, - textColor: AppColor.black10, - loading: false, - onPressed: () async { - showDialog( - context: context, - builder: (BuildContext cxt) => AcknowledgeWorkDialog( - message: "Are you sure, you want to cancel request?", - confirmButtonText: 'Confirm', - cancelButtonText: 'Cancel', - onSave: () async { - Utils.showLoading(context); - DemoProvider demoProvider = Provider.of(context, listen: false); - bool isSuccess = await demoProvider.cancelRequest(demoData.id!); - Utils.hideLoading(context); - if (isSuccess) { - setState(() {}); - } - }, - onDiscard: () {}, - ), - ); - }, - ), - ) - else - FooterActionButton.demoRequestDetailsFooterWidget( - demoRequestStage: demoData.status!.demoRequestStepEnum!, - dataModel: demoData, - status: demoData.status!, + if (modelPermission?.canEdit ?? false) + if (context.userProvider.isNurse && context.settingProvider.isUserFlowMedical && (demoData.status!.value == 2)) + FooterActionButton.footerContainer( context: context, - refreshData: () => setState(() {})).toShadowContainer(context, padding: 0, showShadow: false, borderRadius: 0), + child: AppFilledButton( + label: context.translation.cancel, + buttonColor: AppColor.white60, + textColor: AppColor.black10, + loading: false, + onPressed: () async { + showDialog( + context: context, + builder: (BuildContext cxt) => AcknowledgeWorkDialog( + message: "Are you sure, you want to cancel request?", + confirmButtonText: 'Confirm', + cancelButtonText: 'Cancel', + onSave: () async { + Utils.showLoading(context); + DemoProvider demoProvider = Provider.of(context, listen: false); + bool isSuccess = await demoProvider.cancelRequest(demoData.id!); + Utils.hideLoading(context); + if (isSuccess) { + setState(() {}); + } + }, + onDiscard: () {}, + ), + ); + }, + ), + ) + else + FooterActionButton.demoRequestDetailsFooterWidget( + demoRequestStage: demoData.status!.demoRequestStepEnum!, + dataModel: demoData, + status: demoData.status!, + context: context, + refreshData: () => setState(() {})).toShadowContainer(context, padding: 0, showShadow: false, borderRadius: 0), ], ); })); diff --git a/lib/modules/demo_module/demo_request_item_view.dart b/lib/modules/demo_module/demo_request_item_view.dart index 4950c35f..120722ad 100644 --- a/lib/modules/demo_module/demo_request_item_view.dart +++ b/lib/modules/demo_module/demo_request_item_view.dart @@ -60,7 +60,7 @@ class DemoRequestItemView extends StatelessWidget { ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => DemoDetailViewPage(demoId: requestData!.id!))); + Navigator.of(context).push(MaterialPageRoute(builder: (_) => DemoDetailViewPage(demoId: requestData!.id!, moduleId: requestData!.transactionNo!))); }); } return Column( @@ -100,7 +100,7 @@ class DemoRequestItemView extends StatelessWidget { ), ], ).toShadowContainer(context, withShadow: showShadow).onPress(() async { - Navigator.of(context).push(MaterialPageRoute(builder: (_) => DemoDetailViewPage(demoId: requestDetails!.id!))); + Navigator.of(context).push(MaterialPageRoute(builder: (_) => DemoDetailViewPage(demoId: requestDetails!.id!, moduleId: requestDetails!.transactionType!))); }); } diff --git a/lib/new_views/pages/land_page/create_request_type_bottom_sheet.dart b/lib/new_views/pages/land_page/create_request_type_bottom_sheet.dart index b0bd23e5..62a4e558 100644 --- a/lib/new_views/pages/land_page/create_request_type_bottom_sheet.dart +++ b/lib/new_views/pages/land_page/create_request_type_bottom_sheet.dart @@ -135,16 +135,27 @@ class CreateRequestModel { list.add(CreateRequestModel(context.translation.correctiveMaintenance, "add_icon", CreateCMRequest.id)); list.add(CreateRequestModel(context.translation.gasRefill, "add_icon", GasRefillRequestForm.routeName)); list.add(CreateRequestModel(context.translation.transferAsset, "add_icon", CreateDeviceTransferRequest.id)); - //TODO uncommit this to enable task. list.add(CreateRequestModel(context.translation.task, "add_icon", CreateTaskView.id)); - context.userProvider.modulesPermissionsList.forEach((module) { - if (module.module!.value! == 9) { - list.add(CreateRequestModel("TRAF".addTranslation, "add_icon", CreateTRAFRequestPage.id)); - } - }); - list.add(CreateRequestModel('Loan Equipment Request'.addTranslation, "add_icon", CreateLoanRequestPage.id)); - list.add(CreateRequestModel('Demo Request'.addTranslation, "add_icon", CreateDemoRequestPage.id)); + // context.userProvider.modulesPermissionsList.forEach((module) { + // if (module.module!.value! == 9) { + // list.add(CreateRequestModel("TRAF".addTranslation, "add_icon", CreateTRAFRequestPage.id)); + // } + // }); + + if (context.settingProvider.isUserFlowMedical) { + list.add(CreateRequestModel('Loan Equipment Request'.addTranslation, "add_icon", CreateLoanRequestPage.id)); + // list.add(CreateRequestModel('Demo Request'.addTranslation, "add_icon", CreateDemoRequestPage.id)); + } } + + context.userProvider.modulesPermissionsList.forEach((module) { + if (module.module!.value! == 9 && (module.canAdd ?? false)) { + list.add(CreateRequestModel("TRAF".addTranslation, "add_icon", CreateTRAFRequestPage.id)); + } + if (module.module!.value! == 15 && (module.canAdd ?? false)) { + list.add(CreateRequestModel('Demo Request'.addTranslation, "add_icon", CreateDemoRequestPage.id)); + } + }); if (!context.userProvider.isNurse && context.settingProvider.isUserFlowMedical) { list.add(CreateRequestModel("Incident Management", "add_icon", CreateIncidentRequestPage.id)); } 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 ec5d49c9..9b5a7441 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 @@ -74,8 +74,6 @@ class _AllRequestsFilterPageState extends State { context.translation.transferAsset: 3, context.translation.preventiveMaintenance: 4, context.translation.task: 6, - "Loan Equipment": 12, - "Demo": 15, }; if (isEngineer) { @@ -91,7 +89,7 @@ class _AllRequestsFilterPageState extends State { // switching asset inventory to users permissions 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) { types[module.module!.name!] = module.module!.value!; } }); @@ -108,6 +106,12 @@ class _AllRequestsFilterPageState extends State { if (context.settingProvider.isUserFlowMedical) types['Equipment Internal Audit'] = 10; if (context.settingProvider.isUserFlowMedical) types['System Internal Audit'] = 11; } + + if (context.settingProvider.isUserFlowMedical) { + types['Loan Equipment'] = 12; + // types['Demo'] = 15; moved to permission api + } + if (context.userProvider.isCommissioningEngineer && context.settingProvider.isUserFlowMedical) { ///TODO need to check what other requests type needed here. types = {'Asset Delivery': 13}; @@ -117,7 +121,7 @@ class _AllRequestsFilterPageState extends State { if (context.settingProvider.isUserFlowMedical && context.userProvider.isAssessor) { types = { 'TRAF': 9, - 'Demo Request': 15, + // 'Demo': 15, moved to permission api }; } if (context.settingProvider.isUserFlowMedical && !context.userProvider.isNurse) { 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 18f39022..ba49458e 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 @@ -58,7 +58,7 @@ class _MyRequestsPageState extends State { // switching asset inventory to users permissions 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) { requestsList.add(Request(module.module!.value!, module.module!.name!.addTranslation)); } }); @@ -74,14 +74,16 @@ class _MyRequestsPageState extends State { requestsList.add(Request(14, "Medical Gas Inspection")); } - requestsList.add(Request(12, "Loan Equipment")); - requestsList.add(Request(15, "Demo")); - if (context.userProvider.isAssessor) { + if (context.settingProvider.isUserFlowMedical) { + requestsList.add(Request(12, "Loan Equipment")); + // requestsList.add(Request(15, "Demo")); moved to permission api + } + if (context.userProvider.isAssessor) { requestsList = [ Request(null, context.translation.allWorkOrder), Request(9, 'TRAF'), - Request(15, 'Demo'), + // Request(15, 'Demo'), moved to permission api ]; } if (context.userProvider.isCommissioningEngineer && context.settingProvider.isUserFlowMedical) {