diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index f712d744..a86b9bdb 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -497,6 +497,8 @@ class URLs { static get getDemoRequestById => "$_baseUrl/DemoRequest"; + static get cancelDemoRequest => "$_baseUrl/DemoRequest/Cancel"; + static get updateDemoRequestByAssessor => "$_baseUrl/DemoRequest/UpdateDemoRequestByAssessor"; static get updateDemoPeriodByRequester => "$_baseUrl/DemoRequest/UpdateDemoPeriodByRequester"; diff --git a/lib/modules/demo_module/demo_detail_view_page.dart b/lib/modules/demo_module/demo_detail_view_page.dart index ef054f4f..71fce0bc 100644 --- a/lib/modules/demo_module/demo_detail_view_page.dart +++ b/lib/modules/demo_module/demo_detail_view_page.dart @@ -4,6 +4,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/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/modules/cm_module/views/components/action_button/footer_action_button.dart'; @@ -13,6 +14,7 @@ import 'package:test_sa/modules/demo_module/provider/demo_provider.dart'; import 'package:test_sa/modules/loan_module/models/loan_attachment_model.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; +import 'package:test_sa/new_views/swipe_module/dialoge/acknowledge_work_dialog.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import '../../controllers/api_routes/urls.dart'; @@ -141,12 +143,43 @@ class _DemoDetailViewPageState extends State { ], ).toShadowContainer(context, padding: 12), ).expanded, - FooterActionButton.demoRequestDetailsFooterWidget( - demoRequestStage: demoData.status!.demoRequestStepEnum!, - dataModel: demoData, - status: demoData.status!, + 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/provider/demo_provider.dart b/lib/modules/demo_module/provider/demo_provider.dart index 8d9af0e0..80271755 100644 --- a/lib/modules/demo_module/provider/demo_provider.dart +++ b/lib/modules/demo_module/provider/demo_provider.dart @@ -54,6 +54,20 @@ class DemoProvider extends ChangeNotifier { } } + Future cancelRequest(int requestId) async { + try { + Response response = await ApiManager.instance.post(URLs.cancelDemoRequest + "?demoRequestId=$requestId", body: {}, showToast: false); + if (response.statusCode >= 200 && response.statusCode < 300) { + String message = (jsonDecode(response.body)["message"] ?? ""); + Fluttertoast.showToast(msg: message ?? "", toastLength: Toast.LENGTH_LONG); + return true; + } + return false; + } catch (error) { + return false; + } + } + Future updateDemoRequest(Map body) async { try { Response response = await ApiManager.instance.post(URLs.updateDemoRequest, body: body, showToast: false);