from schemas import OccupantTypes


def create_occupant_types_defaults(db_session):

    """
    occupant_category = mapped_column(String, server_default="")
    occupant_category_type = mapped_column(String, server_default="")
    occupant_is_unique = mapped_column(Boolean, server_default="0")
    """

    OccupantTypes.set_session(db_session)
    list_occupant_types = [
        {
            "occupant_type": "Toplantı Başkanı",
            "occupant_description": "Toplantı Başkanı",
            "occupant_code": "MT-PRS",
            "occupant_category": "Toplantı",
            "occupant_category_type": "MT",
            "occupant_is_unique": True,
        },
        {
            "occupant_type": "Toplantı Katip",
            "occupant_description": "Toplantıda tutanak tutan kişi",
            "occupant_code": "MT-WRT",
            "occupant_category": "Toplantı",
            "occupant_category_type": "MT",
            "occupant_is_unique": True,
        },
        {
            "occupant_type": "Toplantı Katılımcısı",
            "occupant_description": "Toplantıda sadece katılan kişi",
            "occupant_code": "MT-ATT",
            "occupant_category": "Toplantı",
            "occupant_category_type": "MT",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Toplantı Danışman",
            "occupant_description": "Toplantıda danışmanlık yapan kişi",
            "occupant_code": "MT-ADV",
            "occupant_category": "Toplantı",
            "occupant_category_type": "MT",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Toplantı Seçilmiş Başkanı",
            "occupant_description": "Toplantı Seçilmiş Başkanı",
            "occupant_code": "MT-VPR",
            "occupant_category": "Toplantı",
            "occupant_category_type": "MT",
            "occupant_is_unique": True,
        },
        {
            "occupant_type": "Daire Sahibi",
            "occupant_description": "Daire Sahibi",
            "occupant_code": "FL-OWN",
            "occupant_category": "Daire",
            "occupant_category_type": "FL",
            "occupant_is_unique": True,
        },
        {
            "occupant_type": "Daire Kiracısı",
            "occupant_description": "Daire Kiracısı",
            "occupant_code": "FL-TEN",
            "occupant_category": "Daire",
            "occupant_category_type": "FL",
            "occupant_is_unique": True,
        },
        {
            "occupant_type": "Daire Sakini",
            "occupant_description": "Daire Sakini",
            "occupant_code": "FL-RES",
            "occupant_category": "Daire",
            "occupant_category_type": "FL",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Daire Sakini Vekili",
            "occupant_description": "Daire Sakini Vekili",
            "occupant_code": "FL-REP",
            "occupant_category": "Daire",
            "occupant_category_type": "FL",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Avukatı",
            "occupant_description": "Bina Avukatı",
            "occupant_code": "BU-ATT",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Avukatı Yardımcısı",
            "occupant_description": "Bina Avukatı Yardımcısı",
            "occupant_code": "BU-ATA",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Denetmen Yardımcısı",
            "occupant_description": "Bina Denetmen Yardımcısı",
            "occupant_code": "BU-SPA",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Denetmeni",
            "occupant_description": "Bina Denetmeni",
            "occupant_code": "BU-SPV",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Yönetici Yardımcısı",
            "occupant_description": "Bina Yönetici Yardımcısı",
            "occupant_code": "BU-MNA",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Yöneticisi",
            "occupant_description": "Bina Yöneticisi",
            "occupant_code": "BU-MNG",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": True,
        },
        {
            "occupant_type": "Bina Muhasabecisi",
            "occupant_description": "Bina Muhasabecisi",
            "occupant_code": "BU-ACC",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Proje Lideri",
            "occupant_description": "Proje Lideri",
            "occupant_code": "PRJ-LDR",
            "occupant_category": "Proje",
            "occupant_category_type": "PRJ",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Proje Sorumlusu",
            "occupant_description": "Proje Sorumlusu",
            "occupant_code": "PRJ-RES",
            "occupant_category": "Proje",
            "occupant_category_type": "PRJ",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Proje Ekibi",
            "occupant_description": "Proje Ekibi",
            "occupant_code": "PRJ-EMP",
            "occupant_category": "Proje",
            "occupant_category_type": "PRJ",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Proje Finans Sorumlusu",
            "occupant_description": "Proje Finans Sorumlusu",
            "occupant_code": "PRJ-FIN",
            "occupant_category": "Proje",
            "occupant_category_type": "PRJ",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Proje Teknik Sorumlusu",
            "occupant_description": "Proje Teknik Sorumlusu",
            "occupant_code": "PRJ-TEC",
            "occupant_category": "Proje",
            "occupant_category_type": "PRJ",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Daire Mülkiyet Vekili",
            "occupant_description": "Daire Mülkiyet Vekili",
            "occupant_code": "FL-DEP",  # deputy
            "occupant_category": "Daire",
            "occupant_category_type": "FL",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Teknik Sorumlusu",
            "occupant_description": "Bina Teknik Sorumlusu",
            "occupant_code": "BU-TEC",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Teknik Elemanı",
            "occupant_description": "Bina Teknik Elemanı",
            "occupant_code": "BU-EMP",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
        {
            "occupant_type": "Bina Teknik Freelancer",
            "occupant_description": "Bina Teknik Freelancer",
            "occupant_code": "BU-FLC",
            "occupant_category": "Bina",
            "occupant_category_type": "BU",
            "occupant_is_unique": False,
        },
    ]
    for list_occupant_type in list_occupant_types:
        try:
            created_type = OccupantTypes.query.filter_by(
                occupant_code=list_occupant_type["occupant_code"],
                occupant_category=list_occupant_type["occupant_category_type"],
            ).first()
            if not created_type:
                created_type = OccupantTypes.create(**list_occupant_type, is_confirmed=True)
                created_type.save()
        except Exception as e:
            print(f"Error: {e}")
