diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java index d646a5e51836736cc0a3818f8d08e0f520d25d9c..f29dfed771ebd26ca850c3b264ebaa465529ab35 100644 --- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/group/GroupController.java @@ -3,6 +3,8 @@ package ntnu.idatt2016.v233.SmartMat.controller.group; import lombok.AllArgsConstructor; import ntnu.idatt2016.v233.SmartMat.dto.request.group.GroupConnectionRequest; import ntnu.idatt2016.v233.SmartMat.dto.request.group.GroupRequest; +import ntnu.idatt2016.v233.SmartMat.dto.response.group.GroupDetailsResponse; +import ntnu.idatt2016.v233.SmartMat.dto.response.group.UserAuthorityInfo; import ntnu.idatt2016.v233.SmartMat.dto.response.group.GroupResponse; import ntnu.idatt2016.v233.SmartMat.entity.group.Group; import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso; @@ -13,10 +15,7 @@ import ntnu.idatt2016.v233.SmartMat.service.user.UserService; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; /** * Controller for groups API, providing endpoints for group management @@ -51,25 +50,28 @@ public class GroupController { * @return a ResponseEntity containing the group if it exists, or a 404 if it doesn't */ @GetMapping("/{groupId}") - public ResponseEntity<?> getGroupById(@PathVariable("groupId") long groupId){ + public ResponseEntity<?> getGroupById(@PathVariable("groupId") long groupId) { Optional<Group> group = groupService.getGroupById(groupId); - if(group.isPresent()) { + if (group.isPresent()) { List<UserGroupAsso> users = group.get().getUser(); - Map<String, String> usernames = new HashMap<>(); - for (UserGroupAsso user : users) { - String userAuthority = groupService.getUserGroupAsso(user.getUser().getUsername(), groupId) - .get().getGroupAuthority(); + List<UserAuthorityInfo> userAuthorityInfoList = new ArrayList<>(); - if(groupService.getUserGroupAsso(user.getUser().getUsername(), groupId).isPresent()) { - usernames.put(user.getUser().getUsername(), userAuthority); + for (UserGroupAsso user : users) { + Optional<UserGroupAsso> userGroupAsso = groupService.getUserGroupAsso(user.getUser().getUsername(), groupId); + if (userGroupAsso.isPresent()) { + String userAuthority = userGroupAsso.get().getGroupAuthority(); + userAuthorityInfoList.add(new UserAuthorityInfo(user.getUser().getUsername(), userAuthority)); } - usernames.put(user.getUser().getUsername(), userAuthority); } - return ResponseEntity.ok(usernames); + + GroupDetailsResponse groupDetailsResponse = new GroupDetailsResponse(group.get(), userAuthorityInfoList); + + return ResponseEntity.ok(groupDetailsResponse); } return ResponseEntity.badRequest().body("Group not found."); } + /** * Creates a new group * diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/GroupDetailsResponse.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/GroupDetailsResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..38016d4483fdc93b461f2d30e4d6833b1f23f52d --- /dev/null +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/GroupDetailsResponse.java @@ -0,0 +1,20 @@ +package ntnu.idatt2016.v233.SmartMat.dto.response.group; + +import lombok.Data; +import ntnu.idatt2016.v233.SmartMat.entity.group.Group; + +import java.util.List; + +@Data +public class GroupDetailsResponse { + private long groupId; + private String linkCode; + private List<UserAuthorityInfo> userAuthorityInfoList; + + public GroupDetailsResponse(Group group, List<UserAuthorityInfo> userAuthorityInfoList) { + this.groupId = group.getGroupId(); + this.linkCode = group.getLinkCode(); + this.userAuthorityInfoList = userAuthorityInfoList; + } +} + diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/UserAuthorityInfo.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/UserAuthorityInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..260607e221010a347b09abd68d3ddd2033831832 --- /dev/null +++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/dto/response/group/UserAuthorityInfo.java @@ -0,0 +1,3 @@ +package ntnu.idatt2016.v233.SmartMat.dto.response.group; + +public record UserAuthorityInfo(String username, String authority) {}