﻿import { NextRequest, NextResponse } from 'next/server';
import { prisma } from '@/lib/prisma';

export async function GET(request: NextRequest) {
  try {
    const { searchParams } = new URL(request.url);
    const employeeId = searchParams.get('employeeId');
    
    let programs = await prisma.trainingProgram.findMany({
      orderBy: { startDate: 'asc' }
    });
    
    if (employeeId) {
      const enrollments = await prisma.trainingEnrollment.findMany({
        where: { employeeId }
      });
      
      programs = programs.map(p => ({
        ...p,
        isEnrolled: enrollments.some(e => e.programId === p.id),
        enrollmentStatus: enrollments.find(e => e.programId === p.id)?.completionStatus || null
      }));
    }
    
    return NextResponse.json(programs);
  } catch (error) {
    console.error('Error fetching training programs:', error);
    return NextResponse.json({ error: 'Failed to fetch training programs' }, { status: 500 });
  }
}

export async function POST(request: NextRequest) {
  try {
    const body = await request.json();
    
    const program = await prisma.trainingProgram.create({
      data: {
        title: body.title,
        dept: body.dept,
        trainer: body.trainer,
        mode: body.mode,
        cost: body.cost,
        capacity: body.capacity,
        enrolled: body.enrolled || 0,
        startDate: new Date(body.startDate),
        endDate: new Date(body.endDate),
        status: body.status || 'Upcoming',
        venue: body.venue,
        description: body.description,
        objectives: body.objectives || '[]',
      }
    });
    
    return NextResponse.json(program, { status: 201 });
  } catch (error) {
    console.error('Error creating training program:', error);
    return NextResponse.json({ error: 'Failed to create training program' }, { status: 500 });
  }
}
