import SwiftUI

struct PreflightView: View {
    @Environment(WizardModel.self) private var model

    @State private var fmiConfirmed = false
    @State private var sdpConfirmed = false
    @State private var appleIdConfirmed = false
    @State private var rebreakAppInstalled = false

    var body: some View {
        ScrollView {
            VStack(alignment: .leading, spacing: 24) {
                header

                Text("Bevor wir dein iPhone supervisieren, müssen ein paar Apple-Sicherheitschecks erledigt sein. Hak die Punkte ab, sobald du sie auf dem iPhone gemacht hast.")
                    .foregroundStyle(.secondary)

                checklist

                Spacer()

                navigationBar
            }
            .padding(40)
        }
    }

    private var header: some View {
        HStack {
            Image(systemName: "checklist")
                .font(.system(size: 30))
                .foregroundStyle(.tint)
            Text("Pre-Flight Check")
                .font(.title).bold()
        }
    }

    private var checklist: some View {
        VStack(spacing: 12) {
            checklistItem(
                checked: $fmiConfirmed,
                title: "Find My iPhone deaktiviert",
                detail: "Settings → [Apple-ID] → Wo ist? → Mein iPhone suchen → AUS. Ohne das blockiert Apple das Supervisieren (ErrorCode 211)."
            )
            checklistItem(
                checked: $sdpConfirmed,
                title: "Stolen Device Protection ausgeschaltet",
                detail: "Settings → Face ID & Code → Schutz für gestohlene Geräte → AUS. SDP zwingt FMI an — muss VOR FMI-Toggle aus."
            )
            checklistItem(
                checked: $appleIdConfirmed,
                title: "Apple-ID-Passwort griffbereit",
                detail: "Apple fragt evtl. dein Apple-ID-PW während des FMI-Toggles ab. Halte es bereit."
            )
            checklistItem(
                checked: $rebreakAppInstalled,
                title: "ReBreak-App ist auf dem iPhone installiert",
                detail: "Über TestFlight (https://testflight.apple.com/join/...). Erst danach kann der Wizard die App in den Managed-State versetzen."
            )
        }
    }

    private func checklistItem(checked: Binding<Bool>, title: String, detail: String) -> some View {
        Button(action: { checked.wrappedValue.toggle() }) {
            HStack(alignment: .top, spacing: 12) {
                Image(systemName: checked.wrappedValue ? "checkmark.square.fill" : "square")
                    .font(.title3)
                    .foregroundStyle(checked.wrappedValue ? Color.accentColor : Color.secondary)
                VStack(alignment: .leading, spacing: 4) {
                    Text(title).font(.headline)
                    Text(detail).font(.callout).foregroundStyle(.secondary)
                }
                Spacer()
            }
            .padding()
            .background(Color.gray.opacity(0.05))
            .cornerRadius(8)
            .contentShape(Rectangle())
        }
        .buttonStyle(.plain)
    }

    private var allChecked: Bool {
        fmiConfirmed && sdpConfirmed && appleIdConfirmed && rebreakAppInstalled
    }

    private var navigationBar: some View {
        HStack {
            Button("Zurück") { model.goTo(.welcome) }
                .buttonStyle(.bordered)
            Spacer()
            Button("Supervisieren starten →") { model.advance() }
                .buttonStyle(.borderedProminent)
                .disabled(!allChecked)
        }
    }
}
