import { NextRequest, NextResponse } from 'next/server';
import { dbConnect } from '@/lib/dbConnect';
import { Admin } from '@/models/Admin';
import { Student } from '@/models/Student';
import { requireAuth } from '@/lib/auth';

export async function GET(req: NextRequest) {
  const auth = requireAuth(req);
  if (auth instanceof NextResponse) return auth;

  try {
    await dbConnect();
    const { id, role } = auth.user;

    if (role === 'admin' || role === 'super_admin') {
      const admin = await Admin.findById(id);
      if (!admin) {
        return NextResponse.json({ success: false, error: 'Admin account not found' }, { status: 404 });
      }
      return NextResponse.json({
        success: true,
        user: {
          id: admin._id,
          name: admin.name,
          email: admin.email,
          role: admin.role,
          isActive: admin.isActive,
        },
      });
    } else {
      const student = await Student.findById(id);
      if (!student) {
        return NextResponse.json({ success: false, error: 'Student account not found' }, { status: 404 });
      }
      return NextResponse.json({
        success: true,
        user: {
          id: student._id,
          name: student.name,
          email: student.email,
          phoneNumber: student.phoneNumber,
          status: student.status,
          lastLogin: student.lastLogin,
          role: 'student',
        },
      });
    }
  } catch (error: any) {
    return NextResponse.json(
      { success: false, error: error.message || 'Server error fetching user profile' },
      { status: 500 }
    );
  }
}
