@@ -4,50 +4,89 @@ const { Achievement } = require("../models/schema"); // Update path as needed
44const { v4 : uuidv4 } = require ( "uuid" ) ;
55const isAuthenticated = require ( "../middlewares/isAuthenticated" ) ;
66const authorizeRole = require ( "../middlewares/authorizeRole" ) ;
7- const { ROLE_GROUPS } = require ( "../utils/roles" ) ;
7+ const { ROLE_GROUPS } = require ( "../utils/roles" ) ;
88
99// GET unverified achievements by type (achievements which are pending to verify fetched by admins only)
10- router . get ( "/unendorsed/:type" , isAuthenticated , authorizeRole ( ROLE_GROUPS . ADMIN ) , async ( req , res ) => {
11- const { type } = req . params ;
10+ router . get (
11+ "/unendorsed/:type" ,
12+ isAuthenticated ,
13+ authorizeRole ( ROLE_GROUPS . ADMIN ) ,
14+ async ( req , res ) => {
15+ const { type } = req . params ;
1216
13- try {
14- const unverifiedAchievements = await Achievement . find ( {
15- type,
16- verified : false ,
17- } )
18- . populate ( "user_id" , "personal_info.name username user_id" )
19- . populate ( "event_id" , "title description " ) ;
17+ try {
18+ const unverifiedAchievements = await Achievement . find ( {
19+ type,
20+ verified : false ,
21+ } )
22+ . populate ( "user_id" , "personal_info.name username user_id" )
23+ . populate ( "event_id" , "title description " ) ;
2024
21- res . json ( unverifiedAchievements ) ;
22- } catch ( err ) {
23- console . error ( err ) ;
24- res
25- . status ( 500 )
26- . json ( { message : "Failed to fetch unverified achievements." } ) ;
27- }
28- } ) ;
25+ res . json ( unverifiedAchievements ) ;
26+ } catch ( err ) {
27+ console . error ( err ) ;
28+ res
29+ . status ( 500 )
30+ . json ( { message : "Failed to fetch unverified achievements." } ) ;
31+ }
32+ } ,
33+ ) ;
2934
3035// PATCH verify achievement by ID (achievements can be verified by admins only)
31- router . patch ( "/verify/:id" , isAuthenticated , authorizeRole ( ROLE_GROUPS . ADMIN ) , async ( req , res ) => {
32- const { id } = req . params ;
33- const { verified_by } = req . body ; // Assuming you send the verifier's ID in the request body
34- try {
35- const achievement = await Achievement . findById ( id ) ;
36+ router . patch (
37+ "/verify/:id" ,
38+ isAuthenticated ,
39+ authorizeRole ( ROLE_GROUPS . ADMIN ) ,
40+ async ( req , res ) => {
41+ const { id } = req . params ;
42+ const { verified_by } = req . body ; // Assuming you send the verifier's ID in the request body
43+ try {
44+ const achievement = await Achievement . findById ( id ) ;
45+
46+ if ( ! achievement ) {
47+ return res . status ( 404 ) . json ( { message : "Achievement not found." } ) ;
48+ }
3649
37- if ( ! achievement ) {
38- return res . status ( 404 ) . json ( { message : "Achievement not found." } ) ;
50+ achievement . verified = true ;
51+ achievement . verified_by = verified_by ;
52+ await achievement . save ( ) ;
53+
54+ res . json ( { message : "Achievement verified successfully." , achievement } ) ;
55+ } catch ( err ) {
56+ console . error ( err ) ;
57+ res . status ( 500 ) . json ( { message : "Failed to verify achievement." } ) ;
3958 }
59+ } ,
60+ ) ;
4061
41- achievement . verified = true ;
42- achievement . verified_by = verified_by ;
43- await achievement . save ( ) ;
62+ // REJECT (delete) achievement by ID
63+ router . post (
64+ "/reject/:id" ,
65+ isAuthenticated ,
66+ authorizeRole ( ROLE_GROUPS . ADMIN ) ,
67+ async ( req , res ) => {
68+ const { id } = req . params ;
4469
45- res . json ( { message : "Achievement verified successfully." , achievement } ) ;
46- } catch ( err ) {
47- console . error ( err ) ;
48- res . status ( 500 ) . json ( { message : "Failed to verify achievement." } ) ;
49- }
50- } ) ;
70+ try {
71+ const deletedAchievement = await Achievement . findByIdAndDelete ( id ) ;
72+
73+ if ( ! deletedAchievement ) {
74+ return res . status ( 404 ) . json ( {
75+ message : "Achievement not found." ,
76+ } ) ;
77+ }
78+
79+ res . json ( {
80+ message : "Achievement rejected and deleted successfully." ,
81+ } ) ;
82+ } catch ( err ) {
83+ console . error ( "Failed to reject achievement:" , err ) ;
84+ res . status ( 500 ) . json ( {
85+ message : "Failed to reject achievement." ,
86+ } ) ;
87+ }
88+ } ,
89+ ) ;
5190
5291//add achievement (achievements can be added by all the users (students -> their own ahieve, admins -> council achieve + student achieve))
5392router . post ( "/add" , isAuthenticated , async ( req , res ) => {
0 commit comments