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/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 '../../../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<TenderDetailViewModel>(
              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.tenderSubmitButton,
                      backgroundColor: AppColors.primary30,
                      textColor: AppColors.mainBlue,
                      onPressed: () {
                        {
                          showModalBottomSheet(
                            isDismissible: true,
                            context: context,
                            builder: (bottomSheetContext) {
                              return SelectSubmissionBottomSheet(
                                onConfirm: (value) {
                                  // viewModel.submitTenderApproval(
                                  //   tenderId: detail.id!,
                                  //   submissionMode: value,
                                  // );
                                  Future.delayed(Duration.zero, () {
                                    showModalBottomSheet(
                                      isDismissible: true,
                                      // ignore: use_build_context_synchronously
                                      context: context,
                                      builder: (context) {
                                        return SelectMeetingTimeBottomSheet(
                                          onConfirm: (meetingTime) {},
                                        );
                                      },
                                    );
                                  });
                                },
                              );
                            },
                          );
                        }
                      },
                    );
              },
            ),
            SizedBox(height: 16.0.h()),
            Consumer<TenderDetailViewModel>(
              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<TenderDetailViewModel>(
          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<TenderDetailViewModel>(
          builder: (context, viewModel, child) {
            return viewModel.isSubmitApprovalLoading
                ? BaseButton(
                  isEnabled: true,
                  text: TenderDetailsStrings.tenderSubmitButton,
                  backgroundColor: AppColors.lightBlue,
                  textColor: AppColors.mainBlue,
                  onPressed: () {},
                  width: 120.0.w(),
                )
                : BaseButton(
                  isEnabled: true,
                  text: TenderDetailsStrings.tenderSubmitButton,
                  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) {
                                  viewModel.submitTenderApproval(
                                    tenderId: detail.id!,
                                    submissionMode: value,
                                  );
                                },
                              );
                            },
                          )
                          : showModalBottomSheet(
                            context: context,
                            builder: (context) {
                              return SelectSubmissionBottomSheet(
                                onConfirm: (String value) {
                                  viewModel.submitTenderApproval(
                                    tenderId: detail.id!,
                                    submissionMode: value,
                                  );
                                },
                              );
                            },
                          );
                    }
                  },
                  width: 120.0.w(),
                );
          },
        ),
      ],
    );
  }
}
