import 'package:cs_resources/constants/color_constants.dart';
import 'package:cs_resources/generated/assets.dart';
import 'package:flutter/material.dart';
import 'package:get/get.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/date_time_utils.dart';
import 'package:shared/utils/screen_util.dart';
import 'package:shared/utils/util.dart';
import 'package:widgets/ext/ex_widget.dart';
import 'package:widgets/load_state_layout.dart';
import 'package:widgets/my_appbar.dart';
import 'package:widgets/my_button.dart';
import 'package:widgets/my_load_image.dart';
import 'package:widgets/widget_export.dart';

import 'job_list_item.dart';
import 'job_list_controller.dart';
import 'job_list_state.dart';

/*
 * 新加坡的JobList其实就是Labour的查询
 */
class JobListPage extends BaseStatefulPage<JobListController> {
  JobListPage({Key? key}) : super(key: key);

  //启动当前页面
  static void startInstance({String? date, String? agencyId,String? outletId}) {
    return Get.start(RouterPath.jobListSG, arguments: {'date': date ?? "", 'agencyId': agencyId ?? "", 'outletId': outletId ?? ""});
  }

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

  @override
  State<JobListPage> createState() => _JobListState();
}

class _JobListState extends BaseState<JobListPage, JobListController> {
  late JobListState state;

  @override
  void initState() {
    super.initState();
    state = controller.state;

    //如果有传递的Date,那就直接显示
    String date = Get.arguments['date'];
    String agencyId = Get.arguments['agencyId'];
    String outletId = Get.arguments['outletId'];
    if (Utils.isNotEmpty(date)) {
      DateTime? selectDate = DateTimeUtils.getDateTime(date);
      state.selectedStartDate = selectDate;
      state.selectedEndDate = selectDate;
    }
    if (Utils.isNotEmpty(agencyId)) {
      state.selectedAgencyId = agencyId;
    }
    if (Utils.isNotEmpty(outletId)) {
      state.selectedOutletId = outletId;
    }

  }

  @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, "Job List".tr, actions: [
                //筛选图标
                const MyAssetImage(
                  Assets.baseServiceTitleBarFilterIcon,
                  width: 24,
                  height: 16.5,
                ).onTap(() {
                  FocusScope.of(context).unfocus();
                  controller.showFilterDialog();
                }).marginOnly(right: 15),
              ]),

              // //添加用工请求按钮
              // MyButton(
              //   type: ClickType.throttle,
              //   milliseconds: 500,
              //   onPressed: () {
              //     FocusScope.of(context).unfocus();
              //     controller.gotoLabourRequestAddPage();
              //   },
              //   text: "Create New Job".tr,
              //   textColor: ColorConstants.white,
              //   fontSize: 16,
              //   radius: 20,
              //   backgroundColor: hexToColor("#FFBB1B"),
              //   fontWeight: FontWeight.w500,
              // ).marginOnly(left: 15, right: 15, top: 15, bottom: 5),

              //底部的列表
              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 JobListItem(
                          index: index,
                          item: state.datas[index],
                          onDetailAction: () {
                            controller.gotoJobDetailPage(index);
                          },
                          onEditAction: () {
                            controller.doEditAction(index);
                          },
                          onCancelAction: () {
                            controller.doCancelAction(index);
                          },
                          onDeleteAction: () {
                            controller.doDeleteAction(index);
                          },
                          onAppliedAction: () {
                            controller.gotoJobAppliedPage(index);
                          },
                        );
                      },
                      childCount: state.datas.length,
                    ))
                  ],
                ),
              ).marginOnly(top: 5, bottom: 5).expanded(),
            ],
          ),
        ),
      );
    });
  }
}
