/**
 * Utility functions to transform FAQ API response
 */

export interface FAQItem {
  id: string | number;
  question: string;
  answer: string;
  question_hindi: string;
  answer_hindi: string;
  category?: string;
  category_hindi?: string;
  subcategory?: string;
  subcategory_hindi?: string;
}

export interface FAQCategory {
  category_id: number;
  category_name: string;
  category_name_hindi: string;
  subcategories: FAQSubcategory[];
  faqs_without_subcategory: FAQItem[];
}

export interface FAQSubcategory {
  subcategory_id: number;
  subcategory_name: string;
  subcategory_name_hindi: string;
  faqs: FAQItem[];
}

/**
 * Flatten nested FAQ structure into a simple array
 * Useful for displaying all FAQs in a single list view
 */
export function flattenFAQs(categories: FAQCategory[]): FAQItem[] {
  const flatFAQs: FAQItem[] = [];

  categories.forEach((category) => {
    // Add FAQs without subcategory
    category.faqs_without_subcategory?.forEach((faq) => {
      flatFAQs.push({
        ...faq,
        category: category.category_name,
        category_hindi: category.category_name_hindi,
      });
    });

    // Add FAQs within subcategories
    category.subcategories?.forEach((subcategory) => {
      subcategory.faqs?.forEach((faq) => {
        flatFAQs.push({
          ...faq,
          category: category.category_name,
          category_hindi: category.category_name_hindi,
          subcategory: subcategory.subcategory_name,
          subcategory_hindi: subcategory.subcategory_name_hindi,
        });
      });
    });
  });

  return flatFAQs;
}

/**
 * Group FAQs by category and subcategory
 * Useful for displaying FAQs with category headers and collapsible sections
 */
export function groupFAQsByCategory(categories: FAQCategory[]): FAQCategory[] {
  return categories;
}

/**
 * Clean HTML content in FAQ answers
 * Converts HTML entities and removes unnecessary tags
 */
export function cleanFAQAnswer(html: string): string {
  if (!html) return "";

  // Decode HTML entities
  const textarea = typeof window !== "undefined" ? document.createElement("textarea") : null;
  if (textarea) {
    textarea.innerHTML = html;
    return textarea.value;
  }

  // Fallback: simple entity decoding
  return html
    .replace(/&amp;/g, "&")
    .replace(/&lt;/g, "<")
    .replace(/&gt;/g, ">")
    .replace(/&quot;/g, '"')
    .replace(/&#039;/g, "'")
    .replace(/<[^>]*>/g, ""); // Remove HTML tags
}
