/* Bangladesh-perspective standard subject lists per institution type.
   The Control Panel's "Apply Standard Classes" also selects the type's
   subject set — creating missing items in the central catalog on the way.
   (School levels keep their level-tagged board list; these templates cover
   Madrasa, College and University.) */

export interface SubjectTemplateItem {
  name: string;
  nameBn: string;
}

/** Madrasa board (Ebtedayee → Dakhil → Alim) subject set */
const MADRASHA_SUBJECTS: SubjectTemplateItem[] = [
  { name: "Quran & Tajweed", nameBn: "কুরআন ও তাজবীদ" },
  { name: "Al-Quran (Nazera)", nameBn: "নাজেরা কুরআন" },
  { name: "Tafseer-ul-Quran", nameBn: "তাফসীরুল কুরআন" },
  { name: "Hadith Sharif", nameBn: "হাদীস শরীফ" },
  { name: "Fiqh", nameBn: "ফিকহ" },
  { name: "Arabic Grammar (Nahw & Sarf)", nameBn: "আরবি ব্যাকরণ (নহু ও সরফ)" },
  { name: "Arabic Literature", nameBn: "আরবি সাহিত্য" },
  { name: "Aqeedah", nameBn: "আকাইদ" },
  { name: "Bangla", nameBn: "বাংলা" },
  { name: "English", nameBn: "ইংরেজি" },
  { name: "Mathematics", nameBn: "গণিত" },
  { name: "General Science", nameBn: "সাধারণ বিজ্ঞান" },
  { name: "Bangladesh & Global Studies", nameBn: "বাংলাদেশ ও বিশ্বপরিচয়" },
  { name: "ICT", nameBn: "তথ্য ও যোগাযোগ প্রযুক্তি" },
  { name: "Agriculture Studies", nameBn: "কৃষিশিক্ষা" },
  { name: "Career Education", nameBn: "কর্ম ও জীবনমুখী শিক্ষা" },
];

/** HSC (college) subject set — compulsory + all three group streams */
const COLLEGE_SUBJECTS: SubjectTemplateItem[] = [
  { name: "Bangla", nameBn: "বাংলা" },
  { name: "English", nameBn: "ইংরেজি" },
  { name: "ICT", nameBn: "তথ্য ও যোগাযোগ প্রযুক্তি" },
  // Science group
  { name: "Physics", nameBn: "পদার্থবিজ্ঞান" },
  { name: "Chemistry", nameBn: "রসায়ন" },
  { name: "Biology", nameBn: "জীববিজ্ঞান" },
  { name: "Higher Mathematics", nameBn: "উচ্চতর গণিত" },
  // Humanities group
  { name: "Civics & Good Governance", nameBn: "পৌরনীতি ও সুশাসন" },
  { name: "Economics", nameBn: "অর্থনীতি" },
  { name: "Geography", nameBn: "ভূগোল" },
  { name: "History", nameBn: "ইতিহাস" },
  { name: "Islamic History & Culture", nameBn: "ইসলামের ইতিহাস ও সংস্কৃতি" },
  { name: "Logic", nameBn: "যুক্তিবিদ্যা" },
  { name: "Sociology", nameBn: "সমাজবিজ্ঞান" },
  { name: "Social Welfare", nameBn: "সমাজকল্যাণ" },
  // Business Studies group
  { name: "Accounting", nameBn: "হিসাববিজ্ঞান" },
  { name: "Business Organization & Management", nameBn: "ব্যবসায় সংগঠন ও ব্যবস্থাপনা" },
  { name: "Finance, Banking & Insurance", nameBn: "ফিন্যান্স, ব্যাংকিং ও বীমা" },
  { name: "Production Management & Marketing", nameBn: "উৎপাদন ব্যবস্থাপনা ও বিপণন" },
];

/** University template — a general undergraduate course set */
const UNIVERSITY_SUBJECTS: SubjectTemplateItem[] = [
  { name: "English Composition", nameBn: "ইংরেজি রচনা" },
  { name: "Calculus", nameBn: "ক্যালকুলাস" },
  { name: "Linear Algebra", nameBn: "রৈখিক বীজগণিত" },
  { name: "Discrete Mathematics", nameBn: "বিচ্ছিন্ন গণিত" },
  { name: "Statistics", nameBn: "পরিসংখ্যান" },
  { name: "Programming Fundamentals", nameBn: "প্রোগ্রামিং মূলনীতি" },
  { name: "Data Structures", nameBn: "ডেটা স্ট্রাকচার" },
  { name: "Algorithms", nameBn: "অ্যালগরিদম" },
  { name: "Database Systems", nameBn: "ডেটাবেজ সিস্টেম" },
  { name: "Operating Systems", nameBn: "অপারেটিং সিস্টেম" },
  { name: "Computer Networks", nameBn: "কম্পিউটার নেটওয়ার্ক" },
  { name: "Software Engineering", nameBn: "সফটওয়্যার ইঞ্জিনিয়ারিং" },
  { name: "Digital Electronics", nameBn: "ডিজিটাল ইলেকট্রনিক্স" },
  { name: "Physics", nameBn: "পদার্থবিজ্ঞান" },
  { name: "Accounting", nameBn: "হিসাববিজ্ঞান" },
  { name: "Management", nameBn: "ব্যবস্থাপনা" },
];

/** Standard subject set for an institution type; null = school levels that
    keep the level-tagged board list (see apply-template route). */
export function subjectTemplateFor(type: string): SubjectTemplateItem[] | null {
  switch (type) {
    case "MADRASHA":
      return MADRASHA_SUBJECTS;
    case "COLLEGE_AND_UNIVERSITY":
      // HSC compulsory+groups plus university-semester basics; duplicates
      // resolve to one catalog item at apply time (find-by-name upserts)
      return [...COLLEGE_SUBJECTS, ...UNIVERSITY_SUBJECTS];
    default:
      return null;
  }
}
