11package tasks
22
33import (
4- "CA_Backend /database"
5- "CA_Backend /models"
6- "CA_Backend /utils"
4+ "CA_Portal_backend /database"
5+ "CA_Portal_backend /models"
6+ "CA_Portal_backend /utils"
77 "context"
88 "log"
9+ "strings"
910
1011 "github.com/gofiber/fiber/v2"
1112 "go.mongodb.org/mongo-driver/bson"
1213 "go.mongodb.org/mongo-driver/mongo/options"
1314)
1415
1516func GetUserSubmissions (c * fiber.Ctx ) error {
17+ log .Printf ("=== GET USER SUBMISSIONS REQUEST ===" )
18+
1619 ctx := context .Background ()
1720 db , err := database .Connect ()
1821 if err != nil {
19- log .Fatal ( err . Error () )
22+ log .Printf ( "ERROR: Database connection failed: %v" , err )
2023 return c .Status (500 ).JSON (fiber.Map {
2124 "error" : err .Error (),
2225 "message" : "Database connection error" ,
2326 })
2427 }
28+ log .Printf ("✓ Database connected: %s" , db .Name ())
2529
2630 tokenString := c .Get ("Authorization" )
31+ log .Printf ("Authorization header: %s" , tokenString [:50 ]+ "..." ) // Log first 50 chars
32+
2733 if len (tokenString ) < 8 || tokenString [:7 ] != "Bearer " {
34+ log .Printf ("ERROR: Invalid authorization header format" )
2835 return c .Status (400 ).JSON (fiber.Map {"message" : "Authorization header missing or improperly formatted" })
2936 }
3037 token := tokenString [7 :]
3138
32- username , _ := utils .DeserialiseUser (token )
39+ username , err := utils .DeserialiseUser (token )
40+ if err != nil {
41+ log .Printf ("ERROR: Failed to deserialize token: %v" , err )
42+ return c .Status (401 ).JSON (fiber.Map {"message" : "Invalid token" })
43+ }
44+
45+ log .Printf ("Username from token: '%s'" , username )
46+
47+ // Convert to lowercase for consistent querying
48+ usernameLower := strings .ToLower (username )
49+ log .Printf ("Username (lowercase): '%s'" , usernameLower )
3350
3451 var user_submissions []models.TaskSubmission
3552
36- cursor , err := db .Collection ("task_submissions" ).Find (ctx , bson.D {{Key : "User" , Value : username }}, options .Find ())
53+ // Query using lowercase username
54+ query := bson.M {"user" : usernameLower }
55+ log .Printf ("MongoDB query: %+v" , query )
56+
57+ cursor , err := db .Collection ("task_submissions" ).Find (ctx , query , options .Find ())
3758 if err != nil {
59+ log .Printf ("ERROR: Database query failed: %v" , err )
3860 return c .Status (500 ).JSON (fiber.Map {
3961 "error" : err .Error (),
4062 "message" : "Failed to fetch submissions" ,
@@ -43,11 +65,35 @@ func GetUserSubmissions(c *fiber.Ctx) error {
4365 defer cursor .Close (ctx )
4466
4567 if err := cursor .All (ctx , & user_submissions ); err != nil {
68+ log .Printf ("ERROR: Failed to decode results: %v" , err )
4669 return c .Status (500 ).JSON (fiber.Map {
4770 "error" : err .Error (),
4871 "message" : "Error decoding submissions" ,
4972 })
5073 }
5174
75+ log .Printf ("Query result: Found %d submissions" , len (user_submissions ))
76+
77+ if len (user_submissions ) > 0 {
78+ for i , sub := range user_submissions {
79+ log .Printf (" [%d] ID: %s, Task: %s, User: %s, Username: %s, AdminComment: '%s'" ,
80+ i + 1 , sub .ID .Hex (), sub .Task , sub .User , sub .Username , sub .AdminComment )
81+ }
82+ } else {
83+ log .Printf (" ⚠️ No submissions found for user: %s" , usernameLower )
84+
85+ // Debug: Check if any submissions exist
86+ count , _ := db .Collection ("task_submissions" ).CountDocuments (ctx , bson.M {})
87+ log .Printf (" Total submissions in collection: %d" , count )
88+ }
89+
90+ // Return empty array instead of nil
91+ if user_submissions == nil {
92+ user_submissions = []models.TaskSubmission {}
93+ }
94+
95+ log .Printf ("Returning JSON with %d submissions" , len (user_submissions ))
96+ log .Printf ("===================================\n " )
97+
5298 return c .Status (200 ).JSON (user_submissions )
53- }
99+ }
0 commit comments