'use strict'

const { execute, queryOne, query } = require('../database/postgres')

class CotacaoFlashPromo {
  // Retorna promoção relâmpago ativa agora (com dados do produto se vinculado)
  static getActive(tenantId = 1) {
    return queryOne(
      `SELECT cfp.*, p.nome AS produto_nome, p.sku AS produto_sku, p.preco AS produto_preco
       FROM cotacao_flash_promos cfp
       LEFT JOIN produtos p ON p.id = cfp.produto_id
       WHERE cfp.tenant_id = $1 AND cfp.ativo = TRUE
         AND cfp.starts_at <= NOW() AND cfp.ends_at > NOW()
       ORDER BY cfp.ends_at ASC
       LIMIT 1`,
      [tenantId]
    )
  }

  // Lista todas as flash promos (admin)
  static list(tenantId = 1) {
    return query(
      `SELECT cfp.*, p.nome AS produto_nome
       FROM cotacao_flash_promos cfp
       LEFT JOIN produtos p ON p.id = cfp.produto_id
       WHERE cfp.tenant_id = $1
       ORDER BY cfp.created_at DESC LIMIT 50`,
      [tenantId]
    )
  }

  // Cria nova flash promo
  static create({ tenantId = 1, produtoId, discount_pct, label, duration_minutes }) {
    return execute(
      `INSERT INTO cotacao_flash_promos (tenant_id, produto_id, discount_pct, label, ends_at)
       VALUES ($1, $2, $3, $4, NOW() + ($5 * INTERVAL '1 minute'))
       RETURNING *`,
      [tenantId, produtoId || null, parseFloat(discount_pct), label || 'Promoção Relâmpago', parseInt(duration_minutes)]
    )
  }

  // Encerra uma flash promo
  static cancel(id) {
    return execute(`UPDATE cotacao_flash_promos SET ativo=FALSE, ends_at=NOW() WHERE id=$1`, [id])
  }
}

module.exports = CotacaoFlashPromo
