import { DocumentBuilder } from '@nestjs/swagger';

/**
 * Swagger/OpenAPI Configuration for Platform Marketing Content
 */
export const swaggerConfig = new DocumentBuilder()
  .setTitle('Platform Marketing Content API')
  .setDescription(`
    API para la plataforma SaaS de generación de contenido y CRM creativo.

    ## Características principales
    - Autenticación JWT multi-tenant
    - Gestión de clientes, marcas y productos (CRM)
    - Proyectos y campañas de marketing
    - Generación de contenido con IA
    - Biblioteca de assets multimedia
    - Automatización de flujos de trabajo
    - Analytics y métricas de rendimiento

    ## Autenticación
    Todos los endpoints requieren autenticación mediante Bearer Token (JWT).
    El sistema es multi-tenant, cada usuario pertenece a un tenant específico.

    ## Multi-tenant
    El tenant se identifica automáticamente desde el usuario autenticado.
    Todos los datos están aislados por tenant.
  `)
  .setVersion('1.0.0')
  .setContact(
    'PMC Support',
    'https://platformmc.com',
    'support@platformmc.com',
  )
  .setLicense('Proprietary', '')
  .addServer('http://localhost:3000', 'Desarrollo local')
  .addServer('https://api.platformmc.com', 'Producción')

  // Authentication
  .addBearerAuth(
    {
      type: 'http',
      scheme: 'bearer',
      bearerFormat: 'JWT',
      name: 'Authorization',
      description: 'JWT token obtenido del endpoint de login',
      in: 'header',
    },
    'JWT-auth',
  )

  // Tags organized by functional area
  .addTag('Auth', 'Autenticación y sesiones de usuario')
  .addTag('Tenants', 'Gestión de tenants (organizaciones)')
  .addTag('CRM', 'CRM - Clientes, marcas y productos')
  .addTag('Projects', 'Proyectos y campañas de marketing')
  .addTag('Generation', 'Generación de contenido con IA')
  .addTag('Assets', 'Biblioteca de assets y archivos multimedia')
  .addTag('Automation', 'Flujos de trabajo y automatización')
  .addTag('Analytics', 'Métricas, reportes y análisis de rendimiento')
  .addTag('Templates', 'Plantillas de contenido y diseño')
  .addTag('Collaboration', 'Colaboración y comentarios en tiempo real')
  .addTag('Health', 'Health checks y monitoreo del sistema')

  .build();

// Swagger UI options
export const swaggerUiOptions = {
  customSiteTitle: 'Platform Marketing Content - API Documentation',
  customCss: `
    .swagger-ui .topbar { display: none }
    .swagger-ui .info { margin: 50px 0; }
    .swagger-ui .info .title { font-size: 36px; }
  `,
  swaggerOptions: {
    persistAuthorization: true,
    docExpansion: 'none',
    filter: true,
    showRequestDuration: true,
    displayRequestDuration: true,
    tagsSorter: 'alpha',
    operationsSorter: 'alpha',
  },
};
