import wagtail_factories
from django.conf import settings
from django.core.management import call_command
from slugify import slugify
from wagtail.models import Locale, Page, Site
from wagtail.rich_text import RichText
from wagtail_localize.models import LocaleSynchronization

from vbv_lernwelt.core.admin import User
from vbv_lernwelt.course.consts import COURSE_VERSICHERUNGSVERMITTLERIN_ID
from vbv_lernwelt.course.models import CourseCategory, CoursePage
from vbv_lernwelt.learnpath.tests.learning_path_factories import (
    AssignmentBlockFactory,
    CircleFactory,
    LearningContentFactory,
    LearningModuleBlockFactory,
    LearningPathFactory,
    LearningSequenceFactory,
    LearningUnitFactory,
    MediaLibraryBlockFactory,
    ResourceBlockFactory,
    TestBlockFactory,
    TopicFactory,
    VideoBlockFactory,
)

# todo: remove when all Handlungsfelder are ready
READY_HF = ["Fahrzeug", "Reisen"]


def create_default_learning_path(
    course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, user=None, skip_locales=True
):
    if user is None:
        user = User.objects.get(username="info@iterativ.ch")

    site = Site.objects.filter(is_default_site=True).first()

    if not site:
        site = wagtail_factories.SiteFactory(is_default_site=True)

    if settings.APP_ENVIRONMENT == "development":
        site.port = 8000
        site.save()

    course_page = CoursePage.objects.get(course_id=course_id)
    lp = LearningPathFactory(
        title="Lernpfad",
        parent=course_page,
    )

    TopicFactory(title="Basis", is_visible=False, parent=lp)
    create_circle_basis(lp)

    TopicFactory(title="Gewinnen von Kunden", parent=lp)
    create_circle_gewinnen(lp)

    TopicFactory(title="Beraten der Kunden", parent=lp)
    create_circle_einstieg(lp)
    create_circle_analyse(lp)
    create_circle_loesung(lp)
    create_circle_abschluss(lp)

    TopicFactory(title="Betreuen und Ausbauen des Kundenstamms", parent=lp)
    create_circle_betreuen(lp)

    TopicFactory(title="Vertiefen und Festigen", parent=lp)
    create_circle_vernetzen(lp)

    TopicFactory(title="Prüfung", parent=lp)
    create_circle_pruefung(lp)

    # circle_analyse = create_circle("Betreuen", lp)
    # create_circle_children(circle_analyse, "Betreuen")
    #
    # TopicFactory(title="Prüfung", is_visible=True, parent=lp)
    # circle_analyse = create_circle("Prüfungsvorbereitung", lp)
    # create_circle_children(circle_analyse, "Prüfungsvorbereitung")

    # locales
    if not skip_locales:
        locale_de = Locale.objects.get(language_code="de-CH")
        locale_fr, _ = Locale.objects.get_or_create(language_code="fr-CH")
        LocaleSynchronization.objects.get_or_create(
            locale_id=locale_fr.id, sync_from_id=locale_de.id
        )
        locale_it, _ = Locale.objects.get_or_create(language_code="it-CH")
        LocaleSynchronization.objects.get_or_create(
            locale_id=locale_it.id, sync_from_id=locale_de.id
        )
        call_command("sync_locale_trees")

    # all pages belong to 'admin' by default
    Page.objects.update(owner=user)


def create_circle_basis(lp, title="Basis"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="""
In diesem Circle erfährst du wie der Lehrgang aufgebaut ist.
Zudem lernst du die wichtigsten Grundlagen,
damit du erfolgreich mit deinem Lernpfad (durch-)starten kannst.
    """.strip(),
        goal_description="In diesem Circle baust du Grundlagenwissen für die folgenden Themenfelder auf:",
        goals=[
            ("goal", "Aufbau und Umgang mit dem Lernpfad"),
            ("goal", "Lerntechnik"),
            ("goal", "Arbeitstechnik"),
            ("goal", "Beraten und Verkaufen"),
            ("goal", "Versicherungswirtschaft"),
            ("goal", "Versicherungsrecht"),
        ],
        job_situations=[],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentFactory(
        title="Willkommen im Lehrgang Versicherungsvermitler VBV",
        parent=circle,
    )
    LearningUnitFactory(title="Arbeits- und Lerntechnik", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    LearningContentFactory(
        title="Luca organisiert seinen Arbeitsalltag",
        parent=circle,
    )
    LearningContentFactory(
        title="Luca legt sich seine Lernstrategie zurecht",
        parent=circle,
    )
    LearningContentFactory(
        title="Fachcheck Arbeits- und Lerntechnik",
        parent=circle,
    )
    LearningSequenceFactory(title="Grundlagen", parent=circle, icon="it-icon-ls-watch")
    LearningUnitFactory(title="Versicherung", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    LearningContentFactory(
        title="Luca startet durch",
        parent=circle,
    )
    LearningContentFactory(
        title="Fachcheck Allgemeines zu Versicherungen",
        parent=circle,
    )
    LearningUnitFactory(title="Beratung und Verkauf", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    LearningContentFactory(
        title="Luca macht sich fit im Verkauf",
        parent=circle,
    )
    LearningContentFactory(
        title="Fachcheck Beratung und Verkauf",
        parent=circle,
    )
    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Jetzt kann's los gehen", parent=circle)
    create_learning_content_beenden(circle)


def create_circle_gewinnen(lp, title="Gewinnen"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="""
Neue Kunden zu gewinnen ist ein wesentlicher Bestandteil deiner beruflichen Tätigkeit.
Dies sichert dir langfristig deine finanzielle Basis. Dieser Circle fokussiert darauf,
wie du dein Netzwerk aufbauen und erweitern kannst, um damit neue Kunden zu gewinnen.
""".strip(),
        goal_description="In diesem Circle baust du deine Handlungskompetenzen für diese Themen aus:",
        goals=[
            ("goal", "Weiterempfehlungen generieren"),
            ("goal", "Leads generieren"),
            ("goal", "Neue Kunden gewinnen"),
            ("goal", "Soziale Medien pflegen"),
        ],
        job_situations=[],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
    )

    LearningSequenceFactory(title="Beobachten", parent=circle, icon="it-icon-ls-watch")
    LearningUnitFactory(title="Kunden gewinnen", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    LearningContentFactory(
        title="Lerninhalt offen",
        parent=circle,
    )
    LearningContentFactory(
        title="Fachcheck Kunden gewinnen",
        parent=circle,
    )

    LearningSequenceFactory(title="Anwenden", parent=circle, icon="it-icon-ls-watch")
    LearningUnitFactory(title="Sozialer Auftritt", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    LearningContentFactory(
        title="Lerninhalt offen",
        parent=circle,
    )
    LearningContentFactory(
        title="Fachcheck Sozialer Auftritt",
        parent=circle,
    )

    LearningSequenceFactory(title="Üben", parent=circle, icon="it-icon-ls-practice")
    LearningUnitFactory(title="Sozialer Auftritt", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    LearningContentFactory(
        title="Lerninhalt offen",
        parent=circle,
    )

    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Circle beenden", parent=circle)
    create_learning_content_beenden(circle)


def create_circle_einstieg(lp, title="Einstieg"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="""
Eine deiner Kernkompetenzen ist das fachgerechte, professionelle und ganzheitliche
Beraten von Kunden. Mit dem Einstieg in das Kundengespräch legst du eine
wichtige Grundlage für eine erfolgreiche Beziehung.
        """.strip(),
        goal_description="In diesem Circle baust du deine Handlungskompetenzen für diese Themen aus:",
        goals=[
            ("goal", "Termine vereinbaren"),
            ("goal", "Gespräche vorbereiten"),
            ("goal", "Gespräch eröffnen"),
            ("goal", "Agenda präsentieren "),
        ],
        job_situation_description="Du triffst in diesem Circle auf die folgenden berufstypischen Handlungsfelder:",
        job_situations=[
            ("job_situation", "Einkommenssicherung"),
            ("job_situation", "Fahrzeug"),
            ("job_situation", "Haushalt"),
            ("job_situation", "Reisen"),
            ("job_situation", "Pensionierung"),
            ("job_situation", "Gesundheit"),
            ("job_situation", "KMU"),
        ],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
        contents=[
            (
                "video",
                VideoBlockFactory(
                    url="https://player.vimeo.com/video/772512710?h=30f912f15a",
                    description="Willkommen im Lehrgang Versicherungsvermitler VBV",
                ),
            )
        ],
    )

    LearningSequenceFactory(title="Beobachten", parent=circle, icon="it-icon-ls-watch")
    create_standard_learning_unit(
        "Patrizia & Marco sichern sich ab",
        parent=circle,
        category_name="Einkommenssicherung",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/story-patrizia-marco-sichern-sich-ab-einstieg/index.html",
    )

    LearningSequenceFactory(title="Anwenden", parent=circle, icon="it-icon-ls-apply")
    create_standard_learning_unit(
        "Rafael Fasel wechselt sein Auto",
        parent=circle,
        category_name="Fahrzeug",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-wechselt-sein-auto-einstieg-xapi-yXLHE5Xo/index.html",
        check_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach-check-fahrzeug-xapi-LqpAWv1J/index.html",
    )
    create_standard_learning_unit(
        "Rafael Fasel zieht von zu Hause aus",
        parent=circle,
        category_name="Haushalt",
    )
    create_standard_learning_unit(
        "Emma und Ayla campen durch Amerika",
        parent=circle,
        category_name="Reisen",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-einstieg-xapi-_BfVBK8d/index.html",
        check_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach_check_reisen/index.html",
    )
    create_standard_learning_unit(
        "Herr und Frau Russo planen ihre Pensionierung",
        parent=circle,
        category_name="Pensionierung",
    )
    create_standard_learning_unit(
        "Familie Babic erwartet Nachwuchs",
        parent=circle,
        category_name="Gesundheit",
    )
    create_standard_learning_unit(
        "Anne Fleur übernimmt den Blumenladen",
        parent=circle,
        category_name="KMU",
    )

    LearningSequenceFactory(title="Üben", parent=circle, icon="it-icon-ls-practice")
    LearningUnitFactory(title="Gesprächseinstieg", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    create_learning_content_transferauftrag("Der erste Eindruck zählt", circle)

    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Circle beenden", parent=circle)
    create_learning_content_beenden(circle)


def create_circle_analyse(lp, title="Analyse"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="Wer ist dein Kunde und was ist ihm wichtig? In dieser Phase des Gesprächs geht es darum, deine Kundinnen und Kunden mit ihren Zielen, Wünschen und Bedürfnissen kennenzulernen und zu verstehen.",
        goal_description="In diesem Circle baust du deine Handlungskompetenzen für diese Themen aus:",
        goals=[
            ("goal", "Ziele und Pläne ergründen"),
            ("goal", "Ist-Situation erfassen"),
            ("goal", "Risiken aufzeigen "),
        ],
        job_situation_description="Du triffst in diesem Circle auf die folgenden berufstypischen Handlungsfelder:",
        job_situations=[
            ("job_situation", "Einkommenssicherung"),
            ("job_situation", "Fahrzeug"),
            ("job_situation", "Haushalt"),
            ("job_situation", "Reisen"),
            ("job_situation", "Pensionierung"),
            ("job_situation", "Gesundheit"),
            ("job_situation", "KMU"),
        ],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
    )

    LearningSequenceFactory(title="Beobachten", parent=circle, icon="it-icon-ls-watch")
    create_standard_learning_unit(
        "Patrizia & Marco sichern sich ab",
        parent=circle,
        category_name="Einkommenssicherung",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/patrizia-marco-sichern-sich-ab-analyse-xapi-AoI_Ssua/index.html",
    )

    LearningSequenceFactory(title="Anwenden", parent=circle, icon="it-icon-ls-apply")
    create_standard_learning_unit(
        "Rafael Fasel wechselt sein Auto",
        parent=circle,
        category_name="Fahrzeug",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-wechselt-sein-auto-analyse-xapi-SmrKAa0J/index.html",
        check_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach-check-fahrzeug-xapi-LqpAWv1J/index.html",
    )
    create_standard_learning_unit(
        "Rafael Fasel zieht von zu Hause aus",
        parent=circle,
        category_name="Haushalt",
    )
    create_standard_learning_unit(
        "Emma und Ayla campen durch Amerika",
        parent=circle,
        category_name="Reisen",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-analyse-xapi-mtXA4uBz/index.html",
        check_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach_check_reisen/index.html",
    )
    create_standard_learning_unit(
        "Herr und Frau Russo planen ihre Pensionierung",
        parent=circle,
        category_name="Pensionierung",
    )
    create_standard_learning_unit(
        "Familie Babic erwartet Nachwuchs",
        parent=circle,
        category_name="Gesundheit",
    )
    create_standard_learning_unit(
        "Anne Fleur übernimmt den Blumenladen",
        parent=circle,
        category_name="KMU",
    )

    LearningSequenceFactory(title="Üben", parent=circle, icon="it-icon-ls-practice")
    LearningUnitFactory(title="Gesprächseinstieg", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    LearningContentFactory(
        title="Lerninhalt offen",
        parent=circle,
    )

    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Circle beenden", parent=circle)
    create_learning_content_beenden(circle)


def create_circle_loesung(lp, title="Lösung"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="Ohne Lösungsvorschlag – kein Verkauf! Auf der Basis der umfassenden Analyse erstellst du konkrete Lösungsvorschläge. Es ist ein wichtiger Erfolgsfaktor diese Lösungsvorschläge, den Kundinnen und Kunden verständlich zu erklären.",
        goal_description="In diesem Circle baust du deine Handlungskompetenzen für diese Themen aus:",
        goals=[
            ("goal", "Lösungsvorschläge entwickeln"),
            ("goal", "Lösungsvorschläge erklären"),
            ("goal", "Nutzen aufzeigen"),
            ("goal", "Auf Vorbehalte eingehen"),
        ],
        job_situation_description="Du triffst in diesem Circle auf die folgenden berufstypischen Handlungsfelder:",
        job_situations=[
            ("job_situation", "Einkommenssicherung"),
            ("job_situation", "Fahrzeug"),
            ("job_situation", "Haushalt"),
            ("job_situation", "Reisen"),
            ("job_situation", "Pensionierung"),
            ("job_situation", "Gesundheit"),
            ("job_situation", "KMU"),
        ],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
    )

    LearningSequenceFactory(title="Beobachten", parent=circle, icon="it-icon-ls-watch")
    create_standard_learning_unit(
        "Patrizia & Marco sichern sich ab",
        parent=circle,
        category_name="Einkommenssicherung",
    )

    LearningSequenceFactory(title="Anwenden", parent=circle, icon="it-icon-ls-apply")
    create_standard_learning_unit(
        "Rafael Fasel wechselt sein Auto",
        parent=circle,
        category_name="Fahrzeug",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-wechselt-sein-auto-losung-xapi-3rzf8ySd/index.html",
        check_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach-check-fahrzeug-xapi-LqpAWv1J/index.html",
    )
    create_standard_learning_unit(
        "Rafael und Claudia ziehen zusammen",
        parent=circle,
        category_name="Haushalt",
    )
    create_standard_learning_unit(
        "Emma und Ayla campen durch Amerika",
        parent=circle,
        category_name="Reisen",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-losung-xapi-hn7GwUTn/index.html",
        check_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach_check_reisen/index.html",
    )
    create_standard_learning_unit(
        "Giulia und Davide planen ihre Pensionierung",
        parent=circle,
        category_name="Pensionierung",
    )
    create_standard_learning_unit(
        "Familie Babic erwartet Nachwuchs",
        parent=circle,
        category_name="Gesundheit",
    )
    create_standard_learning_unit(
        "Anne Fleur übernimmt den Blumenladen",
        parent=circle,
        category_name="KMU",
    )

    LearningSequenceFactory(title="Üben", parent=circle, icon="it-icon-ls-practice")
    LearningUnitFactory(title="Heirat", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    create_learning_content_transferauftrag("Patrizia & Marco heiraten", circle)
    LearningContentFactory(
        title="Fachcheck Heirat",
        parent=circle,
    )

    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Circle beenden", parent=circle)
    create_learning_content_beenden(circle)


def create_circle_abschluss(lp, title="Abschluss"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="Ohne Lösungsvorschlag – kein Verkauf! Auf der Basis der umfassenden Analyse erstellst du konkrete Lösungsvorschläge. Es ist ein wichtiger Erfolgsfaktor diese Lösungsvorschläge, den Kundinnen und Kunden verständlich zu erklären.",
        goal_description="In diesem Circle baust du deine Handlungskompetenzen für diese Themen aus:",
        goals=[
            ("goal", "Anträge ausfüllen"),
            ("goal", "Weiterempfehlungen erhalten"),
            ("goal", "Gespräch abschliessen"),
            ("goal", "Termin nachbearbeiten"),
        ],
        job_situation_description="Du triffst in diesem Circle auf die folgenden berufstypischen Handlungsfelder:",
        job_situations=[
            ("job_situation", "Einkommenssicherung"),
            ("job_situation", "Fahrzeug"),
            ("job_situation", "Haushalt"),
            ("job_situation", "Reisen"),
            ("job_situation", "Pensionierung"),
            ("job_situation", "Gesundheit"),
            ("job_situation", "KMU"),
        ],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
    )

    LearningSequenceFactory(title="Beobachten", parent=circle, icon="it-icon-ls-watch")
    create_standard_learning_unit(
        "Patrizia & Marco sichern sich ab",
        parent=circle,
        category_name="Einkommenssicherung",
    )

    LearningSequenceFactory(title="Anwenden", parent=circle, icon="it-icon-ls-apply")
    create_standard_learning_unit(
        "Rafael Fasel wechselt sein Auto",
        parent=circle,
        category_name="Fahrzeug",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/rafael-fasel-wechselt-sein-auto-abschluss-xapi-WbFBv-4y/index.html",
        check_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach-check-fahrzeug-xapi-LqpAWv1J/index.html",
    )
    create_standard_learning_unit(
        "Rafael Fasel zieht von zu Hause aus",
        parent=circle,
        category_name="Haushalt",
    )
    create_standard_learning_unit(
        "Emma und Ayla campen durch Amerika",
        parent=circle,
        category_name="Reisen",
        wbt_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/emma-und-ayla-campen-durch-amerika-abschluss-xapi-Qv4X-yua/index.html",
        check_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fach_check_reisen/index.html",
    )
    create_standard_learning_unit(
        "Herr und Frau Russo planen ihre Pensionierung",
        parent=circle,
        category_name="Pensionierung",
    )
    create_standard_learning_unit(
        "Familie Babic erwartet Nachwuchs",
        parent=circle,
        category_name="Gesundheit",
    )
    create_standard_learning_unit(
        "Anne Fleur übernimmt den Blumenladen",
        parent=circle,
        category_name="KMU",
    )

    LearningSequenceFactory(title="Üben", parent=circle, icon="it-icon-ls-practice")
    LearningUnitFactory(title="Auswandern", parent=circle)
    LearningContentFactory(
        title="Mediathek",
        parent=circle,
    )
    LearningContentFactory(
        title="Emma und Ayla wandern nach Amerika aus",
        parent=circle,
    )
    LearningContentFactory(
        title="Fachcheck Auswandern",
        parent=circle,
    )

    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Circle beenden", parent=circle)
    create_learning_content_beenden(circle)


def create_circle_betreuen(lp, title="Betreuen"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="Einen Kunden einmal zu beraten ist eine Sache. Einen Kunden nachhaltig zu betreuen eine andere! In diesem Circle lernst du, wie deine Kunden zufrieden bleiben und du dein Portfolio ausbauen kannst.",
        goal_description="In diesem Circle baust du deine Handlungskompetenzen für diese Themen aus:",
        goals=[
            ("goal", "Cross- und Upselling anwenden"),
            ("goal", "Bestehende Verträge anpassen"),
            ("goal", "Bestehende Kunden pflegen"),
            ("goal", "Prozess im Schadenfall erklären"),
        ],
        job_situation_description="Du triffst in diesem Circle auf die folgenden berufstypischen Handlungsfelder:",
        job_situations=[
            ("job_situation", "Selbstständigkeit"),
            ("job_situation", "Rechtsstreitigkeiten"),
            ("job_situation", "Haushalt"),
            ("job_situation", "Sparen"),
            ("job_situation", "Pensionierung"),
            ("job_situation", "Wohneigentum"),
            ("job_situation", "Erben/Vererben"),
        ],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
    )

    LearningSequenceFactory(title="Beobachten", parent=circle, icon="it-icon-ls-watch")
    create_standard_learning_unit(
        "Patrizia Feller macht sich selbsständig",
        parent=circle,
        category_name="Selbständigkeit",
    )

    LearningSequenceFactory(title="Anwenden", parent=circle, icon="it-icon-ls-apply")
    create_standard_learning_unit(
        "Familie Feller Bonsera kaufen ein Haus",
        parent=circle,
        category_name="Wohneigentum",
    )
    create_standard_learning_unit(
        "Rafael Fasel hat Ärger mit dem Vermieter",
        parent=circle,
        category_name="Rechtsstreitigkeiten",
    )
    create_standard_learning_unit(
        "Familie Babic spart auf ein Ziel",
        parent=circle,
        category_name="Sparen",
    )
    create_standard_learning_unit(
        "Chiara übernimmt das Haus der Eltern",
        parent=circle,
        category_name="Erben / Vererben",
    )

    LearningSequenceFactory(title="Üben", parent=circle, icon="it-icon-ls-practice")
    LearningUnitFactory(title="Bauen", parent=circle)
    create_standard_learning_unit(
        "Blumenladen Fleur expandiert",
        parent=circle,
        category_name="Wohneigentum",
        learning_unit_title="Bauen",
    )
    create_standard_learning_unit(
        "Davide & Giulia verkaufen ihr Haus an Chiara",
        parent=circle,
        category_name="Wohneigentum",
        learning_unit_title="Hausverkauf",
    )

    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Circle beenden", parent=circle)
    create_learning_content_beenden(circle)


def create_circle_vernetzen(lp, title="Vernetzen"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="Du suchst nach einer Möglichkeit, das Gelernte noch besser zu vernetzen? Unsere Onlinetraining und/oder Webinare können dich dabei unterstützen.",
        goals=[],
        job_situations=[],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentFactory(
        title="Lerninhalt offen",
        parent=circle,
    )

    LearningSequenceFactory(
        title="Online-Trainings", parent=circle, icon="it-icon-ls-watch"
    )
    LearningUnitFactory(title="Lerneinheit offen", parent=circle)
    LearningContentFactory(
        title="Lerninhalt offen",
        parent=circle,
    )

    LearningSequenceFactory(
        title="Präsenz-Trainings", parent=circle, icon="it-icon-ls-watch"
    )
    LearningUnitFactory(title="Lerneinheit offen", parent=circle)
    LearningContentFactory(
        title="Lerninhalt offen",
        parent=circle,
    )

    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Lerneinheit offen", parent=circle)
    create_learning_content_beenden(circle)


def create_circle_pruefung(lp, title="Prüfungsvorbereitung"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description="Hier erfährst du alles, was du für die Zulassungsprüfung zum/zur Versicherungsvermittler/-in VBV wissen musst. Du trainierst konkret mit zwei Nullserien, damit du dich zielgerichtet auf die Prüfung vorbereiten kannst.",
        goal_description="Hier erfährst du alles, was du für die Zulassungsprüfung zum/zur Versicherungsvermittler/-in VBV wissen musst:",
        goals=[
            ("goal", "Aufbau und Struktur der Prüfung"),
            ("goal", "Dauer und Ablauf"),
            ("goal", "Hilfsmittel"),
            ("goal", "Anmeldeprozess"),
            ("goal", "Kosten"),
        ],
        job_situations=[],
    )
    LearningSequenceFactory(title="Starten", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Prüfung", parent=circle)
    LearningContentFactory(
        title="Anmeldung",
        parent=circle,
    )
    LearningContentFactory(
        title="Aufbau und Ablauf der Prüfung - So geht's",
        parent=circle,
    )

    LearningSequenceFactory(title="Üben", parent=circle, icon="it-icon-ls-practice")
    LearningUnitFactory(title="Mach dich fit für die Prüfung", parent=circle)
    LearningContentFactory(
        title="Null-Serie 1",
        parent=circle,
    )
    LearningContentFactory(
        title="Null-Serie 2",
        parent=circle,
    )
    LearningContentFactory(
        title="Null-Serie 3",
        parent=circle,
    )

    LearningSequenceFactory(title="Vernetzen", parent=circle, icon="it-icon-ls-network")
    LearningUnitFactory(title="Fragen zur Prüfungsvorbereitung", parent=circle)
    LearningContentFactory(
        title="Online-Session",
        parent=circle,
    )
    LearningContentFactory(
        title="FAQ/Blog",
        parent=circle,
    )

    LearningSequenceFactory(title="Beenden", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Bereit für die Prüfung", parent=circle)
    LearningContentFactory(
        title="Lerninhalt offen",
        parent=circle,
    )


def create_standard_learning_unit(
    title, parent, category_name, wbt_url=None, check_url=None, learning_unit_title=None
):
    if learning_unit_title is None:
        learning_unit_title = category_name

    LearningUnitFactory(
        title=learning_unit_title,
        parent=parent,
        course_category=CourseCategory.objects.get(
            course_id=COURSE_VERSICHERUNGSVERMITTLERIN_ID, title=category_name
        ),
    )

    if category_name in READY_HF:
        LearningContentFactory(
            title=f"Mediathek {category_name}",
            parent=parent,
            contents=[
                (
                    "media_library",
                    MediaLibraryBlockFactory(
                        url=f"/media/versicherungsvermittler-in-media/category/{slugify(category_name)}"
                    ),
                )
            ],
        )
    else:
        LearningContentFactory(
            title="Mediathek",
            parent=parent,
        )

    if wbt_url is None:
        LearningContentFactory(
            title=title,
            parent=parent,
        )
    else:
        LearningContentFactory(
            title=title,
            parent=parent,
            contents=[
                (
                    "learningmodule",
                    LearningModuleBlockFactory(url=wbt_url),
                )
            ],
        )

    if check_url is None:
        LearningContentFactory(
            title=f"Fachcheck {category_name}",
            parent=parent,
        )
    else:
        LearningContentFactory(
            title=f"Fachcheck {category_name}",
            parent=parent,
            contents=[
                (
                    "test",
                    TestBlockFactory(url=check_url),
                )
            ],
        )


def create_learning_content_beenden(parent):
    LearningContentFactory(
        title="Hier entsteht die Lernsequenz «beenden»",
        parent=parent,
        contents=[
            (
                "resource",
                ResourceBlockFactory(
                    url="https://www.vbv.ch/",
                    description="Platzhalter Text für Lernsequenz «beenden»:",
                    text=RichText(
                        """
<h2 data-block-key="pwyep">Hier entsteht die Lernsequenz \u00abbeenden\u00bb</h2><h3
  data-block-key="dppb3">Reflektiert</h3>
  <img src="/static/media/demo_oktober/beenden.jpg" style="
    float: right;
    margin-left: 32px;
    margin-bottom: 32px;
  ">
  <p data-block-key="bho67">Du hast dich im
  Circle mit bestimmten Handlungskompetenzen auseinandergesetzt und dir zu verschiedenen
  Handlungsfeldern Fachkenntnisse angeeignet. Es handelt sich hier um viel Lernstoff,
  der verarbeitet werden muss.</p><p data-block-key="f547i">Deshalb hast du bereits am
  Ende jeder Lerneinheit eine Selbsteinsch\u00e4tzung der angestrebten
  Handlungskompetenzen vorgenommen. Nun ist es Zeit, nochmals auf das KompetenzNavi zu
  schauen. Wo sind noch L\u00fccken? Was braucht es noch? Reflektiere hier nochmals
  deine Erfahrungen. Dies kann in Form eines Lerntagebuchs und/oder im Austausch mit
  deiner Lernbegleitung passieren.</p><h3 data-block-key="7ljuq">Wieso ist dies
  sinnvoll?</h3><p data-block-key="7sf2">Das F\u00fchren eines Lerntagebuchs und das
  Beantworten von Reflexionsfragen helfen dir den eigenen Lern- und Denkprozess sichtbar
  und begreifbar zu machen. Es deckt deine pers\u00f6nlichen St\u00e4rken und
  Schw\u00e4chen w\u00e4hrend der Erarbeitung auf und hilft dir, dich laufend zu
  verbessern.</p><p data-block-key="ecq4l">Die folgenden Fragestellungen k\u00f6nnen dir
  dabei helfen.</p><h3 data-block-key="9mbpa">Reflexionsbeispiel zum Lerninhalt:</h3>
<ul>
  <li data-block-key="bgr7s">Was gelingt mir bereits gut?</li>
  <li data-block-key="72mrj">Wo muss ich mich noch vertiefen oder nochmals repetieren?
  </li>
  <li data-block-key="3gq01">Blick auf das KompetenzNavi sch\u00e4rfen</li>
  <li data-block-key="8443s">Was nehme ich mit?</li>
  <li data-block-key="4nstg">Was m\u00f6chte ich nochmals mit meiner Lernbegleitung
    anschauen?
  </li>
</ul><h3 data-block-key="6us0c">Reflexionsbeispiele zum Vorgehen/Verhalten:</h3>
<ul>
  <li data-block-key="5ih9d">Wie habe ich mich auf den Circle vorbereitet (z.B. Lernzeit
    eingeplant)?
  </li>
  <li data-block-key="6piqr">Wie gut ist mir die Einhaltung der Lernzeiten gelungen? Was
    f\u00fchrte zum Erfolg/Misserfolg?
  </li>
  <li data-block-key="dglus">Wie bin ich beim Lernen vorgegangen (Einsatz von
    Lernmethoden)?
  </li>
  <li data-block-key="53o3r">Was will ich f\u00fcr den n\u00e4chsten Circle im
    Lernprozess \u00e4ndern/verbessern?
  </li>
</ul><h3 data-block-key="86e5g">Tools, die du f\u00fcr deine Reflexion in Form eines
  Lerntagebuches verwenden kannst:</h3>
<ul>
  <li data-block-key="16m0n">OneNote</li>
  <li data-block-key="disfa">Miroboard</li>
  <li data-block-key="2sr1l">Worddokument</li>
  <li data-block-key="5lfsl">Powerpointpr\u00e4sentation</li>
  <li data-block-key="fvlkb">Notizbuch</li>
</ul><p data-block-key="fu5sc">Der Vorteil eines digitalen Lerntagebuchs besteht in
  erster Linie darin, dass sehr einfach Inhalte strukturiert, erg\u00e4nzt und
  bearbeitet werden k\u00f6nnen.</p>
                    """
                    ),
                ),
            )
        ],
    )


def create_learning_content_transferauftrag(title, parent):
    LearningContentFactory(
        title=title,
        parent=parent,
        contents=[
            (
                "assignment",
                AssignmentBlockFactory(
                    url="https://www.vbv.ch/",
                    description="Platzhalter Text für Lernsequenz «üben»:",
                    text=RichText(
                        """
<h2 data-block-key="pwyep">Hier entsteht die Lernsequenz «üben»</h2><h3
  data-block-key="dppb3">Praxisorientiert</h3>
  <p data-block-key="bho67">Die Lernsequenz «üben» fordert die Teilnehmenden auf, in der eigenen Organisation anhand eines Transferauftrages eine entsprechende Handlungssituation durchzuführen.</p>
  <p data-block-key="f547i">Der Auftrag unterstützt den Transfer in die Praxis und nimmt einzelne Themen aus dem jeweiligen Circle nochmals auf.</p>
  <p data-block-key="f547i">Der Teilnehmende wird sein Ergebnis in MyVBV hochladen.</p>
  <p data-block-key="f547i">Feedback erfolgt durch die Lernbegleitung oder durch weitere vom Teilnehmenden definierte Personen.<br>Ein Abgleich mit Musterlösungen wird wo sinnvoll angeboten</p>
  <p data-block-key="f547i">Zusätzlich zum Auftrag wird auf das relevante Fachwissen aus der Mediathek verwiesen und wo sinnvoll Hilfsmittel zur Verfügung gestellt.</p>
  <h3 data-block-key="7ljuq">Hier siehst du ein Beispiel eines Transferauftrages mit einer entsprechenden Musterlösung. </h3>
  <p data-block-key="7sf2">Schnuppere mal rein. Viel Spass!</p>
  <p>
    <img src="/static/media/demo_oktober/der_erste_eindruck.jpg">
  </p>
  <p>
    <a href="/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt.pdf">PDF Transferauftrag: Der erste Eindruck zählt</a><br>
    <a href="/static/media/demo_oktober/Transferauftrag_Der_erste_Eindruck_zaehlt_Musterlösung.pdf">PDF Transferauftrag: Der erste Eindruck zählt - Lösung</a>
  </p>
                    """
                    ),
                ),
            )
        ],
    )
