Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: '3.8'
services:
web:
labels:
- "environment=development"
- 'environment=development'
build: .
volumes:
- .:/usr/app/
Expand All @@ -17,7 +17,7 @@ services:
- quizio
mongo:
labels:
- "environment=development"
- 'environment=development'
image: mongo
ports:
- 27017:27017
Expand Down
43 changes: 43 additions & 0 deletions src/controllers/common/deleteUser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
import LogModel from '@models/log/logModel'
import ParticipantModel from '@models/participant/participantModel'
import ResponseModel from '@models/response/responseModel'
import UserModel from '@models/user/userModel'
import sendFailureResponse from '@utils/failureResponse'
import { Request, Response } from 'express'

interface getRegistrantsRequest extends Request {
params: {
userId: string
}
}
const deleteUser = async (req: getRegistrantsRequest, res: Response) => {
const { userId } = req.params
if (!userId) {
return res.status(400).json({
message: 'Invalid query',
})
}
try {
const registrantExist = await ParticipantModel.find({ userId: userId })
if (!registrantExist) {
return res.status(404).json({
message: 'No user found with this ID',
})
}
const registrantDetails = await ParticipantModel.findOne({ userId: userId })
await registrantDetails?.deleteOne()
await LogModel.deleteMany({ userId: userId })
await ResponseModel.deleteMany({ userId: userId })
return res.status(200).json({
message: 'Deleted the user successfully',
})
} catch (error: unknown) {
sendFailureResponse({
res,
error,
messageToSend: 'Failed to delete registrant for this id',
})
}
}

export default deleteUser
77 changes: 77 additions & 0 deletions src/controllers/common/getUsers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import ParticipantModel from '@models/participant/participantModel'
import QuizModel from '@models/quiz/quizModel'
import UserModel from '@models/user/userModel'
import sendFailureResponse from '@utils/failureResponse'
import { Request, Response } from 'express'

interface getRegistrantsRequest extends Request {
params: {
quizId: string
}
}
const getUsers = async (req: getRegistrantsRequest, res: Response) => {
const { quizId } = req.params
if (!quizId) {
return res.status(400).json({
message: 'Invalid query',
})
}
try {
const quizExists = await QuizModel.findById(quizId)
if (!quizExists) {
return res.status(404).json({
message: 'No quiz found with this ID',
})
}
const registrants = await ParticipantModel.find({ quizId: quizId })
if (registrants) {
return res.status(200).json({
message: 'Successfully sending all the registrants',
registrants: registrants,
})
}
} catch (error: unknown) {
sendFailureResponse({
res,
error,
messageToSend: 'Failed to fetch registrants for this quiz',
})
}
}

interface getRegistrantsNameRequest extends Request {
params: {
userId: string
}
}
const getUserName = async (req: getRegistrantsNameRequest, res: Response) => {
const { userId } = req.params
if (!userId) {
return res.status(400).json({
message: 'Invalid query',
})
}
try {
const registrantExist = await UserModel.findById(userId)
if (!registrantExist) {
return res.status(404).json({
message: 'No user found with this ID',
})
}
const registrantDetails = await UserModel.findById(userId)
if (registrantDetails) {
return res.status(200).json({
message: 'Successfully sending all the registrant details',
registrants: registrantDetails,
})
}
} catch (error: unknown) {
sendFailureResponse({
res,
error,
messageToSend: 'Failed to fetch registrant details for this id',
})
}
}

export { getUserName, getUsers }
3 changes: 3 additions & 0 deletions src/controllers/common/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
export { default as searchUsers } from './searchUsers'
export { getUsers } from './getUsers'
export { getUserName } from './getUsers'
export { default as deleteUser } from './deleteUser'
3 changes: 3 additions & 0 deletions src/routers/common/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,8 @@ import isAdmin from '@utils/isAdmin'
const router = express.Router()

router.get('/searchUsers', isOnboard, isAdmin, commonController.searchUsers)
router.get('/getUsers/:quizId', isOnboard, isAdmin, commonController.getUsers)
router.get('/getUserName/:userId', commonController.getUserName)
router.delete('/deleteUser/:userId', commonController.deleteUser)

export default router
Loading