33import com .vianavitor .simplelibrarygame .dto .ApiResponse ;
44import com .vianavitor .simplelibrarygame .dto .request .ChangeNameRequest ;
55import com .vianavitor .simplelibrarygame .dto .request .ModifyUsersInClassroomRequest ;
6+ import com .vianavitor .simplelibrarygame .dto .response .UserInClassroomResponse ;
7+ import com .vianavitor .simplelibrarygame .model .BookReadHistory ;
68import com .vianavitor .simplelibrarygame .model .Classroom ;
9+ import com .vianavitor .simplelibrarygame .model .Student ;
710import com .vianavitor .simplelibrarygame .model .utils .classes .UserClassroom ;
811import com .vianavitor .simplelibrarygame .service .ClassroomService ;
912import jakarta .servlet .http .HttpServletRequest ;
1619import java .util .List ;
1720import java .util .Map ;
1821import java .util .Set ;
22+ import java .util .stream .Collectors ;
1923
2024@ RestController
2125@ RequestMapping ("/api/classrooms" )
@@ -49,12 +53,16 @@ public ResponseEntity<ApiResponse<Classroom>> getById(
4953 }
5054
5155 @ PutMapping ("/{id}/users" )
52- public ResponseEntity <ApiResponse <Set <UserClassroom >>> modifyUsers (
56+ public ResponseEntity <ApiResponse <Set <UserInClassroomResponse >>> modifyUsers (
5357 @ PathVariable Long id ,
5458 @ Valid @ RequestBody ModifyUsersInClassroomRequest request ,
5559 HttpServletRequest req
5660 ) {
57- Set <UserClassroom > updated = classroomService .modifyUsersInClassroom (id , request .userIds ());
61+ Set <UserInClassroomResponse > updated = classroomService .modifyUsersInClassroom (id , request .userIds ())
62+ .stream ()
63+ .map (this ::userClassroomToDtoResp )
64+ .collect (Collectors .toSet ());
65+
5866 return ResponseEntity .ok (ApiResponse .success (updated , "Users updated" , req .getRequestURI ()));
5967 }
6068
@@ -74,4 +82,25 @@ public ResponseEntity<ApiResponse<Void>> deleteClassroom(@PathVariable Long id,
7482 ApiResponse <Void > response = ApiResponse .success (null , "Classroom deleted" , request .getRequestURI ());
7583 return ResponseEntity .ok (response );
7684 }
85+
86+ private UserInClassroomResponse userClassroomToDtoResp (UserClassroom user ) {
87+ if (user instanceof Student ) {
88+ BookReadHistory history = ((Student ) user ).getStats ().getCurrentBook ();
89+
90+ return new UserInClassroomResponse (
91+ user .getId (), user .getName (), user .getUsername (), user .getLastLogin (),
92+ new UserInClassroomResponse .CurrentBookInfo (
93+ history .getId (),
94+ history .getBook ().getTitle ()
95+ ),
96+ false ,
97+ user .isActive ()
98+ );
99+ }
100+
101+ return new UserInClassroomResponse (
102+ user .getId (), user .getName (), user .getUsername (), user .getLastLogin (),
103+ null , false , user .isActive ()
104+ );
105+ }
77106}
0 commit comments