Skip to content

Commit 967a52d

Browse files
committed
2 parents 98c8421 + 8303460 commit 967a52d

37 files changed

+369
-187
lines changed

Backend/config/DatabaseConnection.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import mongoose from 'mongoose';
22
// Uses path of first file to import (should be server.js)
3-
//import dotenv from 'dotenv';
3+
// import dotenv from 'dotenv';
4+
// dotenv.config();
45
//dotenv.config({path: 'Backend/.env'});
56

67
// const DatabaseConnection = async () => {

Backend/controllers/quizController.js

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,14 @@ export const deleteQuiz = async(req, res) => {
5656
const quizId = req.body.quizId
5757
console.log(quizId)
5858

59+
await Question.deleteMany({ quizId: quizId })
60+
5961
const deletedQuiz = await Quiz.findByIdAndDelete(quizId);
6062
if (!deletedQuiz) {
6163
res.status(500).json({error: "Quiz was not found"})
6264
return;
6365
}
66+
6467
res.status(200).json({message: 'Quiz deleted successfullly' })
6568
}
6669
catch(err){
@@ -115,4 +118,35 @@ export const getQuestionsFromQuiz = async(req, res) => {
115118
console.log(e)
116119
res.status(500).json({error: "Error finding questions for that quiz"})
117120
}
118-
}
121+
}
122+
export const getFinishedQuizzes = async(req, res) => {
123+
try {
124+
const userId = req.params.id
125+
const quizzesFinished = await Quiz.find({user: userId, completed: true})
126+
res.status(200).json({quizzesFinished})
127+
} catch (e) {
128+
res.status(500).json({error: 'Error retreiving quizzes under TODO status'})
129+
console.log(e)
130+
}
131+
}
132+
export const updateFinished = async (req, res) => {
133+
try {
134+
const userId = req.params.id;
135+
const quizId = req.body.quizId;
136+
137+
const updatedQuiz = await Quiz.findOneAndUpdate(
138+
{ _id: quizId, user: userId },
139+
{ $set: { completed: true } },
140+
{ new: true }
141+
);
142+
console.log(updatedQuiz);
143+
if (!updatedQuiz) {
144+
return res.status(404).json({ error: 'Quiz not found or does not belong to the user' });
145+
}
146+
147+
res.status(200).json({ message: 'Quiz marked as completed', quiz: updatedQuiz });
148+
} catch (e) {
149+
console.error(e);
150+
res.status(500).json({ error: 'Error updating quiz completion status' });
151+
}
152+
};

Backend/controllers/userController.js

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ const passwordMatch = (async(passwordFromUser, savedPasswordFromDB) => {
2121
// const active = user.isOnline;
2222
// return await User.findOneAndUpdate({ username: user.username }, { isOnline: !active })
2323
// })
24-
2524
export const getUser = async(req, res) => {
2625
try {
2726
const userId = req.session.userID;
@@ -71,8 +70,7 @@ export const createUser = async(req, res) => {
7170
username,
7271
email,
7372
password: hashedPassword,
74-
isOneline: true,
75-
pfp: "", //pfp string url, save a temp one for now after creation
73+
isOneline: true, //got rid of pfp so it uses the default values
7674
description: "", //description, empty for now (could default to "" in the schema)
7775
friendsList: [],
7876
friendRequest: [],
@@ -485,7 +483,7 @@ export const acceptFriendRequest = async(req, res) => {
485483
export const rejectFriendRequest = async(req, res) => {
486484
try {
487485
const userId = req.params.id
488-
const user = await User.findByid(userId)
486+
const user = await User.findById(userId)
489487

490488
const otherUser = req.body.friendId;
491489
const rejectingUser = await User.findById(otherUser);
@@ -499,6 +497,10 @@ export const rejectFriendRequest = async(req, res) => {
499497
return;
500498
}
501499

500+
if (!user.friendRequests.includes(otherUser)) {
501+
return res.status(400).json({ message: "No such friend request exists" });
502+
}
503+
502504
user.friendRequests.pull(rejectingUser._id);
503505
await user.save()
504506
res.status(200).json({message: 'Friend request rejected!'})
@@ -577,4 +579,22 @@ export const updateUsersCoins = async (req, res) => {
577579
catch (e) {
578580
res.status(500).json({error: "error fetching user's coins"})
579581
}
582+
}
583+
export const updateUserMonstersSlain = async(req, res) =>{
584+
try{
585+
const userId = req.params.id;
586+
const monstersSlain = req.body.monstersSlain;
587+
const user = await User.findById(userId).select("monstersSlain");
588+
if (!user) {
589+
res.status(404).json({error: "user doesn't exist"})
590+
return
591+
}
592+
const adjust = user.monstersSlain + monstersSlain;
593+
const updatedUsers = await User.findByIdAndUpdate(userId, { monstersSlain : adjust }, { new: true }).select("monstersSlain")
594+
await updatedUsers.save();
595+
res.status(200).json({ monstersSlain: updatedUsers.monstersSlain })
596+
}
597+
catch(e){
598+
res.status(500).json({error: "error updating user's monsters slain"});
599+
}
580600
}

Backend/routes/quizRoutes.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import express from 'express'
2-
import { createQuiz, editQuiz, deleteQuiz, getQuiz, getQuizzes, getToDoQuizzes, getQuestionsFromQuiz } from '../controllers/quizController.js'
2+
import { createQuiz, editQuiz, deleteQuiz, getQuiz, getQuizzes, getToDoQuizzes, getQuestionsFromQuiz, updateFinished, getFinishedQuizzes } from '../controllers/quizController.js'
33

44
const router = express.Router();
55

66
/* router.get('/getQuizzes', getQuizzesFromUserID) */
77
router.post('/createQuiz', createQuiz)
88
router.put('/editQuiz/:id', editQuiz)
9+
router.put('/quizFinished/:id', updateFinished)
910
router.delete('/deleteQuiz', deleteQuiz)
1011
router.get('/getQuiz/:id', getQuiz)
1112
router.get('/getQuizzes/:id', getQuizzes)
1213
router.get('/getToDoQuizzes/:id', getToDoQuizzes)
14+
router.get('/getFinishedQuizzes/:id', getFinishedQuizzes)
1315
router.get('/getQuestionsFromQuiz/:id', getQuestionsFromQuiz)
1416
router.get('/', (req, res) => {
1517
res.send('Users route works!');

Backend/routes/userRoutes.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import express from 'express';
22
import { createUser, loginUser, editUser, editUserPassword, deleteUser, getUser, getUsername, getDescription,
33
getActiveFriends, getFriends, getCharacterList, getInventory, getTop10,
44
getFriendRequests, acceptFriendRequest, rejectFriendRequest, sendFriendRequest, updateSelections,
5-
getAICreations, increaseAICreations, getUsersCoins, updateUsersCoins, addCharacterToList, addItemToInventory } from '../controllers/userController.js';
5+
getAICreations, increaseAICreations, getUsersCoins, updateUsersCoins, addCharacterToList, addItemToInventory,
6+
updateUserMonstersSlain} from '../controllers/userController.js';
67

78
const router = express.Router();
89
router.post('/createUser', createUser);
@@ -29,6 +30,7 @@ router.get('/getUsersCoins/:id', getUsersCoins)
2930
router.put('/updateCoins/:id', updateUsersCoins)
3031
router.put('/addCharacter/:id', addCharacterToList)
3132
router.put('/addItem/:id', addItemToInventory)
33+
router.put('/updateMonstersSlain/:id', updateUserMonstersSlain)
3234

3335
/* router.get('/getFriends/:id', getFriendsFromUserID) */
3436
router.get('/', (req, res) => {

Frontend/.env

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
VITE_APP_URI=https://00qy8vpnab.execute-api.us-east-1.amazonaws.com/
2-
GAME_URI=https://quizslayergame.s3.us-east-1.amazonaws.com/QuizSlayerBuild/index.html?sessionId
2+
VITE_GAME_URI=https://quizslayergame.s3.us-east-1.amazonaws.com/index.html
3+
4+

Frontend/.env.development

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
# VITE_APP_URI=https://00qy8vpnab.execute-api.us-east-1.amazonaws.com/
2-
VITE_APP_URI=http://localhost:3000/
3-
VITE_GAME_URI=https://quizslayergame.s3.us-east-1.amazonaws.com/QuizSlayerBuild/index.html?sessionId
1+
VITE_APP_URI=https://00qy8vpnab.execute-api.us-east-1.amazonaws.com/
2+
VITE_GAME_URI=https://quizslayergame.s3.us-east-1.amazonaws.com/index.html
3+
4+

Frontend/src/Components/Home/FriendRequest.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ const FriendRequest = ({ index, friendId, incomingFriendPfp, incomingFriendName,
2525
}
2626

2727
const reject = async () => {
28+
console.log(friendId)
2829
try {
2930
const response = await axios.put(`${URI}users/rejectFriendRequest/${userId}`, {
3031
friendId: friendId

Frontend/src/Components/Home/Notifications.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const Notifications = () => {
1818
})
1919
if (response.status === 200) {
2020
setFriendRequestList(response.data.friendRequests)
21-
console.log(response.data)
21+
console.log(response.data.friendRequests)
2222
}
2323
}
2424
catch (e) {
@@ -32,7 +32,7 @@ const Notifications = () => {
3232
return(
3333
<>
3434
<div className="notifications-container">
35-
{friendRequestList.map((friendRequest, index) => (
35+
{Array.isArray(friendRequestList) && friendRequestList.map((friendRequest, index) => (
3636
<FriendRequest key={index} index={index} friendId={friendRequest._id} incomingFriendPfp={FriendRequest.pfp} incomingFriendName={friendRequest.username} friendRequestList={friendRequestList} setFriendRequestList={setFriendRequestList}/>
3737
))}
3838
</div>

Frontend/src/Components/LandingPage/LandingPageAboutUs.jsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ const LandingPageAboutUs = () => {
1313
</div>
1414
<div className="about-us-words">
1515
<h1 className="about-us-title">About Us</h1>
16-
<p>QuizSlayer is an interactive study app that turns your studying into an adventure.
17-
Create flashcards on your own or through AI features and test your knowledge in an idle fighting game. Win battles, earn prizes.
18-
Compete against friends or against others to the be the best adventurer there is!!!</p>
16+
<p>QuizSlayer is an interactive study app that turns your studying into an adventure.
17+
Create flashcards on your own or through AI features and test your knowledge in an idle fighting game.
18+
Win battles, earn prizes. Compete against friends or against others to the be the best adventurer there is!!!</p>
1919
</div>
2020
</div>
2121
</div>

0 commit comments

Comments
 (0)