const usersTable = document.getElementById("usersTable"); const teacherSelect = document.getElementById("teacherSelect"); const studentSelect = document.getElementById("studentSelect"); const coursesTable = document.getElementById("coursesTable"); const courseSelect = document.getElementById("courseSelect"); const enrollmentsTable = document.getElementById("enrollmentsTable"); // --- USERS --- async function fetchUsers() { // Added slash: /users/ const res = await fetch("/users/"); const users = await res.json(); usersTable.innerHTML = `IDNameEmailRoleAction`; teacherSelect.innerHTML = ``; studentSelect.innerHTML = ``; users.forEach(u => { usersTable.innerHTML += ` ${u.id} ${u.name} ${u.email} ${u.role} `; if (u.role === "Teacher") teacherSelect.innerHTML += ``; if (u.role === "Student") studentSelect.innerHTML += ``; }); } async function addUser() { const name = document.getElementById("name").value; const email = document.getElementById("email").value; const role = document.getElementById("role").value; if(!name || !email) return alert("Fill details"); // Added slash: /users/ await fetch("/users/", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ name, email, role }) }); fetchUsers(); } async function deleteUser(id) { if(!confirm("Are you sure? This will delete their courses/enrollments too.")) return; // Added slash: /users/${id}/ await fetch(`/users/${id}/`, { method: "DELETE" }); fetchUsers(); fetchCourses(); fetchEnrollments(); } // --- COURSES --- async function fetchCourses() { // Added slash: /courses/ const res = await fetch("/courses/"); const courses = await res.json(); coursesTable.innerHTML = `IDTitleTeacherAction`; courseSelect.innerHTML = ``; courses.forEach(c => { coursesTable.innerHTML += ` ${c.id} ${c.title} ${c.teacher} `; courseSelect.innerHTML += ``; }); } async function createCourse() { const title = document.getElementById("courseTitle").value; const teacher_id = teacherSelect.value; if (!title.trim()) return alert("Title required"); // Added slash: /courses/ await fetch("/courses/", { method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ title, teacher_id }) }); fetchCourses(); } async function deleteCourse(id) { if(!confirm("Delete this course?")) return; // Added slash: /courses/${id}/ await fetch(`/courses/${id}/`, { method: "DELETE" }); fetchCourses(); fetchEnrollments(); } // --- ENROLLMENTS --- async function fetchEnrollments() { // Added slash: /enrollments/ const res = await fetch("/enrollments/"); const data = await res.json(); enrollmentsTable.innerHTML = `StudentCourseTeacherAction`; data.forEach(e => { enrollmentsTable.innerHTML += ` ${e.student} ${e.course} ${e.teacher} `; }); } async function enrollStudent() { const s_id = studentSelect.value; const c_id = courseSelect.value; // Added slash before query params: /enrollments/?... await fetch(`/enrollments/?student_id=${s_id}&course_id=${c_id}`, { method: "POST" }); fetchEnrollments(); } async function deleteEnrollment(id) { // Added slash: /enrollments/${id}/ await fetch(`/enrollments/${id}/`, { method: "DELETE" }); fetchEnrollments(); } fetchUsers(); fetchCourses(); fetchEnrollments();