diff --git a/pom.xml b/pom.xml
index a4326792681c1674bc8a0365a1d4f7448664bee9..146670110e4407f810b479e8cb07e0425c7987b5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
- <version>3.9.0</version>
+ <version>3.8.1</version>
<inherited>true</inherited>
<configuration>
<release>11</release>
diff --git a/src/main/java/fr/ulille/iut/tva/Main.java b/src/main/java/fr/ulille/iut/tva/Main.java
index 62da555ebf892c9910b55e2700400f5229364411..703833577e48d1a73cd9b0c7e2eb340a7360dacd 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/Detaildto.java b/src/main/java/fr/ulille/iut/tva/dto/Detaildto.java
new file mode 100644
index 0000000000000000000000000000000000000000..70f19deb17ce435da1230ae2c601805771407aff
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/dto/Detaildto.java
@@ -0,0 +1,67 @@
+package fr.ulille.iut.tva.dto;
+
+import jakarta.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class Detaildto {
+ private double montantTT;
+ private double montantTva;
+ private double somme;
+ private String taux;
+ private double tauxV;
+
+ public Detaildto() {}
+
+ public Detaildto(String taux, double tauxV, double montantTT, double montantTva, double somme) {
+ this.montantTT = montantTT;
+ this.taux = taux;
+ this.montantTva = montantTva;
+ this.somme = somme;
+ this.tauxV = tauxV;
+ }
+
+ public double getMontantTT() {
+ return montantTT;
+ }
+
+ public void setMontantTT(double montantTT) {
+ this.montantTT = montantTT;
+ }
+
+ public double getMontantTva() {
+ return montantTva;
+ }
+
+ public void setMontantTva(double montantTva) {
+ this.montantTva = montantTva;
+ }
+
+ public double getSomme() {
+ return somme;
+ }
+
+ public void setSomme(double somme) {
+ this.somme = somme;
+ }
+
+ public String getTaux() {
+ return taux;
+ }
+
+ public void setTaux(String taux) {
+ this.taux = taux;
+ }
+
+ public double getTauxV() {
+ return tauxV;
+ }
+
+ public void setTauxV(double tauxV) {
+ this.tauxV = tauxV;
+ }
+
+
+
+
+}
+
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 0000000000000000000000000000000000000000..2442aa6eb1e2858418f991c806e2679142c9e1f6
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
@@ -0,0 +1,37 @@
+package fr.ulille.iut.tva.dto;
+
+import jakarta.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+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 0000000000000000000000000000000000000000..1fedf520548a5453fae4caf02304eeb2f1bb7d59
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java
@@ -0,0 +1,13 @@
+package fr.ulille.iut.tva.ressource;
+
+import jakarta.ws.rs.WebApplicationException;
+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").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 4c63ca69564a00810016eb92cc55ec8116b80faa..70b2a55ce3ab99853d6fa22afc357973628247eb 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,80 @@
package fr.ulille.iut.tva.ressource;
+import fr.ulille.iut.tva.dto.Detaildto;
+import fr.ulille.iut.tva.dto.InfoTauxDto;
+import java.util.*;
import fr.ulille.iut.tva.service.CalculTva;
import fr.ulille.iut.tva.service.TauxTva;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
/**
* 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 double getMontantTotal(@QueryParam("somme") double somme, @PathParam("niveauTva") String niveau) {
+ try {
+ return somme + (somme * (TauxTva.valueOf(niveau.toUpperCase()).taux / 100));
+ } catch (Exception ex) {
+ throw new NiveauTvaInexistantException();
+ }
+ }
+
+ @GET
+ @Path("lestaux")
+ @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+ 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/{taux}")
+ @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+ public List<Detaildto> getDetail(@PathParam("taux") String niveau,@QueryParam("somme") int somme) {
+ double tauxV = TauxTva.valueOf(niveau.toUpperCase()).taux;
+ String taux = niveau.toUpperCase();
+ double montantTva = (somme*(tauxV/100));
+ double montantTotal = somme + montantTva;
+ List<Detaildto> result = new ArrayList<>();
+ result.add(new Detaildto(taux, tauxV, montantTotal, montantTva, somme));
+ return result;
+ }
+
+
+
}
+
+
+
+