import 'package:mnemo_cards_common_backend/mnemo_cards_common_backend.dart'; import 'package:mnemo_cards_common/mnemo_cards_common.dart'; extension UserDataModelExtension on UserDataModel { /// Конвертация в DTO с использованием данных из модели /// /// Примечание: packProgress, studyDates, categoryMinutes теперь рассчитываются на лету /// и должны передаваться как параметры UserDataDto toDto({ List? calculatedPackProgress, List? calculatedStudyDates, Map? calculatedCategoryMinutes, AllWordsStatisticsDto? calculatedWordsStatistics, }) { return UserDataDto( allWordsStatistics: calculatedWordsStatistics ?? AllWordsStatisticsDto( words: words.map((model) => model.toDto()).toList(), ), allTestsStatistics: AllTestsStatisticsDto( tests: Map.fromEntries( testsStatistics.map((model) => MapEntry(model.id!, model.toDto())), ), lastSessionToken: this.lastTestSessionToken, ), // NEW STATISTICS FIELDS lastTimeOnline: lastTimeOnline, totalStudyTimeMinutes: totalStudyTimeMinutes, currentStreak: currentStreak, longestStreak: longestStreak, packProgress: calculatedPackProgress != null ? { for (final progress in calculatedPackProgress) progress.packId: progress, } : { for (final progress in packProgress) progress.packId: progress.toDto(), }, studyDates: calculatedStudyDates ?? List.from(studyDates), categoryMinutes: calculatedCategoryMinutes ?? Map.from(categoryMinutes), achievements: achievements.map((model) => model.toDto()).toList(), ); } }