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.assignment.models import Assignment
from vbv_lernwelt.competence.factories import PerformanceCriteriaFactory
from vbv_lernwelt.competence.models import CompetencePage
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 (
    CircleFactory,
    LearningContentAssignmentFactory,
    LearningContentFeedbackFactory,
    LearningContentLearningModuleFactory,
    LearningContentMediaLibraryFactory,
    LearningContentPlaceholderFactory,
    LearningContentRichTextFactory,
    LearningContentTestFactory,
    LearningContentVideoFactory,
    LearningPathFactory,
    LearningSequenceFactory,
    LearningUnitFactory,
    TopicFactory,
)
from vbv_lernwelt.learnpath.vv_circle_goals import GoalsType, VV_CIRCLE_GOALS

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


def create_vv_new_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 und Betreuen von Kunden", parent=lp)
    create_circle_fahrzeug(lp)
    create_circle_haushalt(lp)
    create_circle_rechtsstreitigkeiten(lp)
    create_circle_reisen(lp)
    create_circle_einkommenssicherung(lp)
    create_circle_wohneigentum(lp)
    create_circle_pensionierung(lp)
    create_circle_erben(lp)
    create_circle_gesundheit(lp)
    create_circle_sparen(lp)
    create_circle_selbstaendigkeit(lp)
    create_circle_kmu(lp)

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

    # 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=VV_CIRCLE_GOALS["basis"]["description"],
        goals=VV_CIRCLE_GOALS["basis"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Aufbau myVBV",
        parent=circle,
    )

    LearningSequenceFactory(title="Lernreise", parent=circle)
    LearningUnitFactory(
        title="Lerntechnik, Lernbegleitung, Lernpartner/-in und Einführung in MyVBV",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Mediathek",
        parent=circle,
        content_url="/course/versicherungsvermittler-in/media",
    )
    LearningContentPlaceholderFactory(
        title="Qualifikationsprofil und Zulassungsprüfung",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Lege dir eine Lernstrategie zurecht",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Such dir eine/n Lernbegleiter/-in, einen Lern-Buddy und plane deine Lernzeiten",
        parent=circle,
    )

    LearningSequenceFactory(title="Arbeitsalltag", parent=circle)
    LearningUnitFactory(
        title="Mein neuer Job, Arbeitstechnik, Soziale Medien, Datenschutz und Beratungspflichten",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Mediathek",
        parent=circle,
        content_url="/course/versicherungsvermittler-in/media",
    )
    LearningContentPlaceholderFactory(
        title="Mein neuer Job",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Organisiere deinen Arbeitsalltag",
        parent=circle,
    )
    LearningContentLearningModuleFactory(
        title="Lucas Auftritt in den sozialen Medien und der Umgang mit sensiblen Daten",
        parent=circle,
        content_url="https://courses.myvbv.iterativ.ch/courses/de-ba-00-lucas-auftritt-in-den-sozialen-medien-und-der-umgang-mit-sensiblen-daten.zip/index.html#/",
    )
    LearningContentPlaceholderFactory(
        title="Beraterpflichten",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Fachcheck Beraterpflichten",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    LearningSequenceFactory(title="Basiswissen", parent=circle)
    LearningUnitFactory(
        title="Basiswissen Versicherungen, VVG",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Mediathek",
        parent=circle,
        content_url="/course/versicherungsvermittler-in/media",
    )
    LearningContentPlaceholderFactory(
        title="Einstieg in die Versicherung",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Basiswissen Versicherungen",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="VVG im Versicherungsalltag (inkl. VBV-WBT)",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Fachcheck Versicherungswirtschaft",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Fachcheck Versicherungsrecht",
        parent=circle,
    )

    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Reflexion, Feedback", parent=circle)
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_gewinnen(lp, title="Gewinnen"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["gewinnen"]["description"],
        goals=VV_CIRCLE_GOALS["gewinnen"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", title_hidden=True, parent=circle)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    course_slug = lp.slug.replace("-lp", "")

    LearningSequenceFactory(title="Verkaufsgrundlagen", parent=circle)
    LearningUnitFactory(title="Verkaufsgrundlagen", parent=circle)
    LearningContentPlaceholderFactory(
        title="Mediathek",
        parent=circle,
        content_url="/course/versicherungsvermittler-in/media",
    )
    LearningContentPlaceholderFactory(
        title="Die ersten Schritte im Verkauf",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Sich und das Unternehmen vorstellen",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Fachcheck Verkaufsgrundlagen",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    LearningSequenceFactory(title="Kundenakquise", parent=circle)
    LearningUnitFactory(title="Kundenakquise", parent=circle)
    LearningContentPlaceholderFactory(
        title="Mediathek",
        parent=circle,
        content_url="/course/versicherungsvermittler-in/media",
    )
    LearningContentPlaceholderFactory(
        title="Vom Lead zum Termin/Telefon auf Empfehlung/Neukundengewinnung",
        parent=circle,
    )
    LearningContentAssignmentFactory(
        title="Mein Kundenstamm",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"{course_slug}-assignment-mein-kundenstamm"
        ),
    ),
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Reflexion, Feedback", parent=circle)
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_fahrzeug(lp, title="Fahrzeug"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["fahrzeug"]["description"],
        goals=VV_CIRCLE_GOALS["fahrzeug"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Einstieg", parent=circle)
    create_standard_learning_unit(
        "Rafael Fasel wechselt sein Auto - Einstieg",
        parent=circle,
        category_name="Fahrzeug",
        competence_id="V1",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-fz-01-rafael-fasel-wechselt-sein-auto-einstieg.zip/index.html#/",
        learning_unit_title="Gesprächsvorbereitung und -einstieg",
    )

    LearningSequenceFactory(title="Analyse", parent=circle)
    create_standard_learning_unit(
        "Rafael Fasel wechselt sein Auto - Analyse",
        parent=circle,
        category_name="Fahrzeug",
        competence_id="V2",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-fz-02-rafael-fasel-wechselt-sein-auto-analyse.zip/index.html",
        learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
    )

    LearningSequenceFactory(title="Lösung", parent=circle)
    create_standard_learning_unit(
        "Rafael Fasel wechselt sein Auto - Lösung",
        parent=circle,
        category_name="Fahrzeug",
        competence_id="V3",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-fz-03-rafael-fasel-wechselt-sein-auto-losung.zip/index.html",
        learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
    )

    LearningSequenceFactory(title="Abschluss", parent=circle)
    create_standard_learning_unit(
        "Rafael Fasel wechselt sein Auto - Abschluss",
        parent=circle,
        category_name="Fahrzeug",
        competence_id="V4",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-fz-04-rafael-fasel-wechselt-sein-auto-abschluss.zip/index.html",
        learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
    )

    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle)
    LearningContentPlaceholderFactory(
        title="Praxisauftrag",
        parent=circle,
    )
    LearningContentTestFactory(
        title="Fachcheck Fahrzeug",
        parent=circle,
        description=RichText(
            "<p>Teste dein Wissen mit dem Fachcheck. Der Test kann nur einmal durchgeführt werden.</p>"
        ),
        checkbox_text="Hiermit bestätige ich, dass ich die Anweisungen verstanden habe und den Test durchführen möchte.",
        content_url="https://s3.eu-central-1.amazonaws.com/myvbv-wbt.iterativ.ch/fachcheck-fahrzeug-xapi-LFv8YiyM/index.html#/",
    )
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_haushalt(lp, title="Haushalt"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["haushalt"]["description"],
        goals=VV_CIRCLE_GOALS["haushalt"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Einstieg", parent=circle)
    create_standard_learning_unit(
        "Rafael und Claudia ziehen zusammen - Einstieg",
        parent=circle,
        category_name="Haushalt",
        competence_id="V1",  # todo: fix
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-hh-01-rafael-und-claudia-ziehen-zusammen-einstieg.zip/index.html",
        learning_unit_title="Gesprächsvorbereitung und -einstieg",
    )

    LearningSequenceFactory(title="Analyse", parent=circle)
    create_standard_learning_unit(
        "Rafael und Claudia ziehen zusammen - Analyse",
        parent=circle,
        category_name="Haushalt",
        competence_id="V1",  # todo: fix
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-hh-02-rafael-und-claudia-ziehen-zusammen-analyse.zip/index.html",
        learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
    )

    LearningSequenceFactory(title="Lösung", parent=circle)
    create_standard_learning_unit(
        "Rafael und Claudia ziehen zusammen - Lösung",
        parent=circle,
        category_name="Haushalt",
        competence_id="V1",  # todo: fix
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-hh-03-rafael-und-claudia-ziehen-zusammen-losung.zip/index.html",
        learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
    )

    LearningSequenceFactory(title="Abschluss", parent=circle)
    create_standard_learning_unit(
        "Rafael und Claudia ziehen zusammen - Abschluss",
        parent=circle,
        category_name="Haushalt",
        competence_id="V1",  # todo: fix
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-hh-04-rafael-und-claudia-ziehen-zusammen-abschluss.zip/index.html",
        learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
    )

    create_learning_sequence_transfer(circle, title="Haushalt")


def create_circle_rechtsstreitigkeiten(lp, title="Rechtsstreitigkeiten"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["rechtsstreitigkeiten"]["description"],
        goals=VV_CIRCLE_GOALS["rechtsstreitigkeiten"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Rechtsstreitigkeiten", parent=circle)
    create_standard_learning_unit(
        "Rafael Fasel hat Ärger mit seinem Vermieter",
        parent=circle,
        category_name=title,
        competence_id="V1",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-rs-00-rafael-fasel-hat-arger-mit-seinem-vermieter.zip/index.html",
        learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
        title_hidden=True,
    )

    create_learning_sequence_transfer(circle, title="Rechtsstreitigkeiten")


def create_circle_reisen(lp, title="Reisen"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["reisen"]["description"],
        goals=VV_CIRCLE_GOALS["reisen"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Einstieg", parent=circle)
    create_standard_learning_unit(
        "Emma und Ayla campen durch Amerika - Einstieg",
        parent=circle,
        category_name=title,
        competence_id="V1",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-re-01-emma-und-ayla-campen-durch-amerika-einstieg.zip/index.html",
        learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
    )

    LearningSequenceFactory(title="Analyse", parent=circle)
    create_standard_learning_unit(
        "Emma und Ayla campen durch Amerika - Analyse",
        parent=circle,
        category_name=title,
        competence_id="V2",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-re-02-emma-und-ayla-campen-durch-amerika-analyse.zip/index.html",
        learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
    )

    LearningSequenceFactory(title="Lösung", parent=circle)
    create_standard_learning_unit(
        "Emma und Ayla campen durch Amerika - Lösung",
        parent=circle,
        category_name=title,
        competence_id="V3",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-re-03-emma-und-ayla-campen-durch-amerika-losung.zip/index.html",
        learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
    )

    LearningSequenceFactory(title="Abschluss", parent=circle)
    create_standard_learning_unit(
        "Emma und Ayla campen durch Amerika - Abschluss",
        parent=circle,
        category_name=title,
        competence_id="V4",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-re-04-emma-und-ayla-campen-durch-amerika-abschluss.zip/index.html",
        learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
    )

    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle)
    LearningContentPlaceholderFactory(
        title=f"Auswandern",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title=f"Fachcheck Reisen",
        parent=circle,
    )
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_einkommenssicherung(lp, title="Einkommenssicherung"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["einkommenssicherung"]["description"],
        goals=VV_CIRCLE_GOALS["einkommenssicherung"]["goals"],
    )
    course_slug = lp.slug.replace("-lp", "")
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Einstieg", parent=circle)
    create_standard_learning_unit(
        "Patrizia und Marco sichern sich ab - Einstieg",
        parent=circle,
        category_name=title,
        competence_id="V1",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ek-01-patrizia-marco-sichern-sich-ab-einstieg.zip/index.html",
        learning_unit_title="Terminvereinbarung, Vorbereitung und Gesprächseröffnung",
    )

    LearningSequenceFactory(title="Analyse", parent=circle)
    create_standard_learning_unit(
        "Patrizia und Marco sichern sich ab - Analyse",
        parent=circle,
        category_name=title,
        competence_id="V2",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ek-02-patrizia-marco-sichern-sich-ab-analyse.zip/index.html",
        learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
    )

    LearningSequenceFactory(title="Lösung", parent=circle)
    create_standard_learning_unit(
        "Patrizia und Marco sichern sich ab - Lösung",
        parent=circle,
        category_name=title,
        competence_id="V3",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ek-03-patrizia-marco-sichern-sich-ab-losung.zip/index.html",
        learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
    )

    LearningSequenceFactory(title="Abschluss", parent=circle)
    create_standard_learning_unit(
        "Patrizia und Marco sichern sich ab - Abschluss",
        parent=circle,
        category_name=title,
        competence_id="V4",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ek-04-patrizia-marco-sichern-sich-ab-abschluss.zip/index.html",
        learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
    )
    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle)
    LearningContentAssignmentFactory(
        title="Heirat: Was ändert sich",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"{course_slug}-assignment-heirat-was-ändert-sich"
        ),
    ),
    LearningContentPlaceholderFactory(
        title=f"Familienmanagerin",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Fachcheck Einkommenssicherung",
        parent=circle,
    )
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_wohneigentum(lp, title="Wohneigentum"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["wohneigentum"]["description"],
        goals=VV_CIRCLE_GOALS["wohneigentum"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Wohneigentum", parent=circle)
    LearningUnitFactory(title="Immobilien versichern bei Kauf und Umbau", parent=circle)
    LearningContentPlaceholderFactory(
        title="Patrizia und Marco kaufen ein Haus",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle)
    LearningContentPlaceholderFactory(
        title="Wohneigentum",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Fachcheck Wohneigentum",
        parent=circle,
    )
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_pensionierung(lp, title="Pensionierung"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["pensionierung"]["description"],
        goals=VV_CIRCLE_GOALS["pensionierung"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Einstieg", parent=circle)
    create_standard_learning_unit(
        "Giulia und Davide planen ihre Pensionierung - Einstieg",
        parent=circle,
        category_name=title,
        competence_id="V1",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-pe-01-giulia-und-davide-planen-ihre-pensionierung-einstieg.zip/index.html",
        learning_unit_title="Gesprächsvorbereitung und -einstieg",
    )

    LearningSequenceFactory(title="Analyse", parent=circle)
    create_standard_learning_unit(
        "Giulia und Davide planen ihre Pensionierung - Analyse",
        parent=circle,
        category_name=title,
        competence_id="V2",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-pe-02-giulia-und-davide-planen-ihre-pensionierung-analyse.zip/index.html",
        learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
    )

    LearningSequenceFactory(title="Lösung", parent=circle)
    create_standard_learning_unit(
        "Giulia und Davide planen ihre Pensionierung - Lösung",
        parent=circle,
        category_name=title,
        competence_id="V3",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-pe-03-giulia-und-davide-planen-ihre-pensionierung-losung.zip/index.html",
        learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
    )

    LearningSequenceFactory(title="Abschluss", parent=circle)
    create_standard_learning_unit(
        "Giulia und Davide planen ihre Pensionierung - Abschluss",
        parent=circle,
        category_name=title,
        competence_id="V4",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-pe-04-giulia-und-davide-planen-ihre-pensionierung-abschluss.zip/index.html",
        learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
    )

    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle)
    LearningContentPlaceholderFactory(
        title=f"Fachcheck Pensionierung",
        parent=circle,
    )
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_erben(lp, title="Erben/Vererben"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["erben"]["description"],
        goals=VV_CIRCLE_GOALS["erben"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Erben/Vererben", parent=circle)
    LearningUnitFactory(
        title="Gesetzliche Erben, Pflichtteile, Testament",
        title_hidden=True,
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title=f"Guilia udn Davide machen sich Gedanken",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title=f"Selbsteinschätzung",
        parent=circle,
    )

    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle)
    LearningContentPlaceholderFactory(
        title=f"Hausverkauf mit Erbvorbezug",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title=f"Fachcheck Erben/Vererben",
        parent=circle,
    )
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_gesundheit(lp, title="Gesundheit"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["gesundheit"]["description"],
        goals=VV_CIRCLE_GOALS["gesundheit"]["goals"],
    )
    course_slug = lp.slug.replace("-lp", "")

    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Einstieg", parent=circle)
    create_standard_learning_unit(
        "Familie Babic erwartet Nachwuchs - Einstieg",
        parent=circle,
        category_name=title,
        competence_id="V1",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ges-01-familie-babic-erwartet-nachwuchs-einstieg.zip/index.html",
        learning_unit_title="Gesprächsvorbereitung und -einstieg",
    )

    LearningSequenceFactory(title="Analyse", parent=circle)
    create_standard_learning_unit(
        "Familie Babic erwartet Nachwuchs - Analyse",
        parent=circle,
        category_name=title,
        competence_id="V2",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ges-02-familie-babic-erwartet-nachwuchs-analyse.zip/index.html",
        learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
    )

    LearningSequenceFactory(title="Lösung", parent=circle)
    create_standard_learning_unit(
        "Familie Babic erwartet Nachwuchs - Lösung",
        parent=circle,
        category_name=title,
        competence_id="V3",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ges-03-familie-babic-erwartet-nachwuchs-losung.zip/index.html",
        learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
    )

    LearningSequenceFactory(title="Abschluss", parent=circle)
    create_standard_learning_unit(
        "Familie Babic erwartet Nachwuchs - Abschluss",
        parent=circle,
        category_name=title,
        competence_id="V4",
        wbt_url="https://courses.myvbv.iterativ.ch/courses/de-ges-04-familie-babic-erwartet-nachwuchs-abschluss.zip/index.html",
        learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
    )
    LearningSequenceFactory(title="Transfer", parent=circle, icon="it-icon-ls-end")
    LearningUnitFactory(title="Transfer", title_hidden=True, parent=circle)
    LearningContentAssignmentFactory(
        title="Krankenversicherung: Passt die Lösung noch?",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"{course_slug}-assignment-krankenversicherung-passt-die-lösung-noch"
        ),
    ),
    LearningContentPlaceholderFactory(
        title=f"Fachcheck Gesundheit",
        parent=circle,
    )
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=circle,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=circle,
    )


def create_circle_sparen(lp, title="Sparen"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["sparen"]["description"],
        goals=VV_CIRCLE_GOALS["sparen"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", title_hidden=True, parent=circle)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title="Mediathek",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Sparen", parent=circle)
    LearningUnitFactory(
        title="Sparinstrumente, Idee und Funktionsweise von Anlagefonds", parent=circle
    )
    LearningContentPlaceholderFactory(
        title="Familie Babic spart auf ein Ziel",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    create_learning_sequence_transfer(circle, "Sparen")


def create_circle_selbstaendigkeit(lp, title="Selbstständigkeit"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["selbstständigkeit"]["description"],
        goals=VV_CIRCLE_GOALS["selbstständigkeit"]["goals"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", title_hidden=True, parent=circle)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title="Mediathek",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Selbstständigkeit", parent=circle)
    LearningUnitFactory(title="Selbsständigerwerbende versichern", parent=circle)
    LearningContentPlaceholderFactory(
        title="Patrizia Feller macht sich selbstständig",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    create_learning_sequence_transfer(circle, "Selbstständigkeit")


def create_circle_kmu(lp, title="KMU"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["kmu"]["description"],
        goals=VV_CIRCLE_GOALS["kmu"]["description"],
    )
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Einstieg", parent=circle)
    LearningUnitFactory(title="Gesprächsvorbereitung und -einstieg", parent=circle)
    LearningContentPlaceholderFactory(
        title="Anne Fleur übernimmt den Blumenladen - Einstieg",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    LearningSequenceFactory(title="Analyse", parent=circle)
    LearningUnitFactory(title="Bedarfsanalyse, Ist- und Soll-Situation", parent=circle)
    LearningContentPlaceholderFactory(
        title="Anne Fleur übernimmt den Blumenladen - Analyse",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    LearningSequenceFactory(title="Lösung", parent=circle)
    LearningUnitFactory(
        title="Lösungsvorschlag erarbeiten und präsentieren", parent=circle
    )
    LearningContentPlaceholderFactory(
        title="Anne Fleur übernimmt den Blumenladen - Lösung",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )

    LearningSequenceFactory(title="Abschluss", parent=circle)
    LearningUnitFactory(
        title="Gesprächszusammenfassung, Abschluss und Nachbereitung", parent=circle
    )
    LearningContentPlaceholderFactory(
        title="Anne Fleur übernimmt den Blumenladen - Abschluss",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Selbsteinschätzung",
        parent=circle,
    )
    create_learning_sequence_transfer(circle, "KMU")


def create_circle_standard_small(
    lp,
    title,
    lc_title,
    lu_title=None,
    lc_praxis_title=None,
    goals=None,
    description=None,
):
    circle = CircleFactory(**setup_circle_factory_kwargs(title, lp, goals, description))
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentVideoFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
        content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
        description="Willkommen im Lehrgang Versicherungsvermitler VBV",
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title, allow_unicode=True)}",
    )

    if lu_title is None:
        lu_title = title
    LearningSequenceFactory(title=title, parent=circle)
    create_standard_learning_unit(
        lc_title,
        parent=circle,
        category_name=title,
        competence_id="V1",
        learning_unit_title=lu_title,
    )

    create_learning_sequence_transfer(circle, title, lc_praxis_title=lc_praxis_title)


def create_circle_standard(lp, title, lc_title, goals=None, description=None):
    circle = CircleFactory(**setup_circle_factory_kwargs(title, lp, goals, description))
    LearningSequenceFactory(title="Einführung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentVideoFactory(
        title="Verschaff dir einen Überblick",
        parent=circle,
        content_url="https://player.vimeo.com/video/772512710?h=30f912f15a",
        description="Willkommen im Lehrgang Versicherungsvermitler VBV",
    )
    LearningContentMediaLibraryFactory(
        title=f"Mediathek {title}",
        parent=circle,
        content_url=f"/course/versicherungsvermittler-in/media/category/{slugify(title)}",
    )

    LearningSequenceFactory(title="Einstieg", parent=circle)
    create_standard_learning_unit(
        f"{lc_title} - Einstieg",
        parent=circle,
        category_name=title,
        competence_id="V1",
        learning_unit_title="Gesprächsvorbereitung und -einstieg",
    )

    LearningSequenceFactory(title="Analyse", parent=circle)
    create_standard_learning_unit(
        f"{lc_title} - Analyse",
        parent=circle,
        category_name=title,
        competence_id="V2",
        learning_unit_title="Bedarfsanalyse, Ist- und Soll-Situation",
    )

    LearningSequenceFactory(title="Lösung", parent=circle)
    create_standard_learning_unit(
        f"{lc_title} - Lösung",
        parent=circle,
        category_name=title,
        competence_id="V3",
        learning_unit_title="Lösungsvorschlag erarbeiten und präsentieren",
    )

    LearningSequenceFactory(title="Abschluss", parent=circle)
    create_standard_learning_unit(
        f"{lc_title} - Abschluss",
        parent=circle,
        category_name=title,
        competence_id="V4",
        learning_unit_title="Gesprächszusammenfassung, Abschluss und Nachbereitung",
    )

    create_learning_sequence_transfer(circle, title)


def create_html_goals(goals):
    html = ""

    if goals is None:
        return None

    for goal in goals:
        if goal["type"] == GoalsType.PARAGRAPH:
            html += f'<p class="mb-4">{goal["content"]}</p>'
        elif goal["type"] == GoalsType.LIST:
            icon = '<it-icon-check class="hidden h-12 w-12 flex-none text-sky-500 lg:inline-block it-icon"></it-icon-check>'
            li_classes = '"flex items-center"'
            ul_classes = '"mb-4"'
            html += f"<ul class={ul_classes}>{''.join([f'<li class={li_classes}>{icon}<span>{item}</span></li>' for item in goal['content']])}</ul>"
        elif goal["type"] == GoalsType.HEADING:
            h3_classes = '"mb-4"'
            html += f"<h3 class={h3_classes}>{goal['content']}</h3>"

    return html


def setup_circle_factory_kwargs(title, lp, goals, description):
    kwargs = {
        "title": title,
        "parent": lp,
    }

    return kwargs


def create_circle_pruefungsvorbereitung(lp, title="Prüfungsvorbereitung"):
    circle = CircleFactory(
        title=title,
        parent=lp,
        description=VV_CIRCLE_GOALS["prüfungsvorbereitung"]["description"],
        goals=VV_CIRCLE_GOALS["prüfungsvorbereitung"]["goals"],
    )
    LearningSequenceFactory(title="Einführung ", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Einführung", parent=circle)
    LearningContentPlaceholderFactory(
        title="Verschaffe dir einen Überblick",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Mediathek",
        parent=circle,
        content_url="/course/versicherungsvermittler-in/media",
    )

    LearningSequenceFactory(title="Aufbau", parent=circle)
    LearningUnitFactory(title="Aufbau", parent=circle, title_hidden=True)
    LearningContentPlaceholderFactory(
        title="Aufbau und Struktur",
        parent=circle,
    )

    LearningSequenceFactory(title="Nullserien", parent=circle)
    LearningUnitFactory(title="Schriftliche Nullserien", parent=circle)
    LearningContentPlaceholderFactory(
        title="Nullserie 1",
        parent=circle,
    )
    LearningUnitFactory(title="Mündliche Nullserien", parent=circle)
    LearningContentPlaceholderFactory(
        title="Nullserie 1 - Aufgabe",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Nullserie 1 - Lösung",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Nullserie 2 - Aufgabe",
        parent=circle,
    )
    LearningContentPlaceholderFactory(
        title="Nullserie 2 - Lösung",
        parent=circle,
    )

    create_learning_sequence_transfer(circle, "Prüfungsvorbereitung")


def create_circle_pruefung(lp, title="Prüfung"):
    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.",
    )
    LearningSequenceFactory(title="Anmeldung", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Anmeldung", parent=circle)
    LearningContentPlaceholderFactory(
        title="Anmeldung",
        parent=circle,
    )

    LearningSequenceFactory(
        title="Durchführung", parent=circle, icon="it-icon-ls-start"
    )
    LearningUnitFactory(title="Durchführung", parent=circle)
    LearningContentPlaceholderFactory(
        title="Durchführung",
        parent=circle,
    )

    LearningSequenceFactory(title="Feedback", parent=circle, icon="it-icon-ls-start")
    LearningUnitFactory(title="Feedback", parent=circle)
    LearningContentPlaceholderFactory(
        title="Feedback",
        parent=circle,
    )


def create_standard_learning_unit(
    title,
    parent,
    category_name,
    competence_id="V1",
    wbt_url=None,
    check_url=None,
    learning_unit_title=None,
    title_hidden=False,
):
    if learning_unit_title is None:
        learning_unit_title = category_name

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

    if wbt_url is None:
        LearningContentPlaceholderFactory(
            title=title,
            parent=parent,
        )
    else:
        LearningContentLearningModuleFactory(
            title=title,
            parent=parent,
            content_url=wbt_url,
        )

    competence_page = CompetencePage.objects.get(competence_id=competence_id)
    PerformanceCriteriaFactory(
        parent=competence_page,
        competence_id=f"{competence_id}.{category_name}",
        title=f"Ich bin fähig bei {category_name} eine {competence_page.title} zu machen",
        learning_unit=lu,
    )


def create_learning_sequence_transfer(parent, title, lc_praxis_title=None):
    LearningSequenceFactory(title="Transfer", parent=parent, icon="it-icon-ls-end")
    LearningUnitFactory(title="Transfer", title_hidden=True, parent=parent)
    if lc_praxis_title:
        LearningContentPlaceholderFactory(
            title=lc_praxis_title,
            parent=parent,
        )
    LearningContentPlaceholderFactory(
        title=f"Fachcheck {title}",
        parent=parent,
    )
    LearningContentAssignmentFactory(
        title="Reflexion",
        assignment_type="REFLECTION",
        parent=parent,
        content_assignment=Assignment.objects.get(
            slug__startswith=f"versicherungsvermittler-in-assignment-reflexion"
        ),
    ),
    LearningContentFeedbackFactory(
        parent=parent,
    )


def create_learning_content_beenden(parent):
    LearningContentRichTextFactory(
        title="Hier entsteht die Lernsequenz «beenden»",
        parent=parent,
        content_url="https://www.vbv.ch/",
        description=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>
                    """
        ),
    )
    LearningContentPlaceholderFactory(
        parent=parent,
    )


def create_learning_content_transferauftrag(title, parent):
    LearningContentRichTextFactory(
        title=title,
        parent=parent,
        content_url="https://www.vbv.ch/",
        description=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>
                    """
        ),
    )
