import { NextResponse } from 'next/server';
import mongoose from 'mongoose';
import connectToDatabase from '@/lib/db';
import FeedbackModel from '@/lib/models/feedback';

export const runtime = 'nodejs';

export async function POST(request: Request) {
  try {
    const body = await request.json();
    const { name, email, type, tool, rating, message } = body;
    const normalizedRating = typeof rating === 'number' ? rating : Number(rating);

    if (!Number.isInteger(normalizedRating) || normalizedRating < 1 || normalizedRating > 5) {
      return NextResponse.json(
        { error: 'Rating must be an integer between 1 and 5.' },
        { status: 400 }
      );
    }

    // Connect to database
    await connectToDatabase();

    // Initialize model
    const Feedback = mongoose.models.feedbacks || FeedbackModel(mongoose);

    // Create feedback document using the exact schema fields
    const newFeedback = new Feedback({
      rating: normalizedRating,
      feedbackComment: `Name: ${typeof name === 'string' && name.trim() ? name.trim() : 'N/A'}\nEmail: ${typeof email === 'string' && email.trim() ? email.trim() : 'N/A'}\nType: ${typeof type === 'string' && type.trim() ? type.trim() : 'N/A'}\nTool: ${typeof tool === 'string' && tool.trim() ? tool.trim() : 'N/A'}\n\nComment:\n${typeof message === 'string' ? message.trim() : ''}`,
      // userId, companyId, documentId are optional in schema, so we can omit them
      // feedbackDate is auto-generated
    });

    await newFeedback.save();

    return NextResponse.json({ success: true, message: 'Feedback saved successfully.' }, { status: 200 });
  } catch (error) {
    console.error('Error saving feedback:', error);
    return NextResponse.json(
      { error: 'Failed to save feedback. Please try again later.' },
      { status: 500 }
    );
  }
}
