From 19e47d58e65926ea98d653aec1aa2428ba05a5c2 Mon Sep 17 00:00:00 2001
From: Anders Austlid <andemau@ntnu.no>
Date: Thu, 27 Apr 2023 14:50:41 +0200
Subject: [PATCH] Working on refactor/bugfix for group post endpoint

---
 .../controller/group/GroupController.java     | 37 ++++++++++---------
 1 file changed, 20 insertions(+), 17 deletions(-)

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 90e7b988..d895eb6f 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
@@ -59,26 +59,30 @@ public class GroupController {
      * @param groupRequest the group to create
      * @return a ResponseEntity containing the created group if it was created successfully, or a 400 if it wasn't
      */
-    @PostMapping("/{username}")
-    public ResponseEntity<Group> createGroup(@RequestBody Group group,
-                                             @PathVariable("username") String username) {
+    @PostMapping("/group")
+    public ResponseEntity<GroupResponse> createGroup(@RequestBody GroupRequest groupRequest) {
 
-        if(group.getGroupName().equals("") ||
-                userService.getUserFromUsername(username).isEmpty() ||
-                groupService.getGroupById(group.getGroupId()).isPresent()) {
+        if(groupRequest.groupName().equals("") ||
+                userService.getUserFromUsername(groupRequest.username()).isEmpty() ||
+                groupService.getGroupByName(groupRequest.groupName()).isPresent()) {
             return ResponseEntity.badRequest().build();
         }
 
+        Group group = new Group();
+        group.setGroupName(groupRequest.groupName());
 
-        Group group1 = groupService.createGroup(group);
-        group1.addUser(UserGroupAsso.builder()
+        Group createdGroup = groupService.createGroup(group);
+        createdGroup.addUser(UserGroupAsso.builder()
                         .groupAuthority("ADMIN")
-                        .group(group1)
-                        .user(userService.getUserFromUsername(username).get())
+                        .group(createdGroup)
+                        .user(userService.getUserFromUsername(groupRequest.username()).get())
                 .build());
 
-        return groupService.updateGroup(group1).map(ResponseEntity::ok)
-                .orElseGet(() -> ResponseEntity.badRequest().build());
+        GroupResponse groupResponse = new GroupResponse(createdGroup.getGroupId(), createdGroup.getLinkCode());
+
+        groupService.updateGroup(createdGroup);
+
+        return ResponseEntity.ok(groupResponse);
     }
 
     /**
@@ -184,11 +188,10 @@ public class GroupController {
      * @return a ResponseEntity object containing an HTTP status code and the newly created UserGroupAsso object,
      *         or a ResponseEntity object with an HTTP status code indicating that the request was not successful
      */
-    @PostMapping("/connection/{username}/{linkCode}")
-    public ResponseEntity<?> addConnection(@PathVariable("username") String username,
-                                           @PathVariable("linkCode") String linkCode){
-        return groupService.getGroupByLinkCode(linkCode)
-                .flatMap(group -> userService.getUserFromUsername(username)
+    @PostMapping("/connection")
+    public ResponseEntity<?> addConnection(@RequestBody GroupConnectionRequest groupConnectionRequest){
+        return groupService.getGroupByLinkCode(groupConnectionRequest.linkCode())
+                .flatMap(group -> userService.getUserFromUsername(groupConnectionRequest.username())
                         .flatMap(user -> {
                             UserGroupAsso userGroupAsso = UserGroupAsso.builder()
                                     .group(group)
-- 
GitLab