const tipoArtigoService = require("../services/tipoArtigoService");
const logger = require("../utils/logger");

// Controller methods for tipoArtigo operations
const getAllTiposArtigo = async (req, res) => {
  const queryParams = req.query; // Assuming you want to get parameters from the request body

  try {
    const tipoArtigos = await tipoArtigoService.getAllTiposArtigo(queryParams);
    res.json(tipoArtigos);
  } catch (error) {
    logger.error(`Error getting all tipoArtigos: ${error.message}`);
    res.status(500).json({ error: "Internal Server Error" });
  }
};

const getTipoArtigoById = async (req, res) => {
  const { id } = req.params;
  const queryParams = req.body; // Assuming you want to get parameters from the request body
  try {
    const tipoArtigo = await tipoArtigoService.getTipoArtigoById(id, queryParams);
    if (!tipoArtigo) {
      return res.status(404).json({ error: "TipoArtigo not found" });
    }
    res.json(tipoArtigo);
  } catch (error) {
    logger.error(`Error getting tipoArtigo by ID: ${error.message}`);
    res.status(500).json({ error: "Internal Server Error" });
  }
};


const createTipoArtigo = async (req, res) => {
  const { body } = req;
  try {
    const newTipoArtigo = await tipoArtigoService.createTipoArtigo(body);
    res.status(201).json(newTipoArtigo);
  } catch (error) {
    logger.error(`Error creating tipoArtigo: ${error.message}`);
    res.status(500).json({ error: "Internal Server Error" });
  }
};

const updateTipoArtigo = async (req, res) => {
  const { id } = req.params;
  const { body } = req;
  try {
    const updatedTipoArtigo = await tipoArtigoService.updateTipoArtigo(id, body);
    if (!updatedTipoArtigo) {
      return res.status(404).json({ error: "TipoArtigo not found" });
    }
    res.json(updatedTipoArtigo);
  } catch (error) {     
    logger.error(`Error updating tipoArtigo: ${error.message}`);
    res.status(500).json({ error: "Internal Server Error" });
  }
};

const deleteTipoArtigo = async (req, res) => {
  const { id } = req.params;
  try {
    const deletedTipoArtigo = await tipoArtigoService.deleteTipoArtigo(id);
    if (!deletedTipoArtigo) {
      return res.status(404).json({ error: "TipoArtigo not found" });
    }
    res.json({ message: "TipoArtigo deleted successfully" });
  } catch (error) {
    logger.error(`Error deleting tipoArtigo: ${error.message}`);
    res.status(500).json({ error: "Internal Server Error" });
  }
};

module.exports = {
  getAllTiposArtigo,
  getTipoArtigoById,
  createTipoArtigo,
  updateTipoArtigo,
  deleteTipoArtigo,
};
