import 'package:cpt_services/components/status_card_item_vm.dart';
import 'package:cpt_services/modules/services/homeService/home_service_page.dart';
import 'package:cs_resources/theme/app_colors_theme.dart';
import 'package:domain/entity/service_in_progress_entity.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:shared/utils/color_utils.dart';
import 'package:shared/utils/ext_dart.dart';
import 'package:shared/utils/log_utils.dart';
import 'package:widgets/ext/ex_widget.dart';
import 'package:widgets/my_button.dart';
import 'package:widgets/my_text_view.dart';

import '../constants_services.dart';

class RepairStausCardItem extends HookConsumerWidget {
  ServiceInProgressList? item;
  double? cardHeight;

  final Function(dynamic)? onClickCard;

  RepairStausCardItem({
    Key? key,
    required this.item,
    this.onClickCard,
    cardHeight,
  }) : super(key: key) {
    this.cardHeight = cardHeight ?? 180.0;
  }

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    // final vm = ref.read(statusCardItemVmProvider.notifier);

    // List<Map<String, dynamic>>? actionBtnList = servicesConstants.servicesStatusActionBtnList[serviceStatusCode];
    // Log.d("actionBtnList   $actionBtnList");

    // useEffect((){
    //   vm.setInitData(context, serviceId, serviceTypeCode, serviceStatusCode);
    //   return () {
    //   };
    // },[]);

    return Container(
      width: double.infinity,
      height: cardHeight,
      alignment: Alignment.center,
      child: Padding(
        padding: const EdgeInsets.only(left: 18.0, right: 18.0, ),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Expanded(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    // 标题 和状态
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        // 标题 和状态
                        Expanded(
                          child: MyTextView(
                            item?.service?.name ?? "-",
                            fontSize: 16,
                            maxLines: 1,
                            isFontMedium: true,
                            textAlign: TextAlign.left,
                          ),
                        ),
                        // 状态
                        MyTextView(
                          item?.orderStatus ?? '',
                          fontSize: 12,
                          fontWeight: FontWeight.w500,
                          textColor: getStatusColor(context, item!),
                        ),
                      ],
                    ),
                    // 公司名称
                    MyTextView(
                      item?.merchant?.name ?? "-",
                      fontSize: 14,
                      maxLines: 1,
                      isFontRegular: true,
                      textAlign: TextAlign.left,
                      marginTop: 5,
                    ),
                    const SizedBox(
                      height: 5,
                    ),
                    //公司名称
                    MyTextView(
                      item?.merchantNotes ?? "-",
                      fontSize: 14,
                      maxLines: 1,
                      isFontRegular: true,
                      textAlign: TextAlign.left,
                    ),
                    const SizedBox(
                      height: 5,
                    ),
                    const SizedBox(
                      height: 7.5,
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        MyTextView(
                          "The staff will contact you soon",
                          fontSize: 14,
                          maxLines: 1,
                          isFontRegular: true,
                          textAlign: TextAlign.left,
                          textColor: context.appColors.textDarkGray,
                        ),
                      ],
                    ),
                  ],
                )),
            // Container(
            // margin: EdgeInsets.only(top: 15),
            // child: _buildActionSection(context,actionBtnList!, vm, ref),
            // ),
          ],
        ),
      ),
    );
  }

  Widget _buildActionSection(BuildContext context, List<Map<String, dynamic>> actionBtnList, StatusCardItemVm vm, WidgetRef ref) {
    return LayoutBuilder(builder: (BuildContext context, BoxConstraints constraints) {
      final maxHeight = constraints.maxHeight;
      final minHeight = constraints.minHeight;
      final maxWidth = constraints.maxWidth;
      // Log.d("---maxHeight-----$maxHeight-- $minHeight  $maxWidth--");
      return Container(
        height: 50,
        // color: Colors.red,
        width: maxWidth,
        child: Row(
            mainAxisAlignment: MainAxisAlignment.end,
            mainAxisSize: MainAxisSize.max,
            children: List.generate(actionBtnList.length, (index) {
              var item = actionBtnList[index];
              // return Expanded(
              //   child: _buildBtn(context, item),
              // );
              return _buildBtn(context, item, vm, ref);
            })),
      ).scrollable(
        scrollDirection: Axis.horizontal,
        physics: BouncingScrollPhysics(),
      );
    });
  }

  Widget _buildBtn(BuildContext context, Map<String, dynamic> btnItem, StatusCardItemVm vm, WidgetRef ref) {
    // final btnCode = btnItem['code'];
    return MyButton(
      onPressed: () {
        vm.handlerClickActionBtn(context, btnItem);
      },
      text: btnItem['text'],
      radius: 10.0,
      textColor: context.appColors.textWhite,
      backgroundColor: ColorUtils.string2Color(btnItem['btnColor']),
      fontSize: 12,
      padding: EdgeInsets.symmetric(horizontal: 5),
      minWidth: btnItem['btnWidth']?.toDouble(),
      minHeight: btnItem['btnHeight']?.toDouble() + 5,
    ).marginOnly(left: 5);
  }

  Color getStatusColor(BuildContext context,ServiceInProgressList item) {
    switch (item.orderStatus) {
      case 'In Progress':
        return ColorUtils.string2Color('#FE4066');
      case 'Complete':
        return ColorUtils.string2Color('#00B03E');
      default:
        return context.appColors.textPrimary;
    }
  }
}