import '../models/conversation_scenario.dart';

/// 对话场景静态数据
class ScenarioData {
  static final List<ConversationScenario> _scenarios = [
    ConversationScenario(
      id: 'restaurant_ordering',
      title: 'Ordering Food at Restaurant',
      subtitle: '餐厅点餐对话',
      description: '学习在餐厅点餐的常用英语表达，包括询问菜单、下订单、特殊要求等。',
      duration: '10分钟',
      level: 'B1',
      type: ScenarioType.restaurant,
      objectives: [
        '学会阅读英文菜单',
        '掌握点餐的基本表达',
        '学会提出特殊要求',
        '了解餐厅服务流程',
      ],
      keyPhrases: [
        'I\'d like to order...',
        'What do you recommend?',
        'Could I have the menu, please?',
        'I\'m allergic to...',
        'Could you make it less spicy?',
        'Check, please.',
      ],
      steps: [
        ScenarioStep(
          stepNumber: 1,
          title: '入座问候',
          description: '服务员引导您入座并提供菜单',
          role: 'npc',
          content: 'Good evening! Welcome to our restaurant. How many people are in your party?',
          options: [
            'Just one, please.',
            'Table for two, please.',
            'We have a reservation under Smith.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 2,
          title: '查看菜单',
          description: '服务员询问您是否需要时间看菜单',
          role: 'npc',
          content: 'Here\'s your table. Would you like to see the menu, or do you need a few minutes?',
          options: [
            'Could I have the menu, please?',
            'I need a few minutes to decide.',
            'What do you recommend?',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 3,
          title: '点餐',
          description: '服务员准备为您点餐',
          role: 'npc',
          content: 'Are you ready to order, or would you like to hear about our specials?',
          options: [
            'I\'d like to hear about the specials.',
            'I\'m ready to order.',
            'Could you give me a few more minutes?',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 4,
          title: '下订单',
          description: '告诉服务员您想要什么',
          role: 'user',
          content: 'What would you like to order?',
          options: [
            'I\'d like the grilled salmon, please.',
            'Could I have the pasta with marinara sauce?',
            'I\'ll have the chicken Caesar salad.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 5,
          title: '特殊要求',
          description: '提出任何特殊的饮食要求',
          role: 'npc',
          content: 'How would you like that cooked? Any special requests?',
          options: [
            'Medium rare, please.',
            'Could you make it less spicy?',
            'I\'m allergic to nuts, please make sure there are none.',
          ],
          correctOption: null,
        ),
      ],
      createdAt: DateTime.now(),
    ),
    ConversationScenario(
      id: 'job_interview',
      title: 'Job Interview Practice',
      subtitle: '工作面试练习',
      description: '模拟真实的英语工作面试场景，练习自我介绍、回答常见问题和提问技巧。',
      duration: '15分钟',
      level: 'B2',
      type: ScenarioType.interview,
      objectives: [
        '掌握自我介绍技巧',
        '学会回答常见面试问题',
        '练习询问公司信息',
        '提高面试自信心',
      ],
      keyPhrases: [
        'Tell me about yourself.',
        'What are your strengths?',
        'Why do you want this job?',
        'Where do you see yourself in 5 years?',
        'Do you have any questions for us?',
        'Thank you for your time.',
      ],
      steps: [
        ScenarioStep(
          stepNumber: 1,
          title: '面试开始',
          description: '面试官欢迎您并开始面试',
          role: 'npc',
          content: 'Good morning! Please have a seat. Thank you for coming in today.',
          options: [
            'Good morning! Thank you for having me.',
            'Hello! I\'m excited to be here.',
            'Thank you for the opportunity.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 2,
          title: '自我介绍',
          description: '面试官要求您进行自我介绍',
          role: 'npc',
          content: 'Let\'s start with you telling me a little bit about yourself.',
          options: [
            'I have 5 years of experience in marketing...',
            'I\'m a recent graduate with a degree in...',
            'I\'m currently working as a... and looking for new challenges.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 3,
          title: '优势询问',
          description: '面试官询问您的优势',
          role: 'npc',
          content: 'What would you say are your greatest strengths?',
          options: [
            'I\'m very detail-oriented and organized.',
            'I work well under pressure and meet deadlines.',
            'I\'m a strong team player with good communication skills.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 4,
          title: '职业规划',
          description: '面试官询问您的职业规划',
          role: 'npc',
          content: 'Where do you see yourself in five years?',
          options: [
            'I see myself in a leadership role, managing a team.',
            'I want to become an expert in my field.',
            'I hope to have grown professionally and taken on more responsibilities.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 5,
          title: '提问环节',
          description: '面试官询问您是否有问题',
          role: 'npc',
          content: 'Do you have any questions about the company or the position?',
          options: [
            'What does a typical day look like in this role?',
            'What are the opportunities for professional development?',
            'What do you enjoy most about working here?',
          ],
          correctOption: null,
        ),
      ],
      createdAt: DateTime.now(),
    ),
    ConversationScenario(
      id: 'business_meeting',
      title: 'Business Meeting Discussion',
      subtitle: '商务会议讨论',
      description: '参与英语商务会议，学习表达观点、提出建议和进行专业讨论。',
      duration: '20分钟',
      level: 'C1',
      type: ScenarioType.business,
      objectives: [
        '学会在会议中表达观点',
        '掌握商务讨论技巧',
        '练习提出建议和反对意见',
        '提高商务英语水平',
      ],
      keyPhrases: [
        'I\'d like to propose...',
        'From my perspective...',
        'I agree with your point, however...',
        'Could we consider...',
        'Let\'s move on to the next item.',
        'To summarize...',
      ],
      steps: [
        ScenarioStep(
          stepNumber: 1,
          title: '会议开始',
          description: '会议主持人开始会议并介绍议程',
          role: 'npc',
          content: 'Good morning, everyone. Let\'s begin today\'s meeting. Our main agenda is to discuss the new marketing strategy.',
          options: [
            'Good morning! I\'m looking forward to the discussion.',
            'Thank you for organizing this meeting.',
            'I have some ideas I\'d like to share.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 2,
          title: '观点表达',
          description: '主持人邀请您分享观点',
          role: 'npc',
          content: 'What are your thoughts on our current marketing approach?',
          options: [
            'I think we should focus more on digital marketing.',
            'From my perspective, we need to target younger demographics.',
            'I believe our current strategy is effective, but we could improve...',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 3,
          title: '建议提出',
          description: '有人提出了一个建议，您需要回应',
          role: 'npc',
          content: 'I propose we increase our social media budget by 30%. What do you think?',
          options: [
            'That\'s an interesting proposal. Could we see some data first?',
            'I agree, but we should also consider the ROI.',
            'I have some concerns about that approach.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 4,
          title: '讨论深入',
          description: '深入讨论具体实施方案',
          role: 'npc',
          content: 'How do you suggest we implement this new strategy?',
          options: [
            'We could start with a pilot program.',
            'I recommend we form a dedicated team.',
            'Let\'s set clear milestones and deadlines.',
          ],
          correctOption: null,
        ),
        ScenarioStep(
          stepNumber: 5,
          title: '会议总结',
          description: '总结会议要点和下一步行动',
          role: 'npc',
          content: 'Let\'s summarize what we\'ve discussed and assign action items.',
          options: [
            'I can take responsibility for the market research.',
            'Should we schedule a follow-up meeting?',
            'I\'ll prepare a detailed proposal by next week.',
          ],
          correctOption: null,
        ),
      ],
      createdAt: DateTime.now(),
    ),
  ];

  /// 获取所有场景
  static List<ConversationScenario> getAllScenarios() {
    return List.from(_scenarios);
  }

  /// 根据ID获取场景
  static ConversationScenario? getScenarioById(String id) {
    try {
      return _scenarios.firstWhere((scenario) => scenario.id == id);
    } catch (e) {
      return null;
    }
  }

  /// 根据类型获取场景
  static List<ConversationScenario> getScenariosByType(ScenarioType type) {
    return _scenarios.where((scenario) => scenario.type == type).toList();
  }

  /// 根据难度级别获取场景
  static List<ConversationScenario> getScenariosByLevel(String level) {
    return _scenarios.where((scenario) => scenario.level == level).toList();
  }
}