from vbv_lernwelt.competence.factories import (
    CompetencePageFactory,
    CompetenceProfilePageFactory,
    PerformanceCriteriaFactory,
)
from vbv_lernwelt.competence.models import CompetencePage
from vbv_lernwelt.course.consts import COURSE_UK1
from vbv_lernwelt.course.models import CoursePage
from vbv_lernwelt.learnpath.models import LearningPath, LearningUnit


def create_uk_competence_profile(course_id=COURSE_UK1):
    course_page = CoursePage.objects.get(course_id=course_id)
    slug_prefix = course_page.get_children().exact_type(LearningPath).first().slug

    competence_profile_page = CompetenceProfilePageFactory(
        title="KompetenzNavi",
        parent=course_page,
    )

    competences = [
        {
            "competence_id": "A1",
            "title": "Weiterempfehlung für Neukunden generieren",
            "items": [
                "Verhandlungsgeschick",
                "Überzeugtes Auftreten",
            ],
        },
        {
            "competence_id": "A2",
            "title": "Kundengespräche vereinbaren",
            "items": [
                "Gesprächsführung / Fragetechniken",
                "Selbstorganisation",
                "Arbeitstechniken",
                "Psychologische Kenntnisse / Kommunikations-psychologie",
            ],
        },
        {
            "competence_id": "A3",
            "title": "Auftritt in den sozialen Medien zeitgemäss halten",
            "items": [
                "Gesetzliche und Compliance-Anforderungen der Versicherer",
                "Datenschutzgesetz",
                "Kommunikation in den sozialen Medien",
            ],
        },
        {"competence_id": "A4", "title": "Kundendaten erfassen", "items": []},
        {
            "competence_id": "B1",
            "title": "Wünsche, Ziele  und Bedürfnisse der Kunden im Gespräch ermitteln",
            "items": [
                "Gesprächsführung",
                "Fragetechniken",
                "Kundenpsychologie",
            ],
        },
        {
            "competence_id": "B2",
            "title": "Analyse des Kundenbedarfs und des Kundenbedürfnisses durchführen",
            "items": [
                "Fragetechniken",
                "Visuelle Hilfsmittel / Visualisierungstechniken",
            ],
        },
        {
            "competence_id": "B3",
            "title": "Individuelle Lösungsvorschläge erarbeiten",
            "items": [
                "Fundierte Produktekenntnisse",
                "Regulatorische Vorschriften",
            ],
        },
        {
            "competence_id": "B4",
            "title": "Lösungsvorschläge präsentieren und umsetzen",
            "items": [
                "Verhandlungsstrategien",
                "Fundierte Produktkenntnisse",
                "Visuelle Hilfsmittel / Visualisierungstechniken",
            ],
        },
        {
            "competence_id": "C1",
            "title": "Cross- und Upselling; bestehende fremdverwaltete Versicherungspolicen prüfen und in das Portfolio aufnehmen",
            "items": [
                "Produktkenntnisse",
                "Gesprächsführung",
                "Kommunikation",
                "Fragetechnik",
                "Verhandlungsgeschick",
                "Vertragsrecht",
                "Regulatorische Vorgaben",
                "UVG, BVG, KVG, VVG",
            ],
        },
        {
            "competence_id": "C2",
            "title": "Änderungswünsche entgegennehmen und bestehende Verträge anpassen",
            "items": [
                "Produktkenntnisse",
                "Gesprächsführung",
                "Kommunikation",
                "Fragetechnik",
                "Verhandlungsgeschick",
                "Vertragsrecht",
                "Regulatorische Vorgaben",
                "UVG, BVG, KVG, VVG",
            ],
        },
        {
            "competence_id": "C3",
            "title": "Kunden im Schadenfall unterstützen",
            "items": [],
        },
        {"competence_id": "C4", "title": "Bestehende Kunden pflegen", "items": []},
        {
            "competence_id": "C5",
            "title": "Versicherungsanträge nachbearbeiten",
            "items": [],
        },
    ]

    for c in competences:
        CompetencePageFactory(
            parent=competence_profile_page,
            competence_id=c["competence_id"],
            title=c["title"],
            items=[("item", i) for i in c["items"]],
        )

    # Daten anhand von WEVM_Version Oktober 2022
    # Einstieg/Beobachten – Selbsteinschätzung «Einkommenssicherung»
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.1",
        title="Ich bin fähig je nach (Neu-) Kunde Form und Ort für das Gespräch festzulegen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-kickoff-lu-einführung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.2",
        title="Ich bin fähig mir intern und extern die nötigen Informationen über den (Neu-) Kunden zu beschaffen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-kickoff-lu-arbeits-und-lerntechnik"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.3",
        title="Ich bin fähig die Terminierung auf das Thema Einkommenssicherung auszurichten.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-kickoff-lu-versicherung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.4",
        title="Ich bin fähig für das zu führende Gespräch eine Agenda zu erstellen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-kickoff-lu-beratung-und-verkauf"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.5",
        title="Ich bin fähig für das Handlungsfeld «Einkommenssicherung» geeignete Hilfsmittel und Unterlagen zusammenzustellen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-kickoff-lu-sozialer-auftritt"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="B1"
        ),
        competence_id="B1.1",
        title="Ich bin fähig dem Kunden den Gesprächsablauf und den Zeitrahmen (mittels Agenda) aufzuzeigen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-basis-lu-einführung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="B1"
        ),
        competence_id="B1.2",
        title="Ich bin fähig mich beim Kunden korrekt zu identifizieren (VAG 45).",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-basis-lu-arbeits-und-lerntechnik"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="B2"
        ),
        competence_id="B2.3",
        title="Ich bin fähig alle erforderlichen Unterlagen einzufordern.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-basis-lu-versicherung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A1"
        ),
        competence_id="A1.6",
        title="Ich bin fähig im täglichen Kontakt potenzielle Kundinnen und Kunden zu erkennen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-basis-lu-versicherung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.1",
        title="Ich bin fähig je nach (Neu-) Kunde Form und Ort für das Gespräch festzulegen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-basis-lu-beratung-und-verkauf"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.2",
        title="Ich bin fähig mir intern und extern die nötigen Informationen über den (Neu-) Kunden zu beschaffen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-basis-lu-sozialer-auftritt"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.3",
        title="Ich bin fähig die Terminierung auf das Thema Fahrzeug auszurichten.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-versicherung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.4",
        title="Ich bin fähig für das zu führende Gespräch eine Agenda zu erstellen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-einführung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.5",
        title="Ich bin fähig für das zu führende Gespräch geeignete Hilfsmittel und Unterlagen zusammenzustellen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-arbeits-und-lerntechnik"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.3",
        title="Ich bin fähig die Terminierung auf das Thema Reisen auszurichten.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-versicherung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="A2"
        ),
        competence_id="A2.4",
        title="Ich bin fähig für das zu führende Gespräch eine Agenda zu erstellen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-sozialer-auftritt"
        ),
    )
