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

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

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

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


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

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

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

module.exports = {
  getAllArtigosPorGrupo,
  getArtigoPorGrupoById,
  createArtigoPorGrupo,
  updateArtigoPorGrupo,
  deleteArtigoPorGrupo,
};
