From 096e9074460454f59084cc91addb4f15d185eca8 Mon Sep 17 00:00:00 2001 From: Hedi Date: Thu, 20 Jan 2022 09:41:07 +0100 Subject: [PATCH 1/6] debut de tache controller --- .../controller/EvenementController.java | 37 ++++++ .../organizee/controller/TacheController.java | 85 ++++++++++++++ .../java/fr/organizee/model/Evenement.java | 107 ++++++++++++++++++ .../repository/EvenementRepository.java | 9 ++ .../organizee/repository/TacheRepository.java | 7 +- 5 files changed, 244 insertions(+), 1 deletion(-) create mode 100644 src/main/java/fr/organizee/controller/EvenementController.java create mode 100644 src/main/java/fr/organizee/controller/TacheController.java create mode 100644 src/main/java/fr/organizee/model/Evenement.java create mode 100644 src/main/java/fr/organizee/repository/EvenementRepository.java diff --git a/src/main/java/fr/organizee/controller/EvenementController.java b/src/main/java/fr/organizee/controller/EvenementController.java new file mode 100644 index 0000000..a5c3673 --- /dev/null +++ b/src/main/java/fr/organizee/controller/EvenementController.java @@ -0,0 +1,37 @@ +package fr.organizee.controller; + +import fr.organizee.model.Evenement; +import fr.organizee.model.Membre; +import fr.organizee.model.Team; +import fr.organizee.repository.EvenementRepository; +import fr.organizee.repository.TeamRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Optional; + +@RestController +@CrossOrigin("*") +@RequestMapping("/evenements") +public class EvenementController { + + @Autowired + private EvenementRepository evenementRepo; + + // Recupérer tout les evenements pour une team {id} + @GetMapping(value = "/all/{id}") + public ResponseEntity getAll(){ + List liste = null; + try + { + liste = evenementRepo.findAll(); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + + return ResponseEntity.status(HttpStatus.OK).body(liste); + } +} diff --git a/src/main/java/fr/organizee/controller/TacheController.java b/src/main/java/fr/organizee/controller/TacheController.java new file mode 100644 index 0000000..8408ada --- /dev/null +++ b/src/main/java/fr/organizee/controller/TacheController.java @@ -0,0 +1,85 @@ +package fr.organizee.controller; + +import fr.organizee.model.Membre; +import fr.organizee.model.Tache; +import fr.organizee.repository.MembreRepository; +import fr.organizee.repository.TacheRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import javax.persistence.EntityNotFoundException; +import java.util.List; +import java.util.Optional; + +@RestController +@CrossOrigin("*") +@RequestMapping("/taches") +public class TacheController { + @Autowired + private TacheRepository tacheRepo; + + @GetMapping(value = "/all") + public ResponseEntity getAll(){ + List liste = null; + try + { + liste = tacheRepo.findAll(); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + + return ResponseEntity.status(HttpStatus.OK).body(liste); + } + + @GetMapping(value = "/{id}") + public ResponseEntity findById(@PathVariable int id){ + Optional tache = null; + try + { + tache = tacheRepo.findById(id); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + + return ResponseEntity.status(HttpStatus.OK).body(tache); + } + + @DeleteMapping(value = "/delete/{id}") + public ResponseEntity deleteTache(@PathVariable int id){ + try { + tacheRepo.delete(tacheRepo.getById(id)); + return ResponseEntity.status(HttpStatus.OK).body("Tache effacée !"); + + } catch (EntityNotFoundException e) { + + return ResponseEntity.status(HttpStatus.OK).body("Tache introuvable !"); + } + } + + @PostMapping(value="/add", produces="application/json", consumes="application/json") + public ResponseEntity addTache(@RequestBody Tache tache){ + Tache resultTache = null; + try { + resultTache = tacheRepo.saveAndFlush(tache); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage()); + } + + return ResponseEntity.status(HttpStatus.CREATED).body(resultTache); + } + + @PutMapping("/update/{id}") + public ResponseEntity updateTache(@RequestBody Tache tache, @PathVariable Integer id) throws Exception { + Tache resultTache = null; + try { + resultTache = tacheRepo.save(tache); + + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); + } + + return ResponseEntity.status(HttpStatus.OK).body(resultTache); + } +} diff --git a/src/main/java/fr/organizee/model/Evenement.java b/src/main/java/fr/organizee/model/Evenement.java new file mode 100644 index 0000000..15a355f --- /dev/null +++ b/src/main/java/fr/organizee/model/Evenement.java @@ -0,0 +1,107 @@ +package fr.organizee.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +import javax.persistence.*; +import java.time.LocalDateTime; + +@Entity +public class Evenement { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + private LocalDateTime eventDebut; + private LocalDateTime eventFin; + private int allDay; + private String libelle; + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name="MEMBRE_ID") + @JsonIgnoreProperties("evenement") + private Membre membre; + @ManyToOne(cascade = CascadeType.MERGE) + @JoinColumn(name="TEAM_ID") + @JsonIgnoreProperties("evenement") + private Team team; + + public Evenement() { + } + + public Evenement(int id, LocalDateTime eventDebut, LocalDateTime eventFin, int allDay, String libelle, Membre membre, Team team) { + this.id = id; + this.eventDebut = eventDebut; + this.eventFin = eventFin; + this.allDay = allDay; + this.libelle = libelle; + this.membre = membre; + this.team = team; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public LocalDateTime getEventDebut() { + return eventDebut; + } + + public void setEventDebut(LocalDateTime eventDebut) { + this.eventDebut = eventDebut; + } + + public LocalDateTime getEventFin() { + return eventFin; + } + + public void setEventFin(LocalDateTime eventFin) { + this.eventFin = eventFin; + } + + public int getAllDay() { + return allDay; + } + + public void setAllDay(int allDay) { + this.allDay = allDay; + } + + public String getLibelle() { + return libelle; + } + + public void setLibelle(String libelle) { + this.libelle = libelle; + } + + public Membre getMembre() { + return membre; + } + + public void setMembre(Membre membre) { + this.membre = membre; + } + + public Team getTeam() { + return team; + } + + public void setTeam(Team team) { + this.team = team; + } + + @Override + public String toString() { + return "Evenement{" + + "id=" + id + + ", eventDebut=" + eventDebut + + ", eventFin=" + eventFin + + ", allDay=" + allDay + + ", libelle='" + libelle + '\'' + + ", membre=" + membre + + ", team=" + team + + '}'; + } +} diff --git a/src/main/java/fr/organizee/repository/EvenementRepository.java b/src/main/java/fr/organizee/repository/EvenementRepository.java new file mode 100644 index 0000000..51164c5 --- /dev/null +++ b/src/main/java/fr/organizee/repository/EvenementRepository.java @@ -0,0 +1,9 @@ +package fr.organizee.repository; + +import fr.organizee.model.Evenement; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface EvenementRepository extends JpaRepository { +} diff --git a/src/main/java/fr/organizee/repository/TacheRepository.java b/src/main/java/fr/organizee/repository/TacheRepository.java index 17c22b8..2e52ef2 100644 --- a/src/main/java/fr/organizee/repository/TacheRepository.java +++ b/src/main/java/fr/organizee/repository/TacheRepository.java @@ -1,4 +1,9 @@ package fr.organizee.repository; -public interface TacheRepository { +import fr.organizee.model.Tache; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface TacheRepository extends JpaRepository { } From 63e8f73f4e1dc30bbd4b4c9caea80782ddae9328 Mon Sep 17 00:00:00 2001 From: Blandine Bajard <83599148+BlandineBajard@users.noreply.github.com> Date: Thu, 20 Jan 2022 17:57:00 +0100 Subject: [PATCH 2/6] sign-up + forgot-password + rester-pwd non complet --- .../controller/MembreController.java | 39 +++++++++++++++++++ src/main/java/fr/organizee/model/Membre.java | 28 +------------ .../repository/MembreRepository.java | 9 +++++ .../fr/organizee/service/MembreService.java | 7 +++- .../organizee/service/MembreServiceImpl.java | 18 +++++++-- 5 files changed, 71 insertions(+), 30 deletions(-) diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java index e80f339..9c47b3f 100644 --- a/src/main/java/fr/organizee/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -13,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.web.bind.annotation.*; import javax.persistence.EntityNotFoundException; @@ -32,6 +33,9 @@ public class MembreController { @Autowired private MembreService membreService; + @Autowired + private BCryptPasswordEncoder passwordEncoder; + // @Autowired // private TeamRepository teamRepo; @@ -66,6 +70,41 @@ public class MembreController { } + @GetMapping("/forgot-password") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + public ResponseEntity findUserByEmail(@RequestBody Membre findUserByEmail) + { + try { + + this.membreService.findUserByEmail(findUserByEmail); + return ResponseEntity.ok("ok"); + } catch(Exception e) + { + return ResponseEntity.notFound().build(); + } + } + + @PutMapping("/reset-password/{email}") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + public ResponseEntity updatePassword(@RequestBody String password, @PathVariable String email) throws Exception { + Membre resultMembre; + try { + resultMembre = this.membreService.chercheEmail(email); + + System.out.println(resultMembre); + + resultMembre.setPassword(passwordEncoder.encode(password)); + + this.membreRepo.save(resultMembre); + + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); + } + + return ResponseEntity.status(HttpStatus.OK).body(resultMembre); + } + + // @GetMapping(value = "/team/all") // public ResponseEntity getAllTeam(){ // List liste = null; diff --git a/src/main/java/fr/organizee/model/Membre.java b/src/main/java/fr/organizee/model/Membre.java index 5733712..2bb7e53 100644 --- a/src/main/java/fr/organizee/model/Membre.java +++ b/src/main/java/fr/organizee/model/Membre.java @@ -44,24 +44,16 @@ public class Membre { public Membre() { } - public Membre(String nom, String prenom, LocalDate dateNaissance, @NotNull String email, @NotNull String password, String isAdmin, String couleur, String smiley, Team team, List roleList) { + public Membre(String nom, String prenom, LocalDate dateNaissance, Team team, @NotNull String email, @NotNull String password, List roleList) { this.nom = nom; this.prenom = prenom; this.dateNaissance = dateNaissance; this.email = email; this.password = password; - this.isAdmin = isAdmin; - this.couleur = couleur; - this.smiley = smiley; this.team = team; this.roleList=roleList; } - public Membre(@NotNull String email, @NotNull String password, List roleList) { - this.email = email; - this.password = password; - this.roleList=roleList; - } public int getId() { @@ -114,23 +106,7 @@ public class Membre { this.team = team; } - public String getCouleur() { - return couleur; - } - - public void setCouleur(String couleur) { - this.couleur = couleur; - } - - public String getSmiley() { - return smiley; - } - - public void setSmiley(String smiley) { - this.smiley = smiley; - } - - public List getRoleList() { + public List getRoleList() { return roleList; } public void setRoleList(List roleList) { diff --git a/src/main/java/fr/organizee/repository/MembreRepository.java b/src/main/java/fr/organizee/repository/MembreRepository.java index f431da3..137f203 100644 --- a/src/main/java/fr/organizee/repository/MembreRepository.java +++ b/src/main/java/fr/organizee/repository/MembreRepository.java @@ -1,9 +1,13 @@ package fr.organizee.repository; +import fr.organizee.model.Contact; import fr.organizee.model.Membre; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository @@ -12,7 +16,12 @@ public interface MembreRepository extends JpaRepository { Optional findByEmail(String email); + @Query(value = "select * from membre where email = :email", nativeQuery = true) + Membre chercheEmail(@Param("email") String email); + boolean existsByEmail(String email); void deleteByEmail(String email); + + } diff --git a/src/main/java/fr/organizee/service/MembreService.java b/src/main/java/fr/organizee/service/MembreService.java index 4000c67..66d57be 100644 --- a/src/main/java/fr/organizee/service/MembreService.java +++ b/src/main/java/fr/organizee/service/MembreService.java @@ -29,6 +29,7 @@ public interface MembreService { */ String signup(Membre membre) throws ExistingUsernameException; + /** * Methode qui retourne tous les utilisateurs de la bd * @return the list of all application users. @@ -40,6 +41,10 @@ public interface MembreService { * @param email the username to look for. * @return an Optional object containing user if found, empty otherwise. */ - Optional findUserByEmail(String email); + Optional findUserByEmail(Membre membre); + Optional findByEmail(String email); + + Membre chercheEmail(String email); + } diff --git a/src/main/java/fr/organizee/service/MembreServiceImpl.java b/src/main/java/fr/organizee/service/MembreServiceImpl.java index 6304d86..2e23b02 100644 --- a/src/main/java/fr/organizee/service/MembreServiceImpl.java +++ b/src/main/java/fr/organizee/service/MembreServiceImpl.java @@ -48,7 +48,7 @@ public class MembreServiceImpl implements MembreService { @Override public String signup(Membre membre) throws ExistingUsernameException { if (!membreRepository.existsByEmail(membre.getEmail())) { - Membre membreToSave = new Membre(membre.getEmail(), passwordEncoder.encode(membre.getPassword()), membre.getRoleList()); + Membre membreToSave = new Membre(membre.getNom(), membre.getPrenom(), membre.getDateNaissance(), membre.getTeam(), membre.getEmail(), passwordEncoder.encode(membre.getPassword()), membre.getRoleList()); membreRepository.save(membreToSave); return jwtTokenProvider.createToken(membre.getEmail(), membre.getRoleList()); } else { @@ -62,8 +62,20 @@ public class MembreServiceImpl implements MembreService { } @Override - public Optional findUserByEmail(String email) { - return membreRepository.findByEmail(email); + public Optional findUserByEmail(Membre membre) { + return this.membreRepository.findByEmail(membre.getEmail()); } + + @Override + public Optional findByEmail(String email) { + return this.membreRepository.findByEmail(email); + } + + @Override + public Membre chercheEmail(String email) { + return this.membreRepository.chercheEmail(email); + } + + } From 8d481cece84d26cf776f19f06a8142450a68bf17 Mon Sep 17 00:00:00 2001 From: Blandine Bajard <83599148+BlandineBajard@users.noreply.github.com> Date: Fri, 21 Jan 2022 12:55:15 +0100 Subject: [PATCH 3/6] reset password fonctionne --- .../controller/MembreController.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java index 9c47b3f..0ff9b67 100644 --- a/src/main/java/fr/organizee/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -69,19 +69,20 @@ public class MembreController { return membreService.findAllUsers().stream().map(appUser -> new MembreDto(appUser.getEmail(), appUser.getRoleList())).collect(Collectors.toList()); } - + //cette methode ne fonctionne pas parce que ça affiche "trouvé" dans tous les cas @GetMapping("/forgot-password") //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") - public ResponseEntity findUserByEmail(@RequestBody Membre findUserByEmail) - { - try { + public ResponseEntity findUserByEmail(@RequestBody Membre findUserByEmail) { + try { this.membreService.findUserByEmail(findUserByEmail); - return ResponseEntity.ok("ok"); - } catch(Exception e) - { - return ResponseEntity.notFound().build(); + return ResponseEntity.status(HttpStatus.OK).body("Email trouvé !"); + + } catch (EntityNotFoundException e) { + + return ResponseEntity.status(HttpStatus.OK).body("Email introuvable !"); } + } @PutMapping("/reset-password/{email}") @@ -95,7 +96,10 @@ public class MembreController { resultMembre.setPassword(passwordEncoder.encode(password)); + System.out.println(password); + this.membreRepo.save(resultMembre); + System.out.println(resultMembre.getPassword()); } catch (Exception e) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); From 094a61951a934c45588f5980ab8e5fae7b618dc3 Mon Sep 17 00:00:00 2001 From: Hedi Date: Fri, 21 Jan 2022 14:45:37 +0100 Subject: [PATCH 4/6] fix: pb update en cascade, ajout de Tache et Todolist (class et repository) --- .idea/compiler.xml | 1 + .../controller/ContactController.java | 3 - .../controller/MembreController.java | 36 ++------- .../organizee/controller/MenuController.java | 18 +++-- .../organizee/controller/TacheController.java | 22 +++++- .../organizee/controller/TeamController.java | 3 +- .../controller/TodoListController.java | 75 +++++++++++++++++++ src/main/java/fr/organizee/model/Contact.java | 2 +- src/main/java/fr/organizee/model/Membre.java | 2 +- src/main/java/fr/organizee/model/Menu.java | 25 ++++++- src/main/java/fr/organizee/model/Tache.java | 2 +- src/main/java/fr/organizee/model/Team.java | 8 +- .../java/fr/organizee/model/TodoList.java | 24 +++++- .../organizee/repository/TacheRepository.java | 8 ++ .../repository/TodoListRepository.java | 7 ++ 15 files changed, 180 insertions(+), 56 deletions(-) create mode 100644 src/main/java/fr/organizee/controller/TodoListController.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index c75fd2a..a500b21 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -7,6 +7,7 @@ + diff --git a/src/main/java/fr/organizee/controller/ContactController.java b/src/main/java/fr/organizee/controller/ContactController.java index 5186d12..ef79042 100644 --- a/src/main/java/fr/organizee/controller/ContactController.java +++ b/src/main/java/fr/organizee/controller/ContactController.java @@ -1,10 +1,7 @@ package fr.organizee.controller; import fr.organizee.model.Contact; -import fr.organizee.model.Membre; -import fr.organizee.model.Team; import fr.organizee.repository.ContactRepository; -import fr.organizee.repository.TeamRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java index e80f339..b4a85db 100644 --- a/src/main/java/fr/organizee/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -5,9 +5,7 @@ import fr.organizee.dto.MembreDto; import fr.organizee.exception.ExistingUsernameException; import fr.organizee.exception.InvalidCredentialsException; import fr.organizee.model.Membre; -//import fr.organizee.model.Team; import fr.organizee.repository.MembreRepository; -//import fr.organizee.repository.TeamRepository; import fr.organizee.service.MembreService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -32,10 +30,6 @@ public class MembreController { @Autowired private MembreService membreService; -// @Autowired -// private TeamRepository teamRepo; - -// @RequestMapping("/membres") @ResponseBody public String home() { @@ -45,6 +39,7 @@ public class MembreController { return sb.toString(); } + // Récupère tout les membres de la base @GetMapping(value = "/all") @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") public ResponseEntity getAll(){ @@ -66,21 +61,9 @@ public class MembreController { } -// @GetMapping(value = "/team/all") -// public ResponseEntity getAllTeam(){ -// List liste = null; -// try -// { -// liste = teamRepo.findAll(); -// } catch (Exception e) { -// return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); -// } -// -// return ResponseEntity.status(HttpStatus.OK).body(liste); -// } - + //Récupérer les informations d'un membre par son ID @GetMapping(value = "/{id}") - @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") public ResponseEntity findById(@PathVariable int id){ Optional membre = null; try @@ -93,13 +76,7 @@ public class MembreController { return ResponseEntity.status(HttpStatus.OK).body(membre); } -// @GetMapping(value = "/membres/delete/{id}") -// public void deleteMembreId(@PathVariable("id") Integer id) { -// -// membreRepo.deleteById(id); -// -// } - + //Efface un membre par son ID @DeleteMapping(value = "/delete/{id}") @PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity deleteMembre(@PathVariable int id){ @@ -114,6 +91,7 @@ public class MembreController { } } + //Ajouter un membre et inscription @PostMapping("/sign-up") public ResponseEntity signUp(@RequestBody Membre membre) { try { @@ -123,6 +101,7 @@ public class MembreController { } } + //Login @PostMapping("/sign-in") public ResponseEntity signIn(@RequestBody Membre membre) { try { @@ -132,8 +111,9 @@ public class MembreController { } } + //Met a jour les informations d'un membre par son ID @PutMapping("/update/{id}") - @PreAuthorize("hasRole('ROLE_PARENT')") + //@PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity updateMembre(@RequestBody Membre membre, @PathVariable Integer id) throws Exception { Membre resultMembre = null; try { diff --git a/src/main/java/fr/organizee/controller/MenuController.java b/src/main/java/fr/organizee/controller/MenuController.java index f4e4ec8..b7db085 100644 --- a/src/main/java/fr/organizee/controller/MenuController.java +++ b/src/main/java/fr/organizee/controller/MenuController.java @@ -1,6 +1,5 @@ package fr.organizee.controller; -import fr.organizee.model.Contact; import fr.organizee.model.Menu; import fr.organizee.repository.MenuRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -21,8 +20,9 @@ public class MenuController { @Autowired private MenuRepository menuRepository; + //Récupère les infos d'un menu par son ID @GetMapping(value = "/{id}") - @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") public ResponseEntity findById(@PathVariable int id){ Optional menu = null; try @@ -35,8 +35,9 @@ public class MenuController { return ResponseEntity.status(HttpStatus.OK).body(menu); } + //Récupère les infos des menus par la team ID @GetMapping(value = "team/{team_id}") - @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") public ResponseEntity findByTeamId(@PathVariable int team_id) { List menus = null; try { @@ -47,8 +48,9 @@ public class MenuController { return ResponseEntity.status(HttpStatus.OK).body(menus); } + //Ajoute un nouveau menu @PostMapping(value="/add") - @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") public ResponseEntity addMenu(@RequestBody Menu menu){ Menu resultMenu = null; try { @@ -60,8 +62,9 @@ public class MenuController { return ResponseEntity.status(HttpStatus.CREATED).body(resultMenu); } + //Mise a jour d'un menu par son ID @PutMapping("/update/{id}") - @PreAuthorize("hasRole('ROLE_PARENT')") + //@PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity updateMenu(@RequestBody Menu menu, @PathVariable Integer id) throws Exception { Menu resultMenu = null; try { @@ -71,11 +74,12 @@ public class MenuController { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); } - return ResponseEntity.status(HttpStatus.OK).body(menuRepository); + return ResponseEntity.status(HttpStatus.OK).body(resultMenu); } + //Efface un menu par son ID @DeleteMapping(value = "/delete/{id}") - @PreAuthorize("hasRole('ROLE_PARENT')") + //@PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity deleteMenu(@PathVariable int id){ try { menuRepository.delete(menuRepository.getById(id)); diff --git a/src/main/java/fr/organizee/controller/TacheController.java b/src/main/java/fr/organizee/controller/TacheController.java index 8408ada..681d760 100644 --- a/src/main/java/fr/organizee/controller/TacheController.java +++ b/src/main/java/fr/organizee/controller/TacheController.java @@ -1,12 +1,11 @@ package fr.organizee.controller; -import fr.organizee.model.Membre; import fr.organizee.model.Tache; -import fr.organizee.repository.MembreRepository; import fr.organizee.repository.TacheRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.persistence.EntityNotFoundException; @@ -20,6 +19,7 @@ public class TacheController { @Autowired private TacheRepository tacheRepo; + // Récupère toutes les taches de toutes la base toutes team confondu @GetMapping(value = "/all") public ResponseEntity getAll(){ List liste = null; @@ -33,6 +33,7 @@ public class TacheController { return ResponseEntity.status(HttpStatus.OK).body(liste); } + // Récupère les infos d'une tache avec son ID @GetMapping(value = "/{id}") public ResponseEntity findById(@PathVariable int id){ Optional tache = null; @@ -46,6 +47,7 @@ public class TacheController { return ResponseEntity.status(HttpStatus.OK).body(tache); } + // Efface une tache avec son ID @DeleteMapping(value = "/delete/{id}") public ResponseEntity deleteTache(@PathVariable int id){ try { @@ -58,6 +60,7 @@ public class TacheController { } } + // Ajoute une tache @PostMapping(value="/add", produces="application/json", consumes="application/json") public ResponseEntity addTache(@RequestBody Tache tache){ Tache resultTache = null; @@ -70,6 +73,7 @@ public class TacheController { return ResponseEntity.status(HttpStatus.CREATED).body(resultTache); } + //Met a jour les informations d'une date avec son ID @PutMapping("/update/{id}") public ResponseEntity updateTache(@RequestBody Tache tache, @PathVariable Integer id) throws Exception { Tache resultTache = null; @@ -82,4 +86,18 @@ public class TacheController { return ResponseEntity.status(HttpStatus.OK).body(resultTache); } + + //A revoir, résultat a chier, passez par la todolist + @GetMapping(value = "team/{team_id}") + public ResponseEntity findByTeamId(@PathVariable int team_id){ + List taches = null; + try + { + taches = tacheRepo.FindTachesByTeam(team_id); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + + return ResponseEntity.status(HttpStatus.OK).body(taches); + } } diff --git a/src/main/java/fr/organizee/controller/TeamController.java b/src/main/java/fr/organizee/controller/TeamController.java index f8766ca..7b6d9d3 100644 --- a/src/main/java/fr/organizee/controller/TeamController.java +++ b/src/main/java/fr/organizee/controller/TeamController.java @@ -1,6 +1,5 @@ package fr.organizee.controller; -import fr.organizee.model.Membre; import fr.organizee.model.Team; import fr.organizee.repository.TeamRepository; import org.springframework.beans.factory.annotation.Autowired; @@ -48,7 +47,7 @@ public class TeamController { } @GetMapping(value = "/{id}") - @PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") + //@PreAuthorize("hasRole('ROLE_PARENT') or hasRole('ROLE_ENFANT')") public ResponseEntity findTeamById(@PathVariable int id){ Optional liste = null; try diff --git a/src/main/java/fr/organizee/controller/TodoListController.java b/src/main/java/fr/organizee/controller/TodoListController.java new file mode 100644 index 0000000..747eff9 --- /dev/null +++ b/src/main/java/fr/organizee/controller/TodoListController.java @@ -0,0 +1,75 @@ +package fr.organizee.controller; + +import fr.organizee.model.TodoList; +import fr.organizee.repository.TodoListRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.persistence.EntityNotFoundException; +import java.util.List; + +@RestController +@CrossOrigin("*") +@RequestMapping("/todolist") +public class TodoListController { + + @Autowired + private TodoListRepository todolistRepo; + + @GetMapping(value = "/all") + public ResponseEntity getAll(){ + List liste = null; + try + { + liste = todolistRepo.findAll(); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + + return ResponseEntity.status(HttpStatus.OK).body(liste); + } + + @DeleteMapping(value = "/delete/{id}") + //@PreAuthorize("hasRole('ROLE_PARENT')") + public ResponseEntity deleteTodolist(@PathVariable int id){ + try { + todolistRepo.delete(todolistRepo.getById(id)); + //membreRepo.deleteById(id); + return ResponseEntity.status(HttpStatus.OK).body("Todolist effacée !"); + + } catch (EntityNotFoundException e) { + + return ResponseEntity.status(HttpStatus.OK).body("Todolist introuvable !"); + } + } + + @GetMapping(value = "/team/{team_id}") + public ResponseEntity findByTeamId(@PathVariable int team_id){ + List todoLists = null; + try + { + todoLists = todolistRepo.FindTodolistByTeam(team_id); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); + } + + return ResponseEntity.status(HttpStatus.OK).body(todoLists); + } + + //Met a jour les informations d'une date avec son ID + @PutMapping("/update/{id}") + public ResponseEntity updateTodolist(@RequestBody TodoList todolist, @PathVariable Integer id) throws Exception { + TodoList resultTodolist = null; + try { + resultTodolist = todolistRepo.save(todolist); + + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(e.getMessage()); + } + + return ResponseEntity.status(HttpStatus.OK).body(resultTodolist); + } +} diff --git a/src/main/java/fr/organizee/model/Contact.java b/src/main/java/fr/organizee/model/Contact.java index ccd14c6..2c5ffb2 100644 --- a/src/main/java/fr/organizee/model/Contact.java +++ b/src/main/java/fr/organizee/model/Contact.java @@ -16,7 +16,7 @@ public class Contact { private String email; private String adresse; private LocalDate dateNaissance; - @ManyToOne(cascade = CascadeType.MERGE) + @ManyToOne @JoinColumn(name="TEAM_ID") @JsonIgnoreProperties("contact") private Team team; diff --git a/src/main/java/fr/organizee/model/Membre.java b/src/main/java/fr/organizee/model/Membre.java index 5733712..d54a360 100644 --- a/src/main/java/fr/organizee/model/Membre.java +++ b/src/main/java/fr/organizee/model/Membre.java @@ -36,7 +36,7 @@ public class Membre { // @ManyToOne // @JoinColumn(name="TEAM_ID") // @JsonIgnore - @ManyToOne(cascade = CascadeType.MERGE) + @ManyToOne @JoinColumn(name="TEAM_ID") @JsonIgnoreProperties("membre") private Team team; diff --git a/src/main/java/fr/organizee/model/Menu.java b/src/main/java/fr/organizee/model/Menu.java index b486e2b..e11cba4 100644 --- a/src/main/java/fr/organizee/model/Menu.java +++ b/src/main/java/fr/organizee/model/Menu.java @@ -13,20 +13,19 @@ public class Menu { private String libelle; private LocalDate dateMenu; private int validationProposition; - @ManyToOne(cascade = CascadeType.MERGE) + @ManyToOne @JoinColumn(name="TEAM_ID") @JsonIgnoreProperties("menu") private Team team; - @ManyToOne - private Membre membre; public Menu() { } - public Menu(String libelle, LocalDate dateMenu, int validationProposition) { + public Menu(String libelle, LocalDate dateMenu, int validationProposition, Team team) { this.libelle = libelle; this.dateMenu = dateMenu; this.validationProposition=validationProposition; + this.team = team; } public int getId() { @@ -53,12 +52,30 @@ public class Menu { this.dateMenu = dateMenu; } + public int getValidationProposition() { + return validationProposition; + } + + public void setValidationProposition(int validationProposition) { + this.validationProposition = validationProposition; + } + + public Team getTeam() { + return team; + } + + public void setTeam(Team team) { + this.team = team; + } + @Override public String toString() { return "Menu{" + "id=" + id + ", libelle='" + libelle + '\'' + ", dateMenu=" + dateMenu + + ", validationProposition=" + validationProposition + + ", team=" + team + '}'; } } diff --git a/src/main/java/fr/organizee/model/Tache.java b/src/main/java/fr/organizee/model/Tache.java index e3d9d03..a21965a 100644 --- a/src/main/java/fr/organizee/model/Tache.java +++ b/src/main/java/fr/organizee/model/Tache.java @@ -11,7 +11,7 @@ public class Tache { private int id; private String texte; private Boolean etat; - @ManyToOne(cascade = CascadeType.MERGE) + @ManyToOne @JoinColumn(name="TODOLIST_ID") @JsonIgnoreProperties("tache") private TodoList todolist; diff --git a/src/main/java/fr/organizee/model/Team.java b/src/main/java/fr/organizee/model/Team.java index 1da65d5..ded5837 100644 --- a/src/main/java/fr/organizee/model/Team.java +++ b/src/main/java/fr/organizee/model/Team.java @@ -12,16 +12,16 @@ public class Team { @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String nom; - @OneToMany(mappedBy = "team", fetch=FetchType.LAZY) + @OneToMany(mappedBy = "team", fetch=FetchType.LAZY, cascade = CascadeType.ALL) @JsonIgnoreProperties("team") private List membres = new ArrayList<>(); - @OneToMany(mappedBy = "team", fetch=FetchType.LAZY) + @OneToMany(mappedBy = "team", fetch=FetchType.LAZY, cascade = CascadeType.ALL) @JsonIgnoreProperties("team") private List contacts = new ArrayList<>(); - @OneToMany(mappedBy = "team", fetch=FetchType.LAZY) + @OneToMany(mappedBy = "team", fetch=FetchType.LAZY, cascade = CascadeType.ALL) @JsonIgnoreProperties("team") private List todolists = new ArrayList<>(); - @OneToMany(mappedBy = "team", fetch=FetchType.LAZY) + @OneToMany(mappedBy = "team", fetch=FetchType.LAZY, cascade = CascadeType.ALL) @JsonIgnoreProperties("team") private List menus = new ArrayList<>(); diff --git a/src/main/java/fr/organizee/model/TodoList.java b/src/main/java/fr/organizee/model/TodoList.java index 01f0328..007e68a 100644 --- a/src/main/java/fr/organizee/model/TodoList.java +++ b/src/main/java/fr/organizee/model/TodoList.java @@ -12,10 +12,13 @@ public class TodoList { @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String nom; - @ManyToOne(cascade = CascadeType.MERGE) + @ManyToOne @JoinColumn(name="TEAM_ID") @JsonIgnoreProperties("todolist") private Team team; + @OneToMany(mappedBy = "todolist", fetch=FetchType.LAZY, cascade = CascadeType.ALL) + @JsonIgnoreProperties("todolist") + private List taches = new ArrayList<>(); public TodoList() { } @@ -40,11 +43,26 @@ public class TodoList { this.nom = nom; } + public List getTaches() { + return taches; + } + + public void setTaches(List taches) { + this.taches = taches; + } + + public Team getTeam() { + return team; + } + + public void setTeam(Team team) { + this.team = team; + } + @Override public String toString() { return "TodoList{" + "id=" + id + - ", nom='" + nom + '\'' + - '}'; + ", nom='" + nom + ", taches='" + taches + "}"; } } diff --git a/src/main/java/fr/organizee/repository/TacheRepository.java b/src/main/java/fr/organizee/repository/TacheRepository.java index 2e52ef2..a9ac6f9 100644 --- a/src/main/java/fr/organizee/repository/TacheRepository.java +++ b/src/main/java/fr/organizee/repository/TacheRepository.java @@ -2,8 +2,16 @@ package fr.organizee.repository; import fr.organizee.model.Tache; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface TacheRepository extends JpaRepository { + + // N'est plus utilisé normalement + @Query(value = "select * from todo_list, tache where todo_list.team_id = :team_id and todo_list.id = tache.todolist_id", nativeQuery = true) + List FindTachesByTeam(@Param("team_id") int team_id); } diff --git a/src/main/java/fr/organizee/repository/TodoListRepository.java b/src/main/java/fr/organizee/repository/TodoListRepository.java index 32a2e63..c922953 100644 --- a/src/main/java/fr/organizee/repository/TodoListRepository.java +++ b/src/main/java/fr/organizee/repository/TodoListRepository.java @@ -1,9 +1,16 @@ package fr.organizee.repository; +import fr.organizee.model.Menu; import fr.organizee.model.TodoList; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository public interface TodoListRepository extends JpaRepository { + @Query(value = "select * from todo_list where team_id = :team_id", nativeQuery = true) + List FindTodolistByTeam(@Param("team_id") int team_id); } From 657a31cc63114529fdb7aa849215082ae0361941 Mon Sep 17 00:00:00 2001 From: Blandine Bajard <83599148+BlandineBajard@users.noreply.github.com> Date: Fri, 21 Jan 2022 14:47:59 +0100 Subject: [PATCH 5/6] modif methode sign-up et controller membre et model membre --- src/main/java/fr/organizee/model/Membre.java | 9 ++++++++- .../java/fr/organizee/service/MembreServiceImpl.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/organizee/model/Membre.java b/src/main/java/fr/organizee/model/Membre.java index 2bb7e53..3cabf24 100644 --- a/src/main/java/fr/organizee/model/Membre.java +++ b/src/main/java/fr/organizee/model/Membre.java @@ -44,9 +44,10 @@ public class Membre { public Membre() { } - public Membre(String nom, String prenom, LocalDate dateNaissance, Team team, @NotNull String email, @NotNull String password, List roleList) { + public Membre(String nom, String prenom, String couleur, LocalDate dateNaissance, Team team, @NotNull String email, @NotNull String password, List roleList) { this.nom = nom; this.prenom = prenom; + this.couleur = couleur; this.dateNaissance = dateNaissance; this.email = email; this.password = password; @@ -65,6 +66,12 @@ public class Membre { public String getNom() { return nom; } + public String getCouleur() { + return couleur; + } + public void setCouleur(String couleur) { + this.couleur = couleur; + } public void setNom(String nom) { this.nom = nom; } diff --git a/src/main/java/fr/organizee/service/MembreServiceImpl.java b/src/main/java/fr/organizee/service/MembreServiceImpl.java index 2e23b02..2197bbc 100644 --- a/src/main/java/fr/organizee/service/MembreServiceImpl.java +++ b/src/main/java/fr/organizee/service/MembreServiceImpl.java @@ -48,7 +48,7 @@ public class MembreServiceImpl implements MembreService { @Override public String signup(Membre membre) throws ExistingUsernameException { if (!membreRepository.existsByEmail(membre.getEmail())) { - Membre membreToSave = new Membre(membre.getNom(), membre.getPrenom(), membre.getDateNaissance(), membre.getTeam(), membre.getEmail(), passwordEncoder.encode(membre.getPassword()), membre.getRoleList()); + Membre membreToSave = new Membre(membre.getNom(), membre.getPrenom(), membre.getCouleur(), membre.getDateNaissance(), membre.getTeam(), membre.getEmail(), passwordEncoder.encode(membre.getPassword()), membre.getRoleList()); membreRepository.save(membreToSave); return jwtTokenProvider.createToken(membre.getEmail(), membre.getRoleList()); } else { From fbc5d8378045000da45d523a9e7151683b456450 Mon Sep 17 00:00:00 2001 From: Hedi Date: Fri, 21 Jan 2022 18:33:37 +0100 Subject: [PATCH 6/6] fix merge bis --- .../java/fr/organizee/controller/MembreController.java | 2 +- src/main/java/fr/organizee/controller/TeamController.java | 8 ++++---- src/main/java/fr/organizee/model/Membre.java | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/fr/organizee/controller/MembreController.java b/src/main/java/fr/organizee/controller/MembreController.java index 90c1433..93df3d8 100644 --- a/src/main/java/fr/organizee/controller/MembreController.java +++ b/src/main/java/fr/organizee/controller/MembreController.java @@ -121,7 +121,7 @@ public class MembreController { //Efface un membre par son ID @DeleteMapping(value = "/delete/{id}") - @PreAuthorize("hasRole('ROLE_PARENT')") + //@PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity deleteMembre(@PathVariable int id){ try { membreRepo.delete(membreRepo.getById(id)); diff --git a/src/main/java/fr/organizee/controller/TeamController.java b/src/main/java/fr/organizee/controller/TeamController.java index 7b6d9d3..1d96ae5 100644 --- a/src/main/java/fr/organizee/controller/TeamController.java +++ b/src/main/java/fr/organizee/controller/TeamController.java @@ -33,7 +33,7 @@ public class TeamController { // Récupération de toutes les teams @GetMapping(value = "/all") - @PreAuthorize("hasRole('ROLE_PARENT')") + //@PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity getAllTeam(){ List liste = null; try @@ -61,7 +61,7 @@ public class TeamController { } @PostMapping(value="/add", produces="application/json", consumes="application/json") - @PreAuthorize("hasRole('ROLE_PARENT')") + //@PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity addTeam(@RequestBody Team team){ Team resultTeam = null; try { @@ -74,7 +74,7 @@ public class TeamController { } @PutMapping("/update/{id}") - @PreAuthorize("hasRole('ROLE_PARENT')") + //@PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity updateTeam(@RequestBody Team team, @PathVariable Integer id) throws Exception { Team resultTeam = null; try { @@ -88,7 +88,7 @@ public class TeamController { } @DeleteMapping(value = "/delete/{id}") - @PreAuthorize("hasRole('ROLE_PARENT')") + //@PreAuthorize("hasRole('ROLE_PARENT')") public ResponseEntity deleteTeam(@PathVariable int id){ try { teamRepo.delete(teamRepo.getById(id)); diff --git a/src/main/java/fr/organizee/model/Membre.java b/src/main/java/fr/organizee/model/Membre.java index 231359d..c8cc3d8 100644 --- a/src/main/java/fr/organizee/model/Membre.java +++ b/src/main/java/fr/organizee/model/Membre.java @@ -36,7 +36,7 @@ public class Membre { // @ManyToOne // @JoinColumn(name="TEAM_ID") // @JsonIgnore - @ManyToOne(cascade = CascadeType.MERGE) + @ManyToOne @JoinColumn(name="TEAM_ID") @JsonIgnoreProperties("membre") private Team team;