138 lines
4.5 KiB
Dart
Executable File

import 'dart:async';
import 'package:get/get.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/electronicKeyList_state.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyEntity.dart';
import 'package:star_lock/main/lockDetail/electronicKey/electronicKeyList/entity/ElectronicKeyListEntity.dart';
import 'package:star_lock/network/api_repository.dart';
import 'package:star_lock/tools/baseGetXController.dart';
import 'package:star_lock/tools/commonDataManage.dart';
import 'package:star_lock/tools/showTipView.dart';
import '../../../../tools/eventBusEventManage.dart';
class ElectronicKeyListLogic extends BaseGetXController {
final ElectronicKeyListState state = ElectronicKeyListState();
//请求电子钥匙列表
Future<ElectronicKeyListEntity> mockNetworkDataRequest(
{bool isRefresh = false}) async {
if (isRefresh) {
pageNo = 0;
}
final ElectronicKeyListEntity entity = await ApiRepository.to
.electronicKeyList(
endDate: '0',
keyId: CommonDataManage().currentKeyInfo.keyId.toString(),
keyStatus: '',
keyRight: '0',
lockId: CommonDataManage().currentKeyInfo.lockId.toString(),
pageNo: pageNo.toString(),
pageSize: pageSize.toString(),
startDate: '0',
searchStr: state.searchController.text);
if (entity.errorCode!.codeIsSuccessful) {
if (pageNo == 1) {
state.itemDataList.value = entity.data!.itemList;
pageNo++;
} else {
if (entity.data!.itemList.isNotEmpty) {
state.itemDataList.addAll(entity.data!.itemList);
pageNo++;
}
}
}
return entity;
}
//刷新单挑信息
Future<void> refreshIndividualKeys(
{required int lockId, required int keyId}) async {
final ElectronicKeyEntity entity =
await ApiRepository.to.electronicKey(lockId: lockId, keyId: keyId);
if (entity.errorCode!.codeIsSuccessful) {
final int index = state.itemDataList
.indexWhere((ElectronicKeyListItem item) => item.keyId == keyId);
state.itemDataList.removeAt(index);
state.itemDataList.insert(index, entity.data!);
}
}
//电子钥匙重置请求
Future<void> resetElectronicKeyListRequest() async {
final ElectronicKeyListEntity entity = await ApiRepository.to
.resetElectronicKey(
CommonDataManage().currentKeyInfo.lockId.toString(), '0');
if (entity.errorCode!.codeIsSuccessful) {
showToast('重置成功'.tr, something: () {
pageNo = 1;
mockNetworkDataRequest();
});
}
}
//删除电子钥匙名称请求
Future<void> deleteKeyRequest(String keyId, int includeUnderlings) async {
final ElectronicKeyListEntity entity = await ApiRepository.to
.deleteElectronicKey(
keyId: keyId, includeUnderlings: includeUnderlings);
if (entity.errorCode!.codeIsSuccessful) {
showToast('删除成功'.tr, something: () {
pageNo = 1;
mockNetworkDataRequest();
});
}
}
deletKeyLogic(ElectronicKeyListItem electronicKeyListItem) {
if (electronicKeyListItem.keyRight == 1) {
// 授权管理员
ShowTipView().showDeleteAdministratorIsHaveAllDataDialog(
'同时删除其发送的所有钥匙,钥匙删除后不能恢复'.tr, (bool isAllData) {
deleteKeyRequest(
electronicKeyListItem.keyId.toString(), isAllData ? 1 : 0);
});
} else {
// 普通用户
ShowTipView().showIosTipWithContentDialog('删除钥匙会在用户APP连网后生效'.tr, () {
deleteKeyRequest(electronicKeyListItem.keyId.toString(), 0);
});
}
}
/// 刷新电子钥匙列表
StreamSubscription? _getElectronicKeyListRefreshUIEvent;
void _getElectronicKeyListRefreshUIAction() {
// 蓝牙协议通知传输跟蓝牙之外的数据传输类不一样 eventBus
_getElectronicKeyListRefreshUIEvent = eventBus
.on<ElectronicKeyListRefreshUI>()
.listen((ElectronicKeyListRefreshUI event) {
pageNo = 1;
mockNetworkDataRequest();
});
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
_getElectronicKeyListRefreshUIAction();
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
}
@override
void onClose() {
// TODO: implement onClose
super.onClose();
_getElectronicKeyListRefreshUIEvent?.cancel();
}
}