import 'package:cs_resources/constants/color_constants.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:widgets/ext/ex_widget.dart';
import 'package:widgets/load_state_layout.dart';
import 'package:widgets/my_button.dart';
import 'package:widgets/my_text_view.dart';
import 'package:widgets/search_app_bar.dart';
import 'package:widgets/widget_export.dart';

import 'applied_staff_item.dart';
import 'job_applied_controller.dart';

import 'package:plugin_basic/base/base_state.dart';
import 'package:plugin_basic/base/base_stateful_page.dart';
import 'package:plugin_basic/utils/ext_get_nav.dart';
import 'package:router/path/router_path.dart';
import 'package:shared/utils/screen_util.dart';
import 'package:widgets/my_appbar.dart';
import 'job_applied_state.dart';

/**
 * 已申请的页面，可以签到签出、加人、修改状态、评论等操作
 */
class JobAppliedPage extends BaseStatefulPage<JobAppliedController> {
  JobAppliedPage({Key? key}) : super(key: key);

  //启动当前页面
  static void startInstance(String? jobId) {
    return Get.start(RouterPath.jobAppliedStaffList, arguments: {'jobId': jobId});
  }

  @override
  JobAppliedController createRawController() {
    return JobAppliedController();
  }

  @override
  State<JobAppliedPage> createState() => _JobAppliedState();
}

class _JobAppliedState extends BaseState<JobAppliedPage, JobAppliedController> {
  late JobAppliedState state;

  @override
  void initState() {
    super.initState();
    state = controller.state;
    state.jobId = Get.arguments['jobId'];
  }

  @override
  Widget build(BuildContext context) {
    return autoCtlGetBuilder(builder: (controller) {
      return  SafeArea(
        bottom: MediaQuery.of(context).padding.bottom > 38,
          top: false,
          child: Container(
            width: double.infinity,
            height: double.infinity,
            padding: EdgeInsets.only(top: ScreenUtil.getStatusBarH(context)),
            decoration: const BoxDecoration(
              gradient: LinearGradient(
                colors: [
                  Color(0xFF091D44),
                  Color(0xFF245A8A),
                  Color(0xFF7F7CEC),
                ],
                begin: Alignment.topCenter,
                end: Alignment.bottomCenter,
              ),
            ),
            child: Column(
              children: [
                MyAppBar.titleBar(
                  context,
                  state.jobInfo?.jobTitle ?? "Title".tr,
                  subTitle: "(${state.jobInfo?.jobDate ?? "-"})",
                  subTitleColor: ColorConstants.textGrayAECAE5,
                ),

                //搜索的条件
                Row(
                  children: [
                    SearchAppBar(
                      value: state.keyword,
                      onSearch: (keyword) {
                        controller.doSearch(keyword);
                      },
                      hintText: "Staff Name".tr,
                      controller: state.searchController,
                    ).expanded(),
                    MyButton(
                      onPressed: () {
                        FocusScope.of(context).unfocus();
                        controller.resetFiltering();
                      },
                      text: "Reset".tr,
                      textColor: ColorConstants.white,
                      backgroundColor: hexToColor("#2BA9F9", opacity: 0.5),
                      radius: 20,
                      minWidth: 60,
                      minHeight: 35,
                    ),
                  ],
                ).marginOnly(top: 10, left: 15, right: 15, bottom: 5),

                // 添加按钮
                Visibility(
                  visible: state.jobInfo?.canAppend == true,
                  child: MyButton(
                    type: ClickType.throttle,
                    milliseconds: 500,
                    onPressed: () {
                      FocusScope.of(context).unfocus();
                      controller.showAddStaffDialog();
                    },
                    text: "Add Staff".tr,
                    textColor: ColorConstants.white,
                    fontSize: 16,
                    radius: 20,
                    backgroundColor: hexToColor("#FFBB1B"),
                    fontWeight: FontWeight.w500,
                  ).marginOnly(left: 15, right: 15, top: 5, bottom: 10),
                ),

                //底部的列表
                EasyRefresh(
                  controller: controller.refreshController,
                  onRefresh: controller.onRefresh,
                  onLoad: controller.loadMore,
                  child: LoadStateLayout(
                    state: controller.loadingState,
                    errorMessage: controller.errorMessage,
                    errorRetry: () {
                      controller.retryRequest();
                    },
                    successSliverWidget: [
                      SliverList(
                          delegate: SliverChildBuilderDelegate(
                        (context, index) {
                          return AppliedStaffItem(
                            index: index,
                            jobInfo: state.jobInfo,
                            item: state.datas[index],
                            onEditAction: () {
                              controller.gotoAppliedEditPage(state.datas[index]);
                            },
                            onRemarkAction: () {
                              controller.showRemarkDialog(state.datas[index]);
                            },
                            onStatusAction: () {
                              controller.gotoAppliedWorkflowPage(state.datas[index]);
                            },
                            onItemAction: () {
                              controller.doSelectedOrNot(state.datas[index]);
                            },
                            onMemberAction: (){
                              controller.gotoStaffDetailPage(state.datas[index]);
                            },
                          );
                        },
                        childCount: state.datas.length,
                      ))
                    ],
                  ),
                ).expanded(),

                Row(
                  mainAxisSize: MainAxisSize.max,
                  children: [
                    //批量Approve
                    MyTextView(
                      "Operation Approve".tr,
                      fontSize: 17,
                      isFontMedium: true,
                      boxHeight: 48,
                      onClick: () {
                        controller.operationApprove();
                      },
                      alignment: Alignment.center,
                      textAlign: TextAlign.center,
                      textColor: Colors.white,
                      backgroundColor: Color(0XFF0AC074),
                    ).expanded(),

                    //批量修改时间
                    MyTextView(
                      "Batch Modify".tr,
                      fontSize: 17,
                      isFontMedium: true,
                      boxHeight: 48,
                      onClick: () {
                        controller.showBatchModifyDialog();
                      },
                      alignment: Alignment.center,
                      textAlign: TextAlign.center,
                      textColor: Colors.white,
                      backgroundColor: Color(0XFFFFBB1B),
                    ).expanded(),
                  ],
                ),
              ],
            ),
          ),
        );
    });
  }
}
