import '../../../entities/shifts/break/break.dart';

/// Adapter for Break related data.
class BreakAdapter {
  /// Maps break data to a Break entity.
  ///
  /// [isPaid] whether the break is paid.
  /// [breakTime] the string representation of the break duration (e.g., 'MIN_10', 'MIN_30').
  static Break fromData({
    required bool isPaid,
    required String? breakTime,
  }) {
    return Break(
      isBreakPaid: isPaid,
      duration: _parseDuration(breakTime),
    );
  }

  static BreakDuration _parseDuration(String? breakTime) {
    if (breakTime == null) return BreakDuration.none;

    switch (breakTime.toUpperCase()) {
      case 'MIN_10':
        return BreakDuration.ten;
      case 'MIN_15':
        return BreakDuration.fifteen;
      case 'MIN_20':
        return BreakDuration.twenty;
      case 'MIN_30':
        return BreakDuration.thirty;
      case 'MIN_45':
        return BreakDuration.fortyFive;
      case 'MIN_60':
        return BreakDuration.sixty;
      default:
        return BreakDuration.none;
    }
  }
}
