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

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

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

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


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

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

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

module.exports = {
  getAllEmpresas,
  getEmpresaById,
  createEmpresa,
  updateEmpresa,
  deleteEmpresa,
};
