diff --git a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java index 881f78c..f278cd5 100644 --- a/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java +++ b/src/main/java/hhn/labsw/bugageocaching/controller/Controller.java @@ -49,6 +49,9 @@ public class Controller { @Autowired User_InfoRepository user_infoRepository; + @Autowired + TeamInviteRepository teamInviteRepository; + @PostConstruct public void init() { fetchPublicKey(); @@ -626,6 +629,71 @@ public class Controller { return ResponseEntity.status(200).body("Ok"); } + + @CrossOrigin(origins = "http://localhost:8081") // only for dev purpose + @RequestMapping("/api/sendTeamInvite") + @ResponseBody + public ResponseEntity sendTeamInvite(@RequestParam String token, + @RequestParam String invitedUserEmail) { + // verify user + ResponseEntity verifyToken = VerificationUtil.verifyToken(token); + + if (verifyToken.getStatusCodeValue() != 200) { + return verifyToken; + } + + //get User + Claims claims = (Claims) verifyToken.getBody(); + + ResponseEntity getUser = FinderUtil.findUserFromClaim(claims); + + if (getUser.getStatusCodeValue() != 200) { + return getUser; + } + + User user = (User) getUser.getBody(); + + // get InvitedUser + + User invitedUser = userRepository.findByEmail(invitedUserEmail); + + if (invitedUser == null) { + return ResponseEntity.status(404).body("There isnt any user with that email"); + } + //---------------------- + + + //Get User_Info + ResponseEntity getUser_Info = FinderUtil.findUser_InfoByID(String.valueOf(user.getId())); + + if (getUser_Info.getStatusCodeValue() != 200) { + return getUser_Info; + } + + User_Info user_info = (User_Info) getUser_Info.getBody(); + //---------------------- + if (user_info.getTeam() == null) { + return ResponseEntity.status(400).body("You aren“t in any team"); + } + + //Get team + ResponseEntity getTeam = FinderUtil.findTeamById(String.valueOf(user_info.getTeam().getId())); + + if (getTeam.getStatusCodeValue() != 200) { + return getTeam; + } + + Team team = (Team) getTeam.getBody(); + + TeamInvite teamInvite = new TeamInvite(); + teamInvite.setUser(invitedUser); + teamInvite.setTeam(team); + + teamInviteRepository.save(teamInvite); + + return ResponseEntity.status(200).body("OK"); + } + @RequestMapping("/api/hello") public ResponseEntity hello(@RequestParam String name) { return ResponseEntity.status(200).body(userRepository.getRankingPlaceFromUser(name)); diff --git a/src/main/java/hhn/labsw/bugageocaching/entities/TeamInvite.java b/src/main/java/hhn/labsw/bugageocaching/entities/TeamInvite.java new file mode 100644 index 0000000..6d25351 --- /dev/null +++ b/src/main/java/hhn/labsw/bugageocaching/entities/TeamInvite.java @@ -0,0 +1,42 @@ +package hhn.labsw.bugageocaching.entities; + +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.OneToOne; + +public class TeamInvite { + + @Id + @GeneratedValue + private int id; + + @OneToOne + private User user; + + @OneToOne + private Team team; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Team getTeam() { + return team; + } + + public void setTeam(Team team) { + this.team = team; + } +} diff --git a/src/main/java/hhn/labsw/bugageocaching/repositories/TeamInviteRepository.java b/src/main/java/hhn/labsw/bugageocaching/repositories/TeamInviteRepository.java new file mode 100644 index 0000000..42ba9f5 --- /dev/null +++ b/src/main/java/hhn/labsw/bugageocaching/repositories/TeamInviteRepository.java @@ -0,0 +1,9 @@ +package hhn.labsw.bugageocaching.repositories; + +import hhn.labsw.bugageocaching.entities.Cache; +import hhn.labsw.bugageocaching.entities.TeamInvite; +import hhn.labsw.bugageocaching.entities.User; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface TeamInviteRepository extends JpaRepository { +} diff --git a/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java b/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java index 8d1bab7..d8784ec 100644 --- a/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java +++ b/src/main/java/hhn/labsw/bugageocaching/repositories/UserRepository.java @@ -7,7 +7,7 @@ import org.springframework.data.repository.CrudRepository; import java.util.List; public interface UserRepository extends CrudRepository { - User findByUsername(String username); + User findByEmail(String email); @Query(value = "SELECT DISTINCT u.id AS ID, SUBSTRING_INDEX(u.email, '@', 1) AS Name, ui.ranking_points_sum AS Ranglistenpunkte\n" + "FROM user u,\n" +