123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- import 'package:cpt_sg/modules/job/revise_list/revise_list_page.dart';
- import 'package:cpt_sg/modules/labour/job_list/job_list_page.dart';
- import 'package:cpt_sg/modules/labour/job_template_list/job_template_list_page.dart';
- import 'package:cpt_sg/modules/labour/job_title_list/job_title_list_page.dart';
- import 'package:cpt_sg/modules/labour/labour_request_list/labour_request_list_page.dart';
- import 'package:cpt_sg/modules/report/device_list/device_list_page.dart';
- import 'package:cpt_sg/modules/report/report_list/report_list_page.dart';
- import 'package:domain/entity/home_module.dart';
- import 'package:domain/entity/response/hotel_info_entity.dart';
- import 'package:domain/repository/auth_repository.dart';
- import 'package:get/get.dart';
- import 'package:plugin_basic/constants/app_constant.dart';
- import 'package:plugin_basic/service/app_config_service.dart';
- import 'package:plugin_basic/service/user_service.dart';
- import 'package:plugin_platform/engine/sp/sp_util.dart';
- import 'package:plugin_platform/engine/toast/toast_engine.dart';
- import 'package:router/componentRouter/component_router_service.dart';
- import 'package:widgets/load_state_layout.dart';
- import 'package:widgets/widget_export.dart';
- import 'main_state.dart';
- class MainController extends GetxController {
- final AuthRepository _authRepository = Get.find();
- final MainState state = MainState();
- var _needShowPlaceholder = true;
-
- LoadState loadingState = LoadState.State_Success;
- String? errorMessage;
-
- void changeLoadingState(LoadState state) {
- loadingState = state;
- update();
- }
-
- final EasyRefreshController refreshController = EasyRefreshController(
- controlFinishRefresh: true,
- controlFinishLoad: false,
- );
-
- Future onRefresh() async {
- fetchHomeData();
- }
-
- Future retryRequest() async {
- _needShowPlaceholder = true;
- fetchHomeData();
- }
-
- void fetchHomeData() async {
- if (_needShowPlaceholder) {
- changeLoadingState(LoadState.State_Loading);
- }
-
- var result = await _authRepository.fetchHotelInfo();
-
- if (result.isSuccess) {
- final hotelInfo = result.data;
- if (hotelInfo != null) {
- UserService.to.hotelInfo.value = hotelInfo;
- _handleList(hotelInfo.menus);
- } else {
- ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
- }
- } else {
- ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
- }
-
- refreshController.finishRefresh();
-
- _needShowPlaceholder = false;
- }
-
- void _handleList(List<HotelInfoMenus>? list) {
- if (list != null && list.isNotEmpty) {
-
- state.datas.clear();
- int? isAdmin = SPUtil.getInt(AppConstant.storageIsAdmin);
- if (isAdmin == 1) {
-
- for (var hotelInfo in list) {
- if (hotelInfo.key != null) {
- state.datas.addAll(_filterModulesByKey(hotelInfo.key!));
- }
- }
- } else {
-
- state.datas.addAll(_filterModulesByKey("sign"));
- }
-
- changeLoadingState(LoadState.State_Success);
- } else {
-
- state.datas.clear();
- changeLoadingState(LoadState.State_Empty);
- }
- }
- List<HomeModule> _filterModulesByKey(String key) {
- return state.modules.where((module) => module.key == key).toList();
- }
- @override
- void onReady() async {
- super.onReady();
- fetchHomeData();
- }
-
- void gotoModulePage(HomeModule module) {
- switch (module.key) {
- case 'labReq':
-
- LabourRequestListPage.startInstance();
- break;
- case 'jobList':
- JobListPage.startInstance();
- break;
- case 'reviseList':
- ReviseListPage.startInstance();
- break;
- case 'device':
- DeviceListPage.startInstance();
- break;
- case 'reqReview':
-
- break;
- case 'attReview':
-
- break;
- case 'template':
- JobTemplateListPage.startInstance();
- break;
- case 'jobTitle':
- JobTitleListPage.startInstance();
- break;
- case 'report':
- ReportListPage.startInstance();
- break;
- }
- }
-
- void gotoSettingPage() {
- ComponentRouterServices.authService.startSettingPage();
- }
- }
|