const btcModel = require('../models/btcModel');

/**
 * GET /btcvalues
 */
const getAllBtcValues = (req, res) => {
  btcModel.getAllBtcValues((err, rows) => {
    if (err) {
      return res.status(500).json({ error: 'Erro ao buscar valores da BTC.' });
    }
    return res.json(rows); // Array de btcvalues
  });
};

/**
 * GET /btcvalues/:id
 */
const getBtcValueById = (req, res) => {
  const btc_value_id = parseInt(req.params.id, 10);

  if (isNaN(btc_value_id)) {
    return res.status(400).json({ error: 'ID inválido.' });
  }

  btcModel.getBtcValueById(btc_value_id, (err, row) => {
    if (err) {
      return res.status(500).json({ error: 'Erro ao buscar valor da BTC.' });
    }
    if (!row) {
      return res.status(404).json({ error: 'Valor não encontrado.' });
    }
    return res.json(row);
  });
};

/**
 * GET /btcvalues/date/:date
 * Para buscar valor de BTC pela data
 */
const getBtcValueByDate = (req, res) => {
  const { date } = req.params; // A data será passada na URL

  // Verificar se a data é válida
  if (!date || isNaN(Date.parse(date))) {
    return res.status(400).json({ error: 'Data inválida.' });
  }

  btcModel.getBtcValueByDate(date, (err, row) => {
    if (err) {
      return res.status(500).json({ error: 'Erro ao buscar valor da BTC por data.' });
    }
    if (!row) {
      return res.status(404).json({ error: 'Valor não encontrado para essa data.' });
    }
    return res.json(row);
  });
};

module.exports = {
  getAllBtcValues,
  getBtcValueById,
  getBtcValueByDate
};
