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


def create_uk_training_competence_profile(course_id=COURSE_UK):
    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": "c3",
            "title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
            "items": [],
        },
        {
            "competence_id": "e2",
            "title": "Informationen im wirtschaftlichen und kaufmännischen Bereich recherchieren",
            "items": [],
        },
        {
            "competence_id": "e4",
            "title": "Betriebsbezogene Inhalte multimedial aufbereiten",
            "items": [],
        },
        {
            "competence_id": "d2",
            "title": "Informations- und Beratungsgespräche mit Kunden oder Lieferanten führen",
            "items": [],
        },
        {
            "competence_id": "d3",
            "title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
            "items": [],
        },
        {
            "competence_id": "d1",
            "title": "Anliegen von Kunden oder Lieferanten entgegennehmen",
            "items": [],
        },
    ]

    for c in competences:
        print(c["title"])
        CompetencePageFactory(
            parent=competence_profile_page,
            competence_id=c["competence_id"],
            title=c["title"],
            items=[("item", i) for i in c["items"]],
        )
    # Circle Fahrzeug
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ük2",
        title="Ich bin fähig die relevanten rechtlichen Grundlagen im Handlungsfeld Fahrzeug situationsgerecht zu erläutern.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ük7",
        title="Ich bin fähig die gesetzlichen Bestimmungen bei Schaden- und Leistungsfällen im Handlungsfeld Fahrzeug zu erläutern.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ük11",
        title="Ich bin fähig die gängigen Versicherungslösungen im Handlungsbereich Fahrzeug fachkundig zu beurteilen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ük1",
        title="Ich bin fähig die wichtigsten gesetzlichen Grundlagen im Bereich Motorfahrzeugversicherung umfassend zu beschreiben.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ük2",
        title="Ich bin fähig die relevanten Dienstleistungen und Produkte im Handlungsfeld Fahrzeug zu nennen.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ük3",
        title="Ich bin fähig die Leistungen und Produkte im Handlungsfeld Fahrzeug zu erläutern.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ük4",
        title="Ich bin fähig die Prozesse und Abläufe im Handlungsfeld Fahrzeug zu erläutern.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ük1",
        title="Ich bin fähig die Dienstleistungen des eigenen Betriebs im Handlungsfeld Fahrzeug zu erläutern.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ük2",
        title="Ich bin fähig Mitbewerber in der privaten Versicherungsbranche im Handlungsfeld Fahrzeug anhand der relevanten Kriterien zu unterscheiden.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ük4",
        title="Ich bin fähig die Grundlagen der Produkte von Motorfahrzeugversicherungen zu erläutern.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-fahrzeug-lu-vorbereitung"
        ),
    )


def create_uk_fr_training_competence_profile(course_id=COURSE_UK):
    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": "c3",
            "title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
            "items": [],
        },
        {
            "competence_id": "e2",
            "title": "Informationen im wirtschaftlichen und kaufmännischen Bereich recherchieren",
            "items": [],
        },
        {
            "competence_id": "e4",
            "title": "Betriebsbezogene Inhalte multimedial aufbereiten",
            "items": [],
        },
        {
            "competence_id": "d2",
            "title": "Informations- und Beratungsgespräche mit Kunden oder Lieferanten führen",
            "items": [],
        },
        {
            "competence_id": "d3",
            "title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
            "items": [],
        },
        {
            "competence_id": "d1",
            "title": "Anliegen von Kunden oder Lieferanten entgegennehmen",
            "items": [],
        },
    ]

    for c in competences:
        print(c["title"])
        CompetencePageFactory(
            parent=competence_profile_page,
            competence_id=c["competence_id"],
            title=c["title"],
            items=[("item", i) for i in c["items"]],
        )
    # Circle Fahrzeug
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ci2",
        title="Je suis capable de d'expliquer les fondements légaux applicables dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ci7",
        title="Je suis capable de d'expliquer les dispositions légales en cas de sinistres et de versement de prestations dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ci11",
        title="Je suis capable de d'évaluer de manière compétente les solutions d’assurance courantes dans le domaine d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ci1",
        title="Je suis capable de décrire de manière complète les principales bases légales dans le domaine de l'assurance des véhicules à moteur.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ci2",
        title="Je suis capable de citer les prestations de service et les produits pertinents dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ci3",
        title="Je suis capable de d'expliquer les services et les produits dans le champ d&#39;action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ci4",
        title="Je suis capable de d'expliquer de manière compréhensible les processus et procédures dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ci1",
        title="Je suis capable de d'expliquer les services de l'entreprise dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ci2",
        title="Je suis capable de de distinguer les concurrents dans le secteur des assurances privées dans le champ d'action des véhicules à l'aide des critères pertinents.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ci4",
        title="Je suis capable de d'expliquer les principes sur lesquelles reposent les produits d'assurance automobile.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-véhicule-lu-préparation"
        ),
    )


def create_uk_it_training_competence_profile(course_id=COURSE_UK):
    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": "c3",
            "title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
            "items": [],
        },
        {
            "competence_id": "e2",
            "title": "Informationen im wirtschaftlichen und kaufmännischen Bereich recherchieren",
            "items": [],
        },
        {
            "competence_id": "e4",
            "title": "Betriebsbezogene Inhalte multimedial aufbereiten",
            "items": [],
        },
        {
            "competence_id": "d2",
            "title": "Informations- und Beratungsgespräche mit Kunden oder Lieferanten führen",
            "items": [],
        },
        {
            "competence_id": "d3",
            "title": "Betriebliche Prozesse dokumentieren, koordinieren und umsetzen",
            "items": [],
        },
        {
            "competence_id": "d1",
            "title": "Anliegen von Kunden oder Lieferanten entgegennehmen",
            "items": [],
        },
    ]

    for c in competences:
        print(c["title"])
        CompetencePageFactory(
            parent=competence_profile_page,
            competence_id=c["competence_id"],
            title=c["title"],
            items=[("item", i) for i in c["items"]],
        )
    # Circle Fahrzeug
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ci2",
        title="Je suis capable de d'expliquer les fondements légaux applicables dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ci7",
        title="Je suis capable de d'expliquer les dispositions légales en cas de sinistres et de versement de prestations dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="c3"
        ),
        competence_id="c3.pv.ci11",
        title="Je suis capable de d'évaluer de manière compétente les solutions d’assurance courantes dans le domaine d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ci1",
        title="Je suis capable de décrire de manière complète les principales bases légales dans le domaine de l'assurance des véhicules à moteur.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ci2",
        title="Je suis capable de citer les prestations de service et les produits pertinents dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ci3",
        title="Je suis capable de d'expliquer les services et les produits dans le champ d&#39;action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="d2"
        ),
        competence_id="d2.pv.ci4",
        title="Je suis capable de d'expliquer de manière compréhensible les processus et procédures dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ci1",
        title="Je suis capable de d'expliquer les services de l'entreprise dans le champ d'action des véhicules.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ci2",
        title="Je suis capable de de distinguer les concurrents dans le secteur des assurances privées dans le champ d'action des véhicules à l'aide des critères pertinents.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
    PerformanceCriteriaFactory(
        parent=CompetencePage.objects.get(
            slug__startswith=slug_prefix.replace("-lp", ""), competence_id="e4"
        ),
        competence_id="e4.pv.ci4",
        title="Je suis capable de d'expliquer les principes sur lesquelles reposent les produits d'assurance automobile.",
        learning_unit=LearningUnit.objects.get(
            slug=f"{slug_prefix}-circle-veicolo-lu-preparazione"
        ),
    )
