From 7b9b512504b62d85ac5c655ed882fb5f4b21ba0b Mon Sep 17 00:00:00 2001 From: Karume-lab Date: Tue, 11 Jun 2024 03:45:05 +0300 Subject: [PATCH] finish LMS Hackathon --- dashboard.html | 94 ++++++++++++++++++++++++++++++++++---------------- script.js | 56 ++++++++++++++++++++++++++++-- server.js | 52 ++++++++++++++++++++-------- 3 files changed, 155 insertions(+), 47 deletions(-) diff --git a/dashboard.html b/dashboard.html index ba3eb99e..d44e9117 100644 --- a/dashboard.html +++ b/dashboard.html @@ -1,33 +1,67 @@ - - - - Dashboard - - - -
-

Welcome to Your Dashboard

- -
-
-
-

Hello, !

-

Welcome to your personalized dashboard.

-
-
- - - - - + + + + Dashboard + + + + +
+

Welcome to Your Dashboard

+ +
+
+
+

+ Hello, + + ! +

+

Welcome to your personalized dashboard.

+
+

Your Selected Courses

+
    +
    +
    +
    + + + + diff --git a/script.js b/script.js index 7293d9e6..fee27ba3 100644 --- a/script.js +++ b/script.js @@ -3,6 +3,8 @@ document.addEventListener('DOMContentLoaded', () => { const registerForm = document.getElementById('register-form'); const loginForm = document.getElementById('login-form'); const logoutForm = document.getElementById('logout-form'); + const courseSelectionForm = document.getElementById('course-selection-form'); + registerForm.addEventListener('submit', async (e) => { e.preventDefault(); @@ -74,7 +76,7 @@ document.addEventListener('DOMContentLoaded', () => { fetchCourseContent(); } - // Check if the current page is the course content page + // Check if the current page is the course content page if (window.location.pathname === '/leader-board') { // Fetch course content from server fetchLeaderboardData(); @@ -85,6 +87,30 @@ document.addEventListener('DOMContentLoaded', () => { //fetch Logged in user's full name fetchFullName(); } + + courseSelectionForm.addEventListener('submit', async (e) => { + e.preventDefault(); + const formData = new FormData(courseSelectionForm); + const selectedCourses = Array.from(formData.getAll('course')); + + try { + const response = await fetch('/save-courses', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ courses: selectedCourses }) + }); + + if (response.ok) { + alert('Courses saved successfully'); + } else { + alert('Failed to save courses'); + } + } catch (error) { + console.error('Error:', error); + } + }); }); function fetchCourseContent() { @@ -204,4 +230,30 @@ function displayFullName(fullName) { const fullNameElement = document.getElementById('user-fullname'); // Set the inner HTML of the element to the user's full name fullNameElement.textContent = fullName; -} \ No newline at end of file +} + + + +document.addEventListener('DOMContentLoaded', async () => { + try { + const response = await fetch('/user-courses'); + if (response.ok) { + const data = await response.json(); + displaySelectedCourses(data.courses); + } else { + throw new Error('Failed to fetch user courses'); + } + } catch (error) { + console.error('Error:', error); + } +}); + +function displaySelectedCourses(courses) { + const selectedCoursesList = document.getElementById('selected-courses-list'); + selectedCoursesList.innerHTML = ''; + courses.forEach(course => { + const listItem = document.createElement('li'); + listItem.textContent = course; + selectedCoursesList.appendChild(listItem); + }); +} diff --git a/server.js b/server.js index 2b854861..96d02170 100644 --- a/server.js +++ b/server.js @@ -46,17 +46,17 @@ app.get('/', (req, res) => { }); - + // Define a User representation for clarity const User = { - tableName: 'users', - createUser: function(newUser, callback) { + tableName: 'users', + createUser: function (newUser, callback) { connection.query('INSERT INTO ' + this.tableName + ' SET ?', newUser, callback); - }, - getUserByEmail: function(email, callback) { + }, + getUserByEmail: function (email, callback) { connection.query('SELECT * FROM ' + this.tableName + ' WHERE email = ?', email, callback); }, - getUserByUsername: function(username, callback) { + getUserByUsername: function (username, callback) { connection.query('SELECT * FROM ' + this.tableName + ' WHERE username = ?', username, callback); } }; @@ -102,12 +102,12 @@ app.post('/register', [ // Insert user into MySQL User.createUser(newUser, (error, results, fields) => { if (error) { - console.error('Error inserting user: ' + error.message); - return res.status(500).json({ error: error.message }); + console.error('Error inserting user: ' + error.message); + return res.status(500).json({ error: error.message }); } console.log('Inserted a new user with id ' + results.insertId); res.status(201).json(newUser); - }); + }); }); // Login route @@ -153,13 +153,35 @@ app.get('/course/:id', (req, res) => { const courseId = req.params.id; const sql = 'SELECT * FROM courses WHERE id = ?'; db.query(sql, [courseId], (err, result) => { - if (err) { - throw err; - } - // Send course content as JSON response - res.json(result); + if (err) { + throw err; + } + // Send course content as JSON response + res.json(result); }); - }); +}); + +app.post('/save-courses', (req, res) => { + const userId = req.session.user.id; + const selectedCourses = req.body.courses; + + // Save selected courses to the database (implementation depends on your database schema) + // Example: Insert selected courses into a table named 'user_courses' + + res.sendStatus(200); // Send success response +}); + +app.get('/user-courses', (req, res) => { + const userId = req.session.user.id; + + // Retrieve selected courses for the logged-in user from the database (implementation depends on your database schema) + // Example: Query the 'user_courses' table for courses associated with the user ID + + const userCourses = ['Course 1', 'Course 3']; // Dummy data (replace with actual data) + + res.json({ courses: userCourses }); // Send selected courses as JSON response +}); + // Start server const PORT = process.env.PORT || 3000;