mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-09 22:57:21 +00:00
75 lines
2.9 KiB
Dart
75 lines
2.9 KiB
Dart
import 'dart:async';
|
|
|
|
import 'package:bloc/bloc.dart';
|
|
import 'package:equatable/equatable.dart';
|
|
import 'package:syncrow_web/pages/device_managment/all_devices/models/device_reports.dart';
|
|
import 'package:syncrow_web/pages/device_managment/sos/models/sos_status_model.dart';
|
|
import 'package:syncrow_web/services/devices_mang_api.dart';
|
|
|
|
part 'sos_device_event.dart';
|
|
part 'sos_device_state.dart';
|
|
|
|
class SosDeviceBloc extends Bloc<SosDeviceEvent, SosDeviceState> {
|
|
SosDeviceBloc() : super(SosDeviceInitial()) {
|
|
on<GetDeviceStatus>(_getDeviceStatus);
|
|
on<GetBatchStatus>(_getBatchStatus);
|
|
on<GetDeviceRecords>(_getDeviceRecords);
|
|
on<GetDeviceAutomationRecords>(_getDeviceAutomationRecords);
|
|
on<BackToSosStatusView>(_backToSosStatusView);
|
|
}
|
|
|
|
late SosStatusModel deviceStatus;
|
|
|
|
FutureOr<void> _getDeviceStatus(GetDeviceStatus event, Emitter<SosDeviceState> emit) async {
|
|
emit(SosDeviceLoadingState());
|
|
try {
|
|
final status = await DevicesManagementApi().getDeviceStatus(event.uuid);
|
|
deviceStatus = SosStatusModel.fromJson(event.uuid, status.status);
|
|
emit(SosDeviceLoadedState(deviceStatus));
|
|
} catch (e) {
|
|
emit(SosDeviceErrorState(e.toString()));
|
|
}
|
|
}
|
|
|
|
FutureOr<void> _getBatchStatus(GetBatchStatus event, Emitter<SosDeviceState> emit) async {
|
|
emit(SosDeviceLoadingState());
|
|
try {
|
|
final status = await DevicesManagementApi().getBatchStatus(event.uuids);
|
|
deviceStatus = SosStatusModel.fromJson(event.uuids.first, status.status);
|
|
emit(SosDeviceLoadedState(deviceStatus));
|
|
} catch (e) {
|
|
emit(SosDeviceErrorState(e.toString()));
|
|
}
|
|
}
|
|
|
|
FutureOr<void> _getDeviceRecords(GetDeviceRecords event, Emitter<SosDeviceState> emit) async {
|
|
emit(SosReportLoadingState());
|
|
try {
|
|
final from = DateTime.now().subtract(const Duration(days: 30)).millisecondsSinceEpoch;
|
|
final to = DateTime.now().millisecondsSinceEpoch;
|
|
final DeviceReport records =
|
|
await DevicesManagementApi.getDeviceReportsByDate(event.uuid, 'sos', from.toString(), to.toString());
|
|
emit(SosReportLoadedState(records));
|
|
} catch (e) {
|
|
emit(SosReportErrorState(e.toString()));
|
|
}
|
|
}
|
|
|
|
FutureOr<void> _getDeviceAutomationRecords(GetDeviceAutomationRecords event, Emitter<SosDeviceState> emit) async {
|
|
emit(SosAutomationReportLoadingState());
|
|
try {
|
|
final from = DateTime.now().subtract(const Duration(days: 30)).millisecondsSinceEpoch;
|
|
final to = DateTime.now().millisecondsSinceEpoch;
|
|
final DeviceReport records = await DevicesManagementApi.getDeviceReportsByDate(
|
|
event.uuid, 'sos_automation', from.toString(), to.toString());
|
|
emit(SosAutomationReportLoadedState(records));
|
|
} catch (e) {
|
|
emit(SosAutomationReportErrorState(e.toString()));
|
|
}
|
|
}
|
|
|
|
FutureOr<void> _backToSosStatusView(BackToSosStatusView event, Emitter<SosDeviceState> emit) {
|
|
emit(SosDeviceLoadedState(deviceStatus));
|
|
}
|
|
}
|