import SwiftUI

struct ErsteHilfeView: View {
    var body: some View {
        List {
            Section {
                HStack(spacing: 12) {
                    Image(systemName: "phone.fill")
                        .foregroundStyle(.red)
                    VStack(alignment: .leading) {
                        Text("Im Ernstfall sofort den Tierarzt anrufen!").font(.subheadline.bold())
                        Text("Diese Hinweise ersetzen keine tierärztliche Behandlung.")
                            .font(.caption)
                            .foregroundStyle(.secondary)
                    }
                }
                .padding(.vertical, 4)
            }

            ForEach(ErsteHilfeContent.topics) { topic in
                NavigationLink {
                    ErsteHilfeDetailView(topic: topic)
                } label: {
                    HStack(spacing: 14) {
                        Image(systemName: topic.icon)
                            .font(.title3)
                            .foregroundStyle(topic.tint)
                            .frame(width: 32)
                        VStack(alignment: .leading, spacing: 2) {
                            Text(topic.title).font(.headline)
                            Text(topic.summary)
                                .font(.caption)
                                .foregroundStyle(.secondary)
                                .lineLimit(2)
                        }
                    }
                    .padding(.vertical, 4)
                }
            }
        }
        .navigationTitle("Erste Hilfe")
        .navigationBarTitleDisplayMode(.inline)
    }
}

private struct ErsteHilfeDetailView: View {
    let topic: ErsteHilfeTopic

    var body: some View {
        ScrollView {
            VStack(alignment: .leading, spacing: 18) {
                HStack(spacing: 14) {
                    Image(systemName: topic.icon)
                        .font(.system(size: 44))
                        .foregroundStyle(topic.tint)
                        .frame(width: 70, height: 70)
                        .background(topic.tint.opacity(0.15), in: Circle())
                    VStack(alignment: .leading, spacing: 4) {
                        Text(topic.title).font(.title2.bold())
                        Text(topic.summary)
                            .font(.subheadline)
                            .foregroundStyle(.secondary)
                    }
                }

                ForEach(Array(topic.sections.enumerated()), id: \.offset) { _, section in
                    VStack(alignment: .leading, spacing: 8) {
                        Text(section.heading).font(.headline)
                        VStack(alignment: .leading, spacing: 6) {
                            ForEach(Array(section.steps.enumerated()), id: \.offset) { i, step in
                                HStack(alignment: .firstTextBaseline, spacing: 10) {
                                    Text("\(i + 1).")
                                        .font(.subheadline.bold())
                                        .foregroundStyle(topic.tint)
                                        .frame(width: 20, alignment: .trailing)
                                    Text(step)
                                        .font(.subheadline)
                                }
                            }
                        }
                    }
                    .padding()
                    .background(.background.secondary, in: RoundedRectangle(cornerRadius: 12))
                }

                if !topic.warnings.isEmpty {
                    VStack(alignment: .leading, spacing: 6) {
                        Label("Sofort zum Tierarzt", systemImage: "exclamationmark.triangle.fill")
                            .font(.headline)
                            .foregroundStyle(.red)
                        ForEach(topic.warnings, id: \.self) { w in
                            Text("• \(w)").font(.subheadline)
                        }
                    }
                    .padding()
                    .background(Color.red.opacity(0.08), in: RoundedRectangle(cornerRadius: 12))
                }
            }
            .padding()
        }
        .navigationTitle(topic.title)
        .navigationBarTitleDisplayMode(.inline)
    }
}

// MARK: - Content

struct ErsteHilfeTopic: Identifiable {
    let id: String
    let title: String
    let summary: String
    let icon: String
    let tint: Color
    let sections: [Section]
    let warnings: [String]

    struct Section {
        let heading: String
        let steps: [String]
    }
}

enum ErsteHilfeContent {
    static let topics: [ErsteHilfeTopic] = [
        ErsteHilfeTopic(
            id: "vergiftung",
            title: "Vergiftung",
            summary: "Schokolade, Trauben, Giftköder, Frostschutz, Medikamente.",
            icon: "exclamationmark.octagon.fill",
            tint: .red,
            sections: [
                .init(heading: "Sofortmaßnahmen", steps: [
                    "Hund von der Giftquelle entfernen. Reste sichern (Foto/Verpackung).",
                    "NICHT zum Erbrechen bringen, außer der Tierarzt sagt es ausdrücklich.",
                    "Tierarzt oder Tierklinik anrufen — Art und Menge des Gifts angeben.",
                    "Bei Bewusstlosigkeit: stabile Seitenlage, Atemwege freihalten."
                ]),
                .init(heading: "Was du nicht tun solltest", steps: [
                    "Kein Salzwasser, keine Milch, kein Öl geben — kann gefährlich sein.",
                    "Nicht abwarten, ob Symptome verschwinden."
                ])
            ],
            warnings: [
                "Krämpfe, Erbrechen, Durchfall, Speicheln, Apathie",
                "Schaum vor dem Maul, Blutungen",
                "Verdacht auf Giftköder (Wurst mit Glas, Nägel, Tabletten)"
            ]
        ),
        ErsteHilfeTopic(
            id: "hitzschlag",
            title: "Hitzschlag",
            summary: "Hecheln, Taumeln, Bewusstseinsverlust durch Überhitzung.",
            icon: "thermometer.sun.fill",
            tint: .orange,
            sections: [
                .init(heading: "Sofort kühlen", steps: [
                    "Hund in den Schatten oder kühlen Raum bringen.",
                    "Pfoten, Innenschenkel und Bauch mit lauwarmem (nicht eiskaltem!) Wasser kühlen.",
                    "Kleine Schlucke Wasser anbieten, nicht zwingen.",
                    "Auf dem Weg zum Tierarzt weiterkühlen — feuchte Tücher auf den Körper."
                ])
            ],
            warnings: [
                "Körpertemperatur über 40 °C",
                "Verwirrung, Krämpfe, Erbrechen",
                "Zahnfleisch dunkelrot, blau oder bleich"
            ]
        ),
        ErsteHilfeTopic(
            id: "wunde",
            title: "Wunden & Blutungen",
            summary: "Schnitte, Bisse, Verletzungen an Pfoten und Körper.",
            icon: "bandage.fill",
            tint: .pink,
            sections: [
                .init(heading: "Bei starker Blutung", steps: [
                    "Druckverband mit sauberem Tuch anlegen — fest, aber nicht abschnüren.",
                    "Bei spritzendem Blut: oberhalb der Wunde mit den Fingern abdrücken.",
                    "Pfote/Bein hochlagern, ruhig halten.",
                    "Sofort zum Tierarzt."
                ]),
                .init(heading: "Kleine Wunden", steps: [
                    "Fremdkörper (Glas, Splitter) NICHT selbst rausziehen, wenn tief.",
                    "Wunde mit klarem Wasser ausspülen.",
                    "Trocken tupfen, locker abdecken — Hund vom Lecken abhalten."
                ])
            ],
            warnings: [
                "Stark blutende oder pumpende Wunde",
                "Fremdkörper steckt fest",
                "Tiefe Biss­wunden (auch wenn klein) → Infektionsgefahr"
            ]
        ),
        ErsteHilfeTopic(
            id: "atemnot",
            title: "Atemnot & Bewusstlosigkeit",
            summary: "Erstickung, Würgen, Kollaps, Reanimation.",
            icon: "lungs.fill",
            tint: .blue,
            sections: [
                .init(heading: "Fremdkörper im Hals", steps: [
                    "Maul vorsichtig öffnen, mit Taschenlampe schauen.",
                    "Sichtbaren Fremdkörper mit den Fingern (nicht Pinzette!) lösen.",
                    "Bei kleinem Hund: Kopf nach unten halten und zwischen die Schulterblätter klopfen.",
                    "Bei großem Hund: Heimlich-Manöver — von hinten umfassen, ruckartig nach oben drücken."
                ]),
                .init(heading: "Reanimation (CPR)", steps: [
                    "Hund auf rechte Seite legen, Atemwege kontrollieren.",
                    "Maul schließen, in die Nase atmen — Brustkorb soll sich heben.",
                    "30 Herzdruckmassagen (auf Brustkorb-Höhe der Schulterblätter), dann 2 Beatmungen.",
                    "Weiter bis Atmung einsetzt oder Tierarzt übernimmt."
                ])
            ],
            warnings: [
                "Bewusstlosigkeit, keine Atmung, kein Puls",
                "Blaue Schleimhäute",
                "Würgen ohne Erfolg über mehrere Minuten"
            ]
        ),
        ErsteHilfeTopic(
            id: "krampfanfall",
            title: "Krampfanfall",
            summary: "Epileptischer Anfall, Zittern, Bewusstseinsstörung.",
            icon: "waveform.path.ecg",
            tint: .purple,
            sections: [
                .init(heading: "Während des Anfalls", steps: [
                    "Ruhe bewahren, Zeit messen (Dauer ist wichtig für den Tierarzt).",
                    "Umgebung sichern — Möbel/Kanten wegräumen.",
                    "NICHT festhalten, NICHTS ins Maul stecken.",
                    "Licht, Geräusche und Reize reduzieren."
                ]),
                .init(heading: "Nach dem Anfall", steps: [
                    "Hund kann verwirrt, blind oder unruhig sein — Zeit geben.",
                    "Wasser bereitstellen, in eine ruhige Ecke legen.",
                    "Auch nach erstem Anfall zum Tierarzt — Ursache abklären."
                ])
            ],
            warnings: [
                "Anfall dauert länger als 5 Minuten (Notfall!)",
                "Mehrere Anfälle in Folge",
                "Erster Anfall überhaupt"
            ]
        ),
        ErsteHilfeTopic(
            id: "magendrehung",
            title: "Magendrehung",
            summary: "Akuter Notfall, vor allem bei großen Rassen.",
            icon: "stomach.fill",
            tint: .red,
            sections: [
                .init(heading: "Erkennen", steps: [
                    "Aufgeblähter, harter Bauch.",
                    "Erfolgloses Würgen ohne Erbrechen.",
                    "Unruhe, Speicheln, Atemnot.",
                    "Häufig nach dem Fressen / Trinken großer Mengen."
                ]),
                .init(heading: "Sofort handeln", steps: [
                    "JEDE Minute zählt — direkt zum Notfall-Tierarzt fahren.",
                    "Beim Transport ruhig halten, nicht füttern, nicht tränken.",
                    "Vorher anrufen, damit OP-Team bereitsteht."
                ])
            ],
            warnings: [
                "Symptome wie oben → IMMER Notfall",
                "Ohne OP innerhalb weniger Stunden tödlich"
            ]
        )
    ]
}
