diff --git a/src/main/java/fr/eni/demo/bll/FactureService.java b/src/main/java/fr/eni/demo/bll/FactureService.java index a5d9a81..f65dcf8 100644 --- a/src/main/java/fr/eni/demo/bll/FactureService.java +++ b/src/main/java/fr/eni/demo/bll/FactureService.java @@ -1,4 +1,11 @@ package fr.eni.demo.bll; +import fr.eni.demo.bo.Facture; + +import java.util.List; + public interface FactureService { + List getByClient(Long clientId); + List getAll(); + List getUnpayed(); } diff --git a/src/main/java/fr/eni/demo/bll/FactureServiceImpl.java b/src/main/java/fr/eni/demo/bll/FactureServiceImpl.java index a733d52..969c588 100644 --- a/src/main/java/fr/eni/demo/bll/FactureServiceImpl.java +++ b/src/main/java/fr/eni/demo/bll/FactureServiceImpl.java @@ -1,4 +1,36 @@ package fr.eni.demo.bll; +import fr.eni.demo.bo.Facture; +import fr.eni.demo.dal.FactureRepository; + +import java.util.List; + public class FactureServiceImpl implements FactureService { + + private final FactureRepository factureRepo; + public FactureServiceImpl(FactureRepository factureRepo) { + this.factureRepo = factureRepo; + } + + @Override + public List getByClient(Long clientId) { + if (clientId == null) { + throw new IllegalArgumentException("Client id can't be null"); + } + List factures = factureRepo.findByClient(clientId); + if (factures == null) { + throw new IllegalArgumentException("No factures found"); + }; + return factures; + } + + @Override + public List getAll() { + return factureRepo.findAll(); + } + + @Override + public List getUnpayed() { + return factureRepo.findByDatePayEmpty(); + } } diff --git a/src/main/java/fr/eni/demo/bo/Client.java b/src/main/java/fr/eni/demo/bo/Client.java index dc9c213..d604122 100644 --- a/src/main/java/fr/eni/demo/bo/Client.java +++ b/src/main/java/fr/eni/demo/bo/Client.java @@ -36,4 +36,8 @@ public class Client { @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumn(name = "CLIENT_ID") private List locations; + + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JoinColumn(name = "CLIENT_ID") + 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 52f27cf..b91852a 100644 --- a/src/main/java/fr/eni/demo/bo/Facture.java +++ b/src/main/java/fr/eni/demo/bo/Facture.java @@ -26,4 +26,8 @@ public class Facture { @Column(name = "DATE_PAY") private Date datePay; + + @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JoinColumn(name = "CLIENT_ID", nullable = false) + private Client client; } diff --git a/src/main/java/fr/eni/demo/controller/ClientController.java b/src/main/java/fr/eni/demo/controller/ClientController.java index ca44ef2..865065d 100644 --- a/src/main/java/fr/eni/demo/controller/ClientController.java +++ b/src/main/java/fr/eni/demo/controller/ClientController.java @@ -24,7 +24,7 @@ public class ClientController { clientService.add(client); Map response = new HashMap<>(); response.put("message", "Client created successfully"); - response.put("status", true); + response.put("status", 201); response.put("data", new HashMap<>()); return ResponseEntity.ok(response); @@ -36,7 +36,7 @@ public class ClientController { List result = clientService.findByName(name); Map response = new HashMap<>(); response.put("message", "List of Clients found"); - response.put("status", true); + response.put("status", 200); response.put("data", result); 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 new file mode 100644 index 0000000..cc90bb7 --- /dev/null +++ b/src/main/java/fr/eni/demo/controller/FactureController.java @@ -0,0 +1,46 @@ +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.HashMap; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/facture") +@RequiredArgsConstructor +public class FactureController { + + private final FactureService factureService; + + @GetMapping() + public ResponseEntity> getAllFactures() { + List result = factureService.getAll(); + Map response = new HashMap<>(); + response.put("data", result); + response.put("status", 200); + return ResponseEntity.ok(response); + } + + @GetMapping("/client/{id}") + public ResponseEntity> getFactureByClient(@PathVariable Long clientId) { + Map response = new HashMap<>(); + response.put("data", factureService.getByClient(clientId)); + response.put("status", 200); + return ResponseEntity.ok(response); + } + + @GetMapping("/unpayed") + public ResponseEntity> getUnpayedFactures() { + List result = factureService.getUnpayed(); + Map response = new HashMap<>(); + response.put("data", result); + response.put("status", 200); + return ResponseEntity.ok(response); + } +} diff --git a/src/main/java/fr/eni/demo/dal/FactureRepository.java b/src/main/java/fr/eni/demo/dal/FactureRepository.java index bda09d7..5fe4439 100644 --- a/src/main/java/fr/eni/demo/dal/FactureRepository.java +++ b/src/main/java/fr/eni/demo/dal/FactureRepository.java @@ -3,5 +3,10 @@ package fr.eni.demo.dal; import fr.eni.demo.bo.Facture; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface FactureRepository extends JpaRepository { + + List findByClient(Long clientId); + List findByDatePayEmpty(); }