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

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

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

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


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

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

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

module.exports = {
  getAllTamanhosPorArtigo,
  getTamanhoPorArtigoById,
  createTamanhoPorArtigo,
  updateTamanhoPorArtigo,
  deleteTamanhoPorArtigo,
};
