/// 步骤模型
class Step {
  final int? id;
  final int programId;
  final int stepNo;
  final String position;
  final String name;
  final int mixTime;
  final int magnetTime;
  final int volume;
  final int blowTime;
  final int speed;

  Step({
    this.id,
    required this.programId,
    required this.stepNo,
    required this.position,
    required this.name,
    this.mixTime = 0,
    this.magnetTime = 0,
    this.volume = 0,
    this.blowTime = 0,
    this.speed = 5,
  });

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'program_id': programId,
      'step_no': stepNo,
      'position': position,
      'name': name,
      'mix_time': mixTime,
      'magnet_time': magnetTime,
      'volume': volume,
      'blow_time': blowTime,
      'speed': speed,
    };
  }

  factory Step.fromMap(Map<String, dynamic> map) {
    return Step(
      id: map['id'] as int?,
      programId: map['program_id'] as int,
      stepNo: map['step_no'] as int,
      position: map['position'] as String,
      name: map['name'] as String,
      mixTime: map['mix_time'] as int? ?? 0,
      magnetTime: map['magnet_time'] as int? ?? 0,
      volume: map['volume'] as int? ?? 0,
      blowTime: map['blow_time'] as int? ?? 0,
      speed: map['speed'] as int? ?? 5,
    );
  }

  Step copyWith({
    int? id,
    int? programId,
    int? stepNo,
    String? position,
    String? name,
    int? mixTime,
    int? magnetTime,
    int? volume,
    int? blowTime,
    int? speed,
  }) {
    return Step(
      id: id ?? this.id,
      programId: programId ?? this.programId,
      stepNo: stepNo ?? this.stepNo,
      position: position ?? this.position,
      name: name ?? this.name,
      mixTime: mixTime ?? this.mixTime,
      magnetTime: magnetTime ?? this.magnetTime,
      volume: volume ?? this.volume,
      blowTime: blowTime ?? this.blowTime,
      speed: speed ?? this.speed,
    );
  }
}
