diff --git a/penghitungBMI/src/main/java/apap/tutorial/penghitungBMI/controller/PenghitungBmiController.java b/penghitungBMI/src/main/java/apap/tutorial/penghitungBMI/controller/PenghitungBmiController.java new file mode 100644 index 0000000000000000000000000000000000000000..be7ee55c8b445d65db8b978b6aa4dffbb1f019e3 --- /dev/null +++ b/penghitungBMI/src/main/java/apap/tutorial/penghitungBMI/controller/PenghitungBmiController.java @@ -0,0 +1,34 @@ +package apap.tutorial.penghitungBMI.controller; + +import apap.tutorial.penghitungBMI.model.PenghitungBmi; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.GetMapping; + + +@Controller +public class PenghitungBmiController { + private String getPenghitungBmiPage(String beratBadan, String tinggiBadan, Model model){ + if (beratBadan.isEmpty() || tinggiBadan.isEmpty() || beratBadan.equals("0") || tinggiBadan.equals("0")){ + model.addAttribute("msg", "Isi berat dan tinggi badan anda dengan benar"); + } + else { + final PenghitungBmi penghitungBmi = new PenghitungBmi(beratBadan,tinggiBadan); + model.addAttribute("penghitungBmi", penghitungBmi); + } + return "penghitungBmiPage.html"; + } + + @GetMapping(value="/penghitung-BMI") + public String penghitungBmiRequestParam(@RequestParam(value = "berat") String beratBadan, @RequestParam(value = "tinggi") String tinggiBadan, Model model){ + return getPenghitungBmiPage(beratBadan, tinggiBadan, model); + } + + @GetMapping(value="/penghitung-BMI/{berat}/{tinggi}") + public String penghitungBmiWithPathVariable(@PathVariable(value = "berat") String beratBadan, @PathVariable(value = "tinggi") String tinggiBadan, Model model){ + return getPenghitungBmiPage(beratBadan, tinggiBadan, model); + } +} diff --git a/penghitungBMI/src/main/java/apap/tutorial/penghitungBMI/model/PenghitungBmi.java b/penghitungBMI/src/main/java/apap/tutorial/penghitungBMI/model/PenghitungBmi.java new file mode 100644 index 0000000000000000000000000000000000000000..ee8078e7179af79e1a5421de3fad4741c8ae46aa --- /dev/null +++ b/penghitungBMI/src/main/java/apap/tutorial/penghitungBMI/model/PenghitungBmi.java @@ -0,0 +1,34 @@ +package apap.tutorial.penghitungBMI.model; +import java.io.Serializable; + +public class PenghitungBmi implements Serializable{ + private Double beratBadan; + private Double tinggiBadan; + private String kategori; + + public PenghitungBmi(String beratBadan, String tinggiBadan){ + this.beratBadan = Double.parseDouble((beratBadan)); + this.tinggiBadan= Double.parseDouble((tinggiBadan))/100; + } + + public String hitungBmi(){ + double hasilBmi = beratBadan /(Math.pow(tinggiBadan,2)); + if (hasilBmi < 18.5 ){ + this.kategori = "Berat badan anda kurang"; + } + else if (hasilBmi >= 18.5 && hasilBmi <= 22.9){ + this.kategori = "Berat badan anda normal"; + } + else if (hasilBmi > 22.9 && hasilBmi <= 29.9){ + this.kategori = "Berat badan anda berlebih (kecenderungan obesitas)"; + } + else { + this.kategori = "Anda obesitas"; + } + return String.format("%.2f", hasilBmi); + } + + public double getWeight() {return beratBadan;} + public double getHeight() {return tinggiBadan;} + public String getKategori() {return kategori;} +} diff --git a/penghitungBMI/src/main/resources/templates/penghitungBmiPage.html b/penghitungBMI/src/main/resources/templates/penghitungBmiPage.html new file mode 100644 index 0000000000000000000000000000000000000000..43d2f05afada7d1d38b791985721517d02ee2a54 --- /dev/null +++ b/penghitungBMI/src/main/resources/templates/penghitungBmiPage.html @@ -0,0 +1,76 @@ +<!DOCTYPE html> +<!-- attribute xmlns:th harus ada jika ingin menggunakan +template engine milik Thymeleaf --> +<html lang="en" xmlns:th="http://www.thymeleaf.org"> +<head> + <meta charset="UTF-8"> + <title>Penghitung BMI</title> + <style> + .card { + width: 40%; + display: flex; + flex-direction: column; + font-family: Arial, Helvetica, sans-serif; + border-radius: 10px; + box-shadow: 0 0 50px #ccc; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + .header { + height: 30%; + background: #023047; + border-top-left-radius: 10px; + border-top-right-radius: 10px; + color: white; + text-align: center; + } + .container { + padding: 2px 16px; + } + .kategori{ + text-align: center; + color: #fb8500; + padding: 10px 0px; + font-size:18px; + font-weight: bold; + } + </style> +</head> +<body> +<div> + <div class="card"> + <div class="header"> + <p>Penghitung BMI</p> + </div> + + <div class="container"> + <th:block th:if="${penghitungBmi != null}"> + <p> + Berat badan: + <span th:text="${penghitungBmi.getWeight()} + ' kg'"></span> + </p> + <p> + Tinggi badan: + <span th:text="${penghitungBmi.getHeight()}+ ' m'"></span> + </p> + <p> + <strong> + Hasil BMI: + <span th:text="${penghitungBmi.hitungBmi()}"></span> + </strong> + </p> + <p class="kategori"> + <span th:text="${penghitungBmi.getKategori()}"></span> + </p> + </th:block> + + <div th:unless="${penghitungBmi != null}"> + <h3 class="kategori" th:text="${msg}"></h3> + </div> + </div> + </div> +</div> +</body> +</html> \ No newline at end of file