From 43e2d59edc0ccab15f6782124cf2674b92368ad9 Mon Sep 17 00:00:00 2001
From: alexis <alexis.degroote.etu>
Date: Tue, 8 Feb 2022 11:45:17 +0100
Subject: [PATCH] update

---
 src/main/java/fr/ulille/iut/tva/Main.java     |  2 +-
 .../fr/ulille/iut/tva/dto/InfoTauxDto.java    | 30 +++++++++++
 .../NiveauTvaInexistantException.java         | 12 +++++
 .../iut/tva/ressource/TvaRessource.java       | 53 +++++++++++++++++++
 4 files changed, 96 insertions(+), 1 deletion(-)
 create mode 100644 src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
 create mode 100644 src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java

diff --git a/src/main/java/fr/ulille/iut/tva/Main.java b/src/main/java/fr/ulille/iut/tva/Main.java
index 62da555..7038335 100644
--- a/src/main/java/fr/ulille/iut/tva/Main.java
+++ b/src/main/java/fr/ulille/iut/tva/Main.java
@@ -16,7 +16,7 @@ import java.util.logging.Logger;
  */
 public class Main {
     // Base URI the Grizzly HTTP server will listen on
-    public static final String BASE_URI = "http://localhost:8080/myapp/";
+    public static final String BASE_URI = "http://localhost:8080/api/v1";
 
     /**
      * Starts Grizzly HTTP server exposing JAX-RS resources defined in this application.
diff --git a/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java b/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
new file mode 100644
index 0000000..6a3d832
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
@@ -0,0 +1,30 @@
+package fr.ulille.iut.tva.dto;
+
+public class InfoTauxDto {
+    private String label;
+    private double taux;
+    
+    public InfoTauxDto() {}
+
+    public InfoTauxDto(String label, double taux) {
+        this.label = label;
+        this.taux = taux;
+    }
+
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+
+    public double getTaux() {
+        return taux;
+    }
+
+    public void setTaux(double taux) {
+        this.taux = taux;
+    }
+}
+
diff --git a/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java b/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java
new file mode 100644
index 0000000..120c5fe
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java
@@ -0,0 +1,12 @@
+package fr.ulille.iut.tva.ressource;
+
+import jakarta.ws.rs.*;
+import jakarta.ws.rs.core.Response;
+
+public class NiveauTvaInexistantException extends WebApplicationException {
+	private static final long serialVersionUID = 939875418210403804L;
+
+	public NiveauTvaInexistantException() {
+        super(Response.status(Response.Status.NOT_ACCEPTABLE).entity("Niveau de TVA inexistant\n").build());
+    }
+}
diff --git a/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java b/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
index 4c63ca6..c3006f5 100644
--- a/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
+++ b/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
@@ -1,12 +1,65 @@
 package fr.ulille.iut.tva.ressource;
 
+import javax.annotation.processing.Generated;
+
 import fr.ulille.iut.tva.service.CalculTva;
 import fr.ulille.iut.tva.service.TauxTva;
+import jakarta.ws.rs.*;
+import fr.ulille.iut.tva.dto.InfoTauxDto;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * TvaRessource
  */
+@Path("tva")
 public class TvaRessource {
     private CalculTva calculTva = new CalculTva();
 
+    @GET
+    @Path("tauxpardefaut")
+    public double getValeurTauxParDefaut() {
+        return TauxTva.NORMAL.taux;
+    }
+
+    @GET
+    @Path("valeur/{niveauTva}")
+    public double getValeurTaux(
+        @PathParam("niveauTva") String niveau) {
+        try {
+            return TauxTva.valueOf(niveau.toUpperCase()).taux; 
+        }
+        catch ( Exception ex ) {
+            throw new NiveauTvaInexistantException();
+        }
+    }
+
+    @GET
+    @Path("{niveauTva}")
+    public String getMontantTotal(@PathParam("niveauTva") String niveau, @QueryParam("somme") int somme){
+        try {
+            return "taux de TVA : " + getValeurTaux(niveau) + "\nsomme :" + somme + "\n";
+        }
+        catch ( Exception ex ) {
+            throw new NiveauTvaInexistantException();
+        }
+    }
+
+    @GET
+    @Path("lestaux")
+    public List<InfoTauxDto> getInfoTaux() {
+        ArrayList<InfoTauxDto> result = new ArrayList<InfoTauxDto>();
+        
+        for ( TauxTva t : TauxTva.values() ) {
+            result.add(new InfoTauxDto(t.name(), t.taux));
+        }
+        
+        return result;
+    }
+
+    @GET
+    @Path("details/{niveauTva}")
+    public String getDetails(@PathParam("niveauTva") String value, @QueryParam("somme") int somme){
+        return "{'montantTotal: "+ getMontantTotal(niveau, somme) + ", montantTva: " + getValeurTaux(niveau) + ", somme: " + somme + ", tauxLabel: ";
+    }
 }
-- 
GitLab