import 'package:flutter/material.dart';

/// Utilitas untuk mengkategorikan tanaman berdasarkan nama atau deskripsinya
class PlantCategorizer {
  // Kategori utama
  static const String TANAMAN_PANGAN = 'Tanaman Pangan';
  static const String SAYURAN = 'Sayuran';
  static const String BUAH_BUAHAN = 'Buah-buahan';
  static const String REMPAH = 'Rempah';
  static const String UMUM = 'Umum';

  // Daftar tanaman pangan
  static final List<String> _tanamanPangan = [
    'padi',
    'beras',
    'jagung',
    'gandum',
    'kedelai',
    'kacang tanah',
    'kacang kedelai',
    'kacang hijau',
    'ubi',
    'ubi kayu',
    'singkong',
    'ubi jalar',
    'talas',
    'sorghum',
    'jewawut',
  ];

  // Daftar sayuran
  static final List<String> _sayuran = [
    'bayam',
    'kangkung',
    'sawi',
    'selada',
    'kubis',
    'kol',
    'brokoli',
    'wortel',
    'tomat',
    'terong',
    'timun',
    'ketimun',
    'mentimun',
    'labu',
    'kacang panjang',
    'buncis',
    'pare',
    'daun singkong',
    'daun pepaya',
    'kemangi',
    'selada air',
    'asparagus',
    'bawang',
    'kentang',
    'cabai',
    'paprika',
    'lobak',
    'bit',
    'seledri',
  ];

  // Daftar buah-buahan
  static final List<String> _buahBuahan = [
    'mangga',
    'jeruk',
    'pisang',
    'pepaya',
    'jambu',
    'jambu biji',
    'jambu air',
    'apel',
    'anggur',
    'manggis',
    'durian',
    'rambutan',
    'alpukat',
    'semangka',
    'melon',
    'pir',
    'strawberry',
    'nangka',
    'sirsak',
    'sawo',
    'salak',
    'markisa',
    'belimbing',
  ];

  // Daftar rempah-rempah
  static final List<String> _rempah = [
    'jahe',
    'kunyit',
    'lengkuas',
    'sereh',
    'kemangi',
    'daun salam',
    'daun jeruk',
    'kayu manis',
    'cengkeh',
    'pala',
    'lada',
    'merica',
    'ketumbar',
    'jintan',
    'kemiri',
    'kapulaga',
    'vanili',
    'temulawak',
    'kencur',
    'bawang putih',
    'bawang merah',
  ];

  /// Mengategorikan tanaman berdasarkan nama dan deskripsi
  static String categorize(String name, {String? description}) {
    final String text =
        '${name.toLowerCase()} ${description?.toLowerCase() ?? ''}';

    // Cek kategori berdasarkan teks
    if (_containsAny(text, _tanamanPangan)) {
      return TANAMAN_PANGAN;
    } else if (_containsAny(text, _sayuran)) {
      return SAYURAN;
    } else if (_containsAny(text, _buahBuahan)) {
      return BUAH_BUAHAN;
    } else if (_containsAny(text, _rempah)) {
      return REMPAH;
    }

    // Default jika tidak ditemukan
    return UMUM;
  }

  /// Helper untuk mengecek apakah teks mengandung salah satu keyword
  static bool _containsAny(String text, List<String> keywords) {
    for (final keyword in keywords) {
      if (text.contains(keyword)) {
        return true;
      }
    }
    return false;
  }

  /// Mendapatkan warna berdasarkan kategori
  static Color getCategoryColor(String category) {
    switch (category.toLowerCase()) {
      case 'tanaman pangan':
        return const Color(0xFF4CAF50); // Green
      case 'sayuran':
        return const Color(0xFF8BC34A); // Light Green
      case 'buah-buahan':
        return const Color(0xFFFF9800); // Orange
      case 'rempah':
        return const Color(0xFF795548); // Brown
      default:
        return const Color(0xFF0F6848); // Default green
    }
  }

  /// Mendapatkan icon berdasarkan kategori
  static IconData getCategoryIcon(String category) {
    switch (category.toLowerCase()) {
      case 'tanaman pangan':
        return Icons.grass;
      case 'sayuran':
        return Icons.eco;
      case 'buah-buahan':
        return Icons.local_florist;
      case 'rempah':
        return Icons.spa;
      default:
        return Icons.menu_book;
    }
  }
}
