const spcoImportInfoService = require("../services/spcoImportInfoService");
const { sequelize } = require("../models");

// exports.getAllImportInfo = async (req, res) => {
//   try {
//     const importInfo = await spcoImportInfoService.getAllImportInfo();
//     res.status(200).json(importInfo);
//   } catch (error) {
//     res
//       .status(500)
//       .json({ message: "Error fetching data", error: error.message });
//   }
// };

exports.getAllImportInfo = async (req, res) => {
  try {
    // Ambil parameter limit dan page dari request query, atau gunakan nilai default
    const limit = parseInt(req.query.limit) || 10; // Default 10 item per page
    const page = parseInt(req.query.page) || 1; // Default halaman 1

    const offset = (page - 1) * limit; // Hitung offset untuk pagination

    // Panggil service dan tambahkan pagination
    const importInfo = await spcoImportInfoService.getAllImportInfo(
      limit,
      offset
    );

    res.status(200).json({
      data: importInfo.rows, // Data yang diambil
      currentPage: page, // Halaman saat ini
      totalItems: importInfo.count, // Total data
      totalPages: Math.ceil(importInfo.count / limit), // Total halaman
    });
  } catch (error) {
    res
      .status(500)
      .json({ message: "Error fetching data", error: error.message });
  }
};

exports.testRawSQL = async (req, res) => {
  try {
    // Menjalankan SQL mentah untuk melihat data dari tabel
    const results = await sequelize.query(
      "SELECT * FROM SOA_ADM_DASHBOARD.SPCO_IMPORT_INFO",
      {
        type: sequelize.QueryTypes.SELECT, // Menentukan tipe query SELECT
      }
    );

    res.status(200).json(results); // Mengirimkan hasil query ke client
  } catch (err) {
    res
      .status(500)
      .json({ message: "Error executing raw SQL", error: err.message });
  }
};
