import json

from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID
from vbv_lernwelt.course.models import Course, CoursePage
from vbv_lernwelt.media_library.tests.media_library_factories import (
    create_external_link_block,
    create_learn_media_block,
    create_media_collection,
    ExternalLinkBlockFactory,
    LearnMediaBlockFactory,
    MediaCategoryPageFactory,
    MediaLibraryPageFactory,
)


def create_default_media_library(course_id=COURSE_VERSICHERUNGSVERMITTLERIN_OLD_ID):
    course = Course.objects.get(id=course_id)
    course_page = CoursePage.objects.get(course_id=course_id)

    media_lib_page = MediaLibraryPageFactory(
        title="Mediathek",
        parent=course_page,
    )

    icons = [
        "icon-hf-fahrzeug",
        "icon-hf-reisen",
        "icon-hf-einkommenssicherung",
        "icon-hf-gesundheit",
        "icon-hf-haushalt",
        "icon-hf-sparen",
        "icon-hf-pensionierung",
        "icon-hf-kmu",
        "icon-hf-wohneigentum",
        "icon-hf-rechtsstreitigkeiten",
        "icon-hf-vererben",
        "icon-hf-selbstandigkeit",
    ]
    for idx, cat in enumerate(course.coursecategory_set.all()):
        overview_icon = icons[(idx + len(icons) - 1) % len(icons)]
        detail_image = f"{overview_icon}-detail"

        if cat.title == "Fahrzeug":
            media_category = MediaCategoryPageFactory(
                overview_icon=overview_icon,
                detail_image=detail_image,
                title=cat.title,
                course_category=cat,
                parent=media_lib_page,
                introduction_text="""
Das Auto ist für viele der grösste Stolz. Es birgt aber auch ein grosses Gefahrenpotenzial.
Dabei geht es bei den heutigen Fahrzeugpreisen und Reparaturkosten rasch um namhafte Summen,
die der Fahrzeugbesitzer und die Fahrzeugbesitzerin in einem grösseren Schadenfall oft nur schwer selbst aufbringen kann.
                """.strip(),
                items=[
                    ("item", text)
                    for text in [
                        "Motorfahrzeughaftpflichtversicherung",
                        "Motorfahrzeugkaskoversicherung",
                        "Insassenunfallversicherung",
                        "(Verkehrsrechtsschutzversicherung)",
                        "(Fahrzeugassistance)",
                        "Überblick und gesetzliche Grundlagen",
                        "Versicherungsschutz: versicherte Personen und Sachen, örtlicher Geltungsbereich, versicherte Gefahren, versicherte Schäden, wichtigste Ausschlüsse, Garantie- und Versicherungssumme",
                        "Versicherungsleistung",
                        "Bonus-/Malus-System",
                        "Mögliche Zusatzversicherungen wie Bonusschutz, Grobfahrlässigkeit, persönliche Effekten, Parkschaden, Scheinwerfer, Ersatzfahrzeug",
                        "Abgrenzungen zur Hausratversicherung (u.a. einfacher Diebstahl auswärts)",
                        "Abgrenzung zu KVG und UVG",
                        "Nutzen Insassenunfall",
                    ]
                ],
                body=json.dumps(
                    [
                        create_media_collection(
                            title="Lernmedien",
                            contents=[
                                create_learn_media_block(
                                    LearnMediaBlockFactory(
                                        title="VBV 303/7 Motorfahrzeugkasko",
                                        description="PDF",
                                        url="/static/media/demo_oktober/07_Motorfahrzeugkaskoversicherung.pdf",
                                    )
                                ),
                                create_learn_media_block(
                                    LearnMediaBlockFactory(
                                        title="VBV 303/16 Motorfahrzeughaftpflicht",
                                        description="PDF",
                                        url="/static/media/demo_oktober/16_Motorfahrzeughaftpflichtversicherung.pdf",
                                    )
                                ),
                            ],
                        ),
                        create_media_collection(
                            title="Links",
                            contents=[
                                create_external_link_block(
                                    ExternalLinkBlockFactory(
                                        title="Nationales Versicherungsbüro",
                                        url="https://www.nbi-ngf.ch/de/ngf",
                                    )
                                ),
                                create_external_link_block(
                                    ExternalLinkBlockFactory(
                                        title="Adressen der Strassenverkehrsämter",
                                        url="https://asa.ch/strassenverkehrsaemter/adressen/",
                                    )
                                ),
                                create_external_link_block(
                                    ExternalLinkBlockFactory(
                                        title="Bundesamt für Statistik – Strassenverkehrsunfälle",
                                        url="https://www.bfs.admin.ch/bfs/de/home/statistiken/mobilitaet-verkehr/unfaelle-umweltauswirkungen/verkehrsunfaelle/strassenverkehr.html",
                                    )
                                ),
                                create_external_link_block(
                                    ExternalLinkBlockFactory(
                                        title="Beratungsstelle für Unfallverhütung – Unfallursachen",
                                        url="https://www.bfu.ch/de/dossiers/risiken-im-strassenverkehr",
                                    )
                                ),
                            ],
                        ),
                        # create_media_collection(
                        #     title="Verankerung im Lernpfad",
                        #     description="Anhand der Story von Rafael Fasel und seinem Ford Mustang lernst du in diesem berufstypischem Handlungsfeld alles rund um Motorfahrzeugversicherungen, wie man sein Auto optimal schützen kann, wie du vorgehst bei einem Fahrzeugwechsel, welche Aspekte du bei einer Offerte beachten musst und wie du dem Kunden die Lösung präsentierst.",
                        #     contents=[
                        #         create_internal_link_block(
                        #             InternalLinkBlockFactory(
                        #                 title="Circle: Einstieg – Lernsequenz: Anwenden",
                        #                 url="/learn/versicherungsvermittler-in-lp/einstieg#lu-fahrzeug",
                        #             )
                        #         ),
                        #         create_internal_link_block(
                        #             InternalLinkBlockFactory(
                        #                 title="Circle: Analyse – Lernsequenz: Anwenden",
                        #                 url="/learn/versicherungsvermittler-in-lp/analyse#lu-fahrzeug",
                        #             )
                        #         ),
                        #         create_internal_link_block(
                        #             InternalLinkBlockFactory(
                        #                 title="Circle: Lösung – Lernsequenz: Anwenden",
                        #                 url="/learn/versicherungsvermittler-in-lp/lösung#lu-fahrzeug",
                        #             )
                        #         ),
                        #         create_internal_link_block(
                        #             InternalLinkBlockFactory(
                        #                 title="Circle: Abschluss – Lernsequenz: Anwenden",
                        #                 url="/learn/versicherungsvermittler-in-lp/abschluss#lu-fahrzeug",
                        #             )
                        #         ),
                        #     ],
                        # ),
                        # create_media_collection(
                        #     title="Querverweise",
                        #     contents=[
                        #         create_relative_link_block(
                        #             RelativeLinkBlockFactory(
                        #                 title="Rechtsstreitigkeiten",
                        #                 description="VBV 303/12.3 Verkehrsrechtsschutz",
                        #                 url="/media/versicherungsvermittler-in-media/category/rechtsstreitigkeiten",
                        #             )
                        #         ),
                        #         create_relative_link_block(
                        #             RelativeLinkBlockFactory(
                        #                 title="Reisen",
                        #                 description="VBV 303/13 Reiseversicherung",
                        #                 url="/media/versicherungsvermittler-in-media/category/reisen",
                        #             )
                        #         ),
                        #     ],
                        # ),
                    ]
                ),
            )
        elif cat.title == "Reisen":
            media_category = MediaCategoryPageFactory(
                overview_icon=overview_icon,
                detail_image=detail_image,
                title=cat.title,
                course_category=cat,
                parent=media_lib_page,
                introduction_text="""
Auf keine Zeit im Jahr freuen wir uns mehr als auf unsere Ferien.
Neue Orte, neue Bekanntschaften, neue Erfahrungen oder einfach mal abschalten – es gibt viele Gründe, sich fürs Reisen zu begeistern.

Bereits während der Vorbereitung und Planung, aber auch während der Reise selbst,
gehen wir bewusst und unbewusst verschiedene Risiken ein.
Diese können negative Folgen verschiedener Art nach sich ziehen, darunter rechtliche, finanzielle oder gesundheitliche Folgen.
                    """.strip(),
                items=[
                    ("item", text)
                    for text in [
                        "Annullierungskosten",
                        "Personenassistance",
                        "Fahrzeugassistance",
                        "Evtl. Reisegepäck",
                        "(Hausratversicherung)",
                        "(Krankenversicherung)",
                        "(Einzelunfallversicherung)",
                        "(Privat- und Verkehrsrechtsschutz)",
                        "Überblick und gesetzliche Grundlagen",
                        "Versicherungsschutz: versicherte Personen, örtlicher Geltungsbereich, versicherte Ereignisse, Ausschlüsse, Garantiesumme, Dauer",
                        "Versicherungsleistung",
                    ]
                ],
                body=json.dumps(
                    [
                        create_media_collection(
                            title="Lernmedien",
                            contents=[
                                create_learn_media_block(
                                    LearnMediaBlockFactory(
                                        title="VBV 303/13 Reiseversicherung",
                                        description="PDF",
                                        url="/static/media/demo_oktober/13_Reiseversicherung.pdf",
                                    )
                                ),
                                create_learn_media_block(
                                    LearnMediaBlockFactory(
                                        title="Fach-Check «Reisen»",
                                        description="Applikation",
                                        link_display_text="Zum Fach-Check",
                                        url="/static/media/demo_oktober/fach_check_reisen/index.html",
                                    )
                                ),
                            ],
                        ),
                        # create_media_collection(
                        #     title="Verankerung im Lernpfad",
                        #     description="Begleite Emma Durand und Ayla Yilmaz bei den Vorbereitungen auf ihre grosse Reise durch Amerika und lerne dabei, welche Risiken durch welche Versicherungen abgedeckt werden können.",
                        #     contents=[
                        #         create_internal_link_block(
                        #             InternalLinkBlockFactory(
                        #                 title="Circle: Einstieg – Lernsequenz: Anwenden",
                        #                 url="/learn/versicherungsvermittler-in-lp/einstieg#lu-reisen",
                        #             )
                        #         ),
                        #         create_internal_link_block(
                        #             InternalLinkBlockFactory(
                        #                 title="Circle: Analyse – Lernsequenz: Anwenden",
                        #                 url="/learn/versicherungsvermittler-in-lp/analyse#lu-reisen",
                        #             )
                        #         ),
                        #         create_internal_link_block(
                        #             InternalLinkBlockFactory(
                        #                 title="Circle: Lösung – Lernsequenz: Anwenden",
                        #                 url="/learn/versicherungsvermittler-in-lp/lösung#lu-reisen",
                        #             )
                        #         ),
                        #         create_internal_link_block(
                        #             InternalLinkBlockFactory(
                        #                 title="Circle: Abschluss – Lernsequenz: Anwenden",
                        #                 url="/learn/versicherungsvermittler-in-lp/abschluss#lu-reisen",
                        #             )
                        #         ),
                        #     ],
                        # ),
                        # create_media_collection(
                        #     title="Querverweise",
                        #     contents=[
                        #         create_relative_link_block(
                        #             RelativeLinkBlockFactory(
                        #                 title="Haushalt",
                        #                 description="VBV 303/03 Hausratversicherung",
                        #                 url="/media/versicherungsvermittler-in-media/category/haushalt",
                        #             )
                        #         ),
                        #         create_relative_link_block(
                        #             RelativeLinkBlockFactory(
                        #                 title="Rechtsstreitigkeiten",
                        #                 desciption="VBV 303/12 Rechtschutzversicherung",
                        #                 url="/media/versicherungsvermittler-in-media/category/rechtsstreitigkeiten",
                        #             )
                        #         ),
                        #         create_relative_link_block(
                        #             RelativeLinkBlockFactory(
                        #                 title="Gesundheit",
                        #                 description="VBV 304/Teil E Obligatorische Krankenversicherung",
                        #                 url="/media/versicherungsvermittler-in-media/category/gesundheit",
                        #             )
                        #         ),
                        #     ],
                        # ),
                    ]
                ),
            )
        else:
            media_category = MediaCategoryPageFactory(
                overview_icon=overview_icon,
                title=cat.title,
                course_category=cat,
                parent=media_lib_page,
                detail_image=detail_image,
            )
