health_upload_models.dart 6.98 KB
import '../json/converters.dart';

sealed class HealthDataUploadValue {
  const HealthDataUploadValue();
}

final class HealthDataUploadIntValue extends HealthDataUploadValue {
  const HealthDataUploadIntValue(this.value);
  final int value;
}

final class HealthDataUploadDoubleValue extends HealthDataUploadValue {
  const HealthDataUploadDoubleValue(this.value);
  final double value;
}

class HealthDataUploadItem {
  const HealthDataUploadItem({
    required this.dataType,
    required this.value,
    required this.time,
  });

  final int dataType;
  final HealthDataUploadValue value;
  final int time;

  factory HealthDataUploadItem.fromJson(Map<String, dynamic> json) {
    return HealthDataUploadItem(
      dataType: json['data_type'] as int,
      value: const HealthDataUploadValueConverter().fromJson(json['value']),
      time: json['time'] as int,
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'data_type': dataType,
      'value': const HealthDataUploadValueConverter().toJson(value),
      'time': time,
    };
  }
}

class HealthDataUploadItemList {
  const HealthDataUploadItemList({required this.itemList});

  final List<HealthDataUploadItem> itemList;

  factory HealthDataUploadItemList.fromJson(Map<String, dynamic> json) {
    return HealthDataUploadItemList(
      itemList: (json['data_list'] as List<dynamic>)
          .map((e) => HealthDataUploadItem.fromJson(e as Map<String, dynamic>))
          .toList(),
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'data_list': itemList.map((e) => e.toJson()).toList(),
    };
  }
}

class SleepHealthDataUploadItem {
  const SleepHealthDataUploadItem({
    required this.dataType,
    required this.fromTime,
    required this.toTime,
  });

  final int dataType;
  final int fromTime;
  final int toTime;

  factory SleepHealthDataUploadItem.fromJson(Map<String, dynamic> json) {
    return SleepHealthDataUploadItem(
      dataType: json['data_type'] as int,
      fromTime: json['from_time'] as int,
      toTime: json['to_time'] as int,
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'data_type': dataType,
      'from_time': fromTime,
      'to_time': toTime,
    };
  }
}

class SleepStateHealthDataUploadItemList {
  const SleepStateHealthDataUploadItemList({required this.itemList});

  final List<SleepHealthDataUploadItem> itemList;

  factory SleepStateHealthDataUploadItemList.fromJson(
    Map<String, dynamic> json,
  ) {
    return SleepStateHealthDataUploadItemList(
      itemList: (json['data_list'] as List<dynamic>)
          .map((e) =>
              SleepHealthDataUploadItem.fromJson(e as Map<String, dynamic>))
          .toList(),
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'data_list': itemList.map((e) => e.toJson()).toList(),
    };
  }
}

class HealthDataLatestUploadRecord {
  const HealthDataLatestUploadRecord({this.dataType, this.latestUploadTime});

  final int? dataType;
  final int? latestUploadTime;

  factory HealthDataLatestUploadRecord.fromJson(Map<String, dynamic> json) {
    return HealthDataLatestUploadRecord(
      dataType: json['data_type'] as int?,
      latestUploadTime: json['latest_data_time'] as int?,
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (dataType != null) val['data_type'] = dataType;
    if (latestUploadTime != null) val['latest_data_time'] = latestUploadTime;
    return val;
  }
}

class HealthDataLatestUploadRecordList {
  const HealthDataLatestUploadRecordList({this.uploadInfoList});

  final List<HealthDataLatestUploadRecord>? uploadInfoList;

  factory HealthDataLatestUploadRecordList.fromJson(
    Map<String, dynamic> json,
  ) {
    return HealthDataLatestUploadRecordList(
      uploadInfoList: (json['latest_data_time_list'] as List<dynamic>?)
          ?.map((e) =>
              HealthDataLatestUploadRecord.fromJson(e as Map<String, dynamic>))
          .toList(),
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (uploadInfoList != null) {
      val['latest_data_time_list'] =
          uploadInfoList!.map((e) => e.toJson()).toList();
    }
    return val;
  }
}

class HealthAuthRequest {
  const HealthAuthRequest({required this.code});

  final String code;

  factory HealthAuthRequest.fromJson(Map<String, dynamic> json) {
    return HealthAuthRequest(
      code: json['code'] as String,
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'code': code,
    };
  }
}

class HealthAuthResponse {
  const HealthAuthResponse({this.scope});

  final String? scope;

  factory HealthAuthResponse.fromJson(Map<String, dynamic> json) {
    return HealthAuthResponse(
      scope: json['scope'] as String?,
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (scope != null) val['scope'] = scope;
    return val;
  }
}

class PulseTypeRequest {
  const PulseTypeRequest({required this.pulseType});

  final int pulseType;

  factory PulseTypeRequest.fromJson(Map<String, dynamic> json) {
    return PulseTypeRequest(
      pulseType: json['pulse_type'] as int,
    );
  }

  Map<String, dynamic> toJson() {
    return <String, dynamic>{
      'pulse_type': pulseType,
    };
  }
}

class PulseTypeResponse {
  const PulseTypeResponse({
    this.id,
    this.userId,
    this.pulseType,
    this.createTime,
  });

  final int? id;
  final int? userId;
  final int? pulseType;
  final int? createTime;

  factory PulseTypeResponse.fromJson(Map<String, dynamic> json) {
    return PulseTypeResponse(
      id: json['id'] as int?,
      userId: json['user_id'] as int?,
      pulseType: json['pulse_type'] as int?,
      createTime: json['create_time'] as int?,
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (id != null) val['id'] = id;
    if (userId != null) val['user_id'] = userId;
    if (pulseType != null) val['pulse_type'] = pulseType;
    if (createTime != null) val['create_time'] = createTime;
    return val;
  }
}

class LatestHrvData {
  const LatestHrvData({
    this.userHrv,
    this.userHrvBaseline,
    this.partnerHrv,
    this.partnerHrvBaseline,
  });

  final double? userHrv;
  final double? userHrvBaseline;
  final double? partnerHrv;
  final double? partnerHrvBaseline;

  factory LatestHrvData.fromJson(Map<String, dynamic> json) {
    return LatestHrvData(
      userHrv: (json['user_hrv'] as num?)?.toDouble(),
      userHrvBaseline: (json['user_hrv_baseline'] as num?)?.toDouble(),
      partnerHrv: (json['pair_user_hrv'] as num?)?.toDouble(),
      partnerHrvBaseline: (json['pair_hrv_baseline'] as num?)?.toDouble(),
    );
  }

  Map<String, dynamic> toJson() {
    final val = <String, dynamic>{};
    if (userHrv != null) val['user_hrv'] = userHrv;
    if (userHrvBaseline != null) val['user_hrv_baseline'] = userHrvBaseline;
    if (partnerHrv != null) val['pair_user_hrv'] = partnerHrv;
    if (partnerHrvBaseline != null) {
      val['pair_hrv_baseline'] = partnerHrvBaseline;
    }
    return val;
  }
}