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

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

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

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


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

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

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

module.exports = {
  getAllMapasFiltros,
  getMapaFiltroById,
  createMapaFiltro,
  updateMapaFiltro,
  deleteMapaFiltro,
};
