@@ -273,18 +273,37 @@ const bmIssueController = function (BuildingIssue, injuryIssue) {
273273 query . projectId = { $in : filteredProjectIds } ;
274274 }
275275
276- const issues = await BuildingIssue . find ( query )
277- . select ( 'issueTitle issueDate projectId' )
278- . populate ( {
279- path : 'projectId' ,
280- select : 'projectName name' ,
281- } )
276+ let issues = await BuildingIssue . find ( query )
277+ . select ( 'issueTitle issueDate _id' )
278+ . populate ( 'projectId' )
282279 . lean ( ) ;
283280
284- const grouped = buildGroupedIssues ( issues ) ;
285- const response = buildLongestOpenResponse ( grouped ) ;
281+ issues = issues . map ( ( issue ) => {
282+ const durationInMonths = getDurationOpenMonths ( issue . issueDate ) ;
283+ return {
284+ issueName : issue . issueTitle && issue . issueTitle . length > 0 ? issue . issueTitle [ 0 ] : null ,
285+ durationInMonths,
286+ issueId : issue . _id . toString ( ) ,
287+ projectId : issue . projectId ?. _id ?. toString ( ) || issue . projectId ?. toString ( ) ,
288+ projectName : issue . projectId ?. name || null ,
289+ } ;
290+ } ) ;
291+
292+ const sortedIssues = issues
293+ . sort ( ( a , b ) => b . durationInMonths - a . durationInMonths )
294+ . map ( ( { issueName, durationInMonths, issueId, projectId, projectName } ) => ( {
295+ issueName,
296+ durationOpen : durationInMonths ,
297+ issueId,
298+ projectId,
299+ projectName,
300+ } ) ) ;
301+
302+ console . log (
303+ `[getLongestOpenIssues] Total issues found: ${ issues . length } , Returning: ${ sortedIssues . length } issues` ,
304+ ) ;
286305
287- res . json ( response ) ;
306+ res . json ( sortedIssues ) ;
288307 } catch ( error ) {
289308 res . status ( 500 ) . json ( { message : 'Error fetching longest open issues' } ) ;
290309 }
0 commit comments