import 'package:equatable/equatable.dart';

class ChatbotRuleModel extends Equatable {
  // English: Unique identifier for the rule.
  // Arabic: المعرف الفريد للقاعدة.
  final int id;

  // English: The ID of the company this rule belongs to.
  // Arabic: معرف الشركة التي تنتمي إليها هذه القاعدة.
  final int companyId;

  // English: The session ID this rule is bound to.
  // Arabic: معرف الجلسة المرتبطة بها هذه القاعدة.
  final int? sessionId;

  // English: Trigger type (keyword, gemini_ai).
  // Arabic: نوع المشغل (كلمة مفتاحية، ذكاء اصطناعي).
  final String triggerType;

  // English: The comma-separated static reply keywords.
  // Arabic: الكلمات المفتاحية للردود الثابتة مفصولة بفاصلة.
  final String? keyword;

  // English: Predefined reply content or Gemini prompt instructions.
  // Arabic: محتوى الرد المحدد مسبقاً أو تعليمات موجه الذكاء الاصطناعي.
  final String? aiPrompt;

  // English: Active state flag.
  // Arabic: علم الحالة النشطة.
  final bool isActive;

  const ChatbotRuleModel({
    required this.id,
    required this.companyId,
    this.sessionId,
    required this.triggerType,
    this.keyword,
    this.aiPrompt,
    required this.isActive,
  });

  // English: Factory constructor to parse ChatbotRuleModel from JSON data map.
  // Arabic: منشئ المصنع لتحليل نموذج قاعدة الرد الآلي من خريطة بيانات جيسون.
  factory ChatbotRuleModel.fromJson(Map<String, dynamic> json) {
    return ChatbotRuleModel(
      id: json['id'] as int? ?? 0,
      companyId: json['company_id'] as int? ?? 0,
      sessionId: json['session_id'] as int?,
      triggerType: json['trigger_type'] as String? ?? 'keyword',
      keyword: json['keyword'] as String?,
      aiPrompt: json['ai_prompt'] as String?,
      isActive: (json['is_active'] as int? ?? 0) == 1,
    );
  }

  // English: Convert model to JSON map.
  // Arabic: تحويل النموذج إلى خريطة جيسون.
  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'company_id': companyId,
      'session_id': sessionId,
      'trigger_type': triggerType,
      'keyword': keyword,
      'ai_prompt': aiPrompt,
      'is_active': isActive ? 1 : 0,
    };
  }

  @override
  List<Object?> get props => [id, companyId, sessionId, triggerType, keyword, aiPrompt, isActive];
}
