Untitled
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