diff --git a/src/main/java/fr/eni/demo/bll/LocationService.java b/src/main/java/fr/eni/demo/bll/LocationService.java index f3e3093..33ac035 100644 --- a/src/main/java/fr/eni/demo/bll/LocationService.java +++ b/src/main/java/fr/eni/demo/bll/LocationService.java @@ -7,4 +7,5 @@ public interface LocationService { 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/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/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/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/LocationRepository.java b/src/main/java/fr/eni/demo/dal/LocationRepository.java index ddd580c..7f49dab 100644 --- a/src/main/java/fr/eni/demo/dal/LocationRepository.java +++ b/src/main/java/fr/eni/demo/dal/LocationRepository.java @@ -5,5 +5,8 @@ import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @Repository -public interface LocationRepository extends MongoRepository { +public interface LocationRepository extends MongoRepository { + + Optional findByCodeBarre(String codeBarre); + } 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