From e19b32e4bf7270de54175b41fd417e41d65bbe30 Mon Sep 17 00:00:00 2001 From: mepiphana2023 Date: Wed, 16 Jul 2025 16:23:44 +0200 Subject: [PATCH 1/6] search code barre --- .../java/fr/eni/demo/bll/UserService.java | 11 ++++++ .../java/fr/eni/demo/bll/UserServiceImpl.java | 39 +++++++++++++++++++ .../eni/demo/controller/UserController.java | 35 +++++++++++++++++ .../java/fr/eni/demo/dal/UserRepository.java | 12 ++++++ 4 files changed, 97 insertions(+) create mode 100644 src/main/java/fr/eni/demo/bll/UserService.java create mode 100644 src/main/java/fr/eni/demo/bll/UserServiceImpl.java create mode 100644 src/main/java/fr/eni/demo/controller/UserController.java create mode 100644 src/main/java/fr/eni/demo/dal/UserRepository.java diff --git a/src/main/java/fr/eni/demo/bll/UserService.java b/src/main/java/fr/eni/demo/bll/UserService.java new file mode 100644 index 0000000..2482d21 --- /dev/null +++ b/src/main/java/fr/eni/demo/bll/UserService.java @@ -0,0 +1,11 @@ +package fr.eni.demo.bll; + +import fr.eni.demo.bo.User; +import java.util.Optional; +import java.util.List; + +public interface UserService { + void addUser(User user); + Optional findByUsername(String username); + List findAll(); +} \ No newline at end of file diff --git a/src/main/java/fr/eni/demo/bll/UserServiceImpl.java b/src/main/java/fr/eni/demo/bll/UserServiceImpl.java new file mode 100644 index 0000000..a977054 --- /dev/null +++ b/src/main/java/fr/eni/demo/bll/UserServiceImpl.java @@ -0,0 +1,39 @@ +package fr.eni.demo.bll; + +import fr.eni.demo.bo.User; +import fr.eni.demo.dal.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +public class UserServiceImpl implements UserService { + + private final UserRepository userRepository; + private final PasswordEncoder passwordEncoder; + + @Autowired + public UserServiceImpl(UserRepository userRepository, PasswordEncoder passwordEncoder) { + this.userRepository = userRepository; + this.passwordEncoder = passwordEncoder; + } + + @Override + public void addUser(User user) { + user.setPassword(passwordEncoder.encode(user.getPassword())); + userRepository.save(user); + } + + @Override + public Optional findByUsername(String username) { + return userRepository.findByUsername(username); + } + + @Override + public List findAll() { + return userRepository.findAll(); + } +} \ No newline at end of file diff --git a/src/main/java/fr/eni/demo/controller/UserController.java b/src/main/java/fr/eni/demo/controller/UserController.java new file mode 100644 index 0000000..fda549f --- /dev/null +++ b/src/main/java/fr/eni/demo/controller/UserController.java @@ -0,0 +1,35 @@ +package fr.eni.demo.controller; + +import fr.eni.demo.bll.UserService; +import fr.eni.demo.bo.User; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/users") +@RequiredArgsConstructor +public class UserController { + + private final UserService userService; + + @PostMapping + public ResponseEntity createUser(@RequestBody User user) { + userService.addUser(user); + return ResponseEntity.ok(user); + } + + @GetMapping + public ResponseEntity> getAllUsers() { + return ResponseEntity.ok(userService.findAll()); + } + + @GetMapping("/{username}") + public ResponseEntity getUserByUsername(@PathVariable String username) { + return userService.findByUsername(username) + .map(ResponseEntity::ok) + .orElse(ResponseEntity.notFound().build()); + } +} \ No newline at end of file diff --git a/src/main/java/fr/eni/demo/dal/UserRepository.java b/src/main/java/fr/eni/demo/dal/UserRepository.java new file mode 100644 index 0000000..f077a77 --- /dev/null +++ b/src/main/java/fr/eni/demo/dal/UserRepository.java @@ -0,0 +1,12 @@ +package fr.eni.demo.dal; + +import fr.eni.demo.bo.User; +import org.springframework.data.mongodb.repository.MongoRepository; +import org.springframework.stereotype.Repository; + +import java.util.Optional; + +@Repository +public interface UserRepository extends MongoRepository { + Optional findByUsername(String username); +} \ No newline at end of file From dbfaeee1f77c1576d9620096b214a5e2868b3e0b Mon Sep 17 00:00:00 2001 From: jleroy2023 Date: Wed, 16 Jul 2025 16:24:14 +0200 Subject: [PATCH 2/6] =?UTF-8?q?G=C3=A9n=C3=A9ration=20facture=20et=20locat?= =?UTF-8?q?ion=20end=20date=20set?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/fr/eni/demo/bll/FactureService.java | 2 ++ .../fr/eni/demo/bll/FactureServiceImpl.java | 7 +++++ .../java/fr/eni/demo/bll/LocationService.java | 2 ++ .../fr/eni/demo/bll/LocationServiceImpl.java | 21 ++++++++++++- .../eni/demo/controller/ClientController.java | 1 + .../demo/controller/FactureController.java | 31 ++++++++++++++++--- .../fr/eni/demo/security/SecurityConfig.java | 2 +- 7 files changed, 59 insertions(+), 7 deletions(-) diff --git a/src/main/java/fr/eni/demo/bll/FactureService.java b/src/main/java/fr/eni/demo/bll/FactureService.java index f65dcf8..b424861 100644 --- a/src/main/java/fr/eni/demo/bll/FactureService.java +++ b/src/main/java/fr/eni/demo/bll/FactureService.java @@ -1,6 +1,7 @@ package fr.eni.demo.bll; import fr.eni.demo.bo.Facture; +import fr.eni.demo.bo.Location; import java.util.List; @@ -8,4 +9,5 @@ public interface FactureService { List getByClient(Long clientId); List getAll(); List getUnpayed(); + void add(Facture facture); } diff --git a/src/main/java/fr/eni/demo/bll/FactureServiceImpl.java b/src/main/java/fr/eni/demo/bll/FactureServiceImpl.java index 73129ee..d241c8d 100644 --- a/src/main/java/fr/eni/demo/bll/FactureServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/FactureServiceImpl.java @@ -1,6 +1,7 @@ package fr.eni.demo.bll; import fr.eni.demo.bo.Facture; +import fr.eni.demo.bo.Location; import fr.eni.demo.dal.FactureRepository; import org.springframework.stereotype.Service; @@ -35,4 +36,10 @@ public class FactureServiceImpl implements FactureService { public List getUnpayed() { return factureRepo.findByDatePayEmpty(); } + + @Override + public void add(Facture facture) { + factureRepo.save(facture); + } + } diff --git a/src/main/java/fr/eni/demo/bll/LocationService.java b/src/main/java/fr/eni/demo/bll/LocationService.java index ce67a0c..8c9b56d 100644 --- a/src/main/java/fr/eni/demo/bll/LocationService.java +++ b/src/main/java/fr/eni/demo/bll/LocationService.java @@ -3,5 +3,7 @@ package fr.eni.demo.bll; import fr.eni.demo.bo.Location; public interface LocationService { + Location findById(int id); void add(Location location); + void updateDateEnd(int id, Location location); } diff --git a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java index 6a569dd..5de00dc 100644 --- a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java @@ -1,20 +1,39 @@ package fr.eni.demo.bll; +import fr.eni.demo.bo.Adresse; import fr.eni.demo.bo.Location; import fr.eni.demo.dal.LocationRepository; -import org.springframework.beans.factory.annotation.Autowired; +import jakarta.persistence.EntityNotFoundException; import org.springframework.stereotype.Service; +import java.util.Date; + @Service public class LocationServiceImpl implements LocationService { + private LocationRepository locationRepository; public LocationServiceImpl(LocationRepository locationRepository) { this.locationRepository = locationRepository; } + @Override + public Location findById(int id) { + return locationRepository.findById(id) + .orElseThrow(() -> new EntityNotFoundException("Location non trouvée")); + } + @Override public void add(Location location) { locationRepository.save(location); } + + @Override + public void updateDateEnd(int id, Location location) { + Location existing = findById(id); + location.setId(existing.getId()); + location.setEndDate(new Date()); + locationRepository.save(location); + } + } diff --git a/src/main/java/fr/eni/demo/controller/ClientController.java b/src/main/java/fr/eni/demo/controller/ClientController.java index 0c0ccf3..3daa48e 100644 --- a/src/main/java/fr/eni/demo/controller/ClientController.java +++ b/src/main/java/fr/eni/demo/controller/ClientController.java @@ -58,6 +58,7 @@ public class ClientController { clientService.delete(id); return buildResponse("Address deleted", true, new HashMap<>()); } + private ResponseEntity> buildResponse(String message, boolean status, Object data) { Map response = new HashMap<>(); response.put("message", message); diff --git a/src/main/java/fr/eni/demo/controller/FactureController.java b/src/main/java/fr/eni/demo/controller/FactureController.java index a638b02..de7587d 100644 --- a/src/main/java/fr/eni/demo/controller/FactureController.java +++ b/src/main/java/fr/eni/demo/controller/FactureController.java @@ -2,10 +2,12 @@ package fr.eni.demo.controller; import fr.eni.demo.bll.FactureService; import fr.eni.demo.bo.Facture; +import fr.eni.demo.bo.Location; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -21,26 +23,45 @@ public class FactureController { @GetMapping public ResponseEntity> getAllFactures() { List result = factureService.getAll(); - return buildResponse(result); + return buildResponse("List all order", true, result); } // Factures par client @GetMapping("/client/{clientId}") public ResponseEntity> getFactureByClient(@PathVariable Long clientId) { - return buildResponse(factureService.getByClient(clientId)); + List result = factureService.getByClient(clientId); + return buildResponse("List order customer", true, result); } // Factures impayees @GetMapping("/unpayed") public ResponseEntity> getUnpayedFactures() { List result = factureService.getUnpayed(); - return buildResponse(result); + return buildResponse("List unpayed older", true, result); } - private ResponseEntity> buildResponse(Object data) { + // Génère une facture + @PostMapping + public ResponseEntity> setFacture(@RequestBody List locations) { + double price = 0; + for(Location location : locations){ + price += location.getStock().getDailyPrice(); + + } + Facture facture = new Facture(); + facture.setClient(locations.get(0).getClient()); + facture.setDatePay(new Date()); + facture.setPrice(price); + factureService.add(facture); + return buildResponse("Older created", true, new HashMap<>()); + } + + private ResponseEntity> buildResponse(String message, boolean status, Object data) { Map response = new HashMap<>(); + response.put("message", message); + response.put("status", status); response.put("data", data); - response.put("status", 200); return ResponseEntity.ok(response); } + } diff --git a/src/main/java/fr/eni/demo/security/SecurityConfig.java b/src/main/java/fr/eni/demo/security/SecurityConfig.java index 6e82b89..80c282c 100644 --- a/src/main/java/fr/eni/demo/security/SecurityConfig.java +++ b/src/main/java/fr/eni/demo/security/SecurityConfig.java @@ -66,7 +66,7 @@ public class SecurityConfig { UserDetails user = User.builder() .username("user") .password(encoder.encode("password")) - .roles("USER") + .roles("EMPLOYE") .build(); return new InMemoryUserDetailsManager(user); From b4c8f2af6b24d16873b94b77ce7288f07f7ade80 Mon Sep 17 00:00:00 2001 From: Olivier PARPAILLON Date: Wed, 16 Jul 2025 16:16:52 +0200 Subject: [PATCH 3/6] add isRent to stock if location is in progress --- src/main/java/fr/eni/demo/bll/LocationService.java | 1 + .../java/fr/eni/demo/bll/LocationServiceImpl.java | 9 ++++++++- src/main/java/fr/eni/demo/bll/StockService.java | 1 + src/main/java/fr/eni/demo/bll/StockServiceImpl.java | 11 ++++++++++- src/main/java/fr/eni/demo/bo/Stock.java | 3 +++ src/main/java/fr/eni/demo/dal/StockRepository.java | 2 +- 6 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/eni/demo/bll/LocationService.java b/src/main/java/fr/eni/demo/bll/LocationService.java index ce67a0c..91ff5cf 100644 --- a/src/main/java/fr/eni/demo/bll/LocationService.java +++ b/src/main/java/fr/eni/demo/bll/LocationService.java @@ -4,4 +4,5 @@ import fr.eni.demo.bo.Location; public interface LocationService { void add(Location location); + void update(Location location); } diff --git a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java index 6a569dd..52ce5e3 100644 --- a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java @@ -2,12 +2,12 @@ package fr.eni.demo.bll; import fr.eni.demo.bo.Location; import fr.eni.demo.dal.LocationRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class LocationServiceImpl implements LocationService { private LocationRepository locationRepository; + private StockService stockService; public LocationServiceImpl(LocationRepository locationRepository) { this.locationRepository = locationRepository; @@ -16,5 +16,12 @@ public class LocationServiceImpl implements LocationService { @Override public void add(Location location) { locationRepository.save(location); + stockService.isRent(location.getStock(), true); + } + + @Override + public void update(Location location) { + locationRepository.save(location); + stockService.isRent(location.getStock(), false); } } diff --git a/src/main/java/fr/eni/demo/bll/StockService.java b/src/main/java/fr/eni/demo/bll/StockService.java index 355c5b4..a4f3910 100644 --- a/src/main/java/fr/eni/demo/bll/StockService.java +++ b/src/main/java/fr/eni/demo/bll/StockService.java @@ -11,5 +11,6 @@ public interface StockService { Optional findById(Long gameId); List findAllByName(String name); Stock findByRef(String ref); + void isRent(Stock stock, boolean value); } diff --git a/src/main/java/fr/eni/demo/bll/StockServiceImpl.java b/src/main/java/fr/eni/demo/bll/StockServiceImpl.java index 14c0053..0228e1a 100644 --- a/src/main/java/fr/eni/demo/bll/StockServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/StockServiceImpl.java @@ -32,7 +32,7 @@ public class StockServiceImpl implements StockService{ @Override public List findAllByName(String name){ - List stocks = stockRepository.findByNameIsContainingIgnoreCase(name); + List stocks = stockRepository.findByNameIsContainingIgnoreCaseAndIsRentFalse(name); List result = stocks.stream() .collect(Collectors.groupingBy(Stock::getName, Collectors.counting())) .entrySet().stream() @@ -49,4 +49,13 @@ public class StockServiceImpl implements StockService{ } return stock; } + + @Override + public void isRent(Stock stock, boolean value) { + if (stock == null) { + throw new EntityNotFoundException("Stock non valide"); + } + stock.setIsRent(value); + stockRepository.save(stock); + } } diff --git a/src/main/java/fr/eni/demo/bo/Stock.java b/src/main/java/fr/eni/demo/bo/Stock.java index 634f435..9d573a0 100644 --- a/src/main/java/fr/eni/demo/bo/Stock.java +++ b/src/main/java/fr/eni/demo/bo/Stock.java @@ -31,6 +31,9 @@ public class Stock { @Field(name = "GAME_DAILY_PRICE") private Double dailyPrice; + @Field(name = "GAME_IS_RENT") + private Boolean isRent; + @DBRef @Field(name = "GAME_TYPE") private List gameType; diff --git a/src/main/java/fr/eni/demo/dal/StockRepository.java b/src/main/java/fr/eni/demo/dal/StockRepository.java index aab81b2..1ec8e46 100644 --- a/src/main/java/fr/eni/demo/dal/StockRepository.java +++ b/src/main/java/fr/eni/demo/dal/StockRepository.java @@ -8,6 +8,6 @@ import java.util.List; @Repository public interface StockRepository extends MongoRepository { - List findByNameIsContainingIgnoreCase(String name); + List findByNameIsContainingIgnoreCaseAndIsRentFalse(String name); Stock findByRefEQ(String ref); } From 165113cd81b8d00861086b570bf68e59d340e9de Mon Sep 17 00:00:00 2001 From: jleroy2023 Date: Wed, 16 Jul 2025 16:36:03 +0200 Subject: [PATCH 4/6] =?UTF-8?q?G=C3=A9n=C3=A9ration=20facture=20et=20locat?= =?UTF-8?q?ion=20end=20date=20set?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/fr/eni/demo/bll/LocationService.java | 4 ++-- src/main/java/fr/eni/demo/bll/LocationServiceImpl.java | 9 ++++----- .../java/fr/eni/demo/controller/FactureController.java | 4 +++- src/main/java/fr/eni/demo/dal/LocationRepository.java | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/fr/eni/demo/bll/LocationService.java b/src/main/java/fr/eni/demo/bll/LocationService.java index 8c9b56d..bca87f1 100644 --- a/src/main/java/fr/eni/demo/bll/LocationService.java +++ b/src/main/java/fr/eni/demo/bll/LocationService.java @@ -3,7 +3,7 @@ package fr.eni.demo.bll; import fr.eni.demo.bo.Location; public interface LocationService { - Location findById(int id); + Location findById(Long id); void add(Location location); - void updateDateEnd(int id, Location location); + void updateDateEnd(String id, Location location); } diff --git a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java index 5de00dc..fea10c1 100644 --- a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java @@ -1,6 +1,5 @@ package fr.eni.demo.bll; -import fr.eni.demo.bo.Adresse; import fr.eni.demo.bo.Location; import fr.eni.demo.dal.LocationRepository; import jakarta.persistence.EntityNotFoundException; @@ -11,14 +10,14 @@ import java.util.Date; @Service public class LocationServiceImpl implements LocationService { - private LocationRepository locationRepository; + private final LocationRepository locationRepository; public LocationServiceImpl(LocationRepository locationRepository) { this.locationRepository = locationRepository; } @Override - public Location findById(int id) { + public Location findById(Long id) { return locationRepository.findById(id) .orElseThrow(() -> new EntityNotFoundException("Location non trouvée")); } @@ -29,8 +28,8 @@ public class LocationServiceImpl implements LocationService { } @Override - public void updateDateEnd(int id, Location location) { - Location existing = findById(id); + public void updateDateEnd(String id, Location location) { + Location existing = findById(Long.valueOf(id)); location.setId(existing.getId()); location.setEndDate(new Date()); locationRepository.save(location); diff --git a/src/main/java/fr/eni/demo/controller/FactureController.java b/src/main/java/fr/eni/demo/controller/FactureController.java index de7587d..2a4ff74 100644 --- a/src/main/java/fr/eni/demo/controller/FactureController.java +++ b/src/main/java/fr/eni/demo/controller/FactureController.java @@ -1,6 +1,7 @@ package fr.eni.demo.controller; import fr.eni.demo.bll.FactureService; +import fr.eni.demo.bll.LocationService; import fr.eni.demo.bo.Facture; import fr.eni.demo.bo.Location; import lombok.RequiredArgsConstructor; @@ -18,6 +19,7 @@ import java.util.Map; public class FactureController { private final FactureService factureService; + private final LocationService locationService; // Toutes les factures @GetMapping @@ -46,7 +48,7 @@ public class FactureController { double price = 0; for(Location location : locations){ price += location.getStock().getDailyPrice(); - + locationService.updateDateEnd(location.getId(), location); } Facture facture = new Facture(); facture.setClient(locations.get(0).getClient()); diff --git a/src/main/java/fr/eni/demo/dal/LocationRepository.java b/src/main/java/fr/eni/demo/dal/LocationRepository.java index e87db5a..ddd580c 100644 --- a/src/main/java/fr/eni/demo/dal/LocationRepository.java +++ b/src/main/java/fr/eni/demo/dal/LocationRepository.java @@ -5,5 +5,5 @@ import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @Repository -public interface LocationRepository extends MongoRepository { +public interface LocationRepository extends MongoRepository { } From 3a37ddc2520d1ebff144b8ca61503e7e81be48eb Mon Sep 17 00:00:00 2001 From: mepiphana2023 Date: Wed, 16 Jul 2025 16:37:28 +0200 Subject: [PATCH 5/6] search code barre --- src/main/java/fr/eni/demo/bll/LocationService.java | 2 +- .../java/fr/eni/demo/bll/LocationServiceImpl.java | 9 +++++---- src/main/java/fr/eni/demo/bo/Location.java | 3 +++ .../fr/eni/demo/controller/LocationController.java | 12 ++++++++++++ .../java/fr/eni/demo/dal/LocationRepository.java | 6 ++++++ .../java/fr/eni/demo/security/SecurityConfig.java | 2 +- 6 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/java/fr/eni/demo/bll/LocationService.java b/src/main/java/fr/eni/demo/bll/LocationService.java index 91ff5cf..da1b7e6 100644 --- a/src/main/java/fr/eni/demo/bll/LocationService.java +++ b/src/main/java/fr/eni/demo/bll/LocationService.java @@ -4,5 +4,5 @@ import fr.eni.demo.bo.Location; public interface LocationService { void add(Location location); - void update(Location location); + Location findByCodeBarre(String codeBarre); } diff --git a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java index 52ce5e3..e1f4942 100644 --- a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java @@ -4,6 +4,8 @@ import fr.eni.demo.bo.Location; import fr.eni.demo.dal.LocationRepository; import org.springframework.stereotype.Service; +import java.util.NoSuchElementException; + @Service public class LocationServiceImpl implements LocationService { private LocationRepository locationRepository; @@ -16,12 +18,11 @@ public class LocationServiceImpl implements LocationService { @Override public void add(Location location) { locationRepository.save(location); - stockService.isRent(location.getStock(), true); } @Override - public void update(Location location) { - locationRepository.save(location); - stockService.isRent(location.getStock(), false); + public Location findByCodeBarre(String codeBarre) { + return locationRepository.findByCodeBarre(codeBarre) + .orElseThrow(() -> new NoSuchElementException("Code-barre inconnu : " + codeBarre)); } } diff --git a/src/main/java/fr/eni/demo/bo/Location.java b/src/main/java/fr/eni/demo/bo/Location.java index 6779a6f..ab8ce48 100644 --- a/src/main/java/fr/eni/demo/bo/Location.java +++ b/src/main/java/fr/eni/demo/bo/Location.java @@ -19,6 +19,9 @@ public class Location { @Id private String id; + @Field(name = "CODE_BARRE") + private String codeBarre; + @Field(name = "LOCATION_START_DATE") private Date startDate; diff --git a/src/main/java/fr/eni/demo/controller/LocationController.java b/src/main/java/fr/eni/demo/controller/LocationController.java index 5fa2853..b9851ef 100644 --- a/src/main/java/fr/eni/demo/controller/LocationController.java +++ b/src/main/java/fr/eni/demo/controller/LocationController.java @@ -8,6 +8,7 @@ import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; +import java.util.NoSuchElementException; @RestController @RequestMapping("/api/location") @@ -23,6 +24,17 @@ public class LocationController { return buildResponse("Location added", true, new HashMap<>()); } + // Chercher location depuis code barre + @GetMapping("/codeBarre/{codeBarre}") + public ResponseEntity> findByCodeBarre(@PathVariable String codeBarre) { + try { + Location location = locationService.findByCodeBarre(codeBarre); + return buildResponse("Location trouvée", true, location); + } catch (NoSuchElementException e) { + return buildResponse(e.getMessage(), false, new HashMap<>()); + } + } + private ResponseEntity> buildResponse(String message, boolean status, Object data) { Map response = new HashMap<>(); response.put("message", message); diff --git a/src/main/java/fr/eni/demo/dal/LocationRepository.java b/src/main/java/fr/eni/demo/dal/LocationRepository.java index e87db5a..0417c01 100644 --- a/src/main/java/fr/eni/demo/dal/LocationRepository.java +++ b/src/main/java/fr/eni/demo/dal/LocationRepository.java @@ -4,6 +4,12 @@ import fr.eni.demo.bo.Location; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface LocationRepository extends MongoRepository { + + Optional findByCodeBarre(String codeBarre); + + } diff --git a/src/main/java/fr/eni/demo/security/SecurityConfig.java b/src/main/java/fr/eni/demo/security/SecurityConfig.java index 6e82b89..80c282c 100644 --- a/src/main/java/fr/eni/demo/security/SecurityConfig.java +++ b/src/main/java/fr/eni/demo/security/SecurityConfig.java @@ -66,7 +66,7 @@ public class SecurityConfig { UserDetails user = User.builder() .username("user") .password(encoder.encode("password")) - .roles("USER") + .roles("EMPLOYE") .build(); return new InMemoryUserDetailsManager(user); From d80344614470a25ac45c3f928068ba926c58caee Mon Sep 17 00:00:00 2001 From: mepiphana2023 Date: Wed, 16 Jul 2025 16:45:52 +0200 Subject: [PATCH 6/6] correction multiple --- src/main/java/fr/eni/demo/bll/LocationService.java | 1 - .../java/fr/eni/demo/bll/LocationServiceImpl.java | 13 +++++++------ src/main/java/fr/eni/demo/bo/Client.java | 3 --- src/main/java/fr/eni/demo/bo/Facture.java | 1 - src/main/java/fr/eni/demo/bo/Location.java | 2 -- src/main/java/fr/eni/demo/bo/Stock.java | 2 -- .../java/fr/eni/demo/dal/LocationRepository.java | 4 +++- 7 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/main/java/fr/eni/demo/bll/LocationService.java b/src/main/java/fr/eni/demo/bll/LocationService.java index 33ac035..997b2e8 100644 --- a/src/main/java/fr/eni/demo/bll/LocationService.java +++ b/src/main/java/fr/eni/demo/bll/LocationService.java @@ -5,7 +5,6 @@ import fr.eni.demo.bo.Location; public interface LocationService { Location findById(Long id); void add(Location location); - void update(Location location); void updateDateEnd(String id, Location location); Location findByCodeBarre(String codeBarre); } diff --git a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java index 694d272..eae0a03 100644 --- a/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/LocationServiceImpl.java @@ -6,6 +6,7 @@ import jakarta.persistence.EntityNotFoundException; import org.springframework.stereotype.Service; import java.util.Date; +import java.util.NoSuchElementException; @Service public class LocationServiceImpl implements LocationService { @@ -29,12 +30,6 @@ public class LocationServiceImpl implements LocationService { stockService.isRent(location.getStock(), true); } - @Override - public void update(Location location) { - locationRepository.save(location); - stockService.isRent(location.getStock(), false); - } - @Override public void updateDateEnd(String id, Location location) { Location existing = findById(Long.valueOf(id)); @@ -43,4 +38,10 @@ public class LocationServiceImpl implements LocationService { locationRepository.save(location); } + @Override + public Location findByCodeBarre(String codeBarre) { + return locationRepository.findByCodeBarre(codeBarre) + .orElseThrow(() -> new NoSuchElementException("Code-barre inconnu : " + codeBarre)); + } + } diff --git a/src/main/java/fr/eni/demo/bo/Client.java b/src/main/java/fr/eni/demo/bo/Client.java index 935b821..f09bcb0 100644 --- a/src/main/java/fr/eni/demo/bo/Client.java +++ b/src/main/java/fr/eni/demo/bo/Client.java @@ -28,15 +28,12 @@ public class Client { @Field(name = "EMAIL") private String email; - @DBRef @Field(name = "ADRESSE") private Adresse adresse; - @DBRef @Field(name = "LOCATIONS") private List locations; - @DBRef @Field(name = "FACTURES") private List factures; } diff --git a/src/main/java/fr/eni/demo/bo/Facture.java b/src/main/java/fr/eni/demo/bo/Facture.java index 06b53b0..a9d1ca0 100644 --- a/src/main/java/fr/eni/demo/bo/Facture.java +++ b/src/main/java/fr/eni/demo/bo/Facture.java @@ -27,7 +27,6 @@ public class Facture { @Field(name = "DATEPAY") private Date datePay; - @DBRef @Field(name = "CLIENTS") private Client client; } diff --git a/src/main/java/fr/eni/demo/bo/Location.java b/src/main/java/fr/eni/demo/bo/Location.java index ab8ce48..0538bd1 100644 --- a/src/main/java/fr/eni/demo/bo/Location.java +++ b/src/main/java/fr/eni/demo/bo/Location.java @@ -28,11 +28,9 @@ public class Location { @Field(name = "LOCATION_END_DATE") private Date endDate; - @DBRef @Field(name = "CLIENT") private Client client; - @DBRef @Field(name = "STOCK") private Stock stock; } diff --git a/src/main/java/fr/eni/demo/bo/Stock.java b/src/main/java/fr/eni/demo/bo/Stock.java index 9d573a0..715e2ab 100644 --- a/src/main/java/fr/eni/demo/bo/Stock.java +++ b/src/main/java/fr/eni/demo/bo/Stock.java @@ -34,11 +34,9 @@ public class Stock { @Field(name = "GAME_IS_RENT") private Boolean isRent; - @DBRef @Field(name = "GAME_TYPE") private List gameType; - @DBRef @Field(name = "LOCATIONS") private List locations; } diff --git a/src/main/java/fr/eni/demo/dal/LocationRepository.java b/src/main/java/fr/eni/demo/dal/LocationRepository.java index 7f49dab..b4a7825 100644 --- a/src/main/java/fr/eni/demo/dal/LocationRepository.java +++ b/src/main/java/fr/eni/demo/dal/LocationRepository.java @@ -4,8 +4,10 @@ import fr.eni.demo.bo.Location; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository -public interface LocationRepository extends MongoRepository { +public interface LocationRepository extends MongoRepository { Optional findByCodeBarre(String codeBarre);