'use strict'

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

class Promotion {
  static findAllActive(tenantId) {
    if (tenantId) return query('SELECT * FROM promotions WHERE ativo = TRUE AND tenant_id=$1 ORDER BY data_criacao DESC', [tenantId])
    return query('SELECT * FROM promotions WHERE ativo = TRUE ORDER BY data_criacao DESC')
  }

  static findAll(tenantId) {
    if (tenantId) return query('SELECT * FROM promotions WHERE tenant_id=$1 ORDER BY data_criacao DESC', [tenantId])
    return query('SELECT * FROM promotions ORDER BY data_criacao DESC')
  }

  static findById(id) {
    return queryOne('SELECT * FROM promotions WHERE id = $1', [id])
  }

  static create({ nome, descricao, preco_original, preco_promocional, imagem, tenant_id }) {
    return execute(
      `INSERT INTO promotions (nome, descricao, preco_original, preco_promocional, imagem, tenant_id, ativo)
       VALUES ($1, $2, $3, $4, $5, $6, TRUE) RETURNING id`,
      [nome, descricao || null, preco_original || null, preco_promocional, imagem || '', tenant_id || 1]
    )
  }

  static update(id, { nome, descricao, preco_original, preco_promocional, imagem, ativo }) {
    return execute(
      `UPDATE promotions
       SET nome=$1, descricao=$2, preco_original=$3, preco_promocional=$4, imagem=$5, ativo=$6
       WHERE id=$7`,
      [nome, descricao || null, preco_original || null, preco_promocional, imagem || '', ativo !== false, id]
    )
  }

  static deleteById(id) {
    return execute('DELETE FROM promotions WHERE id = $1', [id])
  }
}

module.exports = Promotion
