import 'package:flutter_custom_toolbox/flutter_toolbox.dart';

import 'package:momomotus/config/default_activity_settings.dart';

class ActivitySettings {
  final String lang;
  final String length;
  final String level;

  ActivitySettings({
    required this.lang,
    required this.length,
    required this.level,
  });

  static String getLangValueFromUnsafe(String lang) {
    if (DefaultActivitySettings.allowedLangValues.contains(lang)) {
      return lang;
    }

    return DefaultActivitySettings.defaultLangValue;
  }

  static String getLengthValueFromUnsafe(String length) {
    if (DefaultActivitySettings.allowedLengthValues.contains(length)) {
      return length;
    }

    return DefaultActivitySettings.defaultLengthValue;
  }

  static String getLevelValueFromUnsafe(String level) {
    if (DefaultActivitySettings.allowedLevelValues.contains(level)) {
      return level;
    }

    return DefaultActivitySettings.defaultLevelValue;
  }

  factory ActivitySettings.createDefault() {
    return ActivitySettings(
      lang: DefaultActivitySettings.defaultLangValue,
      length: DefaultActivitySettings.defaultLengthValue,
      level: DefaultActivitySettings.defaultLevelValue,
    );
  }

  void dump() {
    printlog('$ActivitySettings:');
    printlog('  ${DefaultActivitySettings.parameterCodeLang}: $lang');
    printlog('  ${DefaultActivitySettings.parameterCodeLength}: $length');
    printlog('  ${DefaultActivitySettings.parameterCodeLevel}: $level');
    printlog('');
  }

  @override
  String toString() {
    return '$ActivitySettings(${toJson()})';
  }

  Map<String, dynamic>? toJson() {
    return <String, dynamic>{
      DefaultActivitySettings.parameterCodeLang: lang,
      DefaultActivitySettings.parameterCodeLength: length,
      DefaultActivitySettings.parameterCodeLevel: level,
    };
  }
}