@@ -67,56 +67,54 @@ export const getReviewRequestHistory = (reviewRequests: PartReviewRequest[]): Hi
6767 return historyEntries . sort ( ( a , b ) => a [ 0 ] . getTime ( ) - b [ 0 ] . getTime ( ) ) ;
6868} ;
6969
70- export const getReviewHistory = ( submissions : PartSubmission [ ] ) : HistoryEntry [ ] => {
70+ export const getReviewHistory = ( submissions : PartSubmission [ ] , approved : boolean ) : HistoryEntry [ ] => {
7171 if ( submissions . length === 0 ) return [ ] ;
7272 const historyEntries : HistoryEntry [ ] = [ ] ;
7373
74- submissions . forEach ( ( sub ) => {
75- // Each reviewer gets a separate "began reviewing" and "reviewed"
76- const reviewsForReviewer = new Map < User , PartReview [ ] > ( ) ;
77- sub . reviews . forEach ( ( review ) => {
78- const reviewer = review . userCreated ;
79- if ( ! reviewsForReviewer . has ( reviewer ) ) {
80- reviewsForReviewer . set ( reviewer , [ ] ) ;
81- }
82- reviewsForReviewer . get ( reviewer ) ! . push ( review ) ;
83- } ) ;
84-
85- reviewsForReviewer . forEach ( ( reviews , reviewer ) => {
86- processReviewerHistory ( reviews , reviewer , sub . name , historyEntries ) ;
74+ submissions . sort ( ( a , b ) => new Date ( a . createdAt ) . getTime ( ) - new Date ( b . createdAt ) . getTime ( ) ) ;
75+
76+ // if part is approved, the last review must have approved it, so change that one to say reviewed
77+ submissions . forEach ( ( sub , subIdx ) => {
78+ sub . reviews . sort ( ( a , b ) => new Date ( a . createdAt ) . getTime ( ) - new Date ( b . createdAt ) . getTime ( ) ) ;
79+ sub . reviews . forEach ( ( review , reviewIdx ) => {
80+ processReviewerHistory (
81+ review ,
82+ review . userCreated ,
83+ sub . name ,
84+ historyEntries ,
85+ approved && subIdx === submissions . length - 1 && reviewIdx === sub . reviews . length - 1
86+ ) ;
8787 } ) ;
8888 } ) ;
8989 return historyEntries ;
9090} ;
9191
9292// Processes an individual reviewer's history in a submission
9393export const processReviewerHistory = (
94- reviews : PartReview [ ] ,
94+ review : PartReview ,
9595 reviewer : User ,
9696 subName : string ,
97- historyEntries : HistoryEntry [ ]
97+ historyEntries : HistoryEntry [ ] ,
98+ approved : boolean
9899) => {
99100 const reviewerName = `${ reviewer . firstName } ${ reviewer . lastName } ` ;
100- reviews . sort ( ( a , b ) => new Date ( a . createdAt ) . getTime ( ) - new Date ( b . createdAt ) . getTime ( ) ) ;
101- if ( reviews . length === 0 ) return ;
102-
103- const [ firstReview ] = reviews ;
104- historyEntries . push ( [ new Date ( firstReview . createdAt ) , `${ reviewerName } began reviewing ${ subName } ` ] ) ;
105-
106- reviews . forEach ( ( review ) => {
107- if ( review . completedAt ) {
108- const message = `${ reviewerName } reviewed ${ subName } (in ${ subName } Review)` ;
109- historyEntries . push ( [ new Date ( review . completedAt ) , message ] ) ;
110- }
111- } ) ;
101+ if ( review . createdAt . getDate !== review . completedAt ?. getDate ) {
102+ historyEntries . push ( [ new Date ( review . createdAt ) , `${ reviewerName } began reviewing ${ subName } ` ] ) ;
103+ }
104+ if ( review . completedAt ) {
105+ const message = approved
106+ ? `${ reviewerName } approved ${ subName } `
107+ : `${ reviewerName } reviewed ${ subName } (in ${ subName } Review)` ;
108+ historyEntries . push ( [ new Date ( review . completedAt ) , message ] ) ;
109+ }
112110} ;
113111
114112export const completePartHistory = ( part : Part ) : string [ ] => {
115113 const history = [
116114 ...getPartCreationHistory ( part . createdAt , part . commonName ) ,
117115 ...getSubmissionHistory ( part . submissions , part . commonName ) ,
118116 ...getReviewRequestHistory ( part . reviewRequests ) ,
119- ...getReviewHistory ( part . submissions )
117+ ...getReviewHistory ( part . submissions , part . status === Review_Status . APPROVED )
120118 ] ;
121119 const result : string [ ] = [ ] ;
122120 history
0 commit comments