getDevicesLogs method

  1. @override
Future<DevicesLogs> getDevicesLogs(
  1. DevicesLogsParam param, {
  2. DateTime? timeStart,
})
override

Implementation

@override
Future<DevicesLogs> getDevicesLogs(DevicesLogsParam param,
    {DateTime? timeStart}) async {
  try {
    // if (timeStart == null) {
    //   timeStart = DateTime.now().subtract(Duration(days: 30)).toUtc();
    // }

    Map<String, dynamic> queryParameters = {
      'parameter': param.deviceParameter,
      'communication': 'mqtt',
      'limit': param.limit,
      'sortorder': 'desc'
    };

    if (timeStart != null) {
      queryParameters['ts'] = timeStart.toIso8601String();
    }

    return await dio
        .get('${ApiEndpoints.DEVICES_LOGS}/${param.deviceId}',
            queryParameters: queryParameters,
            options: Options(
                validateStatus: (status) => status == 200 || status == 404))
        .then((value) {
      Property? prop = DevicePropertiesHelper.getPropertyByDeviceParameter(
          param.deviceParameter, param.device);
      if (prop != null) {
        var devicesLogs = DevicesLogs.fromJson(value.data, prop);
        int maxLimit = param.limit > devicesLogs.list.length
            ? devicesLogs.list.length
            : param.limit;

        return DevicesLogs(
            list: devicesLogs.list.getRange(0, maxLimit).toList());
      }
      return DevicesLogs(list: <SensorData>[]);
    });
  } on Exception catch (e) {
    throw HttpHelper.decodeErrorResponse(e,
        tag: TAG,
        logger: logger,
        defaultErrorMessage: "Failed to get this device logs",
        meta: {
          'id': param.deviceId,
          'param': param.deviceParameter,
          'method': 'getDevicesLogs'
        });
  }
}