import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/view_models/tender_detail_view_model.dart'; import 'package:tm_app/views/detail/widgets/select_meeting_time_bottom_sheet.dart'; import 'package:tm_app/views/detail/widgets/show_select_meeting_time_bottom_sheet.dart'; import 'package:tm_app/views/shared/base_button.dart'; import 'package:tm_app/views/shared/select_submission_bottom_sheet.dart'; import '../../../core/constants/tender_approval_status.dart'; import '../../../core/constants/tender_submision_mode.dart'; import '../../../core/routes/app_routes.dart'; import '../../../data/services/model/tender_data/tender_data.dart'; import '../../shared/select_submission_dialog.dart'; import '../strings/tender_details_strings.dart'; class TenderDetailActions extends StatelessWidget { final bool isScreenBig; final TenderData detail; const TenderDetailActions({ required this.isScreenBig, required this.detail, super.key, }); @override Widget build(BuildContext context) { return isScreenBig ? _webActions() : Column( children: [ Consumer( builder: (context, viewModel, child) { return viewModel.isSubmitApprovalLoading ? Container( height: 56.0.h(), width: double.infinity, decoration: BoxDecoration( color: AppColors.primary30, borderRadius: BorderRadius.circular(100.0), ), child: const Center( child: CircularProgressIndicator( color: AppColors.mainBlue, ), ), ) : BaseButton( isEnabled: true, text: TenderDetailsStrings.tenderAcceptButton, backgroundColor: AppColors.primary30, textColor: AppColors.mainBlue, onPressed: () { { showModalBottomSheet( context: context, builder: (context) { return SelectSubmissionBottomSheet( onConfirm: (String value) { if (value == TenderSubmissionMode.selfApply.value) { viewModel.submitTenderApproval( tenderId: detail.id!, submissionMode: value, ); } else if (value == TenderSubmissionMode.partnership.value) { Future.delayed(Duration.zero, () { showDialog( context: context, builder: (context) { return SelectMeetingTimeBottomSheet( onConfirm: (String value) { const CompletionOfDocumentsRouteData() .push(context); }, isDialog: false, ); }, ); }); } }, ); }, ); } }, ); }, ), SizedBox(height: 16.0.h()), Consumer( builder: (context, viewModel, child) { return viewModel.isRejectApprovalLoading ? BaseButton( isEnabled: true, text: TenderDetailsStrings.tenderRejectButton, borderColor: AppColors.error, textColor: AppColors.error, backgroundColor: AppColors.backgroundColor, borderWidth: 1, onPressed: () {}, ) : BaseButton( isEnabled: true, text: TenderDetailsStrings.tenderRejectButton, borderColor: AppColors.error, textColor: AppColors.error, backgroundColor: AppColors.backgroundColor, borderWidth: 1, onPressed: () { viewModel.rejectTenderApproval( tenderId: detail.id!, submissionMode: TenderSubmissionMode.selfApply.value, ); }, ); }, ), SizedBox(height: 16.0.h()), ], ); } Row _webActions() { return Row( children: [ const Spacer(), Consumer( builder: (context, viewModel, child) { return viewModel.isRejectApprovalLoading ? BaseButton( isEnabled: true, text: TenderDetailsStrings.tenderRejectButton, textColor: AppColors.errorColor, backgroundColor: AppColors.backgroundColor, borderWidth: 1, onPressed: () {}, width: 120.0.w(), ) : BaseButton( isEnabled: true, text: TenderDetailsStrings.tenderRejectButton, textColor: AppColors.errorColor, backgroundColor: AppColors.backgroundColor, borderWidth: 1, onPressed: () { viewModel.rejectTenderApproval( tenderId: detail.id!, submissionMode: TenderSubmissionMode.selfApply.value, ); }, width: 120.0.w(), ); }, ), SizedBox(width: 5.0.w()), Consumer( builder: (context, viewModel, child) { return viewModel.isSubmitApprovalLoading ? BaseButton( isEnabled: true, text: TenderDetailsStrings.tenderAcceptButton, backgroundColor: AppColors.lightBlue, textColor: AppColors.mainBlue, onPressed: () {}, width: 120.0.w(), ) : BaseButton( isEnabled: true, text: TenderDetailsStrings.tenderAcceptButton, backgroundColor: AppColors.lightBlue, textColor: AppColors.mainBlue, onPressed: () { if (viewModel.status == TenderApprovalStatus.submitted.value) { viewModel.submitTenderApproval( tenderId: detail.id!, submissionMode: TenderSubmissionMode.selfApply.value, ); } else { (MediaQuery.sizeOf(context).width > 600) ? showDialog( context: context, builder: (context) { return SelectSubmissionDialog( onConfirm: (String value) { if (value == TenderSubmissionMode.selfApply.value) { const FinalCompletionOfDocumentsRouteData() .push(context); } else if (value == TenderSubmissionMode.partnership.value) { WidgetsBinding.instance.addPostFrameCallback(( timeStamp, ) { showSelectMeetingTimeDialog( context: context, onConfirm: (String value) { const CompletionOfDocumentsRouteData() .push(context); }, ); }); } }, ); }, ) : showModalBottomSheet( context: context, builder: (context) { return SelectSubmissionBottomSheet( onConfirm: (String value) { if (value == TenderSubmissionMode.selfApply.value) { viewModel.submitTenderApproval( tenderId: detail.id!, submissionMode: value, ); } else if (value == TenderSubmissionMode.partnership.value) { showDialog( context: context, builder: (context) { return SelectMeetingTimeBottomSheet( onConfirm: (String value) { const CompletionOfDocumentsRouteData() .push(context); }, isDialog: false, ); }, ); } }, ); }, ); } }, width: 120.0.w(), ); }, ), ], ); } }