'use strict' const Promotion = require('../models/Promotion') const promotionsController = { async getAll(req, res) { try { const promotions = await Promotion.findAllActive(req.tenant?.id) return res.json(promotions) } catch (error) { return res.status(500).json({ error: 'Erro interno' }) } }, async getAllAdmin(req, res) { try { const promotions = await Promotion.findAll(req.tenant?.id) return res.json(promotions) } catch (error) { return res.status(500).json({ error: 'Erro interno' }) } }, async create(req, res) { try { const { nome, descricao, preco_original, preco_promocional, imagem } = req.body if (!nome || !preco_promocional) { return res.status(400).json({ error: 'Nome e preço promocional são obrigatórios' }) } const result = await Promotion.create({ nome, descricao, preco_original: parseFloat(preco_original) || null, preco_promocional: parseFloat(preco_promocional), imagem: imagem || '', tenant_id: req.tenant?.id || 1, }) return res.json({ success: true, id: result.lastInsertRowid }) } catch (error) { console.error('Erro ao criar promoção:', error) return res.status(500).json({ error: 'Erro interno' }) } }, async update(req, res) { try { const { id } = req.params const { nome, descricao, preco_original, preco_promocional, imagem, ativo } = req.body await Promotion.update(id, { nome, descricao, preco_original: parseFloat(preco_original) || null, preco_promocional: parseFloat(preco_promocional), imagem: imagem || '', ativo: ativo !== undefined ? ativo : true, }) return res.json({ success: true }) } catch (error) { return res.status(500).json({ error: 'Erro interno' }) } }, async deletePromotion(req, res) { try { await Promotion.deleteById(req.params.id) return res.json({ success: true }) } catch (error) { return res.status(500).json({ error: 'Erro interno' }) } }, // Resumo para o Cérebro do WhatsApp (PROMO-07) async getActiveSummary(req, res) { try { const promos = await Promotion.findAllActive(req.tenant?.id) const summary = promos.map(p => ({ id: p.id, nome: p.nome, descricao: p.descricao, preco_original: p.preco_original, preco_promocional: p.preco_promocional, desconto_pct: p.preco_original ? Math.round((1 - p.preco_promocional / p.preco_original) * 100) : null, })) return res.json({ total: summary.length, promocoes: summary }) } catch (error) { return res.status(500).json({ error: 'Erro interno' }) } }, } module.exports = promotionsController