'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