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; + } + + + } + + + +