import { NextRequest, NextResponse } from "next/server";
import dashboardService from "@/services/dashboardService";

export const runtime = 'edge';

export async function GET(request: NextRequest) {
  try {
    const { searchParams } = new URL(request.url);
    const userRole = searchParams.get("userRole") || "";
    const empresaId = searchParams.get("empresaId");
    const type = searchParams.get("type") || "stats"; // 'stats', 'activities', 'pending'

    console.log(
      `📊 [API Dashboard] Requisição recebida - Role: ${userRole}, Empresa: ${empresaId}, Type: ${type}`
    );

    if (!userRole) {
      return NextResponse.json(
        {
          success: false,
          error: "Role do usuário é obrigatório",
        },
        { status: 400 }
      );
    }

    let data;

    switch (type) {
      case "stats":
        data = await dashboardService.obterEstatisticas(
          userRole,
          empresaId || undefined
        );
        break;

      case "activities":
        data = await dashboardService.obterAtividadesRecentes(
          userRole,
          empresaId || undefined
        );
        break;

      case "pending":
        data = await dashboardService.obterPedidosPendentes(
          userRole,
          empresaId || undefined
        );
        break;

      default:
        return NextResponse.json(
          {
            success: false,
            error: "Tipo de dados inválido",
          },
          { status: 400 }
        );
    }

    console.log(`✅ [API Dashboard] Dados obtidos com sucesso:`, {
      type,
      dataCount: Array.isArray(data) ? data.length : "object",
    });

    return NextResponse.json({
      success: true,
      data,
    });
  } catch (error) {
    console.error("❌ [API Dashboard] Erro interno:", error);

    return NextResponse.json(
      {
        success: false,
        error: "Erro interno do servidor",
        details: process.env.NODE_ENV === "development" ? error : undefined,
      },
      { status: 500 }
    );
  }
}

export async function POST(request: NextRequest) {
  try {
    const body = await request.json();
    const { userRole, empresaId, action } = body;

    console.log(
      `📊 [API Dashboard POST] Ação recebida - Role: ${userRole}, Empresa: ${empresaId}, Action: ${action}`
    );

    // Aqui podemos adicionar ações específicas como refresh de cache, etc.
    switch (action) {
      case "refresh":
        // Implementar refresh de dados se necessário
        return NextResponse.json({
          success: true,
          message: "Dados atualizados com sucesso",
        });

      default:
        return NextResponse.json(
          {
            success: false,
            error: "Ação não suportada",
          },
          { status: 400 }
        );
    }
  } catch (error) {
    console.error("❌ [API Dashboard POST] Erro interno:", error);

    return NextResponse.json(
      {
        success: false,
        error: "Erro interno do servidor",
        details: process.env.NODE_ENV === "development" ? error : undefined,
      },
      { status: 500 }
    );
  }
}
