diff --git a/src/main/java/fr/eni/demo/bll/AdresseService.java b/src/main/java/fr/eni/demo/bll/AdresseService.java index 39bc237..f4ee561 100644 --- a/src/main/java/fr/eni/demo/bll/AdresseService.java +++ b/src/main/java/fr/eni/demo/bll/AdresseService.java @@ -2,9 +2,14 @@ package fr.eni.demo.bll; import fr.eni.demo.bo.Adresse; +import java.util.List; + public interface AdresseService { + Adresse add(Adresse adresse); Adresse findById(Long id); + List findAll(); + Adresse update(Long id, Adresse adresse); + void delete(Long id); Adresse findAdresseByClientId(Long clientId); - } diff --git a/src/main/java/fr/eni/demo/bll/AdresseServiceImpl.java b/src/main/java/fr/eni/demo/bll/AdresseServiceImpl.java index f87d260..8979299 100644 --- a/src/main/java/fr/eni/demo/bll/AdresseServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/AdresseServiceImpl.java @@ -4,22 +4,56 @@ import fr.eni.demo.bo.Adresse; import fr.eni.demo.bo.Client; import fr.eni.demo.dal.AdresseRepository; import jakarta.persistence.EntityNotFoundException; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; + @Service -public class AdresseServiceImpl implements AdresseService{ +@RequiredArgsConstructor +public class AdresseServiceImpl implements AdresseService { - private AdresseRepository adresseRepo; - @Autowired - private ClientService clientService; - - public AdresseServiceImpl(AdresseRepository adresseRepo) { - this.adresseRepo = adresseRepo; - } + private final AdresseRepository adresseRepo; + private final ClientService clientService; @Override public Adresse add(Adresse adresse) { + validateAdresse(adresse); + return adresseRepo.save(adresse); + } + + @Override + public Adresse findById(Long id) { + return adresseRepo.findById(id) + .orElseThrow(() -> new EntityNotFoundException("Adresse non trouvée")); + } + + @Override + public List findAll() { + return adresseRepo.findAll(); + } + + @Override + public Adresse update(Long id, Adresse updatedAdresse) { + Adresse existing = findById(id); + updatedAdresse.setId(existing.getId()); // conserve l'id existant + validateAdresse(updatedAdresse); + return adresseRepo.save(updatedAdresse); + } + + @Override + public void delete(Long id) { + Adresse adresse = findById(id); + adresseRepo.delete(adresse); + } + + @Override + public Adresse findAdresseByClientId(Long clientId) { + Client client = clientService.findById(clientId); + return client.getAdresse(); + } + + private void validateAdresse(Adresse adresse) { if (adresse == null) { throw new IllegalArgumentException("Adresse is null"); } @@ -32,24 +66,5 @@ public class AdresseServiceImpl implements AdresseService{ if (adresse.getVille() == null || adresse.getVille().isBlank()) { throw new IllegalArgumentException("Ville is null or empty"); } - adresseRepo.save(adresse); - return adresse; - } - - @Override - public Adresse findAdresseByClientId(Long clientId) { - if (clientId == null) { - throw new IllegalArgumentException("clientId is null"); - } - System.out.println(clientId); - Client client = clientService.findById(clientId); - System.out.println(client); - return client.getAdresse(); - } - - @Override - public Adresse findById(Long id) { - return adresseRepo.findById(id) - .orElseThrow(() -> new EntityNotFoundException("Adresse non trouvée")); } } diff --git a/src/main/java/fr/eni/demo/controller/AddressController.java b/src/main/java/fr/eni/demo/controller/AddressController.java index 0a7d52d..3bd37e9 100644 --- a/src/main/java/fr/eni/demo/controller/AddressController.java +++ b/src/main/java/fr/eni/demo/controller/AddressController.java @@ -7,6 +7,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; +import java.util.List; import java.util.Map; @RestController @@ -16,37 +17,53 @@ public class AddressController { private final AdresseService adresseService; + // Creer nouvelle adresse @PostMapping public ResponseEntity> create(@RequestBody Adresse adresse) { - adresseService.add(adresse); - Map response = new HashMap<>(); - response.put("message", "Adresse added"); - response.put("status", true); - response.put("data", new HashMap<>()); - - return ResponseEntity.ok(response); + Adresse saved = adresseService.add(adresse); + return buildResponse("Adresse added", true, saved); } + // Recuperer adresse par id @GetMapping("/{id}") - public ResponseEntity> findById(@PathVariable Long id) { - Adresse result = adresseService.findById(id); - Map response = new HashMap<>(); - response.put("message", "Adresse find"); - response.put("status", true); - response.put("data", result); - - return ResponseEntity.ok(response); + public ResponseEntity> findById(@PathVariable String id) { + Adresse result = adresseService.findById(Long.valueOf(id)); + return buildResponse("Adresse found", true, result); } - @GetMapping("/client/{id}") - public ResponseEntity> findByIdClient(@PathVariable Long id) { - Adresse result = adresseService.findAdresseByClientId(id); - Map response = new HashMap<>(); - response.put("message", "Adresse find"); - response.put("status", true); - response.put("data", result); - - return ResponseEntity.ok(response); + // Recuperer toutes les adresses + @GetMapping + public ResponseEntity> findAll() { + List result = adresseService.findAll(); + return buildResponse("All adresses fetched", true, result); } + // Maj adresse par id + @PutMapping("/{id}") + public ResponseEntity> update(@PathVariable String id, @RequestBody Adresse adresse) { + Adresse updated = adresseService.update(Long.valueOf(id), adresse); + return buildResponse("Adresse updated", true, updated); + } + + // Supprimer adresse par id + @DeleteMapping("/{id}") + public ResponseEntity> delete(@PathVariable String id) { + adresseService.delete(Long.valueOf(id)); + return buildResponse("Adresse deleted", true, null); + } + + // Recuperer adresse associee à un client via son id + @GetMapping("/client/{clientId}") + public ResponseEntity> findByClientId(@PathVariable String clientId) { + Adresse result = adresseService.findAdresseByClientId(Long.valueOf(clientId)); + return buildResponse("Adresse found for client", true, result); + } + + 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); + return ResponseEntity.ok(response); + } } diff --git a/src/main/java/fr/eni/demo/controller/ClientController.java b/src/main/java/fr/eni/demo/controller/ClientController.java index 03074ab..0c0ccf3 100644 --- a/src/main/java/fr/eni/demo/controller/ClientController.java +++ b/src/main/java/fr/eni/demo/controller/ClientController.java @@ -18,74 +18,52 @@ public class ClientController { private final ClientService clientService; - // Ajouter un client + // Creer un client @PostMapping public ResponseEntity> create(@RequestBody Client client) { clientService.add(client); - Map response = new HashMap<>(); - response.put("message", "Client created successfully"); - response.put("status", 201); - response.put("data", new HashMap<>()); - - return ResponseEntity.ok(response); + return buildResponse("Client created", true, new HashMap<>()); } - // Chercher des clients par nom + // Chercher par nom @GetMapping("/name/{name}") - public ResponseEntity> findByEmail(@PathVariable String name) { + public ResponseEntity> findByName(@PathVariable String name) { List result = clientService.findByName(name); - Map response = new HashMap<>(); - response.put("message", "List of Clients found"); - response.put("status", 200); - response.put("data", result); - - return ResponseEntity.ok(response); + return buildResponse("Clients found", true, result); } - // Chercher des clients par nom + // Chercher par id @GetMapping("/{id}") - public ResponseEntity> findByEmail(@PathVariable Long id) { + public ResponseEntity> findById(@PathVariable Long id) { Client result = clientService.findById(id); - Map response = new HashMap<>(); - response.put("message", "Client found"); - response.put("status", true); - response.put("data", result); - - return ResponseEntity.ok(response); + return buildResponse("Client found", true, result); } - // Modifier un client + // MAJ client complet @PutMapping("/{id}") - public ResponseEntity> fullUpdate(@PathVariable Long id, @RequestBody Client client, @RequestBody Adresse adresse) { - clientService.fullUpdate(id, client, adresse); - Map response = new HashMap<>(); - response.put("message", "Client updated successfully"); - response.put("status", true); - response.put("data", new HashMap<>()); - - return ResponseEntity.ok(response); + public ResponseEntity> fullUpdate(@PathVariable Long id, @RequestBody Client client) { + clientService.fullUpdate(id, client, client.getAdresse()); + return buildResponse("Client updated", true, new HashMap<>()); } - // Modifier l'address d'un client + // MAJ adresse seule @PutMapping("/address/{id}") public ResponseEntity> updateAddress(@PathVariable Long id, @RequestBody Adresse adresse) { clientService.updateLocation(id, adresse); - Map response = new HashMap<>(); - response.put("message", "Client address updated successfully"); - response.put("status", true); - response.put("data", new HashMap<>()); - - return ResponseEntity.ok(response); + return buildResponse("Address updated", true, new HashMap<>()); } @DeleteMapping("/{id}") public ResponseEntity> delete(@PathVariable Long id) { - clientService.delete(id); - Map response = new HashMap<>(); - response.put("message", "Client deleted successfully"); - response.put("status", 200); - response.put("data", new HashMap<>()); - return ResponseEntity.ok(response); + 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); + response.put("status", status); + response.put("data", data); + return ResponseEntity.ok(response); } } diff --git a/src/main/java/fr/eni/demo/controller/FactureController.java b/src/main/java/fr/eni/demo/controller/FactureController.java index 264e351..a638b02 100644 --- a/src/main/java/fr/eni/demo/controller/FactureController.java +++ b/src/main/java/fr/eni/demo/controller/FactureController.java @@ -17,28 +17,29 @@ public class FactureController { private final FactureService factureService; - @GetMapping() + // Toutes les factures + @GetMapping public ResponseEntity> getAllFactures() { List result = factureService.getAll(); - Map response = new HashMap<>(); - response.put("data", result); - response.put("status", 200); - return ResponseEntity.ok(response); + return buildResponse(result); } - @GetMapping("/client/{id}") + // Factures par client + @GetMapping("/client/{clientId}") public ResponseEntity> getFactureByClient(@PathVariable Long clientId) { - Map response = new HashMap<>(); - response.put("data", factureService.getByClient(clientId)); - response.put("status", 200); - return ResponseEntity.ok(response); + return buildResponse(factureService.getByClient(clientId)); } + // Factures impayees @GetMapping("/unpayed") public ResponseEntity> getUnpayedFactures() { List result = factureService.getUnpayed(); + return buildResponse(result); + } + + private ResponseEntity> buildResponse(Object data) { Map response = new HashMap<>(); - response.put("data", result); + response.put("data", data); response.put("status", 200); return ResponseEntity.ok(response); } diff --git a/src/main/java/fr/eni/demo/controller/GameTypeController.java b/src/main/java/fr/eni/demo/controller/GameTypeController.java index a8e1f3b..9511492 100644 --- a/src/main/java/fr/eni/demo/controller/GameTypeController.java +++ b/src/main/java/fr/eni/demo/controller/GameTypeController.java @@ -4,10 +4,7 @@ import fr.eni.demo.bll.GameTypeService; import fr.eni.demo.bo.GameType; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @@ -19,15 +16,18 @@ public class GameTypeController { private final GameTypeService gameTypeService; + // Creer un type de jeu @PostMapping public ResponseEntity> create(@RequestBody GameType gameType) { gameTypeService.add(gameType); - Map response = new HashMap<>(); - response.put("message", "Game type create"); - response.put("status", true); - response.put("data", new HashMap<>()); - - return ResponseEntity.ok(response); + return buildResponse("Game type 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); + return ResponseEntity.ok(response); + } } diff --git a/src/main/java/fr/eni/demo/controller/LocationController.java b/src/main/java/fr/eni/demo/controller/LocationController.java index bdb51db..5fa2853 100644 --- a/src/main/java/fr/eni/demo/controller/LocationController.java +++ b/src/main/java/fr/eni/demo/controller/LocationController.java @@ -4,10 +4,7 @@ import fr.eni.demo.bll.LocationService; import fr.eni.demo.bo.Location; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; @@ -23,12 +20,14 @@ public class LocationController { @PostMapping public ResponseEntity> create(@RequestBody Location location) { locationService.add(location); - Map response = new HashMap<>(); - response.put("message", "Location added"); - response.put("status", true); - response.put("data", new HashMap<>()); - - return ResponseEntity.ok(response); + return buildResponse("Location added", 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); + return ResponseEntity.ok(response); + } } diff --git a/src/main/java/fr/eni/demo/controller/StockController.java b/src/main/java/fr/eni/demo/controller/StockController.java index 18b834f..5dab921 100644 --- a/src/main/java/fr/eni/demo/controller/StockController.java +++ b/src/main/java/fr/eni/demo/controller/StockController.java @@ -21,25 +21,22 @@ public class StockController { @PostMapping public ResponseEntity> create(@RequestBody Stock stock) { stockService.add(stock); - Map response = new HashMap<>(); - response.put("message", "Stock added"); - response.put("status", true); - response.put("data", new HashMap<>()); - - return ResponseEntity.ok(response); + return buildResponse("Stock added", true, new HashMap<>()); } - // Chercher des clients par nom + // Chercher un stock par id @GetMapping("/{id}") public ResponseEntity> findById(@PathVariable Long id) { Optional result = stockService.findById(id); - Map response = new HashMap<>(); - response.put("message", "List of Clients found"); - response.put("status", true); - response.put("data", result); - - return ResponseEntity.ok(response); + return buildResponse("Stock found", true, result); } - + // Reponse formatée + 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); + return ResponseEntity.ok(response); + } }