@@ -144,7 +144,14 @@ def get_watchlisted_tasks(cls, page, limit, user_id) -> Tuple[int, List[Watchlis
144
144
"watchlistId" : {"$toString" : "$_id" },
145
145
"taskId" : {"$toString" : "$task._id" },
146
146
"deferredDetails" : "$task.deferredDetails" ,
147
- "createdBy" : {"$arrayElemAt" : ["$created_by_user.name" , 0 ]},
147
+ "createdBy" : {
148
+ "id" : {"$toString" : {"$arrayElemAt" : ["$created_by_user._id" , 0 ]}},
149
+ "name" : {"$arrayElemAt" : ["$created_by_user.name" , 0 ]},
150
+ "addedOn" : {"$arrayElemAt" : ["$created_by_user.addedOn" , 0 ]},
151
+ "tasksAssignedCount" : {
152
+ "$arrayElemAt" : ["$created_by_user.tasksAssignedCount" , 0 ]
153
+ },
154
+ },
148
155
"assignee" : {
149
156
"$cond" : {
150
157
"if" : {"$gt" : [{"$size" : "$assignee_user" }, 0 ]},
@@ -199,9 +206,11 @@ def get_watchlisted_tasks(cls, page, limit, user_id) -> Tuple[int, List[Watchlis
199
206
if not task .get ("assignee" ):
200
207
task ["assignee" ] = cls ._get_assignee_for_task (task .get ("taskId" ))
201
208
202
- # If createdBy is null or still an ID, try to fetch user name separately
203
- if not task .get ("createdBy" ) or ObjectId .is_valid (task .get ("createdBy" , "" )):
204
- task ["createdBy" ] = cls ._get_user_name_for_id (task .get ("createdBy" ))
209
+ # If createdBy is null or still an ID, try to fetch user details separately
210
+ if not task .get ("createdBy" ) or (
211
+ isinstance (task .get ("createdBy" ), str ) and ObjectId .is_valid (task .get ("createdBy" , "" ))
212
+ ):
213
+ task ["createdBy" ] = cls ._get_user_dto_for_id (task .get ("createdBy" ))
205
214
206
215
tasks = [WatchlistDTO (** doc ) for doc in tasks ]
207
216
@@ -246,9 +255,9 @@ def _get_assignee_for_task(cls, task_id: str):
246
255
return None
247
256
248
257
@classmethod
249
- def _get_user_name_for_id (cls , user_id : str ):
258
+ def _get_user_dto_for_id (cls , user_id : str ):
250
259
"""
251
- Fallback method to get user name for createdBy field.
260
+ Fallback method to get user details for createdBy field.
252
261
"""
253
262
if not user_id :
254
263
return None
@@ -259,7 +268,12 @@ def _get_user_name_for_id(cls, user_id: str):
259
268
# Get user details
260
269
user = UserRepository .get_by_id (user_id )
261
270
if user :
262
- return user .name
271
+ return {
272
+ "id" : str (user .id ),
273
+ "name" : user .name ,
274
+ "addedOn" : getattr (user , "addedOn" , None ),
275
+ "tasksAssignedCount" : getattr (user , "tasksAssignedCount" , None ),
276
+ }
263
277
except Exception :
264
278
# If any error occurs, return None
265
279
pass
0 commit comments