import 'dart:ui';

import 'package:cs_resources/generated/assets.dart';
import 'package:domain/entity/response/job_list_remark_view_entity.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
import 'package:plugin_platform/engine/toast/toast_engine.dart';
import 'package:shared/utils/util.dart';
import 'package:widgets/ext/ex_widget.dart';
import 'package:cs_resources/constants/color_constants.dart';
import 'package:widgets/my_text_view.dart';
import 'package:widgets/shatter/rating_widget.dart';
import 'package:widgets/widget_export.dart';

/**
 * 员工的评价弹窗
 */
class AppliedStaffReviews extends StatefulWidget {
  JobListRemarkViewEntity appliedReviews;
  void Function(String attitudeRate, String performanceRate, String experienceRate, String groomingRate, String content)? confirmAction;

  AppliedStaffReviews({required this.appliedReviews, this.confirmAction});

  @override
  State<AppliedStaffReviews> createState() => _AppliedStaffReviewsState();
}

class _AppliedStaffReviewsState extends State<AppliedStaffReviews> {
  late JobListRemarkViewEntity reviews;
  late String attitudeRate;
  late String groomingRate;
  late String performanceRate;
  late String experienceRate;
  late String content;
  late TextEditingController _controller;
  late FocusNode _focusNode;

  @override
  void initState() {
    super.initState();
    _controller = TextEditingController();
    _focusNode = FocusNode();

    reviews = widget.appliedReviews;
    attitudeRate = reviews.attitudeRate.toString();
    groomingRate = reviews.groomingRate.toString();
    performanceRate = reviews.performanceRate.toString();
    experienceRate = reviews.experienceRate.toString();
    _controller.text = reviews.content ?? "";
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.center,
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        //Title (如果使用 Container 为最外层容器则默认为 match_parent 的效果,除非我们限制宽度和最大高度最小高度)
        Container(
          width: double.infinity,
          decoration: BoxDecoration(
            color: Colors.white,
            borderRadius: const BorderRadius.all(Radius.circular(15)),
          ),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            children: [
              Center(
                child: MyTextView(
                  "Remarks".tr,
                  fontSize: 19,
                  isFontMedium: true,
                  textColor: ColorConstants.black,
                  marginTop: 23,
                  marginBottom: 19,
                  marginLeft: 22,
                  marginRight: 22,
                ),
              ),

              MyTextView(
                reviews.memberName ?? "",
                isFontRegular: true,
                textColor: Colors.black,
                marginLeft: 22,
                marginRight: 22,
                fontSize: 17,
              ),

              //态度评分
              Row(
                children: [
                  MyTextView(
                    "Attitude".tr,
                    isFontRegular: true,
                    textColor: ColorConstants.black66,
                    fontSize: 15,
                  ).expanded(),
                  RatingWidget(
                    nomalImage: Assets.baseServiceRatingUnselected,
                    selectImage: Assets.baseServiceRatingSelected,
                    size: 21,
                    padding: 5,
                    selectAble: Utils.isEmpty(reviews.content),
                    integerOnly: true,
                    value: reviews.attitudeRate,
                    onRatingUpdate: (value) {
                      attitudeRate = value;
                    },
                  )
                ],
              ).marginOnly(top: 15, left: 22, right: 22),

              //表现评分
              Row(
                children: [
                  MyTextView(
                    "Performance".tr,
                    isFontRegular: true,
                    textColor: ColorConstants.black66,
                    fontSize: 15,
                  ).expanded(),
                  RatingWidget(
                    nomalImage: Assets.baseServiceRatingUnselected,
                    selectImage: Assets.baseServiceRatingSelected,
                    size: 21,
                    padding: 5,
                    selectAble: Utils.isEmpty(reviews.content),
                    integerOnly: true,
                    value: reviews.performanceRate,
                    onRatingUpdate: (value) {
                      performanceRate = value;
                    },
                  )
                ],
              ).marginOnly(top: 15, left: 22, right: 22),

              //经验评分
              Row(
                children: [
                  MyTextView(
                    "Experience".tr,
                    isFontRegular: true,
                    textColor: ColorConstants.black66,
                    fontSize: 15,
                  ).expanded(),
                  RatingWidget(
                    nomalImage: Assets.baseServiceRatingUnselected,
                    selectImage: Assets.baseServiceRatingSelected,
                    size: 21,
                    padding: 5,
                    selectAble: Utils.isEmpty(reviews.content),
                    integerOnly: true,
                    value: reviews.experienceRate,
                    onRatingUpdate: (value) {
                      experienceRate = value;
                    },
                  )
                ],
              ).marginOnly(top: 15, left: 22, right: 22),

              //着装评分
              Row(
                children: [
                  MyTextView(
                    "Grooming".tr,
                    isFontRegular: true,
                    textColor: ColorConstants.black66,
                    fontSize: 15,
                  ).expanded(),
                  RatingWidget(
                    nomalImage: Assets.baseServiceRatingUnselected,
                    selectImage: Assets.baseServiceRatingSelected,
                    size: 21,
                    padding: 5,
                    selectAble: Utils.isEmpty(reviews.content),
                    integerOnly: true,
                    value: reviews.groomingRate,
                    onRatingUpdate: (value) {
                      groomingRate = value;
                    },
                  )
                ],
              ).marginOnly(top: 15, left: 22, right: 22),

              IgnoreKeyboardDismiss(
                child: Container(
                  height: 130,
                  margin: EdgeInsets.symmetric(vertical: 19, horizontal: 22),
                  padding: EdgeInsets.symmetric(vertical: 15, horizontal: 15),
                  decoration: BoxDecoration(
                    color: Color(0xFFF0F0F0),
                    border: Border.all(
                      color: Color(0xFFD8D8D8),
                      width: 0.5,
                    ),
                  ),
                  child: TextField(
                    cursorColor: ColorConstants.black66,
                    cursorWidth: 1.5,
                    autofocus: false,
                    enabled: Utils.isEmpty(reviews.content),
                    focusNode: _focusNode,
                    controller: _controller,
                    // 装饰
                    decoration: InputDecoration(
                      isDense: true,
                      isCollapsed: true,
                      border: InputBorder.none,
                      hintText: "Enter...".tr,
                      hintStyle: TextStyle(
                        color: ColorConstants.black66,
                        fontSize: 15.0,
                        fontWeight: FontWeight.w400,
                      ),
                    ),
                    style: TextStyle(
                      color: ColorConstants.black,
                      fontSize: 15.0,
                      fontWeight: FontWeight.w400,
                    ),
                    // 键盘动作右下角图标
                    textInputAction: TextInputAction.done,
                    onSubmitted: (value) {
                      doCallbackAction();
                    },
                  ),
                ),
              ),

              // 分割线
              Container(
                color: Color(0XFFCECECE),
                height: 0.5,
              ),

              //按钮组
              Row(
                children: [
                  Expanded(
                      flex: 1,
                      child: InkWell(
                        onTap: () {
                          onCancel();
                        },
                        child: MyTextView(
                          "Cancel".tr,
                          fontSize: 17.5,
                          isFontMedium: true,
                          textAlign: TextAlign.center,
                          textColor: Color(0XFF0085C4),
                          cornerRadius: 3,
                          borderWidth: 1,
                        ),
                      )),
                  Container(
                    color: Color(0xff09141F).withOpacity(0.13),
                    width: 0.5,
                  ),
                  Expanded(
                      flex: 1,
                      child: InkWell(
                        onTap: () {
                          doCallbackAction();
                        },
                        child: MyTextView(
                          "Submit".tr,
                          marginLeft: 10,
                          fontSize: 17.5,
                          isFontMedium: true,
                          textAlign: TextAlign.center,
                          textColor: Color(0XFF0085C4),
                          cornerRadius: 3,
                        ),
                      )),
                ],
              ).constrained(height: 46),
            ],
          ),
        ),
      ],
    ).constrained(width: 285);
  }

  //取消弹框
  void onCancel() async {
    SmartDialog.dismiss();
  }

  //执行回调
  void doCallbackAction() {
    _focusNode.unfocus();

    content = _controller.text.toString();

    if (attitudeRate == "0" || experienceRate == "0" || performanceRate == "0" || groomingRate == "0") {
      ToastEngine.show("Rate First");
      return;
    }

    if (Utils.isEmpty(content)) {
      ToastEngine.show("Please Enter Remark".tr);
      return;
    }

    onCancel();

    widget.confirmAction?.call(attitudeRate, performanceRate, experienceRate, groomingRate, content);
  }
}