import 'package:cs_resources/constants/color_constants.dart';
import 'package:cs_resources/generated/assets.dart';
import 'package:domain/entity/response/job_applied_list_s_g_entity.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:plugin_basic/basic_export.dart';
import 'package:widgets/ext/ex_widget.dart';
import 'package:widgets/my_button.dart';
import 'package:widgets/my_load_image.dart';
import 'package:widgets/my_text_view.dart';
import 'package:widgets/shatter/border_select_widget.dart';

/*
 * 已申请的员工列表Item
 */
class AppliedStaffItem extends StatelessWidget {
  final int index;
  final JobAppliedListSGRows item;
  final VoidCallback? onModifyAction;
  final VoidCallback? onEditAction;
  final VoidCallback? onRemarkAction;
  final VoidCallback? onItemAction;
  final VoidCallback? onReviseAction;
  final VoidCallback? onMemberAction;
  final void Function(BuildContext targetContext)? onStatusAction;
  final void Function(String? img)? onImagePreviewAction;

  AppliedStaffItem({
    required this.index,
    required this.item,
    this.onModifyAction,
    this.onRemarkAction,
    this.onEditAction,
    this.onItemAction,
    this.onReviseAction,
    this.onMemberAction,
    this.onStatusAction,
    this.onImagePreviewAction,
  });

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: const EdgeInsets.symmetric(vertical: 23, horizontal: 21),
      margin: const EdgeInsets.only(left: 15, right: 15, top: 5, bottom: 5),
      decoration: BoxDecoration(
        color: const Color(0xFF4DCFF6).withOpacity(0.2), // 设置背景颜色和不透明度
        borderRadius: BorderRadius.circular(5), // 设置圆角
      ),
      child: Column(
        mainAxisSize: MainAxisSize.max,
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          //员工姓名
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "Staff Name:".tr,
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),

              //姓名
              MyTextView(
                item.labourerName ?? "-",
                isFontMedium: true,
                textColor: ColorConstants.textYellowFFBB1B,
                fontSize: 14,
                marginLeft: 5,
                marginRight: 5,
                textDecoration: TextDecoration.underline,
                decorationColor: ColorConstants.textYellowFFBB1B,
                // 可选，设置下划线的颜色
                decorationThickness: 2.0,
                // 可选，设置下划线的粗细
                decorationStyle: TextDecorationStyle.solid,
                onClick: onMemberAction,
              ).expanded(),

              //是否选中
              Visibility(
                visible: true,
                child: MyAssetImage(
                  item.isSelected ? Assets.baseServiceItemSelectedIcon : Assets.baseServiceItemUnselectedIcon,
                  width: 20.5,
                  height: 20.5,
                ),
              ),
            ],
          ),

          // 身份证
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "${"Nric".tr}:",
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),
              MyTextView(
                item.labourerNric ?? "-",
                marginLeft: 5,
                isFontRegular: true,
                textColor: Colors.white,
                fontSize: 14,
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // 性别
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "${"Gender".tr}:",
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),
              MyTextView(
                item.gender ?? "-",
                marginLeft: 5,
                isFontRegular: true,
                textColor: Colors.white,
                fontSize: 14,
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // 部门
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "${"Outlet".tr}:",
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),
              MyTextView(
                item.outletName ?? "-",
                marginLeft: 5,
                isFontRegular: true,
                textColor: Colors.white,
                fontSize: 14,
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // 大厅
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "${"Ballroom".tr}:",
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),
              MyTextView(
                "-",
                marginLeft: 5,
                isFontRegular: true,
                textColor: Colors.white,
                fontSize: 14,
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // 工作开始时间
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "Start Time:".tr,
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),
              MyTextView(
                item.startTime ?? "-",
                marginLeft: 5,
                isFontRegular: true,
                textColor: Colors.white,
                fontSize: 14,
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // 工作签到时间
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "${"Work Clock In".tr}:",
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),

              //时间
              MyTextView(
                item.workIn?.time ?? "-",
                marginLeft: 5,
                isFontRegular: true,
                textColor: item.workIn?.color == null ? Colors.white : hexToColor(item.workIn!.color!),
                fontSize: 14,
                decorationStyle: item.workIn?.image == null ? null : TextDecorationStyle.solid,
                decorationColor: item.workIn?.color == null ? Colors.white : hexToColor(item.workIn!.color!),
                onClick: (){
                  onImagePreviewAction?.call(item.workIn?.image);
                },
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          //工作结束时间
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "End Time:".tr,
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),

              //时间
              MyTextView(
                item.endTime ?? "-",
                marginLeft: 5,
                isFontRegular: true,
                textColor: Colors.white,
                fontSize: 14,
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // 工作签出时间
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "${"Work Clock Out".tr}:",
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),

              //时间
              MyTextView(
                item.workOut?.time ?? "-",
                marginLeft: 5,
                isFontRegular: true,
                textColor: item.workOut?.color == null ? Colors.white : hexToColor(item.workOut!.color!),
                fontSize: 14,
                decorationStyle: item.workOut?.image == null ? null : TextDecorationStyle.solid,
                decorationColor: item.workOut?.color == null ? Colors.white : hexToColor(item.workOut!.color!),
                decorationThickness: 2.0,
                onClick: (){
                  onImagePreviewAction?.call(item.workOut?.image);
                },
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // + - Hours
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "+/- Hours:".tr,
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),

              //小时
              MyTextView(
                item.adjustHours ?? "",
                marginLeft: 5,
                isFontRegular: true,
                textColor: Colors.white,
                fontSize: 14,
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // Total Hours
          Row(
            mainAxisSize: MainAxisSize.max,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              MyTextView(
                "Total Hours:".tr,
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),

              //小时
              MyTextView(
                item.totalHours ?? "",
                marginLeft: 5,
                isFontRegular: true,
                textColor: Colors.white,
                fontSize: 14,
              ).expanded(),
            ],
          ).marginOnly(top: 12),

          // 状态
          Row(
            children: [
              MyTextView(
                "Status:".tr,
                isFontRegular: true,
                textColor: ColorConstants.textGrayAECAE5,
                fontSize: 14,
              ),

              //发布状态
              BorderSelectWidget(
                text: item.statusShow ?? "",
                color: "Completed" == item.statusShow
                    ? ColorConstants.textGreen00FB92
                    : "Cancelled" == item.statusShow || "Rejected" == item.statusShow
                        ? ColorConstants.textRedFF6262
                        : "Revised" == item.statusShow || "Pending" == item.statusShow || "Approve" == item.statusShow
                            ? ColorConstants.textYellowFFBB1B
                            : ColorConstants.textBlue5CEEFF,
                onTap: (targetContext) {
                  onStatusAction?.call(targetContext);
                },
              ),
            ],
          ).marginOnly(top: 12),

          //按钮组
          Visibility(
            visible: item.actionList?.isNotEmpty ?? false,
            child: Row(
              mainAxisSize: MainAxisSize.max,
              mainAxisAlignment: MainAxisAlignment.end,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                //编辑按钮
                Visibility(
                  visible: item.actionList?.contains("edit") ?? false,
                  child: MyButton(
                    onPressed: () {
                      FocusScope.of(context).unfocus();
                      onEditAction?.call();
                    },
                    text: "Edit".tr,
                    textColor: ColorConstants.white,
                    backgroundColor: hexToColor(
                      "#FFBB1B",
                    ),
                    radius: 17.25,
                    minWidth: 60,
                    minHeight: 35,
                  ).marginOnly(left: 12),
                ),

                //状态工作流按钮
                Visibility(
                  visible: item.actionList?.contains("modify") ?? false,
                  child: MyButton(
                    onPressed: () {
                      FocusScope.of(context).unfocus();
                      onModifyAction?.call();
                    },
                    text: "Modify".tr,
                    textColor: ColorConstants.white,
                    backgroundColor: hexToColor("#0AC074"),
                    radius: 17.25,
                    minWidth: 60,
                    minHeight: 35,
                  ).marginOnly(left: 12),
                ),

                Visibility(
                  visible: item.actionList?.contains("revise") ?? false,
                  child: MyButton(
                    onPressed: () {
                      FocusScope.of(context).unfocus();
                      onReviseAction?.call();
                    },
                    text: "Revise".tr,
                    textColor: ColorConstants.white,
                    backgroundColor: hexToColor("#0AC074"),
                    radius: 17.25,
                    minWidth: 60,
                    minHeight: 35,
                  ).marginOnly(left: 12),
                ),

                //Remark按钮
                Visibility(
                  visible: item.actionList?.contains("remarks") ?? false,
                  child: MyButton(
                    onPressed: () {
                      FocusScope.of(context).unfocus();
                      onRemarkAction?.call();
                    },
                    text: "Remarks".tr,
                    textColor: ColorConstants.white,
                    backgroundColor: hexToColor("#56AAFF"),
                    radius: 17.25,
                    minWidth: 60,
                    minHeight: 35,
                  ).marginOnly(left: 12),
                ),
              ],
            ).marginOnly(top: 15),
          ),
        ],
      ).onTap(() {
        onItemAction?.call();
      }),
    );
  }
}
