Untitled

 avatar
unknown
plain_text
10 days ago
2.9 kB
2
Indexable
require("dotenv").config();
const axios = require("axios");
const { getJadwalMahasiswa } = require("../models/graphqlModel");

const GRAPHQL_UNIRA_URL = process.env.GRAPHQL_UNIRA_URL;
const GRAPHQL_SILAB_URL = process.env.GRAPHQL_SILAB_URL;

const fetchTahunAkademik = async () => {
  const query = `
    query {
      tahunAkademik2(sort: "-nama", active: true) {
        tahunAkademik {
          id
          nama
          semester
        }
      }
    }
  `;
  // contoh response = { data: { tahunAkademik2: { tahunAkademik: [ { id: 1, nama: '2021', semester: '1' } ] } } }

  try {
    const response = await axios.post(
      GRAPHQL_UNIRA_URL,
      { query },
      {
        headers: {
          "Content-Type": "application/json"
        },
      }
    );

    // 🔹 Pastikan data ada sebelum mengaksesnya
    const tahunAkademikData =
      response.data?.data?.tahunAkademik2?.tahunAkademik;

    if (!tahunAkademikData || tahunAkademikData.length === 0) {
      console.error("Error: Data Tahun Akademik kosong atau tidak ditemukan");
      return null;
    }
    return tahunAkademikData;
  } catch (error) {
    console.error("Error fetching Tahun Akademik:", error.message);
    return null;
  }
};

const fetchJadwal = async (nim, tahunAkademik, semester) => {
  const query = `
      query getJadwalSaya($nim: Int, $tahunAkademik: Int, $semester: Int) {
        getKrs(nim: $nim, tahunAkademik: $tahunAkademik, semester: $semester) {
          id
          nama_mahasiswa
          jadwal_praktikum {
            id_krs
            nama_matakuliah
            pengajar {
              nama_pengajar
            }
            hari
            jam_mulai
            jam_selesai
            ruang {
              nama_ruang
            }
          }
        }
      }
    `;

  try {
    const response = await axios(
      {
        method: "POST",
        url: GRAPHQL_SILAB_URL,
        data: { query, variables: { nim: parseInt(nim)} }, // tahun akademik ngambil dat dari data tahun akademik (nama)
      }
    );
    return response.data.data.getKrs || [];
  } catch (error) {
    console.error("Error fetching Jadwal:", error.message);
    return null;
  }
};

const jadwalController = async (req, res) => {
  // const { nim, tahunAkademik, semester } = req.body; // Data dikirim melalui body (POST)
  const nim = 2021520030;
  const tahunAkademik = 2223;
  const semester = 2;
  if (!nim || !tahunAkademik || !semester) {
    return res
      .status(400)
      .json({ error: "Harap masukkan NIM, tahun akademik, dan semester" });
  }

  const jadwal = await getJadwalMahasiswa(nim, tahunAkademik, semester);
  console.log ("jadwal: ",jadwal)

  if (!jadwal) {
    return res.status(500).json({ error: "Gagal mengambil data jadwal." });
  }

  res.json({ mahasiswa: jadwal }); // Mengembalikan data dalam bentuk JSON
};

module.exports = { fetchTahunAkademik, fetchJadwal, jadwalController };
Leave a Comment