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 = `
| ID | Name | Email | Role | Action |
`;
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 = `| ID | Title | Teacher | Action |
`;
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 = `| Student | Course | Teacher | Action |
`;
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();