import { getServerSession } from 'next-auth';
import { authOptions } from '@/lib/auth';
import { guildSettings } from '@/lib/db';
import { NextResponse } from 'next/server';

export async function GET(_: Request, { params }: { params: Promise<{ guildId: string }> }) {
  const session = await getServerSession(authOptions);
  if (!session) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });

  const { guildId } = await params;
  const settings = guildSettings.getOrCreate(guildId);
  return NextResponse.json(settings);
}

export async function POST(req: Request, { params }: { params: Promise<{ guildId: string }> }) {
  const session = await getServerSession(authOptions);
  if (!session) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });

  const { guildId } = await params;
  const data = await req.json();

  guildSettings.getOrCreate(guildId);
  guildSettings.update(guildId, {
    ticket_category_id: data.ticket_category_id || null,
    log_channel_id: data.log_channel_id || null,
    transcript_channel_id: data.transcript_channel_id || null,
    intimation_channel_id: data.intimation_channel_id || null,
    intimation_log_channel_id: data.intimation_log_channel_id || null,
    exonerated_role_id: data.exonerated_role_id || null,
    exoneration_channel_id: data.exoneration_channel_id || null,
    exoneration_log_channel_id: data.exoneration_log_channel_id || null,
    exoneration_role_ids: data.exoneration_role_ids || '[]',
    warning_channel_id: data.warning_channel_id || null,
    warning_log_channel_id: data.warning_log_channel_id || null,
    warning_expired_channel_id: data.warning_expired_channel_id || null,
    warning_role_ids: data.warning_role_ids || '[]',
    blacklist_role_id: data.blacklist_role_id || null,
    blacklist_channel_id: data.blacklist_channel_id || null,
    blacklist_log_channel_id: data.blacklist_log_channel_id || null,
    blacklist_role_ids: data.blacklist_role_ids || '[]',
    ticket_message: data.ticket_message || '',
    ticket_embed_color: data.ticket_embed_color || '#5865F2',
    // Licenças
    leave_approval_channel_id: data.leave_approval_channel_id || null,
    leave_expired_channel_id: data.leave_expired_channel_id || null,
    leave_log_channel_id: data.leave_log_channel_id || null,
    leave_role_id: data.leave_role_id || null,
    leave_approver_role_ids: data.leave_approver_role_ids || '[]',
    leave_embed_title: data.leave_embed_title || null,
    leave_embed_description: data.leave_embed_description || null,
    leave_embed_color: data.leave_embed_color || null,
    leave_thumbnail: data.leave_thumbnail || null,
    leave_image: data.leave_image || null,
    // Recrutamento
    recruitment_approval_channel_id: data.recruitment_approval_channel_id || null,
    recruitment_log_channel_id: data.recruitment_log_channel_id || null,
    recruitment_title: data.recruitment_title || null,
    recruitment_description: data.recruitment_description || null,
    recruitment_embed_color: data.recruitment_embed_color || null,
    recruitment_thumbnail: data.recruitment_thumbnail || null,
    recruitment_image: data.recruitment_image || null,
    // Cursos
    course_channel_id: data.course_channel_id || null,
    course_log_channel_id: data.course_log_channel_id || null,
    course_register_channel_id: data.course_register_channel_id || null,
    course_instructor_role_ids: data.course_instructor_role_ids || '[]',
    course_embed_title: data.course_embed_title || null,
    course_embed_description: data.course_embed_description || null,
    course_embed_color: data.course_embed_color || null,
    course_thumbnail: data.course_thumbnail || null,
    course_image: data.course_image || null,
    course_mention_role_id: data.course_mention_role_id || null,
    // Patrulha
    patrol_generator_channel_id: data.patrol_generator_channel_id || null,
    patrol_category_id: data.patrol_category_id || null,
    patrol_log_channel_id: data.patrol_log_channel_id || null,
    patrol_channel_name: data.patrol_channel_name || null
  });

  return NextResponse.json({ success: true });
}
