Files
mercado.clube67.com/backend/controllers/recorrenteController.js
T

80 lines
2.7 KiB
JavaScript

'use strict'
const PedidoRecorrente = require('../models/PedidoRecorrente')
const Cotacao = require('../models/Cotacao')
const Produto = require('../models/Produto')
const TENANT_ID = parseInt(process.env.TENANT_ID || '1', 10)
module.exports = {
/** GET /api/recorrentes — lista do usuário logado */
async list(req, res) {
try {
const rows = await PedidoRecorrente.listByUser(req.user.id, TENANT_ID)
res.json(rows)
} catch (e) {
console.error('[recorrente.list]', e.message)
res.status(500).json({ error: 'Erro ao listar pedidos recorrentes' })
}
},
/** POST /api/recorrentes */
async create(req, res) {
try {
const { nome, itens, frequencia, proximo_em, cliente_id } = req.body
if (!itens?.length) return res.status(400).json({ error: 'Informe ao menos um item' })
if (!proximo_em) return res.status(400).json({ error: 'Informe a data do primeiro pedido' })
const rec = await PedidoRecorrente.create({
tenant_id: TENANT_ID,
user_id: req.user.id,
cliente_id: cliente_id || null,
nome: nome || 'Pedido Recorrente',
itens,
frequencia: frequencia || 'mensal',
proximo_em,
})
res.status(201).json(rec)
} catch (e) {
console.error('[recorrente.create]', e.message)
res.status(500).json({ error: 'Erro ao criar pedido recorrente' })
}
},
/** PUT /api/recorrentes/:id */
async update(req, res) {
try {
const { nome, itens, frequencia, proximo_em, pausado } = req.body
await PedidoRecorrente.update(req.params.id, req.user.id, { nome, itens, frequencia, proximo_em, pausado })
res.json({ ok: true })
} catch (e) {
console.error('[recorrente.update]', e.message)
res.status(500).json({ error: 'Erro ao atualizar pedido recorrente' })
}
},
/** PATCH /api/recorrentes/:id/pausa */
async togglePausa(req, res) {
try {
const rec = await PedidoRecorrente.findById(req.params.id, req.user.id)
if (!rec) return res.status(404).json({ error: 'Não encontrado' })
await PedidoRecorrente.togglePausa(req.params.id, req.user.id, !rec.pausado)
res.json({ pausado: !rec.pausado })
} catch (e) {
console.error('[recorrente.togglePausa]', e.message)
res.status(500).json({ error: 'Erro ao pausar/retomar' })
}
},
/** DELETE /api/recorrentes/:id */
async remove(req, res) {
try {
await PedidoRecorrente.remove(req.params.id, req.user.id)
res.json({ ok: true })
} catch (e) {
console.error('[recorrente.remove]', e.message)
res.status(500).json({ error: 'Erro ao remover pedido recorrente' })
}
},
}