mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2026-10-24 19:37:56 +00:00
door sensor
This commit is contained in:
@@ -6,19 +6,18 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:syncrow_app/features/devices/bloc/door_sensor_bloc/door_sensor_event.dart';
|
||||
import 'package:syncrow_app/features/devices/bloc/door_sensor_bloc/door_sensor_state.dart';
|
||||
import 'package:syncrow_app/features/devices/model/device_control_model.dart';
|
||||
import 'package:syncrow_app/features/devices/model/device_report_model.dart';
|
||||
import 'package:syncrow_app/features/devices/model/door_sensor_model.dart';
|
||||
import 'package:syncrow_app/features/devices/model/report_model.dart';
|
||||
import 'package:syncrow_app/features/devices/model/status_model.dart';
|
||||
import 'package:syncrow_app/services/api/devices_api.dart';
|
||||
|
||||
class DoorSensorBloc extends Bloc<DoorSensorEvent, DoorSensorState> {
|
||||
final String DSId;
|
||||
final String switchCode;
|
||||
DoorSensorBloc({required this.DSId, required this.switchCode})
|
||||
: super(const DoorSensorState()) {
|
||||
DoorSensorBloc({
|
||||
required this.DSId,
|
||||
}) : super(const DoorSensorState()) {
|
||||
on<DoorSensorInitial>(_fetchWaterHeaterStatus);
|
||||
on<ReportLogsInitial>(fetchLogsForLastMonth);
|
||||
on<DoorSensorSwitch>(_changeFirstSwitch);
|
||||
on<ToggleLowBatteryEvent>(_toggleLowBattery);
|
||||
on<ToggleClosingReminderEvent>(_toggleClosingReminder);
|
||||
on<ToggleDoorAlarmEvent>(_toggleDoorAlarm);
|
||||
@@ -29,6 +28,7 @@ class DoorSensorBloc extends Bloc<DoorSensorEvent, DoorSensorState> {
|
||||
bool doorAlarm = false;
|
||||
DoorSensorModel deviceStatus =
|
||||
DoorSensorModel(doorContactState: false, batteryPercentage: 0);
|
||||
|
||||
void _fetchWaterHeaterStatus(
|
||||
DoorSensorInitial event, Emitter<DoorSensorState> emit) async {
|
||||
emit(DoorSensorLoadingState());
|
||||
@@ -43,34 +43,13 @@ class DoorSensorBloc extends Bloc<DoorSensorEvent, DoorSensorState> {
|
||||
);
|
||||
emit(UpdateState(doorSensor: deviceStatus));
|
||||
Future.delayed(const Duration(milliseconds: 500));
|
||||
// _listenToChanges();
|
||||
_listenToChanges();
|
||||
} catch (e) {
|
||||
emit(DoorSensorFailedState(errorMessage: e.toString()));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
void _changeFirstSwitch(
|
||||
DoorSensorSwitch event, Emitter<DoorSensorState> emit) async {
|
||||
emit(LoadingNewSate(doorSensor: deviceStatus));
|
||||
try {
|
||||
deviceStatus.doorContactState = !event.switchD;
|
||||
emit(UpdateState(doorSensor: deviceStatus));
|
||||
final response = await DevicesAPI.controlDevice(
|
||||
DeviceControlModel(
|
||||
deviceId: DSId,
|
||||
code: 'doorcontact_state',
|
||||
value: deviceStatus.doorContactState),
|
||||
DSId);
|
||||
|
||||
if (!response['success']) {
|
||||
// add(InitialEvent(groupScreen: oneGangGroup));
|
||||
}
|
||||
} catch (_) {
|
||||
emit(DoorSensorFailedState(errorMessage: _.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
// Toggle functions for each switch
|
||||
void _toggleLowBattery(
|
||||
ToggleLowBatteryEvent event, Emitter<DoorSensorState> emit) async {
|
||||
@@ -135,31 +114,8 @@ class DoorSensorBloc extends Bloc<DoorSensorEvent, DoorSensorState> {
|
||||
}
|
||||
}
|
||||
|
||||
final List<RecordGroup> recordGroups = [
|
||||
RecordGroup(
|
||||
date: DateTime(2024, 8, 31),
|
||||
records: [
|
||||
Record(status: 'Opened', time: '15:10:25', isOpen: false),
|
||||
Record(status: 'Closed', time: '12:24:45', isOpen: false),
|
||||
Record(status: 'Opened', time: '12:20:05', isOpen: true),
|
||||
],
|
||||
),
|
||||
RecordGroup(
|
||||
date: DateTime(2024, 8, 30),
|
||||
records: [
|
||||
Record(status: 'Opened', time: '14:15:30', isOpen: true),
|
||||
Record(status: 'Closed', time: '10:22:45', isOpen: false),
|
||||
],
|
||||
),
|
||||
RecordGroup(
|
||||
date: DateTime(2024, 8, 29),
|
||||
records: [
|
||||
Record(status: 'Opened', time: '13:45:00', isOpen: true),
|
||||
Record(status: 'Closed', time: '11:30:15', isOpen: false),
|
||||
Record(status: 'Opened', time: '09:20:10', isOpen: true),
|
||||
],
|
||||
),
|
||||
];
|
||||
DeviceReport recordGroups = DeviceReport(startTime: 0, endTime: 0, data: []);
|
||||
|
||||
|
||||
Future<void> fetchLogsForLastMonth(
|
||||
ReportLogsInitial event, Emitter<DoorSensorState> emit) async {
|
||||
@@ -174,11 +130,13 @@ class DoorSensorBloc extends Bloc<DoorSensorEvent, DoorSensorState> {
|
||||
int endTime = now.millisecondsSinceEpoch;
|
||||
try {
|
||||
var response = await DevicesAPI.getReportLogs(
|
||||
startTime: startTime.toString(), // Convert to String if the API expects it
|
||||
startTime:
|
||||
startTime.toString(), // Convert to String if the API expects it
|
||||
endTime: endTime.toString(), // Convert to String if the API expects it
|
||||
deviceUuid: DSId,
|
||||
code: 'doorcontact_state',
|
||||
);
|
||||
recordGroups = response;
|
||||
// Process response here
|
||||
print(response);
|
||||
} on DioException catch (e) {
|
||||
@@ -204,8 +162,7 @@ class DoorSensorBloc extends Bloc<DoorSensorEvent, DoorSensorState> {
|
||||
List<StatusModel> statusList = [];
|
||||
|
||||
usersMap['status'].forEach((element) {
|
||||
statusList
|
||||
.add(StatusModel(code: element['code'], value: element['value']));
|
||||
statusList.add(StatusModel(code: element['code'], value: true));
|
||||
});
|
||||
|
||||
deviceStatus = DoorSensorModel.fromJson(statusList);
|
||||
|
||||
Reference in New Issue
Block a user