'use client' import React, { useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { useSDK } from '@/lib/sdk' import { CourseCategory, COURSE_CATEGORY_INFO, CreateCourseRequest, GenerateCourseRequest } from '@/lib/sdk/academy/types' import { createCourse, generateCourse } from '@/lib/sdk/academy/api' import { getModules } from '@/lib/sdk/training/api' import type { TrainingModule } from '@/lib/sdk/training/types' type CreationMode = 'manual' | 'ai' export default function NewCoursePage() { const router = useRouter() const [mode, setMode] = useState('ai') const [isLoading, setIsLoading] = useState(false) const [error, setError] = useState(null) // Manual form state const [title, setTitle] = useState('') const [description, setDescription] = useState('') const [category, setCategory] = useState('dsgvo_basics') const [duration, setDuration] = useState(60) const [passingScore, setPassingScore] = useState(70) // AI generation state - module selection const [trainingModules, setTrainingModules] = useState([]) const [selectedModuleId, setSelectedModuleId] = useState('') const [modulesLoading, setModulesLoading] = useState(true) // Load training modules on mount useEffect(() => { async function loadModules() { setModulesLoading(true) try { const res = await getModules() setTrainingModules(res.modules || []) } catch { setError('Training-Module konnten nicht geladen werden.') } finally { setModulesLoading(false) } } loadModules() }, []) const handleManualCreate = async () => { if (!title.trim()) { setError('Bitte geben Sie einen Kurstitel ein.') return } setIsLoading(true) setError(null) try { const tenantId = typeof window !== 'undefined' ? localStorage.getItem('bp_tenant_id') || 'default-tenant' : 'default-tenant' const result = await createCourse({ tenantId, title: title.trim(), description: description.trim(), category, durationMinutes: duration, passingScore, requiredForRoles: ['all'] } as any) // Navigate to the new course if (result && (result as any).id) { router.push(`/sdk/academy/${(result as any).id}`) } else { router.push('/sdk/academy') } } catch (err: any) { setError(err.message || 'Fehler beim Erstellen des Kurses') } finally { setIsLoading(false) } } const handleAIGenerate = async () => { if (!selectedModuleId) { setError('Bitte waehlen Sie ein Training-Modul aus.') return } setIsLoading(true) setError(null) try { const result = await generateCourse({ moduleId: selectedModuleId, }) if (result && result.course && result.course.id) { router.push(`/sdk/academy/${result.course.id}`) } else { router.push('/sdk/academy') } } catch (err: any) { setError(err.message || 'Fehler bei der KI-Generierung') } finally { setIsLoading(false) } } return (
{/* Header */}

Neuen Kurs erstellen

Erstellen Sie einen Compliance-Schulungskurs manuell oder lassen Sie ihn von der KI generieren.

{/* Mode Toggle */}
{/* Error Message */} {error && (

{error}

)} {/* AI Generation Form */} {mode === 'ai' && (

Kurs aus Training-Modul generieren

Waehlen Sie ein bestehendes Training-Modul aus. Der Academy-Kurs wird automatisch mit den generierten Inhalten und Quizfragen erstellt.

{/* Module Selection */} {modulesLoading ? (
Training-Module werden geladen...
) : trainingModules.length === 0 ? (

Keine Training-Module gefunden.

Bitte erstellen Sie zuerst Module unter Schulung > Module.

) : (

Module mit bestehendem Kurs werden beim Generieren uebersprungen oder neu verknuepft.

{trainingModules.map((mod) => ( ))}
)} {/* Submit */}
Abbrechen
)} {/* Manual Creation Form */} {mode === 'manual' && (
{/* Title */}
setTitle(e.target.value)} placeholder="z.B. DSGVO-Grundlagen fuer Mitarbeiter" className="w-full px-4 py-3 border border-gray-300 rounded-xl focus:ring-2 focus:ring-purple-500 focus:border-purple-500 text-base" />
{/* Description */}