'use client'

import React from 'react'
import { useRouter } from 'next/navigation'
import { useTOMGenerator } from '@/lib/sdk/tom-generator'
import { ReviewExportStep } from '@/components/sdk/tom-generator/steps/ReviewExportStep'
import { TOM_GENERATOR_STEPS } from '@/lib/sdk/tom-generator/types'

/**
 * Step 6: Review & Export
 *
 * Final step including:
 * - Summary of all steps
 * - Derived TOMs table
 * - Gap analysis visualization
 * - Evidence Vault overview
 * - Export (Word/PDF/JSON/ZIP)
 */
export default function ReviewPage() {
  const router = useRouter()
  const { state, goToPreviousStep } = useTOMGenerator()

  const currentStepIndex = TOM_GENERATOR_STEPS.findIndex((s) => s.id === 'review-export')
  const prevStep = TOM_GENERATOR_STEPS[currentStepIndex - 1]

  const handleBack = () => {
    goToPreviousStep()
    if (prevStep) {
      router.push(prevStep.url)
    }
  }

  // Check if all previous steps are completed
  const allPreviousStepsCompleted = TOM_GENERATOR_STEPS
    .slice(0, currentStepIndex)
    .every((step) => {
      const stepState = state.steps.find((s) => s.id === step.id)
      return stepState?.completed
    })

  return (
    <div className="max-w-5xl mx-auto px-4 py-8">
      {/* Step Header */}
      <div className="mb-8">
        <div className="flex items-center gap-2 text-sm text-gray-500 mb-2">
          <span>Schritt 6 von 6</span>
          <span className="text-gray-300">|</span>
          <span>Review & Export</span>
        </div>
        <h1 className="text-2xl font-bold text-gray-900">
          Zusammenfassung & Export
        </h1>
        <p className="mt-2 text-gray-600">
          Pruefen Sie Ihre abgeleiteten TOMs, analysieren Sie Luecken und exportieren
          Sie Ihre Dokumentation in verschiedenen Formaten.
        </p>
      </div>

      {/* Progress Indicator */}
      <div className="mb-8">
        <div className="flex items-center gap-2">
          {TOM_GENERATOR_STEPS.map((step, index) => {
            const stepState = state.steps.find((s) => s.id === step.id)
            const isCompleted = stepState?.completed
            const isCurrent = state.currentStep === step.id

            return (
              <React.Fragment key={step.id}>
                <button
                  onClick={() => router.push(step.url)}
                  className={`w-8 h-8 rounded-full flex items-center justify-center text-sm font-medium transition-all ${
                    isCompleted
                      ? 'bg-green-500 text-white'
                      : isCurrent
                        ? 'bg-blue-500 text-white'
                        : 'bg-gray-200 text-gray-500 hover:bg-gray-300'
                  }`}
                  title={step.name}
                >
                  {isCompleted ? (
                    <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                      <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
                    </svg>
                  ) : (
                    index + 1
                  )}
                </button>
                {index < TOM_GENERATOR_STEPS.length - 1 && (
                  <div
                    className={`flex-1 h-1 rounded ${
                      isCompleted ? 'bg-green-500' : 'bg-gray-200'
                    }`}
                  />
                )}
              </React.Fragment>
            )
          })}
        </div>
      </div>

      {/* Warning if previous steps not completed */}
      {!allPreviousStepsCompleted && (
        <div className="mb-6 p-4 bg-yellow-50 rounded-lg border border-yellow-200">
          <div className="flex gap-3">
            <svg className="w-5 h-5 text-yellow-600 flex-shrink-0 mt-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
              <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
            </svg>
            <div>
              <div className="font-medium text-yellow-900">Nicht alle Schritte abgeschlossen</div>
              <p className="text-sm text-yellow-700 mt-1">
                Bitte schliessen Sie alle vorherigen Schritte ab, um eine vollstaendige TOM-Dokumentation
                zu generieren. Fehlende Informationen fuehren zu unvollstaendigen Empfehlungen.
              </p>
            </div>
          </div>
        </div>
      )}

      {/* Step Content */}
      <div className="bg-white rounded-xl border border-gray-200 p-6">
        <ReviewExportStep />
      </div>

      {/* Navigation */}
      <div className="flex justify-between mt-6">
        <button
          onClick={handleBack}
          className="px-4 py-2 text-gray-600 hover:text-gray-900 transition-colors flex items-center gap-2"
        >
          <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M15 19l-7-7 7-7" />
          </svg>
          Zurueck
        </button>
        <button
          onClick={() => router.push('/sdk/tom-generator')}
          className="px-6 py-2 bg-green-600 text-white rounded-lg hover:bg-green-700 transition-colors flex items-center gap-2"
        >
          <svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
            <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
          </svg>
          Abschliessen
        </button>
      </div>
    </div>
  )
}
