added sendTeamInvite API method and all needed database tables

This commit is contained in:
Michael 2019-04-29 10:19:52 +02:00
parent 1a6fb9d35e
commit 54e488ac28
4 changed files with 120 additions and 1 deletions

View File

@ -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));

View File

@ -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;
}
}

View File

@ -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<TeamInvite, Integer> {
}

View File

@ -7,7 +7,7 @@ import org.springframework.data.repository.CrudRepository;
import java.util.List;
public interface UserRepository extends CrudRepository<User, Integer> {
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" +