Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.flywaydb:flyway-core'
implementation 'org.flywaydb:flyway-mysql'
implementation 'org.projectlombok:lombok:1.18.22'
runtimeOnly 'com.mysql:mysql-connector-j'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation "org.mapstruct:mapstruct:1.4.2.Final"
annotationProcessor "org.mapstruct:mapstruct-processor:1.4.2.Final"
}

tasks.named('test') {
Expand Down
34 changes: 25 additions & 9 deletions src/main/java/fr/cgs/cgs_back/controller/ClassroomController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@
import com.electronwill.nightconfig.core.conversion.Path;
import fr.cgs.cgs_back.dto.ClassroomDto;
import fr.cgs.cgs_back.entity.Classroom;
import fr.cgs.cgs_back.entity.Site;
import fr.cgs.cgs_back.mapper.MapStructMapper;
import fr.cgs.cgs_back.service.ClassroomService;
import fr.cgs.cgs_back.service.SiteService;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
Expand All @@ -19,6 +22,10 @@ public class ClassroomController {

@Autowired
private ClassroomService classroomService;
@Autowired
private MapStructMapper mapper;
@Autowired
private SiteService siteService;

@GetMapping("/{id}")
public Classroom findById(@PathVariable int id) {
Expand All @@ -30,20 +37,29 @@ public List<Classroom> list() {
return classroomService.findAll();
}

@PostMapping("/add")
public ResponseEntity<Classroom> insertClassroom(@RequestBody Classroom classroom) {
Classroom newClassroom = classroomService.insertClassroom(classroom);
return ResponseEntity.ok(newClassroom);
@PostMapping("{siteId}/add")
public ResponseEntity<Void> insertClassroom(@PathVariable int siteId, @RequestBody ClassroomDto classroomDto) {
Site site = siteService.getSiteById(siteId);
classroomDto.setSite(site);
classroomService.insertClassroom(mapper.classroomDtoToClassroom(classroomDto));
return new ResponseEntity<>(HttpStatus.CREATED);
}

@PutMapping("/{id}")
public ResponseEntity<Classroom> updateClassroom(@PathVariable int id, @RequestBody Classroom updatedClassroom) {
public ResponseEntity<Classroom> updateClassroom(@PathVariable int id, @RequestBody ClassroomDto updatedClassroom) {
try{
Classroom classroom = classroomService.findById(id);
classroom.setName(updatedClassroom.getName());
classroom.setCapacity(updatedClassroom.getCapacity());
classroom.setSite(updatedClassroom.getSite());
Classroom savedClassroom = classroomService.insertClassroom(classroom);

ClassroomDto newClassroom = mapper.classroomToClassroomDto(classroom);

newClassroom.setName(updatedClassroom.getName());
newClassroom.setCapacity(updatedClassroom.getCapacity());

Classroom mappedClassroom = mapper.classroomDtoToClassroom(newClassroom);

mappedClassroom.setId(id);

Classroom savedClassroom = classroomService.insertClassroom(mappedClassroom);
return ResponseEntity.ok(savedClassroom);
} catch(EntityNotFoundException e){
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
Expand Down
52 changes: 41 additions & 11 deletions src/main/java/fr/cgs/cgs_back/controller/PromotionController.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,15 @@
package fr.cgs.cgs_back.controller;

import fr.cgs.cgs_back.dto.PromotionDto;
import fr.cgs.cgs_back.entity.Classroom;
import fr.cgs.cgs_back.entity.Promotion;
import fr.cgs.cgs_back.mapper.MapStructMapper;
import fr.cgs.cgs_back.service.ClassroomService;
import fr.cgs.cgs_back.service.PromotionService;
import fr.cgs.cgs_back.service.UserService;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

Expand All @@ -12,9 +19,14 @@
@RequestMapping("/api/promotion")
@CrossOrigin(origins = "http://localhost:3000")
public class PromotionController {

@Autowired
private PromotionService promotionService;
@Autowired
private ClassroomService classroomService;
@Autowired
private UserService userService;
@Autowired
private MapStructMapper mapper;

@GetMapping("/{id}")
public Promotion getPromotionById(@PathVariable int id) { return promotionService.getPromotionById(id); }
Expand All @@ -23,19 +35,37 @@ public class PromotionController {
public List<Promotion> list() { return promotionService.findAll(); }

@PostMapping("/add")
public ResponseEntity<Promotion> insertPromotion(@RequestBody Promotion promotion) {
Promotion newPromotion = promotionService.insertPromotion(promotion);
return ResponseEntity.ok(newPromotion);
public ResponseEntity<Promotion> insertPromotion(@RequestBody PromotionDto promotionDto) {
promotionService.insertPromotion(mapper.promotionDtoToPromotion(promotionDto));
return new ResponseEntity<>(HttpStatus.CREATED);
}

@PutMapping("/{id}")
public ResponseEntity<Promotion> updatePromotion(@PathVariable int id, @RequestBody Promotion updatedPromotion) {
Promotion promotion = promotionService.getPromotionById(id);
promotion.setName(updatedPromotion.getName());
promotion.setStartedAt(updatedPromotion.getStartedAt());
promotion.setClassroom(updatedPromotion.getClassroom());
Promotion savedPromotion = promotionService.insertPromotion(promotion);
return ResponseEntity.ok(savedPromotion);
public ResponseEntity<Promotion> updatePromotion(@PathVariable int id, @RequestBody PromotionDto updatedPromotion) {
try{
Promotion promotion = promotionService.getPromotionById(id);

PromotionDto newPromotion = mapper.promotionToPromotionDto(promotion);

newPromotion.setName(updatedPromotion.getName());
newPromotion.setVolume(updatedPromotion.getVolume());
newPromotion.setStartedAt(updatedPromotion.getStartedAt());
newPromotion.setEndedAt(updatedPromotion.getEndedAt());
newPromotion.setClassroom_id(updatedPromotion.getClassroom_id());
newPromotion.setUser_id(updatedPromotion.getUser_id());
newPromotion.setClassroom(classroomService.findById(newPromotion.getClassroom_id()));
newPromotion.setUser(userService.findById(newPromotion.getUser_id()));

Promotion mappedPromotion = mapper.promotionDtoToPromotion(newPromotion);
mappedPromotion.setId(id);

Promotion savedPromotion = promotionService.insertPromotion(mappedPromotion);
return ResponseEntity.ok(savedPromotion);

} catch(EntityNotFoundException e){
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}

}

@DeleteMapping("/{id}")
Expand Down
57 changes: 37 additions & 20 deletions src/main/java/fr/cgs/cgs_back/controller/ReservationController.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
package fr.cgs.cgs_back.controller;

import fr.cgs.cgs_back.dto.PromotionDto;
import fr.cgs.cgs_back.dto.ReservationDto;
import fr.cgs.cgs_back.entity.Promotion;
import fr.cgs.cgs_back.entity.Reservation;
import fr.cgs.cgs_back.mapper.MapStructMapper;
import fr.cgs.cgs_back.service.ClassroomService;
import fr.cgs.cgs_back.service.ReservationService;
import fr.cgs.cgs_back.service.UserService;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
Expand All @@ -16,19 +22,23 @@
@RequestMapping("api/reservation")
@CrossOrigin(origins = "http://localhost:3000")
public class ReservationController {

@Autowired
private ReservationService reservationService;

@GetMapping
public List<Reservation> getAllReservation() {
return reservationService.getAllReservation();
}
@Autowired
private ClassroomService classroomService;
@Autowired
private UserService userService;
@Autowired
private MapStructMapper mapper;

@GetMapping("/{id}")
public Reservation getReservationById(@PathVariable int id){
return reservationService.findById(id);
}
@GetMapping
public List<Reservation> getAllReservation() {
return reservationService.getAllReservation();
}

@GetMapping("/user/{userId}")
public List<Reservation> getReservationByUserId(@PathVariable int userId){
Expand All @@ -40,26 +50,33 @@ public List<Reservation> getReservationByClassroomId(@PathVariable int classroom
return reservationService.findReservationByClassroomId(classroomId);
}

@PostMapping("/")
public ResponseEntity<Reservation> createReservation(@RequestBody Reservation reservation){
Reservation saveReservation = reservationService.saveReservation(reservation);
return ResponseEntity.ok(saveReservation);
@PostMapping("/add")
public ResponseEntity<Reservation> createReservation(@RequestBody ReservationDto reservationDto){
reservationService.saveReservation(mapper.reservationDtoToReservation(reservationDto));
return new ResponseEntity<>(HttpStatus.CREATED);
}

@PutMapping("/{id}")
public ResponseEntity<Reservation> updateReservation(@PathVariable int id, @RequestBody Reservation updateReservation) {
try {
public ResponseEntity<Reservation> updateReservation(@PathVariable int id, @RequestBody ReservationDto updateReservation) {
try{
Reservation reservation = reservationService.findById(id);
reservation.setName(updateReservation.getName());
reservation.setType(updateReservation.getType());
reservation.setStartedAt(updateReservation.getStartedAt());
reservation.setEndedAt(updateReservation.getEndedAt());
reservation.setClassroom_id(updateReservation.getClassroom_id());
reservation.setUser_id(updateReservation.getUser_id());
ReservationDto newReservation = mapper.reservationToReservationDto(reservation);

newReservation.setName(updateReservation.getName());
newReservation.setStartedAt(updateReservation.getStartedAt());
newReservation.setEndedAt(updateReservation.getEndedAt());
newReservation.setClassroom_id(updateReservation.getClassroom_id());
newReservation.setUser_id(updateReservation.getUser_id());
newReservation.setClassroom(classroomService.findById(newReservation.getClassroom_id()));
newReservation.setUser(userService.findById(newReservation.getUser_id()));

Reservation savedReservation = reservationService.saveReservation(reservation);
Reservation mappedReservation = mapper.reservationDtoToReservation(newReservation);
mappedReservation.setId(id);

Reservation savedReservation = reservationService.saveReservation(mappedReservation);
return ResponseEntity.ok(savedReservation);
} catch (EntityNotFoundException e) {

} catch(EntityNotFoundException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
}
}
Expand Down
32 changes: 23 additions & 9 deletions src/main/java/fr/cgs/cgs_back/controller/SiteController.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package fr.cgs.cgs_back.controller;

import fr.cgs.cgs_back.dto.SiteDto;
import fr.cgs.cgs_back.entity.Classroom;
import fr.cgs.cgs_back.entity.Site;
import fr.cgs.cgs_back.mapper.MapStructMapper;
import fr.cgs.cgs_back.service.ClassroomService;
import fr.cgs.cgs_back.service.SiteService;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;
Expand All @@ -22,6 +25,8 @@ public class SiteController {
private SiteService siteService;
@Autowired
private ClassroomService classroomService;
@Autowired
private MapStructMapper mapper;

@GetMapping
public List<Site> getAllSites() {
Expand All @@ -39,21 +44,30 @@ public List<Classroom> findAllBySiteId(@PathVariable int id) {
}

@PostMapping("/add")
public ResponseEntity<Site> createSite(@RequestBody Site site) {
Site savedSite = siteService.saveSite(site);
return ResponseEntity.ok(savedSite);
public ResponseEntity<Void> createSite(@RequestBody SiteDto siteDto) {
siteService.saveSite(mapper.siteDtoToSite(siteDto));
return new ResponseEntity<>(HttpStatus.CREATED);
}


@PutMapping("/{id}")
public ResponseEntity<Site> updateSite(@PathVariable int id,@RequestBody Site updatedSite) {
public ResponseEntity<Site> updateSite(@PathVariable int id,@RequestBody SiteDto updatedSite) {
try{
Site site = siteService.getSiteById(id);
site.setName(updatedSite.getName());
site.setCity(updatedSite.getCity());
site.setAdress(updatedSite.getAdress());
site.setDescription(updatedSite.getDescription());
Site savedSite = siteService.saveSite(site);

SiteDto newSite = mapper.siteToSiteDto(site);

newSite.setName(updatedSite.getName());
newSite.setCity(updatedSite.getCity());
newSite.setAdress(updatedSite.getAdress());
newSite.setDescription(updatedSite.getDescription());

Site mappedSite = mapper.siteDtoToSite(newSite);

mappedSite.setId(id);

Site savedSite = siteService.saveSite(mappedSite);

return ResponseEntity.ok(savedSite);
} catch(EntityNotFoundException e){
return ResponseEntity.status(HttpStatus.NOT_FOUND).build();
Expand Down
38 changes: 35 additions & 3 deletions src/main/java/fr/cgs/cgs_back/dto/ClassroomDto.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,46 @@
package fr.cgs.cgs_back.dto;
import fr.cgs.cgs_back.entity.Site;
import fr.cgs.cgs_back.service.SiteService;
import com.fasterxml.jackson.annotation.JsonProperty;


public class ClassroomDto {
@JsonProperty("name")
private String name;
@JsonProperty("capacity")
private int capacity;
private SiteDto site;
private Site site;


public ClassroomDto(String name, int capacity, SiteDto site) {
public ClassroomDto(String name, int capacity) {
this.name = name;
this.capacity = capacity;
this.site = site;
}

public ClassroomDto() {
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getCapacity() {
return capacity;
}

public void setCapacity(int capacity) {
this.capacity = capacity;
}

public Site getSite() {
return site;
}

public void setSite(Site site) {
this.site = site;
}
}
Loading