from enum import Enum
from indofaker import Religion, Tribe
from indofaker.base_name import BaseName
from indofaker.gender import Gender


class FamilyName(BaseName):
    def __init__(self, name: str, gender: Gender, religion: Religion, tribe: Tribe):
        super().__init__(name, gender, religion, tribe)


class FamilyNames(Enum):
    # Java
    WIDODO = FamilyName("Widodo", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SANTOSO = FamilyName("Santoso", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUKARNO = FamilyName("Sukarno", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUHARTO = FamilyName("Suharto", Gender.ALL, Religion.ALL, Tribe.JAVA)
    PRABOWO = FamilyName("Prabowo", Gender.ALL, Religion.ALL, Tribe.JAVA)
    JOKO = FamilyName("Joko", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUDIRMAN = FamilyName("Sudirman", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUPRIYADI = FamilyName("Supriyadi", Gender.ALL, Religion.ALL, Tribe.JAVA)
    MARWOTO = FamilyName("Marwoto", Gender.ALL, Religion.ALL, Tribe.JAVA)
    WALUYO = FamilyName("Waluyo", Gender.ALL, Religion.ALL, Tribe.JAVA)
    BUDI = FamilyName("Budi", Gender.ALL, Religion.ALL, Tribe.JAVA)
    HARYONO = FamilyName("Haryono", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SISWANTO = FamilyName("Siswanto", Gender.ALL, Religion.ALL, Tribe.JAVA)
    KARTO = FamilyName("Karto", Gender.ALL, Religion.ALL, Tribe.JAVA)
    MUKTI = FamilyName("Mukti", Gender.ALL, Religion.ALL, Tribe.JAVA)
    TRIYONO = FamilyName("Triyono", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUGIYARTO = FamilyName("Sugiyarto", Gender.ALL, Religion.ALL, Tribe.JAVA)
    BASUKI = FamilyName("Basuki", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUMARNO = FamilyName("Sumarno", Gender.ALL, Religion.ALL, Tribe.JAVA)
    KUSWANDI = FamilyName("Kuswandi", Gender.ALL, Religion.ALL, Tribe.JAVA)
    WIJAYA = FamilyName("Wijaya", Gender.ALL, Religion.ALL, Tribe.JAVA)
    HARTONO = FamilyName("Hartono", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUGENG = FamilyName("Sugeng", Gender.ALL, Religion.ALL, Tribe.JAVA)
    WIYONO = FamilyName("Wiyono", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUSANTO = FamilyName("Susanto", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SAPUTRA = FamilyName("Saputra", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SETYAWAN = FamilyName("Setyawan", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUTRISNO = FamilyName("Sutrisno", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SUHARMONO = FamilyName("Suharmono", Gender.ALL, Religion.ALL, Tribe.JAVA)
    KRISNA = FamilyName("Krisna", Gender.ALL, Religion.ALL, Tribe.JAVA)
    AGUNG = FamilyName("Agung", Gender.ALL, Religion.ALL, Tribe.JAVA)
    DARMADI = FamilyName("Darmadi", Gender.ALL, Religion.ALL, Tribe.JAVA)
    WIRANTO = FamilyName("Wiranto", Gender.ALL, Religion.ALL, Tribe.JAVA)
    BAMBANG = FamilyName("Bambang", Gender.ALL, Religion.ALL, Tribe.JAVA)
    YUDHA = FamilyName("Yudha", Gender.ALL, Religion.ALL, Tribe.JAVA)
    SURYA = FamilyName("Surya", Gender.ALL, Religion.ALL, Tribe.JAVA)
    ARDI = FamilyName("Ardi", Gender.ALL, Religion.ALL, Tribe.JAVA)
    ARIFIN = FamilyName("Arifin", Gender.ALL, Religion.ALL, Tribe.JAVA)
    ISKANDAR = FamilyName("Iskandar", Gender.ALL, Religion.ALL, Tribe.JAVA)
    RAHARJO = FamilyName("Raharjo", Gender.ALL, Religion.ALL, Tribe.JAVA)

    # Batak
    SITORUS = FamilyName("Sitorus", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SIMANJUNTAK = FamilyName("Simanjuntak", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SIREGAR = FamilyName("Siregar", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SIMATUPANG = FamilyName("Simatupang", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SITANGGANG = FamilyName("Sitanggang", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SINAGA = FamilyName("Sinaga", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SILALAHI = FamilyName("Silalahi", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SIDABALOK = FamilyName("Sidabalok", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SIBARANI = FamilyName("Sibarani", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SIANIPAR = FamilyName("Sianipar", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SIMBOLON = FamilyName("Simbolon", Gender.ALL, Religion.ALL, Tribe.BATAK)
    PANGARIBUAN = FamilyName("Pangaribuan", Gender.ALL, Religion.ALL, Tribe.BATAK)
    TAMPUBOLON = FamilyName("Tampubolon", Gender.ALL, Religion.ALL, Tribe.BATAK)
    SITOMPUL = FamilyName("Sitompul", Gender.ALL, Religion.ALL, Tribe.BATAK)
    NABABAN = FamilyName("Nababan", Gender.ALL, Religion.ALL, Tribe.BATAK)
    MARBUN = FamilyName("Marbun", Gender.ALL, Religion.ALL, Tribe.BATAK)
    PASARIBU = FamilyName("Pasaribu", Gender.ALL, Religion.ALL, Tribe.BATAK)
    PANJAITAN = FamilyName("Panjaitan", Gender.ALL, Religion.ALL, Tribe.BATAK)
    LUMBANTORUAN = FamilyName("Lumbantoruan", Gender.ALL, Religion.ALL, Tribe.BATAK)
    LUMBANBATU = FamilyName("Lumbanbatu", Gender.ALL, Religion.ALL, Tribe.BATAK)
    LUMBANGAOL = FamilyName("Lumbangaol", Gender.ALL, Religion.ALL, Tribe.BATAK)
    PARDEDE = FamilyName("Pardede", Gender.ALL, Religion.ALL, Tribe.BATAK)
    HASIBUAN = FamilyName("Hasibuan", Gender.ALL, Religion.ALL, Tribe.BATAK)
    HARAHAP = FamilyName("Harahap", Gender.ALL, Religion.ALL, Tribe.BATAK)
    HUTAURUK = FamilyName("Hutauruk", Gender.ALL, Religion.ALL, Tribe.BATAK)
    HUTAGALUNG = FamilyName("Hutagalung", Gender.ALL, Religion.ALL, Tribe.BATAK)
    MANURUNG = FamilyName("Manurung", Gender.ALL, Religion.ALL, Tribe.BATAK)
    MALAU = FamilyName("Malau", Gender.ALL, Religion.ALL, Tribe.BATAK)
    BUTARBUTAR = FamilyName("Butarbutar", Gender.ALL, Religion.ALL, Tribe.BATAK)
