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

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

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

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


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

const updateMapaListagem = async (req, res) => {
  const { id } = req.params;
  const { body } = req;
  try {
    const updatedMapaListagem = await mapaListagemService.updateListagemMapa(id, body);
    if (!updatedMapaListagem) {
      return res.status(404).json({ error: "MapaListagem not found" });
    }
    res.json(updatedMapaListagem);
  } catch (error) {     
    logger.error(`Error updating mapaListagem: ${error.message}`);
    res.status(500).json({ error: "Internal Server Error" });
  }
};

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

module.exports = {
  getAllMapasListagem,
  getMapaListagemById,
  createMapaListagem,
  updateMapaListagem,
  deleteMapaListagem,
};
