import '../models/vocabulary_book_model.dart';
import '../models/vocabulary_book_category.dart';

/// 词汇书数据服务
class VocabularyDataService {
  /// 获取模拟的词汇书数据（根据分类）
  static List<VocabularyBook> getVocabularyBooksByCategory(VocabularyBookMainCategory category) {
    final baseTime = DateTime.now();
    
    switch (category) {
      case VocabularyBookMainCategory.academicStage:
        return [
          _createVocabularyBook(
            id: 'primary_core_1000',
            name: '小学英语核心词汇',
            description: '小学阶段必备的1000个核心词汇，涵盖日常生活场景',
            totalWords: 1000,
            tags: ['小学', '基础', '日常用语'],
            difficulty: VocabularyBookDifficulty.beginner,
            category: category,
          ),
          _createVocabularyBook(
            id: 'junior_high_1500',
            name: '初中英语词汇',
            description: '初中阶段1500-2500词汇，结合教材要求',
            totalWords: 1500,
            tags: ['初中', '教材', '基础'],
            difficulty: VocabularyBookDifficulty.beginner,
            category: category,
          ),
          _createVocabularyBook(
            id: 'senior_high_3500',
            name: '高中英语词汇',
            description: '高中阶段2500-3500词汇，涵盖课标与高考高频词',
            totalWords: 3500,
            tags: ['高中', '高考', '课标'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'college_textbook',
            name: '大学英语教材词汇',
            description: '大学英语精读/泛读配套词汇',
            totalWords: 2000,
            tags: ['大学', '教材', '精读'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
        ];
        
      case VocabularyBookMainCategory.domesticTest:
        return [
          _createVocabularyBook(
            id: 'cet4_vocabulary',
            name: '大学四级词汇(CET-4)',
            description: '大学英语四级考试核心词汇',
            totalWords: 4500,
            tags: ['四级', 'CET-4', '考试'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'cet6_vocabulary',
            name: '大学六级词汇(CET-6)',
            description: '大学英语六级考试核心词汇',
            totalWords: 5500,
            tags: ['六级', 'CET-6', '考试'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'postgraduate_vocabulary',
            name: '考研英语核心词汇',
            description: '考研英语必备核心词汇',
            totalWords: 5500,
            tags: ['考研', '研究生', '核心词汇'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'tem4_vocabulary',
            name: '专四词汇(TEM-4)',
            description: '英语专业四级考试词汇',
            totalWords: 8000,
            tags: ['专四', 'TEM-4', '英语专业'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'tem8_vocabulary',
            name: '专八词汇(TEM-8)',
            description: '英语专业八级考试词汇',
            totalWords: 12000,
            tags: ['专八', 'TEM-8', '英语专业'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
        ];
        
      case VocabularyBookMainCategory.internationalTest:
        return [
          _createVocabularyBook(
            id: 'ielts_academic',
            name: '雅思学术词汇(IELTS Academic)',
            description: '雅思学术类考试核心词汇',
            totalWords: 8000,
            tags: ['雅思', 'IELTS', '学术类'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'ielts_general',
            name: '雅思通用词汇(IELTS General)',
            description: '雅思通用类考试核心词汇',
            totalWords: 6000,
            tags: ['雅思', 'IELTS', '通用类'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'toefl_ibt',
            name: '托福词汇(TOEFL iBT)',
            description: '托福网考核心词汇',
            totalWords: 10000,
            tags: ['托福', 'TOEFL', 'iBT'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'toeic_vocabulary',
            name: '托业词汇(TOEIC)',
            description: '托业考试职场应用词汇',
            totalWords: 6000,
            tags: ['托业', 'TOEIC', '职场'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'gre_vocabulary',
            name: 'GRE词汇',
            description: 'GRE学术/研究生申请词汇',
            totalWords: 15000,
            tags: ['GRE', '研究生', '学术'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'gmat_vocabulary',
            name: 'GMAT词汇',
            description: 'GMAT商科/管理类研究生词汇',
            totalWords: 8000,
            tags: ['GMAT', '商科', '管理'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'sat_vocabulary',
            name: 'SAT词汇',
            description: 'SAT美本申请词汇',
            totalWords: 5000,
            tags: ['SAT', '美本', '申请'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
        ];
        
      case VocabularyBookMainCategory.professional:
        return [
          _createVocabularyBook(
            id: 'bec_preliminary',
            name: '商务英语初级(BEC Preliminary)',
            description: 'BEC初级商务英语词汇',
            totalWords: 3000,
            tags: ['BEC', '商务', '初级'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'bec_vantage',
            name: '商务英语中级(BEC Vantage)',
            description: 'BEC中级商务英语词汇',
            totalWords: 4000,
            tags: ['BEC', '商务', '中级'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'bec_higher',
            name: '商务英语高级(BEC Higher)',
            description: 'BEC高级商务英语词汇',
            totalWords: 5000,
            tags: ['BEC', '商务', '高级'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'mba_finance',
            name: 'MBA/金融词汇',
            description: 'MBA、金融、会计、经济学专业词汇',
            totalWords: 6000,
            tags: ['MBA', '金融', '会计'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'medical_english',
            name: '医学英语词汇',
            description: '医学专业英语词汇',
            totalWords: 8000,
            tags: ['医学', '专业', '医疗'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'legal_english',
            name: '法律英语词汇',
            description: '法律专业英语词汇',
            totalWords: 5000,
            tags: ['法律', '专业', '司法'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'it_engineering',
            name: '工程与IT英语',
            description: '计算机科学、人工智能、软件工程词汇',
            totalWords: 4000,
            tags: ['IT', '工程', '计算机'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'academic_english',
            name: '学术英语(EAP)',
            description: '学术英语写作/阅读/科研常用词汇',
            totalWords: 6000,
            tags: ['学术', 'EAP', '科研'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
        ];
        
      case VocabularyBookMainCategory.functional:
        return [
          _createVocabularyBook(
            id: 'word_roots_affixes',
            name: '词根词缀词汇',
            description: '帮助记忆与扩展的词根词缀词汇',
            totalWords: 3000,
            tags: ['词根', '词缀', '记忆'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'synonyms_antonyms',
            name: '同义词/反义词库',
            description: '同义词、反义词、近义搭配库',
            totalWords: 2500,
            tags: ['同义词', '反义词', '搭配'],
            difficulty: VocabularyBookDifficulty.intermediate,
            category: category,
          ),
          _createVocabularyBook(
            id: 'daily_spoken_collocations',
            name: '日常口语搭配库',
            description: '日常口语常用搭配库',
            totalWords: 1500,
            tags: ['口语', '搭配', '日常'],
            difficulty: VocabularyBookDifficulty.beginner,
            category: category,
          ),
          _createVocabularyBook(
            id: 'academic_spoken_collocations',
            name: '学术口语搭配库',
            description: '学术口语常用搭配库',
            totalWords: 2000,
            tags: ['学术', '口语', '搭配'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'academic_writing_collocations',
            name: '学术写作搭配库',
            description: '学术写作常用搭配库(Collocations)',
            totalWords: 2500,
            tags: ['学术', '写作', '搭配'],
            difficulty: VocabularyBookDifficulty.advanced,
            category: category,
          ),
          _createVocabularyBook(
            id: 'daily_life_english',
            name: '日常生活英语',
            description: '旅游、点餐、购物、出行、租房等日常生活英语',
            totalWords: 2000,
            tags: ['日常', '生活', '实用'],
            difficulty: VocabularyBookDifficulty.beginner,
            category: category,
          ),
        ];
    }
  }

  /// 创建词汇书的辅助方法
  static VocabularyBook _createVocabularyBook({
    required String id,
    required String name,
    required String description,
    required int totalWords,
    required List<String> tags,
    required VocabularyBookDifficulty difficulty,
    required VocabularyBookMainCategory category,
  }) {
    final coverImages = [
      'https://images.unsplash.com/photo-1503676260728-1c00da094a0b?w=300',
      'https://images.unsplash.com/photo-1481627834876-b7833e8f5570?w=300',
      'https://images.unsplash.com/photo-1434030216411-0b793f4b4173?w=300',
      'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?w=300',
      'https://images.unsplash.com/photo-1456513080510-7bf3a84b82f8?w=300',
    ];
    
    return VocabularyBook(
      id: id,
      name: name,
      description: description,
      type: VocabularyBookType.system,
      difficulty: difficulty,
      coverImageUrl: coverImages[id.hashCode % coverImages.length],
      totalWords: totalWords,
      isPublic: true,
      tags: tags,
      mainCategory: category,
      targetLevels: _getTargetLevels(category),
      estimatedDays: (totalWords / 20).ceil(),
      dailyWordCount: 20,
      downloadCount: (totalWords * 0.3).round(),
      rating: 4.2 + (id.hashCode % 8) * 0.1,
      reviewCount: 50 + (id.hashCode % 200),
      createdAt: DateTime.now(),
      updatedAt: DateTime.now(),
    );
  }

  /// 根据分类获取目标等级
  static List<String> _getTargetLevels(VocabularyBookMainCategory category) {
    switch (category) {
      case VocabularyBookMainCategory.academicStage:
        return ['小学', '初中', '高中', '大学'];
      case VocabularyBookMainCategory.domesticTest:
        return ['大学', '研究生'];
      case VocabularyBookMainCategory.internationalTest:
        return ['大学', '研究生', '出国'];
      case VocabularyBookMainCategory.professional:
        return ['职场', '专业'];
      case VocabularyBookMainCategory.functional:
        return ['通用'];
    }
  }

  /// 获取推荐词汇书（首页显示）
  static List<VocabularyBook> getRecommendedVocabularyBooks() {
    final recommended = <VocabularyBook>[];
    for (final category in VocabularyBookMainCategory.values) {
      final categoryBooks = getVocabularyBooksByCategory(category).take(2);
      recommended.addAll(categoryBooks);
    }
    return recommended;
  }
}