fluffychat/lib/pangea/activity_planner/activity_plan_request.dart
wcjord 3dedcf5bf5
1572-feedback-for-activity-planner (#1586)
* feat(activity_planner): major UI and functionality updates

* fix(intl_en): did not merge
2025-01-26 11:40:43 -05:00

97 lines
2.2 KiB
Dart

import 'package:fluffychat/pangea/activity_planner/media_enum.dart';
class ActivityPlanRequest {
final String topic;
final String mode;
final String objective;
final MediaEnum media;
final int cefrLevel;
final String languageOfInstructions;
final String targetLanguage;
final int count;
ActivityPlanRequest({
required this.topic,
required this.mode,
required this.objective,
required this.media,
required this.cefrLevel,
required this.languageOfInstructions,
required this.targetLanguage,
this.count = 3,
});
Map<String, dynamic> toJson() {
return {
'topic': topic,
'mode': mode,
'objective': objective,
'media': media.string,
'cefr_level': cefrLanguageLevel,
'language_of_instructions': languageOfInstructions,
'target_language': targetLanguage,
'count': count,
};
}
factory ActivityPlanRequest.fromJson(Map<String, dynamic> json) {
int cefrLevel = 0;
switch (json['cefr_level']) {
case 'Pre-A1':
cefrLevel = 0;
break;
case 'A1':
cefrLevel = 1;
break;
case 'A2':
cefrLevel = 2;
break;
case 'B1':
cefrLevel = 3;
break;
case 'B2':
cefrLevel = 4;
break;
case 'C1':
cefrLevel = 5;
break;
case 'C2':
cefrLevel = 6;
break;
}
return ActivityPlanRequest(
topic: json['topic'],
mode: json['mode'],
objective: json['objective'],
media: MediaEnum.nan.fromString(json['media']),
cefrLevel: cefrLevel,
languageOfInstructions: json['language_of_instructions'],
targetLanguage: json['target_language'],
count: json['count'],
);
}
String get storageKey =>
'$topic-$mode-$objective-${media.string}-$cefrLevel-$languageOfInstructions-$targetLanguage';
String get cefrLanguageLevel {
switch (cefrLevel) {
case 0:
return 'Pre-A1';
case 1:
return 'A1';
case 2:
return 'A2';
case 3:
return 'B1';
case 4:
return 'B2';
case 5:
return 'C1';
case 6:
return 'C2';
default:
return 'Pre-A1';
}
}
}