import { Injectable } from '@nestjs/common';
import { PrismaService } from '../../prisma/prisma.service';
import { ActualizarCarteraConfigDto } from '../dto/cartera-config.dto';

@Injectable()
export class CarteraConfigService {
  constructor(private readonly prisma: PrismaService) {}

  /**
   * Devuelve la config operativa, creándola con defaults si todavía no existe.
   * Si el usuario llegó hasta acá es porque su suscripción tiene el submódulo
   * COB_CARTERA_INTELIGENTE habilitado (el ModuleGuard + PermissionGuard ya
   * validaron) — la config interna es solo "modo operativo + fuente default".
   */
  async getOrCreate(empresa_id: string) {
    return this.prisma.tenant_cartera_config.upsert({
      where: { empresa_id },
      create: { empresa_id },
      update: {},
    });
  }

  async completarOnboarding(empresa_id: string) {
    return this.prisma.tenant_cartera_config.upsert({
      where: { empresa_id },
      create: { empresa_id, onboarding_completado_en: new Date() },
      update: { onboarding_completado_en: new Date() },
    });
  }

  async actualizar(empresa_id: string, dto: ActualizarCarteraConfigDto) {
    return this.prisma.tenant_cartera_config.upsert({
      where: { empresa_id },
      create: {
        empresa_id,
        modo_operativo: dto.modo_operativo ?? 'operacional',
        fuente_default: dto.fuente_default ?? 'erp-novasis',
        recomendaciones_auto_activas: dto.recomendaciones_auto_activas ?? false,
        recomendaciones_auto_hora: dto.recomendaciones_auto_hora ?? 7,
      },
      update: {
        modo_operativo: dto.modo_operativo ?? undefined,
        fuente_default: dto.fuente_default ?? undefined,
        recomendaciones_auto_activas: dto.recomendaciones_auto_activas ?? undefined,
        recomendaciones_auto_hora: dto.recomendaciones_auto_hora ?? undefined,
        marca_nombre: dto.marca_nombre ?? undefined,
        marca_logo_url: dto.marca_logo_url ?? undefined,
        marca_color_primario: dto.marca_color_primario ?? undefined,
      },
    });
  }
}
