diff --git a/back_end/pom.xml b/back_end/pom.xml index a2c98b2..4707f2a 100644 --- a/back_end/pom.xml +++ b/back_end/pom.xml @@ -49,7 +49,7 @@ org.springframework.boot - spring-boot-starter-webmvc + spring-boot-starter-web org.thymeleaf.extras @@ -97,6 +97,11 @@ spring-boot-starter-thymeleaf-test test + + org.springframework.boot + spring-boot-starter-test + test + org.projectlombok lombok diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/ActiviteResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/ActiviteResource.java index 83a7426..aefeed5 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/ActiviteResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/ActiviteResource.java @@ -37,11 +37,7 @@ public class ActiviteResource { try { Session session = sessionDAO.findById(dto.getSessionId()).get(); - Activite activite = new Activite(); - activite.setName(dto.getName()); - activite.setTheme(dto.getTheme()); - activite.setDuree(dto.getDuree() != null ? dto.getDuree() : 0L); - activite.setDataActivite(dto.getDataActivite()); + Activite activite = mapToEntity(dto); activite.setSession(session); activiteDAO.save(activite); } catch (Exception ex) { @@ -90,14 +86,7 @@ public class ActiviteResource { public ResponseEntity getActivityById(@PathVariable("id") int id) { try { Activite activite = activiteDAO.findById(id).get(); - ActiviteDTO dto = new ActiviteDTO(); - dto.setName(activite.getName()); - dto.setId(activite.getId()); - dto.setTheme(activite.getTheme()); - dto.setDuree(activite.getDuree()); - dto.setDataActivite(activite.getDataActivite()); - dto.setSessionId(activite.getSession() != null ? activite.getSession().getId() : null); - + ActiviteDTO dto = mapToDTO(activite); return ResponseEntity.ok(dto); } catch (Exception ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); @@ -110,16 +99,7 @@ public class ActiviteResource { public ResponseEntity> getAllActivity() { try { List activites = activiteDAO.findAll(); - List dtos = activites.stream().map(activite -> { - ActiviteDTO dto = new ActiviteDTO(); - dto.setName(activite.getName()); - dto.setId(activite.getId()); - dto.setTheme(activite.getTheme()); - dto.setDuree(activite.getDuree()); - dto.setDataActivite(activite.getDataActivite()); - dto.setSessionId(activite.getSession() != null ? activite.getSession().getId() : null); - return dto; - }).collect(Collectors.toList()); + List dtos = activites.stream().map(this::mapToDTO).collect(Collectors.toList()); return ResponseEntity.ok(dtos); } catch (Exception ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); @@ -133,16 +113,7 @@ public class ActiviteResource { public ResponseEntity> getActivityByTheme(@PathVariable("theme") String theme) { try { List activites = activiteDAO.findByTheme(theme); - List dtos = activites.stream().map(activite -> { - ActiviteDTO dto = new ActiviteDTO(); - dto.setName(activite.getName()); - dto.setId(activite.getId()); - dto.setTheme(activite.getTheme()); - dto.setDuree(activite.getDuree()); - dto.setDataActivite(activite.getDataActivite()); - dto.setSessionId(activite.getSession() != null ? activite.getSession().getId() : null); - return dto; - }).collect(Collectors.toList()); + List dtos = activites.stream().map(this::mapToDTO).collect(Collectors.toList()); return ResponseEntity.ok(dtos); } catch (Exception ex) { return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); @@ -150,4 +121,24 @@ public class ActiviteResource { } + private Activite mapToEntity(ActiviteDTO dto) { + Activite activite = new Activite(); + //ID géré par Postgre ? + activite.setName(dto.getName()); + activite.setTheme(dto.getTheme()); + activite.setDuree(dto.getDuree()); + activite.setDataActivite(dto.getDataActivite()); + return activite; + } + + private ActiviteDTO mapToDTO(Activite activite) { + ActiviteDTO dto = new ActiviteDTO(); + dto.setName(activite.getName()); + dto.setTheme(activite.getTheme()); + dto.setDuree(activite.getDuree()); + dto.setDataActivite(activite.getDataActivite()); + dto.setSessionId(activite.getSession() != null ? activite.getSession().getId() : null); + return dto; + } + } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java index 6944a35..a0230f0 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/AthleteResource.java @@ -37,10 +37,8 @@ public class AthleteResource { @PostMapping("/create") @PreAuthorize("hasRole('Admin')") // Only admin can create?? public ResponseEntity create(@RequestBody AthleteDTO dto) { - Athlete athlete = new Athlete(); - athlete.setName(dto.getName()); - athlete.setCategorie(dto.getCategorie()); - athlete.setNiveau(dto.getNiveau()); + Athlete athlete = mapToEntity(dto); + athleteDAO.save(athlete); return ResponseEntity.status(HttpStatus.CREATED).body(mapToDTO(athlete)); } @@ -108,6 +106,16 @@ public class AthleteResource { dto.setNiveau(athlete.getNiveau()); return dto; } + + private Athlete mapToEntity(AthleteDTO dto) { + Athlete athlete = new Athlete(); + athlete.setId(dto.getId()); + athlete.setName(dto.getName()); + athlete.setCategorie(dto.getCategorie()); + athlete.setNiveau(dto.getNiveau()); + return athlete; + } + @GetMapping("/athlete/{id}/session") public List getSessionsAthlete(@PathVariable Integer athleteId) { // return pet diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/CoachResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/CoachResource.java index ddb8c85..c6027a9 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/CoachResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/CoachResource.java @@ -20,8 +20,7 @@ public class CoachResource { @PostMapping("/create") @PreAuthorize("hasRole('Admin')") // Only admin can create public ResponseEntity create(@RequestBody CoachDTO dto) { - Coach coach = new Coach(); - coach.setName(dto.getName()); + Coach coach = mapToEntity(dto); coachDAO.save(coach); return ResponseEntity.status(HttpStatus.CREATED).body(mapToDTO(coach)); } @@ -52,7 +51,8 @@ public class CoachResource { .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Coach not found")); if (dto.getName() != null) coach.setName(dto.getName()); coachDAO.save(coach); - return ResponseEntity.ok(mapToDTO(coach)); + CoachDTO updatedDto = mapToDTO(coach); + return ResponseEntity.ok(updatedDto); } @DeleteMapping("/delete/{id}") @@ -70,5 +70,12 @@ public class CoachResource { dto.setName(coach.getName()); return dto; } + + private Coach mapToEntity(CoachDTO dto) { + Coach coach = new Coach(); + coach.setId(dto.getId()); + coach.setName(dto.getName()); + return coach; + } } diff --git a/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java b/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java index dfdf6db..ec03899 100644 --- a/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java +++ b/back_end/src/main/java/hackathon/FrisbYEE/rest/SessionResource.java @@ -40,16 +40,7 @@ public class SessionResource { @PreAuthorize("hasRole('Coach')") public ResponseEntity create(@RequestBody SessionDTO dto) { try { - List athletes = athleteDAO.findAllById(dto.getAthleteIds()); - Coach coach = coachDAO.findById(dto.getCoachId()).get(); - Session session = new Session(); - session.setName(dto.getName()); - session.setIsRecurrent(dto.getIsRecurrent()); - session.setCreneau(dto.getCreneau()); - session.setDuree(dto.getDuree()); - session.setGroupe(dto.getGroupe()); - session.setCoach(coach); - session.setAthletes(athletes); + Session session = maptoEntity(dto); sessionDAO.save(session); return ResponseEntity.status(HttpStatus.CREATED).body(maptoDTO(session)); } catch (Exception ex) { @@ -143,4 +134,31 @@ public class SessionResource { } return dto; } + + private Session maptoEntity(SessionDTO dto) { + Session session = new Session(); + session.setId(dto.getId()); + session.setName(dto.getName()); + session.setIsRecurrent(dto.getIsRecurrent()); + session.setCreneau(dto.getCreneau()); + session.setDuree(dto.getDuree()); + session.setGroupe(dto.getGroupe()); + // Coach + if (dto.getCoachId() != null) { + Coach coach = new Coach(); + coach.setId(dto.getCoachId()); + session.setCoach(coach); + } + // Athletes + if (dto.getAthleteIds() != null) { + List athletes = athleteDAO.findAllById(dto.getAthleteIds()); + session.setAthletes(athletes); + } + // Activites + if (dto.getActiviteIds() != null) { + List activites = activiteDAO.findAllById(dto.getActiviteIds()); + session.setActivites(activites); + } + return session; + } } diff --git a/back_end/src/test/java/hackathon/FrisbYEE/FrisbYeeApplicationTests.java b/back_end/src/test/java/hackathon/FrisbYEE/FrisbYeeApplicationTests.java index a6f781d..5a4683f 100644 --- a/back_end/src/test/java/hackathon/FrisbYEE/FrisbYeeApplicationTests.java +++ b/back_end/src/test/java/hackathon/FrisbYEE/FrisbYeeApplicationTests.java @@ -1,13 +1,27 @@ package hackathon.FrisbYEE; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.client.RestTestClient; -@SpringBootTest -class FrisbYeeApplicationTests { +import hackathon.FrisbYEE.rest.AthleteResource; - @Test - void contextLoads() { + +class FrisbYEEApplicationTests { + + //Controller + private AthleteResource athleteResource; + private RestTestClient mockMvc; + + @BeforeEach + void setUp() { + athleteResource = new AthleteResource(); + mockMvc = RestTestClient.bindToController(athleteResource).build(); } + @Test + void shouldReturnUsers() throws Exception { + //mockMvc.perform(get("/api/users")) + // .andExpect(status().isOk()); + } }