Untitled
unknown
plain_text
9 months ago
2.9 kB
5
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 };
Editor is loading...
Leave a Comment