diff --git a/lib/extensions/context_extension.dart b/lib/extensions/context_extension.dart index f85af74c..5e304680 100644 --- a/lib/extensions/context_extension.dart +++ b/lib/extensions/context_extension.dart @@ -14,6 +14,8 @@ extension BuildContextExtension on BuildContext { bool get isDark => Provider.of(this).theme == "dark"; + bool get isDarkNotListen => Provider.of(this, listen: false).theme == "dark"; + bool get isAr => Provider.of(this).language == "ar"; SettingProvider get settingProvider => Provider.of(this, listen: false); @@ -36,12 +38,12 @@ extension BuildContextExtension on BuildContext { builder: (BuildContext cxt) => ConfirmDialog(message: message, onTap: onTap, title: title,okTitle: okTitle), ); - Future showBottomSheet(Widget childWidget, {bool? isDismissible, String? title}) => showModalBottomSheet( + Future showBottomSheet(Widget childWidget, {bool? isDismissible, String? title, bool showCancelButton = false}) => showModalBottomSheet( context: this, useSafeArea: true, isScrollControlled: true, isDismissible: true, backgroundColor: Colors.transparent, - builder: (context) => SingleChildScrollView(padding: const EdgeInsets.all(0), child: childWidget.bottomSafeArea).bottomSheetContainerNew(context, title: title), + builder: (context) => SingleChildScrollView(padding: const EdgeInsets.all(0), child: childWidget.bottomSafeArea).bottomSheetContainerNew(context, title: title,showCancelButton: showCancelButton), ); } diff --git a/lib/extensions/text_extensions.dart b/lib/extensions/text_extensions.dart index e608131f..5ec00e5b 100644 --- a/lib/extensions/text_extensions.dart +++ b/lib/extensions/text_extensions.dart @@ -23,7 +23,7 @@ extension TextStyles on String { Text heading6(BuildContext context) => getTextWithStyle(this, AppTextStyles.heading6, context.isDark ? AppColor.neutral30 : AppColor.neutral50); - Text bodyText(BuildContext context) => getTextWithStyle(this, AppTextStyles.bodyText, context.isDark ? AppColor.neutral10 : AppColor.neutral20); + Text bodyText(BuildContext context) => getTextWithStyle(this, AppTextStyles.bodyText, context.isDarkNotListen ? AppColor.neutral10 : AppColor.neutral20); Text bodyText2(BuildContext context) => getTextWithStyle(this, AppTextStyles.bodyText2, context.isDark ? AppColor.neutral10 : AppColor.neutral20); diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index 25aee136..00fc6aa7 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -145,7 +145,7 @@ extension WidgetExtensions on Widget { child: this, ); - Widget bottomSheetContainerNew(BuildContext context, {EdgeInsets? padding, String? title}) => Container( + Widget bottomSheetContainerNew(BuildContext context, {EdgeInsets? padding, String? title, bool showCancelButton = false}) => Container( clipBehavior: Clip.antiAlias, margin: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), decoration: BoxDecoration( @@ -164,7 +164,21 @@ extension WidgetExtensions on Widget { ).center, 16.height, if (title != null) ...[ - title.bottomSheetHeadingTextStyle(context), + Row( + children: [ + title.bottomSheetHeadingTextStyle(context).expanded, + if (showCancelButton) ...[ + 8.width, + InkWell( + onTap: () => Navigator.pop(context), + child: Icon( + Icons.cancel_outlined, + color: context.isDarkNotListen ? AppColor.neutral30 : AppColor.black20, + ), + ) + ] + ], + ), 16.height, ], this diff --git a/lib/modules/loan_module/pages/installation_pullout_form_view.dart b/lib/modules/loan_module/pages/installation_pullout_form_view.dart index ca70faa3..6d60fb2d 100644 --- a/lib/modules/loan_module/pages/installation_pullout_form_view.dart +++ b/lib/modules/loan_module/pages/installation_pullout_form_view.dart @@ -219,8 +219,8 @@ class _InstallationPullOutFormViewState extends State(context, listen: false); - bool isSuccess = await incidentProvider.loanWorkflowAction(_formData.toPulloutJson()); + LoanProvider loanProvider = Provider.of(context, listen: false); + bool isSuccess = await loanProvider.loanWorkflowAction(_formData.toPulloutJson()); Utils.hideLoading(context); if (isSuccess) { Navigator.pop(context, true); diff --git a/lib/modules/loan_module/pages/loan_equipment_detail_page.dart b/lib/modules/loan_module/pages/loan_equipment_detail_page.dart index 2b1175aa..a802e90b 100644 --- a/lib/modules/loan_module/pages/loan_equipment_detail_page.dart +++ b/lib/modules/loan_module/pages/loan_equipment_detail_page.dart @@ -6,6 +6,7 @@ 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/helper/utils.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/modules/loan_module/models/loan_attachment_model.dart'; import 'package:test_sa/modules/loan_module/pages/installation_form_view.dart'; @@ -13,6 +14,7 @@ import 'package:test_sa/modules/loan_module/pages/pullout_detail_page.dart'; import 'package:test_sa/modules/loan_module/provider/loan_provider.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/common_widgets/app_text_form_field.dart'; import 'package:test_sa/new_views/common_widgets/default_app_bar.dart'; import 'package:test_sa/views/widgets/images/files_list.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; @@ -105,11 +107,59 @@ class _LoanEquipmentDetailPageState extends State { ], ).expanded, // @todo ask backend to add loanTypeValue, so we can show or hide the buttons - if (snapshot.data?.loanTypeName == "Standard" && context.userProvider.isEngineer && (snapshot.data?.loanStatusValue == 5 || snapshot.data?.loanStatusValue == 8)) + if (snapshot.data?.loanTypeName == "Standard" && + context.userProvider.isEngineer && + (snapshot.data?.loanStatusValue == 4 || snapshot.data?.loanStatusValue == 5 || snapshot.data?.loanStatusValue == 8)) FooterActionButton.footerContainer( context: context, child: AppFilledButton( onPressed: () async { + if (snapshot.data?.loanStatusValue == 4) { + String comment = ""; + context.showBottomSheet( + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + 'Estimated Date: ${snapshot.data?.installationEDD?.toAssetDetailsFormat ?? "-"}'.bodyText(context), + 16.height, + AppTextFormField( + labelText: context.translation.comments, + showSpeechToText: true, + textInputType: TextInputType.multiline, + labelStyle: AppTextStyles.textFieldLabelStyle, + showWithoutDecoration: true, + backgroundColor: context.isDarkNotListen ? AppColor.neutral20 : AppColor.neutral100, + alignLabelWithHint: true, + onChange: (text) { + comment = text; + }, + ), + 16.height, + AppFilledButton( + onPressed: () async { + Utils.showLoading(context); + LoanProvider loanProvider = Provider.of(context, listen: false); + bool isSuccess = await loanProvider.loanWorkflowAction({ + "userId": context.userProvider.user!.userID, + "isFromMobile": true, + "commentsFromMobile": comment, + 'loanId': snapshot.data?.id, + 'loanStatusId': snapshot.data?.loanStatusValue, + }); + Utils.hideLoading(context); + if (isSuccess) { + Navigator.pop(context, true); + setState(() {}); + } + }, + label: "Delivered"), + ], + ), + title: "EDD & Comments", + showCancelButton: true); + return; + } if (snapshot.data?.loanStatusValue == 5) { bool isSuccess = await Navigator.push(context, MaterialPageRoute(builder: (context) => InstallationFormView(loanData: snapshot.data))) ?? false; if (isSuccess) { @@ -122,7 +172,11 @@ class _LoanEquipmentDetailPageState extends State { setState(() {}); } }, - label: snapshot.data?.loanStatusValue == 5 ? 'Installation Report' : 'PullOut Report', + label: snapshot.data?.loanStatusValue == 4 + ? "Delivered" + : snapshot.data?.loanStatusValue == 5 + ? 'Installation Report' + : 'PullOut Report', ), ) ],