From 57d903a6d671c5b55508d9d898876bef4424db57 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Sat, 10 Dec 2022 20:58:03 +0700
Subject: [PATCH 01/16] feat: fix html

---
 .../templates/apoteker/form-add-apoteker.html |  1 +
 .../appointment/view-all-appointment.html     |  2 +-
 .../appointment/view-appointment.html         |  2 +-
 .../templates/dokter/form-add-dokter.html     |  1 +
 .../templates/dokter/list-dokter.html         |  2 +-
 .../main/resources/templates/error/403.html   |  2 +-
 .../templates/fragments/fragment.html         | 82 +++++++++++------
 .../main/resources/templates/home/home.html   | 29 +-----
 .../main/resources/templates/login/login.html | 90 ++++++++++---------
 .../templates/manage/form-add-apoteker.html   |  1 +
 .../templates/manage/form-add-dokter.html     |  1 +
 .../templates/manage/viewall-user.html        |  2 +-
 .../resources/templates/obat/add-obat.html    |  2 +-
 .../templates/obat/form-add-obat.html         |  1 +
 .../templates/obat/form-update-obat.html      |  1 +
 .../resources/templates/obat/update-obat.html |  2 +-
 .../templates/obat/viewall-obat.html          |  2 +-
 17 files changed, 121 insertions(+), 102 deletions(-)

diff --git a/SpringTkApap/src/main/resources/templates/apoteker/form-add-apoteker.html b/SpringTkApap/src/main/resources/templates/apoteker/form-add-apoteker.html
index b2f6cc2..d7ef0fa 100644
--- a/SpringTkApap/src/main/resources/templates/apoteker/form-add-apoteker.html
+++ b/SpringTkApap/src/main/resources/templates/apoteker/form-add-apoteker.html
@@ -37,5 +37,6 @@
     </div>
   </div>
 </div>
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/appointment/view-all-appointment.html b/SpringTkApap/src/main/resources/templates/appointment/view-all-appointment.html
index 64a49fa..bac0747 100644
--- a/SpringTkApap/src/main/resources/templates/appointment/view-all-appointment.html
+++ b/SpringTkApap/src/main/resources/templates/appointment/view-all-appointment.html
@@ -56,6 +56,6 @@
         </div>
     </div>
 </div>
-
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/appointment/view-appointment.html b/SpringTkApap/src/main/resources/templates/appointment/view-appointment.html
index a04aa25..ff753a9 100644
--- a/SpringTkApap/src/main/resources/templates/appointment/view-appointment.html
+++ b/SpringTkApap/src/main/resources/templates/appointment/view-appointment.html
@@ -54,6 +54,6 @@
     </div>
 </div>
 </div>
-
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/dokter/form-add-dokter.html b/SpringTkApap/src/main/resources/templates/dokter/form-add-dokter.html
index 3628006..76b5ab1 100644
--- a/SpringTkApap/src/main/resources/templates/dokter/form-add-dokter.html
+++ b/SpringTkApap/src/main/resources/templates/dokter/form-add-dokter.html
@@ -40,5 +40,6 @@
     </div>
   </div>
 </div>
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/dokter/list-dokter.html b/SpringTkApap/src/main/resources/templates/dokter/list-dokter.html
index 566549b..556bc0a 100644
--- a/SpringTkApap/src/main/resources/templates/dokter/list-dokter.html
+++ b/SpringTkApap/src/main/resources/templates/dokter/list-dokter.html
@@ -5,6 +5,6 @@
     <title>Title</title>
 </head>
 <body>
-
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/error/403.html b/SpringTkApap/src/main/resources/templates/error/403.html
index c57eb5d..a05ed97 100644
--- a/SpringTkApap/src/main/resources/templates/error/403.html
+++ b/SpringTkApap/src/main/resources/templates/error/403.html
@@ -16,6 +16,6 @@
     <a class="text-center" th:href="@{/}">Home</a>
   </div>
 </div>
-
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/fragments/fragment.html b/SpringTkApap/src/main/resources/templates/fragments/fragment.html
index 48e7ccf..dcdf34e 100644
--- a/SpringTkApap/src/main/resources/templates/fragments/fragment.html
+++ b/SpringTkApap/src/main/resources/templates/fragments/fragment.html
@@ -5,6 +5,8 @@
   <title>Navbar</title>
   <head th:fragment="css">
     <link rel="stylesheet" th:href="@{/css/bootstrap.min.css}"/>
+    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
+    <link href="https://getbootstrap.com/docs/5.2/assets/css/docs.css" rel="stylesheet">
   </head>
   <head th:fragment="js">
     <script
@@ -13,26 +15,21 @@
             crassorigin="anonymous"
     ></script>
     <script src="https://getbootstrap.com/docs/4.1/assets/js/vendor/popper.nin.js"></script>
+    <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
+    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
     <script th:src="@{/js/bootstrap.min.js}"></script>
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
   </head>
 </head>
 <body>
 <nav th:fragment="navbar(page)" class="navbar navbar-expand-lg navbar-dark" style="background-color:#0d47a1;">
-  <a class="navbar-brand font-weight-bold text-white" th:href="@{/}">RumahSehat</a>
-  <button
-          class="navbar-toggler"
-          type="button"
-          data-toggle="collapse"
-          data-target="#navbarNavAltMarkup"
-          aria-controls="navbarNavAltMarkup"
-          aria-expanded="false"
-          aria-label="Toggle navigation"
-  >
-
-    <span class="navbar-toggler-icon"></span>
-
-  </button>
-  <div class="collapse navbar-collapse">
+  <div class="container-fluid mx-3">
+    <a class="navbar-brand font-weight-bold text-white" th:href="@{/}">RumahSehat</a>
+    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
+      <span class="navbar-toggler-icon"></span>
+    </button>
+    <div class="collapse navbar-collapse" id="navbarTogglerDemo02">
     <ul class="navbar-nav mr-auto">
       <li th:classappend="${page == 'Beranda'} ? active : ''" class="nav-item">
         <a class="nav-link" th:href="@{/}">Beranda</a>
@@ -53,19 +50,52 @@
         <a class="nav-link" th:href="@{/user/viewall/pasien}">Manajemen User</a>
       </li>
     </ul>
+    <ul class="navbar-nav pull-right">
+        <li>
+          <a class="nav-item nav-link text-white mr-2" th:text="${#httpServletRequest.remoteUser}"></a>
+        </li>
+        <li>
+          <button class="nav-item btn btn-outline-light my-auto" data-toggle="modal" data-target="#opsi-logout">Logout</button>
+          <div class="modal fade" id="opsi-logout" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
+            <div class="modal-dialog modal-dialog-centered" role="document">
+              <div class="modal-content">
+                <div class="modal-header">
+                  <h5 class="modal-title" id="exampleModalLongTitleDU1">Confirmation Message</h5>
+                  <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                  </button>
+                </div>
+                <div class="modal-body">
+                  <strong>Are you sure you want to logout?</strong>
+                </div>
+                <div class="modal-footer">
+                  <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
+                  <a class="btn btn-primary"  th:href="@{/logout-sso}"role="button">Logout</a>
+                </div>
+              </div>
+            </div>
+          </div>
+
+        </li>
+      </ul>
+  </div>
+
   </div>
-  <ul class="navbar-nav pull-right">
-    <li>
-      <a class="nav-item nav-link text-white" th:text="${#httpServletRequest.remoteUser}"></a>
-    </li>
-    <li>
-      <a class="nav-item nav-link text-white"> | </a>
-    </li>
-    <li>
-      <a class="nav-item nav-link text-white" th:href="@{/logout-sso}">Logout</a>
-    </li>
-  </ul>
 </nav>
+
+<footer th:fragment="footer" class="text-center text-lg-start pt-5" style="background-color: #e3f2fd;">
+  <div class="container d-flex justify-content-center">
+    <h6>Sistem Informasi Kesehatan PT BerkahBerkah</h6>
+  </div>
+  <div class="container d-flex justify-content-center pb-3">
+    <h6>Dibuat oleh Zefa Arga Dina Tsaqib Alim Hasna</h6>
+  </div>
+
+
+  <div class="text-center text-white p-3" style="background-color:#0d47a1;">
+    © 2022 Kelompok 53 | APAP - A
+  </div>
+</footer>
 </button>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/home/home.html b/SpringTkApap/src/main/resources/templates/home/home.html
index 5ecc91f..bdf0e81 100644
--- a/SpringTkApap/src/main/resources/templates/home/home.html
+++ b/SpringTkApap/src/main/resources/templates/home/home.html
@@ -72,18 +72,6 @@
                 </div>
             </div>
         </div>
-        <div class="col-4">
-            <div class="card mx-auto" style="border-color:#0d47a1; max-width: 18rem;">
-                <div class="card-header text-center text-white" style="background-color:#0d47a1;" >Fitur managemen-user</div>
-                <div class="card-body">
-                    <div class="text-center mt-1">
-                        <img src="../img/user_management.png" width="60" height="60">
-                        <p class="card-text my-3">manage data user</p>
-                        <a th:href="@{/user/viewall/pasien}" class="mx-2 mb-2 btn btn-sm btn-primary">lihat user</a>
-                    </div>
-                </div>
-            </div>
-        </div>
 
     </div>
 
@@ -105,23 +93,8 @@
 
 
 
-<div class="mt-5">
+<object th:replace="fragments/fragment :: footer"></object>
 
-    <footer class="text-center text-lg-start" style="background-color: #e3f2fd;">
-        <div class="container d-flex justify-content-center pt-4">
-            <h6>Sistem Informasi Kesehatan PT BerkahBerkah</h6>
-        </div>
-        <div class="container d-flex justify-content-center pb-3">
-            <h6>Dibuat oleh Zefa Arga Dina Tsaqib Alim Hasna</h6>
-        </div>
-
-
-        <div class="text-center text-white p-3" style="background-color:#0d47a1;">
-            © 2022 Kelompok 53 | APAP - A
-        </div>
-    </footer>
-
-</div>
 
 
 
diff --git a/SpringTkApap/src/main/resources/templates/login/login.html b/SpringTkApap/src/main/resources/templates/login/login.html
index a2972bf..4455371 100644
--- a/SpringTkApap/src/main/resources/templates/login/login.html
+++ b/SpringTkApap/src/main/resources/templates/login/login.html
@@ -4,56 +4,66 @@
     <title>Login</title>
     <object th:include="fragments/fragment :: css" th:remove="tag"></object>
     <object th:include="fragments/fragment :: js" th:remove="tag"></object>
+    <link
+            href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/6.0.1/mdb.min.css"
+            rel="stylesheet"
+    />
+    <script
+            type="text/javascript"
+            src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/6.0.1/mdb.min.js"
+    ></script>
 </head>
 <body>
 
-<div class="container my-5 py-5">
-    <div class="card">
-            <div class="card-body py-0 px-0 border">
-                <div class="row align-items-center">
-                    <div class="col-6 text-center" style="background-color: #e3f2fd;">
-                        <img src="../img/Logo.png" width="363.59" height="363.59">
-                    </div>
-                    <div class="col-6">
-                        <div class="text-center">
-                            <div class="row align-items-center justify-content-center">
-                                <div class="col-md-12">
-                                    <div class="card border-0">
-                                        <div class="card-body" >
-                                            <div th:if="${param.error}">
-                                                <span style="color: red">Invalid username and password.</span>
-                                            </div>
-                                            <h3 style="color:#0d47a1;">Login RumahSehat</h3>
-                                            <br>
-                                            <br>
-                                            <form th:action="@{/login}" method="POST">
-                                                <div class="row form-group">
-                                                    <label class="col-sm-4 my-auto">Username:</label>
-                                                    <input type="text" class="col-sm-7 form-control input-sm" name="username">
-                                                </div>
-                                                <div class="row form-group">
-                                                    <label class="col-sm-4 my-auto">Password:</label>
-                                                    <input type="password" class="col-sm-7 form-control input-sm" name="password">
-                                                </div>
-                                                <br>
-                                                <div class="row form-group justify-content-center">
-                                                    <button type="submit" class="btn btn-primary">Sign In</button>
-                                                </div>
-                                                <br>
-                                                <div>
-                                                    atau <a th:href="@{/login-sso}">Masuk sebagai Admin (SSO UI)</a>
-                                                </div>
-                                            </form>
-                                        </div>
-                                    </div>
+<section class="h-100" style="background-color: #e3f2fd;">
+    <div class="container py-5 h-100">
+        <div class="row d-flex justify-content-center align-items-center h-100">
+            <div class="col-xl-9 pb-5">
+                <div class="card rounded-5 text-black">
+                    <div class="row g-0">
+                        <div class="col-lg-6 d-flex justify-content-center align-items-center text-center">
+                            <img src="../img/Logo.png" width="300" height="300">
+                        </div>
+                        <div class="col-lg-6 d-flex">
+                            <div class="card-body py-5 px-5 mx-3">
+                                <div th:if="${param.error}">
+                                    <span style="color: red">Invalid username and password.</span>
                                 </div>
+                                <h3 class="text-center fw-bold" style="color:#0d47a1;">Login RumahSehat</h3>
+                                <br>
+                                <br>
+                                <form th:action="@{/login}" method="POST">
+                                    <div class="mb-4">
+                                        <label for="formInput" class="form-label fw-bold" style="color:#0d47a1;">Username:</label>
+                                        <input type="text" class="form-control" id="formInput" placeholder="Username" name="username">
+                                    </div>
+                                    <div class="mb-4">
+                                        <label for="formInput2" class="form-label fw-bold" style="color:#0d47a1;">Password:</label>
+                                        <input type="password" class="form-control" id="formInput2" placeholder="Username" name="password">
+                                    </div>
+
+                                    <br>
+                                    <div class="text-center">
+                                        <button type="submit" class="btn btn-primary">Sign In</button>
+                                    </div>
+                                    <br>
+                                    <div class="text-center">
+                                        atau <a th:href="@{/login-sso}">Masuk sebagai Admin (SSO UI)</a>
+                                    </div>
+                                </form>
                             </div>
                         </div>
                     </div>
                 </div>
             </div>
         </div>
+    </div>
+</section>
 
-</div>
+<footer class="text-center text-lg-start">
+    <div class="text-center text-white p-3" style="background-color:#0d47a1;">
+        © 2022 Kelompok 53 | APAP - A
+    </div>
+</footer>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/manage/form-add-apoteker.html b/SpringTkApap/src/main/resources/templates/manage/form-add-apoteker.html
index dacfe8e..5f15672 100644
--- a/SpringTkApap/src/main/resources/templates/manage/form-add-apoteker.html
+++ b/SpringTkApap/src/main/resources/templates/manage/form-add-apoteker.html
@@ -37,5 +37,6 @@
     </div>
   </div>
 </div>
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html b/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html
index 88a9362..168ec30 100644
--- a/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html
+++ b/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html
@@ -40,5 +40,6 @@
     </div>
   </div>
 </div>
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/manage/viewall-user.html b/SpringTkApap/src/main/resources/templates/manage/viewall-user.html
index f9604e1..f220eb8 100644
--- a/SpringTkApap/src/main/resources/templates/manage/viewall-user.html
+++ b/SpringTkApap/src/main/resources/templates/manage/viewall-user.html
@@ -62,6 +62,6 @@
         </div>
     </div>
 </div>
-
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/obat/add-obat.html b/SpringTkApap/src/main/resources/templates/obat/add-obat.html
index 7cbf49c..9958f93 100644
--- a/SpringTkApap/src/main/resources/templates/obat/add-obat.html
+++ b/SpringTkApap/src/main/resources/templates/obat/add-obat.html
@@ -21,6 +21,6 @@
         </div>
     </div>
 </div>
-
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/obat/form-add-obat.html b/SpringTkApap/src/main/resources/templates/obat/form-add-obat.html
index 2eded3e..751936f 100644
--- a/SpringTkApap/src/main/resources/templates/obat/form-add-obat.html
+++ b/SpringTkApap/src/main/resources/templates/obat/form-add-obat.html
@@ -27,5 +27,6 @@
         </div>
     </div>
 </div>
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/obat/form-update-obat.html b/SpringTkApap/src/main/resources/templates/obat/form-update-obat.html
index 8bb5719..927676f 100644
--- a/SpringTkApap/src/main/resources/templates/obat/form-update-obat.html
+++ b/SpringTkApap/src/main/resources/templates/obat/form-update-obat.html
@@ -28,5 +28,6 @@
     </div>
   </div>
 </div>
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/obat/update-obat.html b/SpringTkApap/src/main/resources/templates/obat/update-obat.html
index d76c288..7d57381 100644
--- a/SpringTkApap/src/main/resources/templates/obat/update-obat.html
+++ b/SpringTkApap/src/main/resources/templates/obat/update-obat.html
@@ -21,6 +21,6 @@
         </div>
     </div>
 </div>
-
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
diff --git a/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html b/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html
index 471dcf4..81a01e9 100644
--- a/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html
+++ b/SpringTkApap/src/main/resources/templates/obat/viewall-obat.html
@@ -58,6 +58,6 @@
     </div>
   </div>
 </div>
-
+<object th:replace="fragments/fragment :: footer"></object>
 </body>
 </html>
\ No newline at end of file
-- 
GitLab


From 9b2c02b73bb89ad52158d36a87578653cffb7ad8 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Sat, 10 Dec 2022 21:00:05 +0700
Subject: [PATCH 02/16] feat: fix html login

---
 .../src/main/resources/templates/login/login.html         | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/SpringTkApap/src/main/resources/templates/login/login.html b/SpringTkApap/src/main/resources/templates/login/login.html
index 4455371..5967d98 100644
--- a/SpringTkApap/src/main/resources/templates/login/login.html
+++ b/SpringTkApap/src/main/resources/templates/login/login.html
@@ -4,14 +4,6 @@
     <title>Login</title>
     <object th:include="fragments/fragment :: css" th:remove="tag"></object>
     <object th:include="fragments/fragment :: js" th:remove="tag"></object>
-    <link
-            href="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/6.0.1/mdb.min.css"
-            rel="stylesheet"
-    />
-    <script
-            type="text/javascript"
-            src="https://cdnjs.cloudflare.com/ajax/libs/mdb-ui-kit/6.0.1/mdb.min.js"
-    ></script>
 </head>
 <body>
 
-- 
GitLab


From 2edc5a349bb0146cb3b2976f2b77341a61044bfe Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Sat, 10 Dec 2022 22:56:12 +0700
Subject: [PATCH 03/16] feat: fix href html

---
 .../src/main/resources/templates/fragments/fragment.html        | 2 +-
 SpringTkApap/src/main/resources/templates/home/home.html        | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/SpringTkApap/src/main/resources/templates/fragments/fragment.html b/SpringTkApap/src/main/resources/templates/fragments/fragment.html
index dcdf34e..eee434b 100644
--- a/SpringTkApap/src/main/resources/templates/fragments/fragment.html
+++ b/SpringTkApap/src/main/resources/templates/fragments/fragment.html
@@ -44,7 +44,7 @@
         <a class="nav-link" th:href="@{/obat/viewall}">Obat</a>
       </li>
       <li sec:authorize="hasAnyAuthority('ADMIN', 'DOKTER')" th:classappend="${page == 'Appointment'} ? active : ''"class="nav-item">
-        <a class="nav-link" th:href="@{/appointment/add/{noPasien}}">Appointment</a>
+        <a class="nav-link" th:href="@{/appointment/get-all}">Appointment</a>
       </li>
       <li sec:authorize="hasAnyAuthority('ADMIN')" th:classappend="${page == 'User'} ? active : ''"class="nav-item">
         <a class="nav-link" th:href="@{/user/viewall/pasien}">Manajemen User</a>
diff --git a/SpringTkApap/src/main/resources/templates/home/home.html b/SpringTkApap/src/main/resources/templates/home/home.html
index bdf0e81..fc58a52 100644
--- a/SpringTkApap/src/main/resources/templates/home/home.html
+++ b/SpringTkApap/src/main/resources/templates/home/home.html
@@ -40,7 +40,7 @@
                     <div class="text-center mt-1">
                         <img src="../img/appointment.png" width="60" height="60">
                         <p class="card-text my-3">Lihat jadwal dan detail dari appointment yang telah dibuat.</p>
-                        <a th:href="@{/}" class="btn btn-sm btn-primary">Appointment</a>
+                        <a th:href="@{/appointment/get-all}" class="btn btn-sm btn-primary">Appointment</a>
                     </div>
                 </div>
             </div>
-- 
GitLab


From 8ae4af29f00b283bb480d0948ceff5cb56402ce0 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Sun, 11 Dec 2022 10:04:37 +0700
Subject: [PATCH 04/16] feat: fix html and security config

---
 .../appointment/AppointmentController.java    |  2 +-
 .../auth/security/WebSecurityConfig.java      |  3 +-
 .../templates/fragments/fragment.html         | 12 +--
 .../main/resources/templates/home/home.html   |  2 +-
 .../templates/manage/form-add-dokter.html     |  2 +-
 tk_apap_flutter/lib/main.dart                 | 89 -------------------
 6 files changed, 6 insertions(+), 104 deletions(-)

diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentController.java
index 9307968..9274791 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentController.java
@@ -46,7 +46,7 @@ public class AppointmentController {
         return "add-appointment";
     }
 
-    @GetMapping("/appointment/get-all")
+    @GetMapping("/appointment/viewall")
     public String getAllAppointment(Model model, Principal principal) {
         UserModel user = userService.getUserByUsername(principal.getName());
         List<AppointmentModel> listApm;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java
index 489b108..e509302 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java
@@ -51,7 +51,8 @@ public class WebSecurityConfig {
                     .antMatchers("/obat/update/**").hasAuthority(APOTEKER)
                     .antMatchers("/user/add/**").hasAuthority(ADMIN)
                     .antMatchers("/user/delete/**").hasAuthority(ADMIN)
-                    .antMatchers("/appointment/get-all").hasAnyAuthority(ADMIN, DOKTER, PASIEN)
+                    .antMatchers("/appointment/viewall").hasAnyAuthority(ADMIN, DOKTER, PASIEN)
+                    .antMatchers("/appointment/**").hasAnyAuthority(ADMIN, DOKTER)
                     .antMatchers("/user/viewall/**").hasAuthority(ADMIN)
                     .anyRequest().authenticated()
                     .and( )
diff --git a/SpringTkApap/src/main/resources/templates/fragments/fragment.html b/SpringTkApap/src/main/resources/templates/fragments/fragment.html
index eee434b..053a567 100644
--- a/SpringTkApap/src/main/resources/templates/fragments/fragment.html
+++ b/SpringTkApap/src/main/resources/templates/fragments/fragment.html
@@ -9,17 +9,10 @@
     <link href="https://getbootstrap.com/docs/5.2/assets/css/docs.css" rel="stylesheet">
   </head>
   <head th:fragment="js">
-    <script
-            src="https://code.jquery.con/jquery-3.4.1.min.js"
-            integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFIBw8HfCJe="
-            crassorigin="anonymous"
-    ></script>
     <script src="https://getbootstrap.com/docs/4.1/assets/js/vendor/popper.nin.js"></script>
     <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
-    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
     <script th:src="@{/js/bootstrap.min.js}"></script>
-    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
   </head>
 </head>
 <body>
@@ -34,9 +27,6 @@
       <li th:classappend="${page == 'Beranda'} ? active : ''" class="nav-item">
         <a class="nav-link" th:href="@{/}">Beranda</a>
       </li>
-      <li sec:authorize="hasAnyAuthority('DOKTER')" th:classappend="${page == 'Dokter'} ? active : ''" class="nav-item">
-        <a class="nav-link" th:href="@{/}">Dokter</a>
-      </li>
       <li sec:authorize="hasAnyAuthority('ADMIN', 'APOTEKER')" th:classappend="${page == 'Resep'} ? active : ''"class="nav-item">
         <a class="nav-link" th:href="@{/}">Resep</a>
       </li>
@@ -44,7 +34,7 @@
         <a class="nav-link" th:href="@{/obat/viewall}">Obat</a>
       </li>
       <li sec:authorize="hasAnyAuthority('ADMIN', 'DOKTER')" th:classappend="${page == 'Appointment'} ? active : ''"class="nav-item">
-        <a class="nav-link" th:href="@{/appointment/get-all}">Appointment</a>
+        <a class="nav-link" th:href="@{/appointment/viewall}">Appointment</a>
       </li>
       <li sec:authorize="hasAnyAuthority('ADMIN')" th:classappend="${page == 'User'} ? active : ''"class="nav-item">
         <a class="nav-link" th:href="@{/user/viewall/pasien}">Manajemen User</a>
diff --git a/SpringTkApap/src/main/resources/templates/home/home.html b/SpringTkApap/src/main/resources/templates/home/home.html
index fc58a52..1207edb 100644
--- a/SpringTkApap/src/main/resources/templates/home/home.html
+++ b/SpringTkApap/src/main/resources/templates/home/home.html
@@ -40,7 +40,7 @@
                     <div class="text-center mt-1">
                         <img src="../img/appointment.png" width="60" height="60">
                         <p class="card-text my-3">Lihat jadwal dan detail dari appointment yang telah dibuat.</p>
-                        <a th:href="@{/appointment/get-all}" class="btn btn-sm btn-primary">Appointment</a>
+                        <a th:href="@{/appointment/viewall}" class="btn btn-sm btn-primary">Appointment</a>
                     </div>
                 </div>
             </div>
diff --git a/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html b/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html
index 168ec30..9659c87 100644
--- a/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html
+++ b/SpringTkApap/src/main/resources/templates/manage/form-add-dokter.html
@@ -30,7 +30,7 @@
             </option>
           </select>
           <br>
-          <label>tarif</label>
+          <label>Tarif</label>
           <input type="text" name="tarif" class="form-control"/>
           <br>
           <button type="submit" class="btn btn-primary">Submit</button>
diff --git a/tk_apap_flutter/lib/main.dart b/tk_apap_flutter/lib/main.dart
index 710dc2f..201693a 100644
--- a/tk_apap_flutter/lib/main.dart
+++ b/tk_apap_flutter/lib/main.dart
@@ -36,96 +36,7 @@ class MyApp extends StatelessWidget {
         DaftarAppointment.routeName: (ctx) => const DaftarAppointment(),
         DetailAppointment.routeName: (ctx) => DetailAppointment(),
       },
-      // home: const MyHomePage(title: 'Flutter Demo Home Page'),
     );
   }
 }
 
-class MyHomePage extends StatefulWidget {
-  const MyHomePage({key, this.title});
-
-  // This widget is the home page of your application. It is stateful, meaning
-  // that it has a State object (defined below) that contains fields that affect
-  // how it looks.
-
-  // This class is the configuration for the state. It holds the values (in this
-  // case the title) provided by the parent (in this case the App widget) and
-  // used by the build method of the State. Fields in a Widget subclass are
-  // always marked "final".
-
-  final String title;
-
-  @override
-  State<MyHomePage> createState() => _MyHomePageState();
-}
-
-class _MyHomePageState extends State<MyHomePage> {
-  int _counter = 0;
-
-  void _incrementCounter() {
-    setState(() {
-      // This call to setState tells the Flutter framework that something has
-      // changed in this State, which causes it to rerun the build method below
-      // so that the display can reflect the updated values. If we changed
-      // _counter without calling setState(), then the build method would not be
-      // called again, and so nothing would appear to happen.
-      _counter++;
-    });
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    // This method is rerun every time setState is called, for instance as done
-    // by the _incrementCounter method above.
-    //
-    // The Flutter framework has been optimized to make rerunning build methods
-    // fast, so that you can just rebuild anything that needs updating rather
-    // than having to individually change instances of widgets.
-    return Scaffold(
-      appBar: AppBar(
-        // Here we take the value from the MyHomePage object that was created by
-        // the App.build method, and use it to set our appbar title.
-        title: Text(widget.title),
-      ),
-      body: Center(
-        // Center is a layout widget. It takes a single child and positions it
-        // in the middle of the parent.
-        child: Column(
-          // Column is also a layout widget. It takes a list of children and
-          // arranges them vertically. By default, it sizes itself to fit its
-          // children horizontally, and tries to be as tall as its parent.
-          //
-          // Invoke "debug painting" (press "p" in the console, choose the
-          // "Toggle Debug Paint" action from the Flutter Inspector in Android
-          // Studio, or the "Toggle Debug Paint" command in Visual Studio Code)
-          // to see the wireframe for each widget.
-          //
-          // Column has various properties to control how it sizes itself and
-          // how it positions its children. Here we use mainAxisAlignment to
-          // center the children vertically; the main axis here is the vertical
-          // axis because Columns are vertical (the cross axis would be
-          // horizontal).
-          mainAxisAlignment: MainAxisAlignment.center,
-          children: <Widget>[
-            const Text(
-              'You have pushed the button this many times:',
-            ),
-            Text(
-              '$_counter',
-              style: Theme.of(context).textTheme.headline4,
-            ),
-          ],
-        ),
-      ),
-      floatingActionButton: FloatingActionButton(
-        onPressed: () {
-          Navigator.push(
-            context, MaterialPageRoute(builder: (context) => const CreateAppointment()),
-          );
-        },
-        tooltip: 'Increment',
-        child: const Icon(Icons.add),
-      ), // This trailing comma makes auto-formatting nicer for build methods.
-    );
-  }
-}
-- 
GitLab


From 3aa68f36c1bb99d23e7ecec03364086428aebd17 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Sun, 11 Dec 2022 23:54:20 +0700
Subject: [PATCH 05/16] feat: handle sonarqube

---
 SpringTkApap/build.gradle                                      | 2 +-
 SpringTkApap/gradle.properties                                 | 3 +++
 .../TK/SpringTkApap/appointment/AppointmentRestController.java | 2 +-
 .../spring/TK/SpringTkApap/auth/controller/AuthController.java | 2 +-
 .../TK/SpringTkApap/auth/security/WebSecurityConfig.java       | 3 +--
 .../TK/SpringTkApap/user/controller/DokterRestController.java  | 2 +-
 tk_apap_flutter/lib/pages/DaftarAppointment.dart               | 2 +-
 7 files changed, 9 insertions(+), 7 deletions(-)
 create mode 100644 SpringTkApap/gradle.properties

diff --git a/SpringTkApap/build.gradle b/SpringTkApap/build.gradle
index 1fce019..61d4753 100644
--- a/SpringTkApap/build.gradle
+++ b/SpringTkApap/build.gradle
@@ -2,7 +2,7 @@ plugins {
 	id 'org.springframework.boot' version '2.7.5'
 	id 'io.spring.dependency-management' version '1.0.15.RELEASE'
 	id 'java'
-	id "org.sonarqube" version "3.3"
+	id "org.sonarqube" version "3.4.0.2513"
 }
 
 group = 'spring.TK'
diff --git a/SpringTkApap/gradle.properties b/SpringTkApap/gradle.properties
new file mode 100644
index 0000000..c5f28c8
--- /dev/null
+++ b/SpringTkApap/gradle.properties
@@ -0,0 +1,3 @@
+systemProp.sonar.host.url=https://sonarqube.cs.ui.ac.id
+systemProp.sonar.projectKey= SpringTkApap
+systemProp.sonar.login= 87203471c3b741d7598da6541fa052f3c02da241
\ No newline at end of file
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestController.java
index 924ab69..6802296 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestController.java
@@ -22,7 +22,7 @@ import java.security.Principal;
 import java.util.List;
 
 @RestController
-@CrossOrigin(origins = "*")
+@CrossOrigin(origins = "apap-tk-53.cs.ui.ac.id")
 @RequestMapping("/api/appointment")
 @Slf4j
 public class AppointmentRestController {
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/AuthController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/AuthController.java
index ed89cc9..bb7e6b0 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/AuthController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/AuthController.java
@@ -20,7 +20,7 @@ import java.util.Objects;
 
 
 @RestController
-@CrossOrigin(origins = "*")
+@CrossOrigin(origins = "apap-tk-53.cs.ui.ac.id")
 @RequestMapping("/api")
 public class AuthController {
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java
index 4f8a49f..edbd8c3 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java
@@ -100,8 +100,7 @@ public class WebSecurityConfig {
 
         @Override
         protected void configure(HttpSecurity http) throws Exception {
-            http.antMatcher("/api/**").cors().and().csrf()
-                    .disable()
+            http.antMatcher("/api/**")
                     .authorizeRequests()
                     .antMatchers("/api/authenticate", "/api/pasien/register").permitAll()
                     .antMatchers(HttpMethod.GET, "/api/user").hasAuthority(PASIEN)
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java
index 4717729..7c2c2af 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java
@@ -20,7 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 @RestController
-@CrossOrigin(origins = "*")
+@CrossOrigin(origins = "apap-tk-53.cs.ui.ac.id")
 @RequestMapping("/api/doktor")
 @Slf4j
 public class DokterRestController {
diff --git a/tk_apap_flutter/lib/pages/DaftarAppointment.dart b/tk_apap_flutter/lib/pages/DaftarAppointment.dart
index 4991791..64836f0 100644
--- a/tk_apap_flutter/lib/pages/DaftarAppointment.dart
+++ b/tk_apap_flutter/lib/pages/DaftarAppointment.dart
@@ -7,7 +7,7 @@ import 'package:tk_apap_flutter/pages/DetailAppointment.dart';
 import '../DTO/AptDTO.dart';
 
 class DaftarAppointment extends StatefulWidget {
-  static const routeName = "/appointment/get-all";
+  static const routeName = "/appointment/viewall";
 
   const DaftarAppointment({Key key}) : super(key: key);
 
-- 
GitLab


From 234c45477b11bdaa250f1c3ab9b17a6921e6b4be Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 09:56:35 +0700
Subject: [PATCH 06/16] feat: handle sonarqube part 2

---
 SpringTkApap/gradle.properties                |  4 +-
 .../appointment/AppointmentRestService.java   | 15 -------
 .../auth/service/UserService.java             |  8 ----
 .../springtkapap/HomeController.java}         |  4 +-
 .../SpringTkApapApplication.java              |  2 +-
 .../appointment/AppointmentController.java    | 31 +++++++-------
 .../appointment/AppointmentDB.java            |  7 ++--
 .../AppointmentRestController.java            | 22 +++++-----
 .../appointment/AppointmentRestService.java   | 15 +++++++
 .../AppointmentRestServiceImpl.java           | 31 +++++++-------
 .../appointment/AppointmentService.java       |  6 +--
 .../appointment/AppointmentServiceImpl.java   |  6 +--
 .../appointment/model/AppointmentModel.java   | 18 ++++----
 .../model/CreateAppointmentDTO.java           |  2 +-
 .../appointment/model/DetailDTO.java          |  2 +-
 .../appointment/model/GetAptDTO.java          |  2 +-
 .../auth/controller/AuthController.java       | 18 ++++----
 .../auth/controller/PageController.java       | 23 +++++------
 .../springtkapap}/auth/model/JwtRequest.java  |  2 +-
 .../springtkapap}/auth/model/JwtResponse.java |  2 +-
 .../springtkapap}/auth/model/RolesEnum.java   |  2 +-
 .../springtkapap}/auth/model/UserModel.java   |  2 +-
 .../springtkapap}/auth/repository/UserDb.java |  4 +-
 .../security/JwtAuthenticationEntryPoint.java |  2 +-
 .../auth/security/JwtRequestFilter.java       |  7 ++--
 .../auth/security/JwtTokenUtil.java           |  6 +--
 .../auth/security/UserDetailsServiceImpl.java |  6 +--
 .../auth/security/WebSecurityConfig.java      | 17 ++++++--
 .../auth/security/xml/Attributes.java         |  2 +-
 .../security/xml/AuthenticationSuccess.java   |  2 +-
 .../auth/security/xml/ServiceResponse.java    |  2 +-
 .../auth/service/AuthService.java             |  6 +--
 .../auth/service/AuthServiceImpl.java         | 18 ++++----
 .../auth/service/UserService.java             |  8 ++++
 .../auth/service/UserServiceImpl.java         |  6 +--
 .../springtkapap}/auth/setting/Setting.java   |  2 +-
 .../springtkapap}/jumlah/JumlahModel.java     |  6 +--
 .../manage/controller/ManageController.java   | 36 ++++++++--------
 .../manage/model/CreateApotekerDTO.java       |  4 +-
 .../manage/model/CreateDokterDTO.java         |  9 +---
 .../manage/repository/ApotekerDb.java         |  4 +-
 .../manage/service/ApotekerService.java       |  4 +-
 .../manage/service/ApotekerServiceImpl.java   |  6 +--
 .../manage/service/UserService.java           |  4 +-
 .../manage/service/UserServiceImpl2.java      |  8 ++--
 .../obat/controller/ObatController.java       |  8 ++--
 .../springtkapap}/obat/model/ObatModel.java   |  9 ++--
 .../springtkapap}/obat/repository/ObatDb.java |  4 +-
 .../obat/rest/ObatRestController.java         |  4 +-
 .../obat/rest/ObatRestService.java            |  4 +-
 .../obat/rest/ObatRestServiceImpl.java        |  6 +--
 .../obat/service/ObatService.java             |  4 +-
 .../obat/service/ObatServiceImpl.java         |  6 +--
 .../springtkapap}/resep/ResepModel.java       | 10 ++---
 .../springtkapap}/tagihan/TagihanDB.java      |  2 +-
 .../springtkapap}/tagihan/TagihanModel.java   | 13 +++---
 .../springtkapap}/tagihan/TagihanService.java |  4 +-
 .../tagihan/TagihanServiceImpl.java           |  8 ++--
 .../user/controller/DokterController.java     | 41 +++++++++----------
 .../user/controller/DokterRestController.java | 29 ++++++-------
 .../user/controller/PasienRestController.java | 20 ++++-----
 .../springtkapap}/user/model/AdminModel.java  |  4 +-
 .../user/model/ApotekerModel.java             |  6 +--
 .../springtkapap}/user/model/DokterDTO.java   |  2 +-
 .../springtkapap}/user/model/DokterModel.java |  8 ++--
 .../user/model/DokterRevDTO.java              |  2 +-
 .../springtkapap}/user/model/PasienDTO.java   |  2 +-
 .../springtkapap}/user/model/PasienModel.java |  8 ++--
 .../user/repository/AdminDB.java              |  4 +-
 .../user/repository/DokterDB.java             |  5 +--
 .../user/repository/PasienDB.java             |  4 +-
 .../user/service/DokterService.java           |  6 +--
 .../user/service/DokterServiceImpl.java       | 10 ++---
 .../user/service/PasienRestService.java       |  6 +--
 .../user/service/PasienRestServiceImpl.java   | 15 ++++---
 .../user/service/PasienService.java           |  4 +-
 .../user/service/PasienServiceImpl.java       |  6 +--
 .../src/main/resources/application.yml        |  4 +-
 .../templates/fragments/fragment.html         |  2 +
 .../SpringTkApapApplicationTests.java         | 13 ------
 80 files changed, 326 insertions(+), 350 deletions(-)
 delete mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestService.java
 delete mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/UserService.java
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap/homeController.java => tk/springtkapap/HomeController.java} (77%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/SpringTkApapApplication.java (90%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/AppointmentController.java (77%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/AppointmentDB.java (72%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/AppointmentRestController.java (81%)
 create mode 100644 SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestService.java
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/AppointmentRestServiceImpl.java (81%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/AppointmentService.java (72%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/AppointmentServiceImpl.java (90%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/model/AppointmentModel.java (74%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/model/CreateAppointmentDTO.java (91%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/model/DetailDTO.java (88%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/appointment/model/GetAptDTO.java (86%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/controller/AuthController.java (81%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/controller/PageController.java (79%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/model/JwtRequest.java (92%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/model/JwtResponse.java (94%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/model/RolesEnum.java (59%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/model/UserModel.java (96%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/repository/UserDb.java (70%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/security/JwtAuthenticationEntryPoint.java (94%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/security/JwtRequestFilter.java (88%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/security/JwtTokenUtil.java (92%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/security/UserDetailsServiceImpl.java (87%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/security/WebSecurityConfig.java (90%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/security/xml/Attributes.java (93%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/security/xml/AuthenticationSuccess.java (90%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/security/xml/ServiceResponse.java (93%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/service/AuthService.java (54%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/service/AuthServiceImpl.java (75%)
 create mode 100644 SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/UserService.java
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/service/UserServiceImpl.java (72%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/auth/setting/Setting.java (94%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/jumlah/JumlahModel.java (85%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/manage/controller/ManageController.java (78%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/manage/model/CreateApotekerDTO.java (79%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/manage/model/CreateDokterDTO.java (59%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/manage/repository/ApotekerDb.java (57%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/manage/service/ApotekerService.java (70%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/manage/service/ApotekerServiceImpl.java (84%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/manage/service/UserService.java (72%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/manage/service/UserServiceImpl2.java (80%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/obat/controller/ObatController.java (87%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/obat/model/ObatModel.java (79%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/obat/repository/ObatDb.java (73%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/obat/rest/ObatRestController.java (95%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/obat/rest/ObatRestService.java (71%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/obat/rest/ObatRestServiceImpl.java (87%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/obat/service/ObatService.java (63%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/obat/service/ObatServiceImpl.java (83%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/resep/ResepModel.java (83%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/tagihan/TagihanDB.java (83%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/tagihan/TagihanModel.java (70%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/tagihan/TagihanService.java (53%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/tagihan/TagihanServiceImpl.java (80%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/controller/DokterController.java (73%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/controller/DokterRestController.java (67%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/controller/PasienRestController.java (77%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/model/AdminModel.java (71%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/model/ApotekerModel.java (74%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/model/DokterDTO.java (86%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/model/DokterModel.java (72%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/model/DokterRevDTO.java (91%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/model/PasienDTO.java (93%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/model/PasienModel.java (75%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/repository/AdminDB.java (66%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/repository/DokterDB.java (69%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/repository/PasienDB.java (73%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/service/DokterService.java (68%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/service/DokterServiceImpl.java (85%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/service/PasienRestService.java (67%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/service/PasienRestServiceImpl.java (82%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/service/PasienService.java (74%)
 rename SpringTkApap/src/main/java/spring/{TK/SpringTkApap => tk/springtkapap}/user/service/PasienServiceImpl.java (86%)
 delete mode 100644 SpringTkApap/src/test/java/spring/TK/SpringTkApap/SpringTkApapApplicationTests.java

diff --git a/SpringTkApap/gradle.properties b/SpringTkApap/gradle.properties
index c5f28c8..04e1311 100644
--- a/SpringTkApap/gradle.properties
+++ b/SpringTkApap/gradle.properties
@@ -1,3 +1,3 @@
 systemProp.sonar.host.url=https://sonarqube.cs.ui.ac.id
-systemProp.sonar.projectKey= SpringTkApap
-systemProp.sonar.login= 87203471c3b741d7598da6541fa052f3c02da241
\ No newline at end of file
+systemProp.sonar.projectKey= SpringTkApap-53
+systemProp.sonar.login= 57e13a92a36c10e15e0a60bf9f39493b1c8b28ac
\ No newline at end of file
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestService.java
deleted file mode 100644
index 7aa01c6..0000000
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestService.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package spring.TK.SpringTkApap.appointment;
-
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.appointment.model.CreateAppointmentDTO;
-import spring.TK.SpringTkApap.appointment.model.DetailDTO;
-import spring.TK.SpringTkApap.appointment.model.GetAptDTO;
-import spring.TK.SpringTkApap.user.model.PasienModel;
-
-import java.util.List;
-
-public interface AppointmentRestService {
-    AppointmentModel createAppointment(CreateAppointmentDTO appointment);
-    List<GetAptDTO> retrieveAppointment(PasienModel pasien);
-    DetailDTO getAppointment(String kode);
-}
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/UserService.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/UserService.java
deleted file mode 100644
index 5a72516..0000000
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/UserService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package spring.TK.SpringTkApap.auth.service;
-
-import spring.TK.SpringTkApap.auth.model.UserModel;
-
-public interface UserService {
-
-    UserModel getUserByUsername(String username);
-}
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/homeController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/HomeController.java
similarity index 77%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/homeController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/HomeController.java
index 7979fd9..e486541 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/homeController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/HomeController.java
@@ -1,10 +1,10 @@
-package spring.TK.SpringTkApap;
+package spring.tk.springtkapap;
 
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.GetMapping;
 
 @Controller
-public class homeController {
+public class HomeController {
 
     @GetMapping("/")
     public String home() {
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/SpringTkApapApplication.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/SpringTkApapApplication.java
similarity index 90%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/SpringTkApapApplication.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/SpringTkApapApplication.java
index 26c8f69..dc7c98b 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/SpringTkApapApplication.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/SpringTkApapApplication.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap;
+package spring.tk.springtkapap;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java
similarity index 77%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java
index 93cacd3..d9d57db 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentController.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.appointment;
+package spring.tk.springtkapap.appointment;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -6,22 +6,20 @@ 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.PostMapping;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.auth.service.UserService;
-import spring.TK.SpringTkApap.resep.ResepModel;
-import spring.TK.SpringTkApap.tagihan.TagihanModel;
-import spring.TK.SpringTkApap.tagihan.TagihanService;
-import spring.TK.SpringTkApap.user.model.AdminModel;
-import spring.TK.SpringTkApap.user.model.DokterDTO;
-import spring.TK.SpringTkApap.user.model.DokterModel;
-import spring.TK.SpringTkApap.user.model.PasienModel;
-import spring.TK.SpringTkApap.user.service.DokterService;
-import spring.TK.SpringTkApap.user.service.PasienService;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.auth.model.RolesEnum;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.service.UserService;
+import spring.tk.springtkapap.resep.ResepModel;
+import spring.tk.springtkapap.tagihan.TagihanModel;
+import spring.tk.springtkapap.tagihan.TagihanService;
+import spring.tk.springtkapap.user.model.DokterDTO;
+import spring.tk.springtkapap.user.model.DokterModel;
+import spring.tk.springtkapap.user.model.PasienModel;
+import spring.tk.springtkapap.user.service.DokterService;
+import spring.tk.springtkapap.user.service.PasienService;
 
 import java.security.Principal;
-import java.time.LocalDateTime;
 import java.util.List;
 
 @Controller
@@ -72,7 +70,6 @@ public class AppointmentController {
 
     @GetMapping("/appointment/{kodeAppointment}")
     public String getAppointment(@PathVariable("kodeAppointment") String kodeApt, Model model, Principal principal) {
-        UserModel user = userService.getUserByUsername(principal.getName());
         AppointmentModel appointment = appointmentService.getAppointment(kodeApt);
         ResepModel listResep = appointment.getListResep();
 
@@ -96,7 +93,7 @@ public class AppointmentController {
         appointment.setIsDone(Boolean.TRUE);
         appointment.setKode(kodeApt);
         appointmentService.updateAppointment(appointment);
-        TagihanModel tagihan = new TagihanModel();
+        var tagihan = new TagihanModel();
         tagihanService.addTagihan(tagihan, appointment);
         appointment.setTagihan(tagihan);
         appointmentService.updateAppointment(appointment);
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentDB.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentDB.java
similarity index 72%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentDB.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentDB.java
index cdf2b6b..01586fc 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentDB.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentDB.java
@@ -1,10 +1,9 @@
-package spring.TK.SpringTkApap.appointment;
+package spring.tk.springtkapap.appointment;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.user.model.DokterDTO;
-import spring.TK.SpringTkApap.user.model.DokterModel;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.user.model.DokterModel;
 
 import java.time.LocalDateTime;
 import java.util.List;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestController.java
similarity index 81%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestController.java
index 6802296..f4b9218 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestController.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.appointment;
+package spring.tk.springtkapap.appointment;
 
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
@@ -10,13 +10,13 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.server.ResponseStatusException;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.appointment.model.CreateAppointmentDTO;
-import spring.TK.SpringTkApap.appointment.model.DetailDTO;
-import spring.TK.SpringTkApap.appointment.model.GetAptDTO;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
-import spring.TK.SpringTkApap.user.model.PasienModel;
-import spring.TK.SpringTkApap.user.service.PasienService;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.appointment.model.CreateAppointmentDTO;
+import spring.tk.springtkapap.appointment.model.DetailDTO;
+import spring.tk.springtkapap.appointment.model.GetAptDTO;
+import spring.tk.springtkapap.auth.model.RolesEnum;
+import spring.tk.springtkapap.user.model.PasienModel;
+import spring.tk.springtkapap.user.service.PasienService;
 
 import java.security.Principal;
 import java.util.List;
@@ -57,14 +57,14 @@ public class AppointmentRestController {
 
     @GetMapping(value = "/all")
     public List<GetAptDTO> getAllAppointment(Principal principal) {
-        PasienModel pasien = pasienService.getPasienByUsername(principal.getName());
+        var pasien = pasienService.getPasienByUsername(principal.getName());
         return appointmentRestService.retrieveAppointment(pasien);
     }
 
 
     @GetMapping(value = "/tes")
     public void createPasien() {
-        PasienModel pasien = new PasienModel();
+        var pasien = new PasienModel();
         pasien.setUmur(30);
         pasien.setSaldo(500000);
         pasien.setNama("Argaaaa");
@@ -81,7 +81,7 @@ public class AppointmentRestController {
     }
 
     public String encrypt(String password){
-        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+        var passwordEncoder = new BCryptPasswordEncoder();
         return passwordEncoder.encode(password);
     }
 }
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestService.java
new file mode 100644
index 0000000..4b4605a
--- /dev/null
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestService.java
@@ -0,0 +1,15 @@
+package spring.tk.springtkapap.appointment;
+
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.appointment.model.CreateAppointmentDTO;
+import spring.tk.springtkapap.appointment.model.DetailDTO;
+import spring.tk.springtkapap.appointment.model.GetAptDTO;
+import spring.tk.springtkapap.user.model.PasienModel;
+
+import java.util.List;
+
+public interface AppointmentRestService {
+    AppointmentModel createAppointment(CreateAppointmentDTO appointment);
+    List<GetAptDTO> retrieveAppointment(PasienModel pasien);
+    DetailDTO getAppointment(String kode);
+}
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestServiceImpl.java
similarity index 81%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestServiceImpl.java
index 00e3f43..8858476 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentRestServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestServiceImpl.java
@@ -1,18 +1,18 @@
-package spring.TK.SpringTkApap.appointment;
+package spring.tk.springtkapap.appointment;
 
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.appointment.model.CreateAppointmentDTO;
-import spring.TK.SpringTkApap.appointment.model.DetailDTO;
-import spring.TK.SpringTkApap.appointment.model.GetAptDTO;
-import spring.TK.SpringTkApap.user.model.DokterModel;
-import spring.TK.SpringTkApap.user.model.PasienModel;
-import spring.TK.SpringTkApap.user.service.DokterService;
-import spring.TK.SpringTkApap.user.service.PasienService;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.appointment.model.CreateAppointmentDTO;
+import spring.tk.springtkapap.appointment.model.DetailDTO;
+import spring.tk.springtkapap.appointment.model.GetAptDTO;
+import spring.tk.springtkapap.user.model.DokterModel;
+import spring.tk.springtkapap.user.model.PasienModel;
+import spring.tk.springtkapap.user.service.DokterService;
+import spring.tk.springtkapap.user.service.PasienService;
 
 import javax.transaction.Transactional;
 import java.time.LocalDateTime;
@@ -43,7 +43,7 @@ public class AppointmentRestServiceImpl implements AppointmentRestService{
         LocalDateTime waktuAwal = appointment.getWaktuAwal();
         String usernameDokter = appointment.getUsernameDokter();
         String usernamePasien = appointment.getUsernamePasien();
-        int intKode = Math.toIntExact(appointmentDB.count() + 1);
+        var intKode = Math.toIntExact(appointmentDB.count() + 1);
         String kode = "APT-" + intKode;
 
         DokterModel dokter = dokterService.getDokterByUsername(usernameDokter);
@@ -55,7 +55,7 @@ public class AppointmentRestServiceImpl implements AppointmentRestService{
                 return null;
             }
         }
-        AppointmentModel newAppointment = new AppointmentModel();
+        var newAppointment = new AppointmentModel();
         newAppointment.setWaktuAwal(waktuAwal);
         newAppointment.setIsDone(Boolean.FALSE);
         newAppointment.setPasien(pasien);
@@ -70,9 +70,9 @@ public class AppointmentRestServiceImpl implements AppointmentRestService{
         List<AppointmentModel> listAppointment = pasien.getListAppointment();
         List<GetAptDTO> list = new ArrayList<>();
         for (AppointmentModel appointment : listAppointment) {
-            GetAptDTO dto = new GetAptDTO();
+            var dto = new GetAptDTO();
             dto.setWaktuAwal(appointment.getWaktuAwal().toString());
-            String done = "";
+            var done = "";
             if (appointment.getIsDone()) {
                 done = "Done";
             } else {
@@ -90,7 +90,6 @@ public class AppointmentRestServiceImpl implements AppointmentRestService{
 
     @Override
     public DetailDTO getAppointment(String kode) {
-        System.out.println(kode);
         Optional<AppointmentModel> appointment = appointmentDB.findByKode(kode);
         AppointmentModel apt;
         if (appointment.isPresent()) {
@@ -98,13 +97,13 @@ public class AppointmentRestServiceImpl implements AppointmentRestService{
         } else {
             throw new NoSuchElementException();
         }
-        String done = "";
+        var done = "";
         if (apt.getIsDone()) {
             done = "Done";
         } else {
             done = "Not Done";
         }
-        DetailDTO newApt = new DetailDTO();
+        var newApt = new DetailDTO();
         newApt.setKodeApt(apt.getKode());
         newApt.setWaktuAwal(apt.getWaktuAwal().toString());
         if (apt.getListResep() != null) {
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentService.java
similarity index 72%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentService.java
index b280e33..b12c08e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentService.java
@@ -1,7 +1,7 @@
-package spring.TK.SpringTkApap.appointment;
+package spring.tk.springtkapap.appointment;
 
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.user.model.DokterModel;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.user.model.DokterModel;
 
 import java.util.List;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java
similarity index 90%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java
index 7eb8544..fe12341 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/AppointmentServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java
@@ -1,9 +1,9 @@
-package spring.TK.SpringTkApap.appointment;
+package spring.tk.springtkapap.appointment;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.user.model.DokterModel;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.user.model.DokterModel;
 
 import javax.transaction.Transactional;
 import java.util.List;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/AppointmentModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/AppointmentModel.java
similarity index 74%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/AppointmentModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/AppointmentModel.java
index 7cf86d4..711a274 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/AppointmentModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/AppointmentModel.java
@@ -1,21 +1,18 @@
-package spring.TK.SpringTkApap.appointment.model;
+package spring.tk.springtkapap.appointment.model;
 
-import com.sun.istack.NotNull;
 import lombok.*;
 import org.hibernate.annotations.OnDelete;
 import org.hibernate.annotations.OnDeleteAction;
 import org.springframework.format.annotation.DateTimeFormat;
-import spring.TK.SpringTkApap.resep.ResepModel;
-import spring.TK.SpringTkApap.tagihan.TagihanDB;
-import spring.TK.SpringTkApap.tagihan.TagihanModel;
-import spring.TK.SpringTkApap.user.model.DokterModel;
-import spring.TK.SpringTkApap.user.model.PasienModel;
+import spring.tk.springtkapap.resep.ResepModel;
+import spring.tk.springtkapap.tagihan.TagihanModel;
+import spring.tk.springtkapap.user.model.DokterModel;
+import spring.tk.springtkapap.user.model.PasienModel;
 
 import javax.persistence.*;
-import javax.swing.text.html.HTML;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.time.LocalDateTime;
-import java.util.List;
 
 @Setter
 @Getter
@@ -27,7 +24,8 @@ public class AppointmentModel implements Serializable {
     @Id @Column(nullable = false)
     private String kode;
 
-    @NotNull @Column(nullable = false)
+    @NotNull
+    @Column(nullable = false)
     @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm")
     private LocalDateTime waktuAwal;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/CreateAppointmentDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/CreateAppointmentDTO.java
similarity index 91%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/CreateAppointmentDTO.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/CreateAppointmentDTO.java
index 3c9e526..0eb9336 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/CreateAppointmentDTO.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/CreateAppointmentDTO.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.appointment.model;
+package spring.tk.springtkapap.appointment.model;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.AllArgsConstructor;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/DetailDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/DetailDTO.java
similarity index 88%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/DetailDTO.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/DetailDTO.java
index d0cbb09..887e209 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/DetailDTO.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/DetailDTO.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.appointment.model;
+package spring.tk.springtkapap.appointment.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/GetAptDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/GetAptDTO.java
similarity index 86%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/GetAptDTO.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/GetAptDTO.java
index ab13dab..09cd74c 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/appointment/model/GetAptDTO.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/model/GetAptDTO.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.appointment.model;
+package spring.tk.springtkapap.appointment.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/AuthController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
similarity index 81%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/AuthController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
index bb7e6b0..ee3854c 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/AuthController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.controller;
+package spring.tk.springtkapap.auth.controller;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
@@ -6,14 +6,13 @@ import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.DisabledException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.web.bind.annotation.*;
-import spring.TK.SpringTkApap.auth.model.JwtRequest;
-import spring.TK.SpringTkApap.auth.model.JwtResponse;
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.auth.security.JwtTokenUtil;
-import spring.TK.SpringTkApap.auth.service.AuthService;
+import spring.tk.springtkapap.auth.model.JwtRequest;
+import spring.tk.springtkapap.auth.model.JwtResponse;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.security.JwtTokenUtil;
+import spring.tk.springtkapap.auth.service.AuthService;
 
 import java.util.Map;
 import java.util.Objects;
@@ -37,12 +36,11 @@ public class AuthController {
     private AuthService authService;
 
     @PostMapping(value = "/authenticate")
-    public ResponseEntity<Object> createAuthenticationToken(@RequestBody JwtRequest authenticationRequest)
-            throws Exception {
+    public ResponseEntity<Object> createAuthenticationToken(@RequestBody JwtRequest authenticationRequest) {
 
         authenticate(authenticationRequest.getUsername(), authenticationRequest.getPassword());
 
-        final UserDetails userDetails = userDetailsService
+        final var userDetails = userDetailsService
                 .loadUserByUsername(authenticationRequest.getUsername());
         final String token = jwtTokenUtil.generateToken(userDetails);
         UserModel user = authService.getUserByUsername(authenticationRequest.getUsername());
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/PageController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/PageController.java
similarity index 79%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/PageController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/PageController.java
index ba23c5b..65ddacf 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/controller/PageController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/PageController.java
@@ -1,11 +1,10 @@
-package spring.TK.SpringTkApap.auth.controller;
+package spring.tk.springtkapap.auth.controller;
 
-import spring.TK.SpringTkApap.auth.setting.Setting;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
+import spring.tk.springtkapap.auth.setting.Setting;
+import spring.tk.springtkapap.auth.model.RolesEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.web.context.HttpSessionSecurityContextRepository;
 import org.springframework.stereotype.Controller;
@@ -13,13 +12,11 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.reactive.function.client.WebClient;
 import org.springframework.web.servlet.ModelAndView;
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.auth.security.xml.Attributes;
-import spring.TK.SpringTkApap.auth.security.xml.ServiceResponse;
-import spring.TK.SpringTkApap.auth.service.AuthService;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.security.xml.ServiceResponse;
+import spring.tk.springtkapap.auth.service.AuthService;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
 import java.security.Principal;
 import java.util.Objects;
 
@@ -42,7 +39,7 @@ public class PageController {
             @RequestParam(value = "ticket", required = false) String ticket,
             HttpServletRequest request
     ){
-        ServiceResponse serviceResponse = this.webClient.get().uri(
+        var serviceResponse = this.webClient.get().uri(
                 String.format(
                         Setting.SERVER_VALIDATE_TICKET,
                         ticket,
@@ -50,7 +47,7 @@ public class PageController {
                 )
         ).retrieve().bodyToMono(ServiceResponse.class).block();
 
-        Attributes attributes= Objects.requireNonNull(serviceResponse).getAuthenticationSuccess().getAttributes();
+        var attributes= Objects.requireNonNull(serviceResponse).getAuthenticationSuccess().getAttributes();
         String username = serviceResponse.getAuthenticationSuccess().getUser();
 
         UserModel user = userService.getUserByUsername(username);
@@ -63,9 +60,9 @@ public class PageController {
         }
 
         Authentication authentication = new UsernamePasswordAuthenticationToken(username, "ta_a_ori_53");
-        SecurityContext securityContext = SecurityContextHolder.getContext();
+        var securityContext = SecurityContextHolder.getContext();
         securityContext.setAuthentication(authentication);
-        HttpSession httpSession = request.getSession(true);
+        var httpSession = request.getSession(true);
         httpSession.setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, securityContext);
         return new ModelAndView("redirect:/");
     }
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/JwtRequest.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/JwtRequest.java
similarity index 92%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/JwtRequest.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/JwtRequest.java
index 0e4301c..a5e2c10 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/JwtRequest.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/JwtRequest.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.model;
+package spring.tk.springtkapap.auth.model;
 
 import java.io.Serializable;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/JwtResponse.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/JwtResponse.java
similarity index 94%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/JwtResponse.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/JwtResponse.java
index 07f1538..c07fb5a 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/JwtResponse.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/JwtResponse.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.model;
+package spring.tk.springtkapap.auth.model;
 
 import java.io.Serializable;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/RolesEnum.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/RolesEnum.java
similarity index 59%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/RolesEnum.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/RolesEnum.java
index 3fd9ef4..dcdec79 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/RolesEnum.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/RolesEnum.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.model;
+package spring.tk.springtkapap.auth.model;
 
 public enum RolesEnum {
     ADMIN, DOKTER, APOTEKER, PASIEN
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/UserModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/UserModel.java
similarity index 96%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/UserModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/UserModel.java
index 0de82f7..634e976 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/model/UserModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/model/UserModel.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.model;
+package spring.tk.springtkapap.auth.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/repository/UserDb.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/repository/UserDb.java
similarity index 70%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/repository/UserDb.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/repository/UserDb.java
index 4f8149e..3bf023e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/repository/UserDb.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/repository/UserDb.java
@@ -1,8 +1,8 @@
-package spring.TK.SpringTkApap.auth.repository;
+package spring.tk.springtkapap.auth.repository;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
-import spring.TK.SpringTkApap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.model.UserModel;
 
 @Repository
 public interface UserDb extends JpaRepository<UserModel, String> {
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtAuthenticationEntryPoint.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtAuthenticationEntryPoint.java
similarity index 94%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtAuthenticationEntryPoint.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtAuthenticationEntryPoint.java
index 6356354..a2aaaed 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtAuthenticationEntryPoint.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtAuthenticationEntryPoint.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.security;
+package spring.tk.springtkapap.auth.security;
 
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.security.web.AuthenticationEntryPoint;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtRequestFilter.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtRequestFilter.java
similarity index 88%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtRequestFilter.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtRequestFilter.java
index a67bc9e..256776e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtRequestFilter.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtRequestFilter.java
@@ -1,11 +1,10 @@
-package spring.TK.SpringTkApap.auth.security;
+package spring.tk.springtkapap.auth.security;
 
 import io.jsonwebtoken.ExpiredJwtException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
 import org.springframework.stereotype.Component;
@@ -52,12 +51,12 @@ public class JwtRequestFilter extends OncePerRequestFilter {
 
         if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) {
 
-            UserDetails userDetails = this.userDetailsService.loadUserByUsername(username);
+            var userDetails = this.userDetailsService.loadUserByUsername(username);
             Boolean validate = jwtTokenUtil.validateToken(jwtToken, userDetails);
 
             if (Boolean.TRUE.equals(validate)) {
 
-                UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(
+                var usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(
                         userDetails, null, userDetails.getAuthorities());
                 usernamePasswordAuthenticationToken
                         .setDetails(new WebAuthenticationDetailsSource().buildDetails(request));
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtTokenUtil.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtTokenUtil.java
similarity index 92%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtTokenUtil.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtTokenUtil.java
index ddf1a4d..4b56acc 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/JwtTokenUtil.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtTokenUtil.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.security;
+package spring.tk.springtkapap.auth.security;
 
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwts;
@@ -32,7 +32,7 @@ public class JwtTokenUtil implements Serializable {
     }
 
     public <T> T getClaimFromToken(String token, Function<Claims, T> claimsResolver) {
-        final Claims claims = getAllClaimsFromToken(token);
+        final var claims = getAllClaimsFromToken(token);
         return claimsResolver.apply(claims);
     }
 
@@ -41,7 +41,7 @@ public class JwtTokenUtil implements Serializable {
     }
 
     private Boolean isTokenExpired(String token) {
-        final Date expiration = getExpirationDateFromToken(token);
+        final var expiration = getExpirationDateFromToken(token);
         return expiration.before(new Date());
     }
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/UserDetailsServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/UserDetailsServiceImpl.java
similarity index 87%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/UserDetailsServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/UserDetailsServiceImpl.java
index e2a5188..b16b279 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/UserDetailsServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/UserDetailsServiceImpl.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.security;
+package spring.tk.springtkapap.auth.security;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.GrantedAuthority;
@@ -8,8 +8,8 @@ import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.auth.repository.UserDb;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.repository.UserDb;
 
 import java.util.HashSet;
 import java.util.Set;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
similarity index 90%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
index edbd8c3..5753713 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/WebSecurityConfig.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
@@ -1,6 +1,7 @@
-package spring.TK.SpringTkApap.auth.security;
+package spring.tk.springtkapap.auth.security;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.annotation.Order;
@@ -16,8 +17,9 @@ import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
+import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
+import spring.tk.springtkapap.auth.model.RolesEnum;
 
 @Configuration
 @EnableWebSecurity
@@ -34,6 +36,9 @@ public class WebSecurityConfig {
         return new BCryptPasswordEncoder();
     }
 
+    @Value("${security.enable-csrf}")
+    private static boolean csrfEnabled;
+
     @Order(2)
     @Configuration
     public static class WebConfiguration extends WebSecurityConfigurerAdapter {
@@ -69,7 +74,7 @@ public class WebSecurityConfig {
 
         @Override
         public void configure(AuthenticationManagerBuilder auth) throws Exception{
-            PasswordEncoder pass = passwordEncoder();
+            var pass = passwordEncoder();
             auth.userDetailsService(userDetailsService).passwordEncoder(pass);
         }
     }
@@ -88,7 +93,7 @@ public class WebSecurityConfig {
 
         @Override
         public void configure(AuthenticationManagerBuilder auth) throws Exception {
-            PasswordEncoder pass = passwordEncoder();
+            var pass = passwordEncoder();
             auth.userDetailsService(userDetailsService).passwordEncoder(pass);
         }
 
@@ -100,6 +105,10 @@ public class WebSecurityConfig {
 
         @Override
         protected void configure(HttpSecurity http) throws Exception {
+            if(!csrfEnabled)
+            {
+                http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
+            }
             http.antMatcher("/api/**")
                     .authorizeRequests()
                     .antMatchers("/api/authenticate", "/api/pasien/register").permitAll()
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/Attributes.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/Attributes.java
similarity index 93%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/Attributes.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/Attributes.java
index 924eea4..9a8329e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/Attributes.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/Attributes.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.security.xml;
+package spring.tk.springtkapap.auth.security.xml;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/AuthenticationSuccess.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/AuthenticationSuccess.java
similarity index 90%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/AuthenticationSuccess.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/AuthenticationSuccess.java
index e8b207a..4f84cdb 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/AuthenticationSuccess.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/AuthenticationSuccess.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.security.xml;
+package spring.tk.springtkapap.auth.security.xml;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/ServiceResponse.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/ServiceResponse.java
similarity index 93%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/ServiceResponse.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/ServiceResponse.java
index cd71c9d..84f153e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/security/xml/ServiceResponse.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/xml/ServiceResponse.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.security.xml;
+package spring.tk.springtkapap.auth.security.xml;
 
 import lombok.Getter;
 import lombok.Setter;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/AuthService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/AuthService.java
similarity index 54%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/AuthService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/AuthService.java
index ff3236e..1f40bbd 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/AuthService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/AuthService.java
@@ -1,7 +1,7 @@
-package spring.TK.SpringTkApap.auth.service;
+package spring.tk.springtkapap.auth.service;
 
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.auth.security.xml.Attributes;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.security.xml.Attributes;
 
 public interface AuthService {
     UserModel addUserAdmin(String username, Attributes attributes);
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/AuthServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/AuthServiceImpl.java
similarity index 75%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/AuthServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/AuthServiceImpl.java
index 896a857..1eb602c 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/AuthServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/AuthServiceImpl.java
@@ -1,14 +1,14 @@
-package spring.TK.SpringTkApap.auth.service;
+package spring.tk.springtkapap.auth.service;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.auth.repository.UserDb;
-import spring.TK.SpringTkApap.auth.security.xml.Attributes;
-import spring.TK.SpringTkApap.user.model.AdminModel;
-import spring.TK.SpringTkApap.user.repository.AdminDB;
+import spring.tk.springtkapap.auth.model.RolesEnum;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.repository.UserDb;
+import spring.tk.springtkapap.auth.security.xml.Attributes;
+import spring.tk.springtkapap.user.model.AdminModel;
+import spring.tk.springtkapap.user.repository.AdminDB;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -36,7 +36,7 @@ public class AuthServiceImpl implements AuthService {
     @Override
     public UserModel addUserAdmin(String username, Attributes attributes) {
         if (listAdmin.contains(username)) {
-            AdminModel admin = new AdminModel();
+            var admin = new AdminModel();
             String pass = encrypt("ta_a_ori_53");
             admin.setEmail(username + "@ui.ac.id");
             admin.setNama(attributes.getNama());
@@ -51,7 +51,7 @@ public class AuthServiceImpl implements AuthService {
 
     @Override
     public String encrypt(String password){
-        BCryptPasswordEncoder passwordEncoder=new BCryptPasswordEncoder();
+        var passwordEncoder=new BCryptPasswordEncoder();
         return passwordEncoder.encode(password);
     }
     @Override
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/UserService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/UserService.java
new file mode 100644
index 0000000..e13a002
--- /dev/null
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/UserService.java
@@ -0,0 +1,8 @@
+package spring.tk.springtkapap.auth.service;
+
+import spring.tk.springtkapap.auth.model.UserModel;
+
+public interface UserService {
+
+    UserModel getUserByUsername(String username);
+}
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/UserServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/UserServiceImpl.java
similarity index 72%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/UserServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/UserServiceImpl.java
index 4abead8..ff7f43e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/service/UserServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/service/UserServiceImpl.java
@@ -1,9 +1,9 @@
-package spring.TK.SpringTkApap.auth.service;
+package spring.tk.springtkapap.auth.service;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.auth.repository.UserDb;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.repository.UserDb;
 
 import javax.transaction.Transactional;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/setting/Setting.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/setting/Setting.java
similarity index 94%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/setting/Setting.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/auth/setting/Setting.java
index 74652cf..782f86e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/auth/setting/Setting.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/setting/Setting.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.auth.setting;
+package spring.tk.springtkapap.auth.setting;
 
 public class Setting {
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/jumlah/JumlahModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/jumlah/JumlahModel.java
similarity index 85%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/jumlah/JumlahModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/jumlah/JumlahModel.java
index c12bf8f..b0ba691 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/jumlah/JumlahModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/jumlah/JumlahModel.java
@@ -1,12 +1,12 @@
-package spring.TK.SpringTkApap.jumlah;
+package spring.tk.springtkapap.jumlah;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.hibernate.annotations.OnDelete;
 import org.hibernate.annotations.OnDeleteAction;
-import spring.TK.SpringTkApap.obat.model.ObatModel;
-import spring.TK.SpringTkApap.resep.ResepModel;
+import spring.tk.springtkapap.obat.model.ObatModel;
+import spring.tk.springtkapap.resep.ResepModel;
 
 import javax.persistence.*;
 import java.io.Serializable;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/controller/ManageController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/controller/ManageController.java
similarity index 78%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/controller/ManageController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/manage/controller/ManageController.java
index 67ee80c..20b73bd 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/controller/ManageController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/controller/ManageController.java
@@ -1,21 +1,21 @@
-package spring.TK.SpringTkApap.manage.controller;
+package spring.tk.springtkapap.manage.controller;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.manage.model.CreateApotekerDTO;
-import spring.TK.SpringTkApap.manage.model.CreateDokterDTO;
-import spring.TK.SpringTkApap.manage.service.ApotekerService;
-import spring.TK.SpringTkApap.manage.service.UserService;
-import spring.TK.SpringTkApap.user.model.ApotekerModel;
-import spring.TK.SpringTkApap.user.model.DokterDTO;
-import spring.TK.SpringTkApap.user.model.DokterModel;
-import spring.TK.SpringTkApap.user.model.PasienModel;
-import spring.TK.SpringTkApap.user.service.DokterService;
-import spring.TK.SpringTkApap.user.service.PasienService;
+import spring.tk.springtkapap.auth.model.RolesEnum;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.manage.model.CreateApotekerDTO;
+import spring.tk.springtkapap.manage.model.CreateDokterDTO;
+import spring.tk.springtkapap.manage.service.ApotekerService;
+import spring.tk.springtkapap.manage.service.UserService;
+import spring.tk.springtkapap.user.model.ApotekerModel;
+import spring.tk.springtkapap.user.model.DokterDTO;
+import spring.tk.springtkapap.user.model.DokterModel;
+import spring.tk.springtkapap.user.model.PasienModel;
+import spring.tk.springtkapap.user.service.DokterService;
+import spring.tk.springtkapap.user.service.PasienService;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -43,7 +43,7 @@ public class ManageController {
 
     @GetMapping(value="/add/dokter")
     public String addDokterFormPage(Model model){
-        CreateDokterDTO user = new CreateDokterDTO();
+        var user = new CreateDokterDTO();
         List<RolesEnum> listRole = new ArrayList<>();
         listRole.add(RolesEnum.DOKTER);
         model.addAttribute("user",user);
@@ -52,8 +52,8 @@ public class ManageController {
     }
 
     @PostMapping(value="/add/dokter")
-    private String addDokterSubmit(@ModelAttribute CreateDokterDTO dto, Model model){
-        DokterModel user = new DokterModel();
+    public String addDokterSubmit(@ModelAttribute CreateDokterDTO dto, Model model){
+        var user = new DokterModel();
         user.setUsername(dto.getUsername());
         user.setNama(dto.getNama());
         user.setPassword(userService.encrypt(dto.getPassword()));
@@ -68,7 +68,7 @@ public class ManageController {
     }
     @GetMapping(value="/add/apoteker")
     public String addApotekerFormPage(Model model){
-        CreateApotekerDTO user = new CreateApotekerDTO();
+        var user = new CreateApotekerDTO();
         List<RolesEnum> listRole = new ArrayList<>();
         listRole.add(RolesEnum.APOTEKER);
         model.addAttribute("user",user);
@@ -77,7 +77,7 @@ public class ManageController {
     }
     @PostMapping(value="/add/apoteker")
     public String addApotekerSubmit(@ModelAttribute CreateApotekerDTO dto, Model model){
-        ApotekerModel user = new ApotekerModel();
+        var user = new ApotekerModel();
         user.setUsername(dto.getUsername());
         user.setNama(dto.getNama());
         user.setPassword(userService.encrypt(dto.getPassword()));
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/model/CreateApotekerDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/model/CreateApotekerDTO.java
similarity index 79%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/model/CreateApotekerDTO.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/manage/model/CreateApotekerDTO.java
index b73be54..e0ff324 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/model/CreateApotekerDTO.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/model/CreateApotekerDTO.java
@@ -1,10 +1,10 @@
-package spring.TK.SpringTkApap.manage.model;
+package spring.tk.springtkapap.manage.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
+import spring.tk.springtkapap.auth.model.RolesEnum;
 
 @Setter
 @Getter
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/model/CreateDokterDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/model/CreateDokterDTO.java
similarity index 59%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/model/CreateDokterDTO.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/manage/model/CreateDokterDTO.java
index 33ef0b0..d0b7117 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/model/CreateDokterDTO.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/model/CreateDokterDTO.java
@@ -1,15 +1,10 @@
-package spring.TK.SpringTkApap.manage.model;
+package spring.tk.springtkapap.manage.model;
 
-import com.sun.istack.NotNull;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
-import org.hibernate.annotations.GenericGenerator;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
-
-import javax.persistence.*;
-import javax.validation.constraints.Size;
+import spring.tk.springtkapap.auth.model.RolesEnum;
 
 @Setter
 @Getter
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/repository/ApotekerDb.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/repository/ApotekerDb.java
similarity index 57%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/repository/ApotekerDb.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/manage/repository/ApotekerDb.java
index c9823b6..12e6809 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/repository/ApotekerDb.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/repository/ApotekerDb.java
@@ -1,7 +1,7 @@
-package spring.TK.SpringTkApap.manage.repository;
+package spring.tk.springtkapap.manage.repository;
 
 import org.springframework.data.jpa.repository.JpaRepository;
-import spring.TK.SpringTkApap.user.model.ApotekerModel;
+import spring.tk.springtkapap.user.model.ApotekerModel;
 
 
 public interface ApotekerDb extends JpaRepository<ApotekerModel, String> {
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/ApotekerService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/ApotekerService.java
similarity index 70%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/ApotekerService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/ApotekerService.java
index ede9398..fa85f6d 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/ApotekerService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/ApotekerService.java
@@ -1,6 +1,6 @@
-package spring.TK.SpringTkApap.manage.service;
+package spring.tk.springtkapap.manage.service;
 
-import spring.TK.SpringTkApap.user.model.ApotekerModel;
+import spring.tk.springtkapap.user.model.ApotekerModel;
 
 
 import java.util.List;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/ApotekerServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/ApotekerServiceImpl.java
similarity index 84%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/ApotekerServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/ApotekerServiceImpl.java
index c35e569..d8a4e33 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/ApotekerServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/ApotekerServiceImpl.java
@@ -1,9 +1,9 @@
-package spring.TK.SpringTkApap.manage.service;
+package spring.tk.springtkapap.manage.service;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.manage.repository.ApotekerDb;
-import spring.TK.SpringTkApap.user.model.ApotekerModel;
+import spring.tk.springtkapap.manage.repository.ApotekerDb;
+import spring.tk.springtkapap.user.model.ApotekerModel;
 
 import javax.transaction.Transactional;
 import java.util.List;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/UserService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/UserService.java
similarity index 72%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/UserService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/UserService.java
index a112aca..6076f00 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/UserService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/UserService.java
@@ -1,6 +1,6 @@
-package spring.TK.SpringTkApap.manage.service;
+package spring.tk.springtkapap.manage.service;
 
-import spring.TK.SpringTkApap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.model.UserModel;
 
 import java.util.List;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/UserServiceImpl2.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/UserServiceImpl2.java
similarity index 80%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/UserServiceImpl2.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/UserServiceImpl2.java
index 7367a14..0f6005e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/manage/service/UserServiceImpl2.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/service/UserServiceImpl2.java
@@ -1,10 +1,10 @@
-package spring.TK.SpringTkApap.manage.service;
+package spring.tk.springtkapap.manage.service;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.auth.model.UserModel;
-import spring.TK.SpringTkApap.auth.repository.UserDb;
+import spring.tk.springtkapap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.repository.UserDb;
 
 import java.util.List;
 
@@ -22,7 +22,7 @@ public class UserServiceImpl2 implements UserService{
 
     @Override
     public String encrypt(String password){
-        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+        var passwordEncoder = new BCryptPasswordEncoder();
         return passwordEncoder.encode(password);
     }
     @Override
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/controller/ObatController.java
similarity index 87%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/obat/controller/ObatController.java
index c5b8a4f..3c6cd31 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/controller/ObatController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/controller/ObatController.java
@@ -1,11 +1,11 @@
-package spring.TK.SpringTkApap.obat.controller;
+package spring.tk.springtkapap.obat.controller;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
-import spring.TK.SpringTkApap.obat.model.ObatModel;
-import spring.TK.SpringTkApap.obat.service.ObatService;
+import spring.tk.springtkapap.obat.model.ObatModel;
+import spring.tk.springtkapap.obat.service.ObatService;
 
 import java.util.List;
 
@@ -18,7 +18,7 @@ public class ObatController {
 
     @GetMapping("/add")
     public String addObatForm(Model model){
-        ObatModel obat = new ObatModel();
+        var obat = new ObatModel();
         model.addAttribute("obat", obat);
         return "obat/form-add-obat";
     }
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java
similarity index 79%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java
index 325d61d..1c425a0 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/model/ObatModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java
@@ -1,11 +1,11 @@
-package spring.TK.SpringTkApap.obat.model;
+package spring.tk.springtkapap.obat.model;
 
-import com.sun.istack.NotNull;
 import lombok.*;
 import org.hibernate.annotations.GenericGenerator;
-import spring.TK.SpringTkApap.jumlah.JumlahModel;
+import spring.tk.springtkapap.jumlah.JumlahModel;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.List;
 
@@ -20,7 +20,8 @@ public class ObatModel implements Serializable {
     @GenericGenerator(name = "system-uuid", strategy = "uuid")
     private String idObat;
 
-    @NotNull @Column(nullable = false)
+    @NotNull
+    @Column(nullable = false)
     private String namaObat;
 
     @NotNull @Column(nullable = false)
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/repository/ObatDb.java
similarity index 73%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/obat/repository/ObatDb.java
index bab2d8a..4a855e7 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/repository/ObatDb.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/repository/ObatDb.java
@@ -1,8 +1,8 @@
-package spring.TK.SpringTkApap.obat.repository;
+package spring.tk.springtkapap.obat.repository;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
-import spring.TK.SpringTkApap.obat.model.ObatModel;
+import spring.tk.springtkapap.obat.model.ObatModel;
 
 import java.util.Optional;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestController.java
similarity index 95%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestController.java
index 8441189..175a5ad 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestController.java
@@ -1,11 +1,11 @@
-package spring.TK.SpringTkApap.obat.rest;
+package spring.tk.springtkapap.obat.rest;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.server.ResponseStatusException;
-import spring.TK.SpringTkApap.obat.model.ObatModel;
+import spring.tk.springtkapap.obat.model.ObatModel;
 
 import java.util.List;
 import java.util.NoSuchElementException;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestService.java
similarity index 71%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestService.java
index 48c09cd..747be27 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestService.java
@@ -1,6 +1,6 @@
-package spring.TK.SpringTkApap.obat.rest;
+package spring.tk.springtkapap.obat.rest;
 
-import spring.TK.SpringTkApap.obat.model.ObatModel;
+import spring.tk.springtkapap.obat.model.ObatModel;
 
 import java.util.List;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestServiceImpl.java
similarity index 87%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestServiceImpl.java
index 06a3938..dbc0768 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/rest/ObatRestServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/rest/ObatRestServiceImpl.java
@@ -1,9 +1,9 @@
-package spring.TK.SpringTkApap.obat.rest;
+package spring.tk.springtkapap.obat.rest;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.obat.model.ObatModel;
-import spring.TK.SpringTkApap.obat.repository.ObatDb;
+import spring.tk.springtkapap.obat.model.ObatModel;
+import spring.tk.springtkapap.obat.repository.ObatDb;
 import javax.transaction.Transactional;
 import java.util.List;
 import java.util.NoSuchElementException;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java
similarity index 63%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java
index 43e7c5d..3edc600 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatService.java
@@ -1,6 +1,6 @@
-package spring.TK.SpringTkApap.obat.service;
+package spring.tk.springtkapap.obat.service;
 
-import spring.TK.SpringTkApap.obat.model.ObatModel;
+import spring.tk.springtkapap.obat.model.ObatModel;
 
 import java.util.List;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java
similarity index 83%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java
index 192d056..166a699 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/obat/service/ObatServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/service/ObatServiceImpl.java
@@ -1,9 +1,9 @@
-package spring.TK.SpringTkApap.obat.service;
+package spring.tk.springtkapap.obat.service;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.obat.model.ObatModel;
-import spring.TK.SpringTkApap.obat.repository.ObatDb;
+import spring.tk.springtkapap.obat.model.ObatModel;
+import spring.tk.springtkapap.obat.repository.ObatDb;
 
 import javax.transaction.Transactional;
 import java.util.List;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/ResepModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/resep/ResepModel.java
similarity index 83%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/ResepModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/resep/ResepModel.java
index b167044..0ac0280 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/ResepModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/resep/ResepModel.java
@@ -1,14 +1,14 @@
-package spring.TK.SpringTkApap.resep;
+package spring.tk.springtkapap.resep;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.sun.istack.NotNull;
+import javax.validation.constraints.NotNull;
 import lombok.*;
 import org.hibernate.annotations.OnDelete;
 import org.hibernate.annotations.OnDeleteAction;
 import org.springframework.format.annotation.DateTimeFormat;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.jumlah.JumlahModel;
-import spring.TK.SpringTkApap.user.model.ApotekerModel;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.jumlah.JumlahModel;
+import spring.tk.springtkapap.user.model.ApotekerModel;
 
 import javax.persistence.*;
 import java.io.Serializable;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanDB.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanDB.java
similarity index 83%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanDB.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanDB.java
index bb7beb8..a06120d 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanDB.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanDB.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.tagihan;
+package spring.tk.springtkapap.tagihan;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanModel.java
similarity index 70%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanModel.java
index 9983e51..fdb30c0 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanModel.java
@@ -1,13 +1,12 @@
-package spring.TK.SpringTkApap.tagihan;
+package spring.tk.springtkapap.tagihan;
 
-import com.sun.istack.NotNull;
+import javax.validation.constraints.NotNull;
 import lombok.*;
-import org.hibernate.annotations.OnDelete;
-import org.hibernate.annotations.OnDeleteAction;
 import org.springframework.format.annotation.DateTimeFormat;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
 
 import javax.persistence.*;
+import java.io.Serializable;
 import java.time.LocalDateTime;
 
 @Setter
@@ -16,7 +15,7 @@ import java.time.LocalDateTime;
 @Table(name = "tagihan")
 @NoArgsConstructor
 @AllArgsConstructor
-public class TagihanModel {
+public class TagihanModel implements Serializable {
     @Id @Column(nullable = false)
     private String kode;
 
@@ -35,5 +34,5 @@ public class TagihanModel {
     private Integer jumlahTagihan;
 
     @OneToOne(mappedBy = "tagihan", fetch = FetchType.EAGER)
-    private transient AppointmentModel appointment;
+    private AppointmentModel appointment;
 }
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java
similarity index 53%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java
index 62928f8..fb39fd1 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanService.java
@@ -1,6 +1,6 @@
-package spring.TK.SpringTkApap.tagihan;
+package spring.tk.springtkapap.tagihan;
 
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
 
 public interface TagihanService {
     TagihanModel addTagihan(TagihanModel tagihan, AppointmentModel appointment);
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
similarity index 80%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
index 298953c..7a1c87d 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/tagihan/TagihanServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
@@ -1,9 +1,9 @@
-package spring.TK.SpringTkApap.tagihan;
+package spring.tk.springtkapap.tagihan;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.appointment.AppointmentDB;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.appointment.AppointmentDB;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
 
 import javax.transaction.Transactional;
 import java.time.LocalDateTime;
@@ -26,7 +26,7 @@ public class TagihanServiceImpl implements TagihanService{
         tagihan.setTanggalBayar(null);
         tagihan.setTanggalTerbuat(LocalDateTime.now());
         int kode = + (int) (tagihanDB.count() + 1);
-        String strKode = Integer.toString(kode);
+        var strKode = Integer.toString(kode);
         tagihan.setKode("BILL-" + strKode);
         tagihanDB.save(tagihan);
         return tagihan;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
similarity index 73%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
index e098119..4f8fb40 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
@@ -1,17 +1,15 @@
-package spring.TK.SpringTkApap.user.controller;
+package spring.tk.springtkapap.user.controller;
 
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
 import org.springframework.web.bind.annotation.*;
-import spring.TK.SpringTkApap.appointment.AppointmentService;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.user.model.DokterModel;
-import spring.TK.SpringTkApap.user.model.DokterRevDTO;
-import spring.TK.SpringTkApap.user.service.DokterService;
+import spring.tk.springtkapap.appointment.AppointmentService;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.user.model.DokterModel;
+import spring.tk.springtkapap.user.model.DokterRevDTO;
+import spring.tk.springtkapap.user.service.DokterService;
 
 import java.time.LocalDate;
 import java.util.ArrayList;
@@ -24,24 +22,24 @@ import java.util.stream.Collectors;
 @Slf4j
 public class DokterController {
 
-    Logger logger = LoggerFactory.getLogger(DokterRestController.class);
-
     @Autowired
     DokterService dokterService;
 
     @Autowired
     AppointmentService appointmentService;
 
+    private static final String LISTDOKTER  = "listDokter";
+
     @GetMapping("/choose")
     public String chooseDokter(Model model) {
-        model.addAttribute("listDokter", dokterService.retrieveAll());
+        model.addAttribute(LISTDOKTER, dokterService.retrieveAll());
         return "dokter/choose-dokter";
     }
 
     @PostMapping("/choose")
     public String getchart(@ModelAttribute List<DokterModel> list, Model model) {
         List<DokterModel> listDokter = dokterService.retrieveAll();
-        DokterRevDTO dokterRevDTO = new DokterRevDTO();
+        var dokterRevDTO = new DokterRevDTO();
         List<String> listLabels = new ArrayList<>();
         List<Long> listRevenue = new ArrayList<>();
         List<Integer> listBanyakApt = new ArrayList<>();
@@ -49,10 +47,12 @@ public class DokterController {
             List<AppointmentModel> listApt = appointmentService.findAllByDokter(dokterModel);
             listLabels.add(dokterModel.getUsername());
             long rev = 0;
-            int banyakApt = 0;
-            for (AppointmentModel apt : listApt) {
+            var banyakApt = 0;
+            var i = 0;
+            while (i < listApt.size()) {
                 rev += dokterModel.getTarif();
                 banyakApt += 1;
+                i++;
             }
             listRevenue.add(rev);
             listBanyakApt.add(banyakApt);
@@ -60,28 +60,27 @@ public class DokterController {
         dokterRevDTO.setNama(listLabels);
         dokterRevDTO.setRevenue(listRevenue);
         dokterRevDTO.setBanyakAppointment(listBanyakApt);
-        model.addAttribute("listDokter", dokterRevDTO);
+        model.addAttribute(LISTDOKTER, dokterRevDTO);
         return "dokter/dokter-chart";
     }
 
     @PostMapping("/chart")
     public String chart(@RequestParam(value = "choosed") String[] choosed, Model model) {
         List<String> listString = Arrays.stream(choosed).collect(Collectors.toList());
-        DokterRevDTO dokterRevDTO = new DokterRevDTO();
+        var dokterRevDTO = new DokterRevDTO();
         List<String> listLabels = new ArrayList<>();
         List<Long> listRevenue = new ArrayList<>();
         List<Integer> listBanyakApt = new ArrayList<>();
         List<List<LocalDate>> listTanggal = new ArrayList<>();
-        int i = 0;
         for (String usernameDokter : listString) {
-            DokterModel dokterModel = dokterService.getDokterByUsername(usernameDokter);
+            var dokterModel = dokterService.getDokterByUsername(usernameDokter);
             List<AppointmentModel> listApt = appointmentService.findAllByDokter(dokterModel);
             listLabels.add(dokterModel.getUsername());
             long rev = 0;
-            int banyakApt = 0;
+            var banyakApt = 0;
             List<LocalDate> tanggal = new ArrayList<>();
             for (AppointmentModel apt : listApt) {
-                logger.info(apt.getWaktuAwal().toString());
+                log.info(apt.getWaktuAwal().toString());
                 rev += dokterModel.getTarif();
                 banyakApt += 1;
                 tanggal.add(apt.getWaktuAwal().toLocalDate());
@@ -94,7 +93,7 @@ public class DokterController {
         dokterRevDTO.setRevenue(listRevenue);
         dokterRevDTO.setBanyakAppointment(listBanyakApt);
         dokterRevDTO.setTanggal(listTanggal);
-        model.addAttribute("listDokter", dokterRevDTO);
+        model.addAttribute(LISTDOKTER, dokterRevDTO);
         return "dokter/dokter-chart";
     }
 }
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterRestController.java
similarity index 67%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterRestController.java
index 7c2c2af..9cc803a 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterRestController.java
@@ -1,20 +1,17 @@
-package spring.TK.SpringTkApap.user.controller;
+package spring.tk.springtkapap.user.controller;
 
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
-import spring.TK.SpringTkApap.appointment.AppointmentRestController;
-import spring.TK.SpringTkApap.appointment.AppointmentService;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.user.model.DokterDTO;
-import spring.TK.SpringTkApap.user.model.DokterModel;
-import spring.TK.SpringTkApap.user.model.DokterRevDTO;
-import spring.TK.SpringTkApap.user.service.DokterService;
+import spring.tk.springtkapap.appointment.AppointmentService;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.user.model.DokterDTO;
+import spring.tk.springtkapap.user.model.DokterModel;
+import spring.tk.springtkapap.user.model.DokterRevDTO;
+import spring.tk.springtkapap.user.service.DokterService;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -25,8 +22,6 @@ import java.util.List;
 @Slf4j
 public class DokterRestController {
 
-    Logger logger = LoggerFactory.getLogger(DokterRestController.class);
-
     @Autowired
     private DokterService dokterService;
 
@@ -35,14 +30,14 @@ public class DokterRestController {
 
     @GetMapping(value = "/all")
     public List<DokterDTO> getAllDoktor() {
-        logger.info("Berhasil mengambil data seluruh dokter yang ada");
+        log.info("Berhasil mengambil data seluruh dokter yang ada");
         return dokterService.getAll();
     }
 
     @GetMapping(value = "/rev")
     public DokterRevDTO getDokterRev() {
         List<DokterModel> listDokter = dokterService.retrieveAll();
-        DokterRevDTO dokterRevDTO = new DokterRevDTO();
+        var dokterRevDTO = new DokterRevDTO();
         List<String> listLabels = new ArrayList<>();
         List<Long> listRevenue = new ArrayList<>();
         List<Integer> listBanyakApt = new ArrayList<>();
@@ -50,10 +45,12 @@ public class DokterRestController {
             List<AppointmentModel> listApt = appointmentService.findAllByDokter(dokterModel);
             listLabels.add(dokterModel.getUsername());
             long rev = 0;
-            int banyakApt = 0;
-            for (AppointmentModel apt : listApt) {
+            var banyakApt = 0;
+            var i = 0;
+            while (i < listApt.size()) {
                 rev += dokterModel.getTarif();
                 banyakApt += 1;
+                i++;
             }
             listRevenue.add(rev);
             listBanyakApt.add(banyakApt);
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/PasienRestController.java
similarity index 77%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/PasienRestController.java
index 862b375..5077d88 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/PasienRestController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/PasienRestController.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.user.controller;
+package spring.tk.springtkapap.user.controller;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -6,9 +6,9 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.server.ResponseStatusException;
-import spring.TK.SpringTkApap.user.model.PasienDTO;
-import spring.TK.SpringTkApap.user.service.PasienRestService;
-import spring.TK.SpringTkApap.user.model.PasienModel;
+import spring.tk.springtkapap.user.model.PasienDTO;
+import spring.tk.springtkapap.user.service.PasienRestService;
+import spring.tk.springtkapap.user.model.PasienModel;
 
 import java.security.Principal;
 import java.util.List;
@@ -22,7 +22,7 @@ public class PasienRestController {
     PasienRestService pasienRestService;
 
     @PostMapping(value = "/register")
-    private ResponseEntity<String> registerPasien(@RequestBody PasienDTO pasien, BindingResult bindingResult){
+    public ResponseEntity<String> registerPasien(@RequestBody PasienDTO pasien, BindingResult bindingResult){
         if (bindingResult.hasFieldErrors()) {
             throw new ResponseStatusException(
                     HttpStatus.BAD_REQUEST, "Request body has invalid type or missing field."
@@ -34,12 +34,12 @@ public class PasienRestController {
                         HttpStatus.INTERNAL_SERVER_ERROR, "Username yang sama sudah terdaftar. Silakan gunakan username yang lain."
                 );
             }
-            return ResponseEntity.ok(String.format("Registrasi berhasil!"));
+            return ResponseEntity.ok("Registrasi berhasil!");
         }
     }
 
     @GetMapping("/{uuid}")
-    private PasienModel getPasien(@PathVariable(name = "uuid") String uuid){
+    public PasienModel getPasien(@PathVariable(name = "uuid") String uuid){
         try {
             return pasienRestService.getPasien(uuid);
         } catch (NoSuchElementException e) {
@@ -52,7 +52,7 @@ public class PasienRestController {
     @GetMapping("/getself")
     public PasienDTO getPasienByUsername(Principal principal) {
         PasienModel pasien = pasienRestService.getPasienByUsername(principal.getName());
-        PasienDTO pasienDTO = new PasienDTO();
+        var pasienDTO = new PasienDTO();
         pasienDTO.setUsername(pasien.getUsername());
         pasienDTO.setName(pasien.getNama());
         pasienDTO.setSaldo(pasien.getSaldo().toString());
@@ -63,12 +63,12 @@ public class PasienRestController {
     }
 
     @GetMapping("/all")
-    private List<PasienModel> getAllPasien(){
+    public List<PasienModel> getAllPasien(){
         return pasienRestService.retrievePasien();
     }
 
     @PostMapping(value = "/top-up/{username}")
-    private PasienModel topUpSaldo(@PathVariable("username") String username, @RequestBody PasienDTO pasien, BindingResult bindingResult){
+    public PasienModel topUpSaldo(@PathVariable("username") String username, @RequestBody PasienDTO pasien, BindingResult bindingResult){
         try{
             return pasienRestService.topUpSaldo(username, pasien);
         } catch (NoSuchElementException e) {
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/AdminModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/AdminModel.java
similarity index 71%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/AdminModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/AdminModel.java
index d33643c..1d6fdf5 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/AdminModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/AdminModel.java
@@ -1,8 +1,8 @@
-package spring.TK.SpringTkApap.user.model;
+package spring.tk.springtkapap.user.model;
 
 import lombok.*;
 
-import spring.TK.SpringTkApap.auth.model.UserModel;
+import spring.tk.springtkapap.auth.model.UserModel;
 
 import javax.persistence.Entity;
 import javax.persistence.Table;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/ApotekerModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/ApotekerModel.java
similarity index 74%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/ApotekerModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/ApotekerModel.java
index f662daa..3ed053e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/ApotekerModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/ApotekerModel.java
@@ -1,9 +1,9 @@
-package spring.TK.SpringTkApap.user.model;
+package spring.tk.springtkapap.user.model;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.*;
-import spring.TK.SpringTkApap.resep.ResepModel;
-import spring.TK.SpringTkApap.auth.model.UserModel;
+import spring.tk.springtkapap.resep.ResepModel;
+import spring.tk.springtkapap.auth.model.UserModel;
 
 import javax.persistence.*;
 import java.util.List;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterDTO.java
similarity index 86%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterDTO.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterDTO.java
index 7c7c524..5c4b687 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterDTO.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterDTO.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.user.model;
+package spring.tk.springtkapap.user.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterModel.java
similarity index 72%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterModel.java
index 962fd49..b99f8dc 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterModel.java
@@ -1,10 +1,10 @@
-package spring.TK.SpringTkApap.user.model;
+package spring.tk.springtkapap.user.model;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.sun.istack.NotNull;
+import javax.validation.constraints.NotNull;
 import lombok.*;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.auth.model.UserModel;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.auth.model.UserModel;
 
 import javax.persistence.*;
 import java.util.List;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterRevDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterRevDTO.java
similarity index 91%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterRevDTO.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterRevDTO.java
index e40c1db..44cc5b4 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/DokterRevDTO.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/DokterRevDTO.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.user.model;
+package spring.tk.springtkapap.user.model;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/PasienDTO.java
similarity index 93%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/PasienDTO.java
index e745a9d..d232ddf 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienDTO.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/PasienDTO.java
@@ -1,4 +1,4 @@
-package spring.TK.SpringTkApap.user.model;
+package spring.tk.springtkapap.user.model;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.AllArgsConstructor;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/PasienModel.java
similarity index 75%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienModel.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/PasienModel.java
index b314fb9..005ed51 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/model/PasienModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/model/PasienModel.java
@@ -1,10 +1,10 @@
-package spring.TK.SpringTkApap.user.model;
+package spring.tk.springtkapap.user.model;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.sun.istack.NotNull;
+import javax.validation.constraints.NotNull;
 import lombok.*;
-import spring.TK.SpringTkApap.appointment.model.AppointmentModel;
-import spring.TK.SpringTkApap.auth.model.UserModel;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.auth.model.UserModel;
 
 import javax.persistence.*;
 import java.util.List;
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/AdminDB.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/AdminDB.java
similarity index 66%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/AdminDB.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/AdminDB.java
index 5f38821..c3de79b 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/AdminDB.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/AdminDB.java
@@ -1,8 +1,8 @@
-package spring.TK.SpringTkApap.user.repository;
+package spring.tk.springtkapap.user.repository;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
-import spring.TK.SpringTkApap.user.model.AdminModel;
+import spring.tk.springtkapap.user.model.AdminModel;
 
 @Repository
 public interface AdminDB extends JpaRepository<AdminModel, String> {
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/DokterDB.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/DokterDB.java
similarity index 69%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/DokterDB.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/DokterDB.java
index c6f8e10..63a9982 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/DokterDB.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/DokterDB.java
@@ -1,10 +1,9 @@
-package spring.TK.SpringTkApap.user.repository;
+package spring.tk.springtkapap.user.repository;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
-import spring.TK.SpringTkApap.user.model.DokterModel;
+import spring.tk.springtkapap.user.model.DokterModel;
 
-import java.util.List;
 import java.util.Optional;
 
 @Repository
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/PasienDB.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/PasienDB.java
similarity index 73%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/PasienDB.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/PasienDB.java
index 0f8bd72..c8bf341 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/repository/PasienDB.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/PasienDB.java
@@ -1,8 +1,8 @@
-package spring.TK.SpringTkApap.user.repository;
+package spring.tk.springtkapap.user.repository;
 
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
-import spring.TK.SpringTkApap.user.model.PasienModel;
+import spring.tk.springtkapap.user.model.PasienModel;
 
 import java.util.Optional;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/DokterService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/DokterService.java
similarity index 68%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/DokterService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/DokterService.java
index b3111e1..4d78b9a 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/DokterService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/DokterService.java
@@ -1,7 +1,7 @@
-package spring.TK.SpringTkApap.user.service;
+package spring.tk.springtkapap.user.service;
 
-import spring.TK.SpringTkApap.user.model.DokterDTO;
-import spring.TK.SpringTkApap.user.model.DokterModel;
+import spring.tk.springtkapap.user.model.DokterDTO;
+import spring.tk.springtkapap.user.model.DokterModel;
 
 import java.util.List;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/DokterServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/DokterServiceImpl.java
similarity index 85%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/DokterServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/DokterServiceImpl.java
index 5f7bf83..5d332de 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/DokterServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/DokterServiceImpl.java
@@ -1,10 +1,10 @@
-package spring.TK.SpringTkApap.user.service;
+package spring.tk.springtkapap.user.service;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.user.model.DokterDTO;
-import spring.TK.SpringTkApap.user.model.DokterModel;
-import spring.TK.SpringTkApap.user.repository.DokterDB;
+import spring.tk.springtkapap.user.model.DokterDTO;
+import spring.tk.springtkapap.user.model.DokterModel;
+import spring.tk.springtkapap.user.repository.DokterDB;
 
 import javax.transaction.Transactional;
 import java.util.ArrayList;
@@ -29,7 +29,7 @@ public class DokterServiceImpl implements DokterService{
         List<DokterModel> listDokter = dokterDB.findAll();
         List<DokterDTO> list = new ArrayList<>();
         for (DokterModel dokter : listDokter) {
-            DokterDTO newDokter = new DokterDTO();
+            var newDokter = new DokterDTO();
             newDokter.setNama(dokter.getNama());
             newDokter.setUsername(dokter.getUsername());
             newDokter.setTagihan(dokter.getTarif());
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienRestService.java
similarity index 67%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienRestService.java
index 2e742e3..69a1ba3 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienRestService.java
@@ -1,7 +1,7 @@
-package spring.TK.SpringTkApap.user.service;
+package spring.tk.springtkapap.user.service;
 
-import spring.TK.SpringTkApap.user.model.PasienDTO;
-import spring.TK.SpringTkApap.user.model.PasienModel;
+import spring.tk.springtkapap.user.model.PasienDTO;
+import spring.tk.springtkapap.user.model.PasienModel;
 
 import java.util.List;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienRestServiceImpl.java
similarity index 82%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienRestServiceImpl.java
index a39b057..312b047 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienRestServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienRestServiceImpl.java
@@ -1,13 +1,12 @@
-package spring.TK.SpringTkApap.user.service;
+package spring.tk.springtkapap.user.service;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.auth.model.RolesEnum;
-import spring.TK.SpringTkApap.auth.service.AuthServiceImpl;
-import spring.TK.SpringTkApap.user.model.PasienDTO;
-import spring.TK.SpringTkApap.user.model.PasienModel;
-import spring.TK.SpringTkApap.user.repository.PasienDB;
-import spring.TK.SpringTkApap.user.service.PasienRestService;
+import spring.tk.springtkapap.auth.model.RolesEnum;
+import spring.tk.springtkapap.auth.service.AuthServiceImpl;
+import spring.tk.springtkapap.user.model.PasienDTO;
+import spring.tk.springtkapap.user.model.PasienModel;
+import spring.tk.springtkapap.user.repository.PasienDB;
 
 import javax.transaction.Transactional;
 import java.util.ArrayList;
@@ -34,7 +33,7 @@ public class PasienRestServiceImpl implements PasienRestService {
             }
         }
 
-        PasienModel newPasien = new PasienModel();
+        var newPasien = new PasienModel();
 
         newPasien.setNama(pasienDTO.getName());
         newPasien.setUsername(pasienDTO.getUsername());
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienService.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienService.java
similarity index 74%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienService.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienService.java
index c2c8f0a..cad9ece 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienService.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienService.java
@@ -1,6 +1,6 @@
-package spring.TK.SpringTkApap.user.service;
+package spring.tk.springtkapap.user.service;
 
-import spring.TK.SpringTkApap.user.model.PasienModel;
+import spring.tk.springtkapap.user.model.PasienModel;
 
 import java.util.List;
 
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienServiceImpl.java
similarity index 86%
rename from SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienServiceImpl.java
rename to SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienServiceImpl.java
index 152939c..f0b5396 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/service/PasienServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/service/PasienServiceImpl.java
@@ -1,9 +1,9 @@
-package spring.TK.SpringTkApap.user.service;
+package spring.tk.springtkapap.user.service;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import spring.TK.SpringTkApap.user.model.PasienModel;
-import spring.TK.SpringTkApap.user.repository.PasienDB;
+import spring.tk.springtkapap.user.model.PasienModel;
+import spring.tk.springtkapap.user.repository.PasienDB;
 
 import javax.transaction.Transactional;
 import java.util.List;
diff --git a/SpringTkApap/src/main/resources/application.yml b/SpringTkApap/src/main/resources/application.yml
index e33662a..24c1269 100644
--- a/SpringTkApap/src/main/resources/application.yml
+++ b/SpringTkApap/src/main/resources/application.yml
@@ -2,4 +2,6 @@
 
 spring:
   profiles:
-    default: dev
\ No newline at end of file
+    default: dev
+
+security.enable-csrf: false
diff --git a/SpringTkApap/src/main/resources/templates/fragments/fragment.html b/SpringTkApap/src/main/resources/templates/fragments/fragment.html
index 053a567..dfe343b 100644
--- a/SpringTkApap/src/main/resources/templates/fragments/fragment.html
+++ b/SpringTkApap/src/main/resources/templates/fragments/fragment.html
@@ -12,7 +12,9 @@
     <script src="https://getbootstrap.com/docs/4.1/assets/js/vendor/popper.nin.js"></script>
     <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
+    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
     <script th:src="@{/js/bootstrap.min.js}"></script>
+    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.bundle.min.js"></script>
   </head>
 </head>
 <body>
diff --git a/SpringTkApap/src/test/java/spring/TK/SpringTkApap/SpringTkApapApplicationTests.java b/SpringTkApap/src/test/java/spring/TK/SpringTkApap/SpringTkApapApplicationTests.java
deleted file mode 100644
index 3684f1c..0000000
--- a/SpringTkApap/src/test/java/spring/TK/SpringTkApap/SpringTkApapApplicationTests.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package spring.TK.SpringTkApap;
-
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-
-@SpringBootTest
-class SpringTkApapApplicationTests {
-
-	@Test
-	void contextLoads() {
-	}
-
-}
-- 
GitLab


From 2a8677dbee80ad5eb4a5733efe9c775c387234bc Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 11:21:46 +0700
Subject: [PATCH 07/16] feat: fix error csrf

---
 .../tk/springtkapap/auth/security/WebSecurityConfig.java    | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
index 5753713..2610a4c 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
@@ -105,11 +105,7 @@ public class WebSecurityConfig {
 
         @Override
         protected void configure(HttpSecurity http) throws Exception {
-            if(!csrfEnabled)
-            {
-                http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
-            }
-            http.antMatcher("/api/**")
+            http.antMatcher("/api/**").csrf().disable()
                     .authorizeRequests()
                     .antMatchers("/api/authenticate", "/api/pasien/register").permitAll()
                     .antMatchers(HttpMethod.GET, "/api/user").hasAuthority(PASIEN)
-- 
GitLab


From 60d34351248ee42ffbc229073965d24d799f59d0 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 11:33:14 +0700
Subject: [PATCH 08/16] feat: handle sonarqube

---
 SpringTkApap/gradle.properties                                | 4 ++--
 .../tk/springtkapap/auth/security/WebSecurityConfig.java      | 1 -
 .../java/spring/tk/springtkapap/obat/model/ObatModel.java     | 1 -
 3 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/SpringTkApap/gradle.properties b/SpringTkApap/gradle.properties
index 04e1311..f52c4b6 100644
--- a/SpringTkApap/gradle.properties
+++ b/SpringTkApap/gradle.properties
@@ -1,3 +1,3 @@
 systemProp.sonar.host.url=https://sonarqube.cs.ui.ac.id
-systemProp.sonar.projectKey= SpringTkApap-53
-systemProp.sonar.login= 57e13a92a36c10e15e0a60bf9f39493b1c8b28ac
\ No newline at end of file
+systemProp.sonar.projectKey= tk-apap-53
+systemProp.sonar.login=57e13a92a36c10e15e0a60bf9f39493b1c8b28ac
\ No newline at end of file
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
index 2610a4c..180102d 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
@@ -17,7 +17,6 @@ import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
-import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 import spring.tk.springtkapap.auth.model.RolesEnum;
 
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java
index 5198a3c..4d6f080 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/obat/model/ObatModel.java
@@ -1,7 +1,6 @@
 package spring.tk.springtkapap.obat.model;
 
 import lombok.*;
-import org.hibernate.annotations.ColumnDefault;
 import org.hibernate.annotations.GenericGenerator;
 import spring.tk.springtkapap.jumlah.JumlahModel;
 
-- 
GitLab


From dcefd36e43f853942e1651f01beba4d523d754bc Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 20:11:27 +0700
Subject: [PATCH 09/16] feat: handle action logging

---
 .../tk/springtkapap/auth/controller/AuthController.java    | 6 ++++++
 .../tk/springtkapap/auth/controller/PageController.java    | 7 +++++++
 .../tk/springtkapap/auth/security/JwtRequestFilter.java    | 3 ++-
 .../spring/tk/springtkapap/auth/security/JwtTokenUtil.java | 3 +++
 4 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
index ee3854c..d9990b7 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
@@ -1,5 +1,6 @@
 package spring.tk.springtkapap.auth.controller;
 
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.authentication.AuthenticationManager;
@@ -21,6 +22,7 @@ import java.util.Objects;
 @RestController
 @CrossOrigin(origins = "apap-tk-53.cs.ui.ac.id")
 @RequestMapping("/api")
+@Slf4j
 public class AuthController {
 
     @Autowired
@@ -54,15 +56,19 @@ public class AuthController {
 
         try {
             authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
+            log.info("User berhasil melakukan autentikasi");
         } catch (DisabledException e) {
+            log.warn("User disable");
             throw new DisabledException("USER_DISABLED", e);
         } catch (BadCredentialsException e) {
+            log.warn("Credentials user tidak valid");
             throw new BadCredentialsException("INVALID_CREDENTIALS", e);
         }
     }
 
     @GetMapping(value = "/user")
     public ResponseEntity<Object> job(@RequestBody Map<String, String> request) {
+        log.info("User mengambil info user");
         return ResponseEntity.ok(authService.getUserByUsername(request.get("username")));
     }
 }
\ No newline at end of file
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/PageController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/PageController.java
index 65ddacf..a19ba61 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/PageController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/PageController.java
@@ -1,5 +1,6 @@
 package spring.tk.springtkapap.auth.controller;
 
+import lombok.extern.slf4j.Slf4j;
 import spring.tk.springtkapap.auth.setting.Setting;
 import spring.tk.springtkapap.auth.model.RolesEnum;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -21,6 +22,7 @@ import java.security.Principal;
 import java.util.Objects;
 
 @Controller
+@Slf4j
 public class PageController {
     private final WebClient webClient = WebClient.builder().build();
 
@@ -31,6 +33,7 @@ public class PageController {
 
     @GetMapping("/login")
     public String login(){
+        log.info("User melakukan login");
         return "login/login";
     }
 
@@ -69,12 +72,14 @@ public class PageController {
 
     @GetMapping("/login-sso")
     public ModelAndView loginSSO(){
+        log.info("User melakukan login dengan SSO");
         return new ModelAndView(REDIRECT + Setting.SERVER_LOGIN + Setting.CLIENT_LOGIN);
     }
 
     @GetMapping(value = "/logout-sso")
     public ModelAndView logoutSSO(Principal principal){
         UserModel user = userService.getUserByUsername(principal.getName());
+        log.info("User melakukan logout");
         if (!user.getRole().equals(RolesEnum.ADMIN)){
             return new ModelAndView("redirect:/logout");
         }
@@ -83,11 +88,13 @@ public class PageController {
 
     @GetMapping("/home-not-access")
     public String homeNotAccess(){
+        log.warn("Anda tidak termasuk ke dalam white list sebagai admin");
         return "home/home-not-access";
     }
 
     @GetMapping(value = "/logout-not-access")
     public ModelAndView logoutSSONotAccess(){
+        log.info("User anonim melakukan logout");
         return new ModelAndView(REDIRECT + Setting.SERVER_LOGOUT + Setting.CLIENT_LOGOUT);
     }
 
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtRequestFilter.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtRequestFilter.java
index 256776e..069b7d7 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtRequestFilter.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtRequestFilter.java
@@ -41,7 +41,7 @@ public class JwtRequestFilter extends OncePerRequestFilter {
                 username = jwtTokenUtil.getUsernameFromToken(jwtToken);
                 log.info(username + " get API with JWT Token");
             } catch (IllegalArgumentException e) {
-                log.warn("Unable to get JWT Token");
+                log.error("Unable to get JWT Token");
             } catch (ExpiredJwtException e) {
                 log.warn("JWT Token has expired");
             }
@@ -55,6 +55,7 @@ public class JwtRequestFilter extends OncePerRequestFilter {
             Boolean validate = jwtTokenUtil.validateToken(jwtToken, userDetails);
 
             if (Boolean.TRUE.equals(validate)) {
+                log.info("JWT Token has validated");
 
                 var usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(
                         userDetails, null, userDetails.getAuthorities());
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtTokenUtil.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtTokenUtil.java
index 4b56acc..e3ac27f 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtTokenUtil.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/JwtTokenUtil.java
@@ -3,6 +3,7 @@ package spring.tk.springtkapap.auth.security;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.stereotype.Component;
@@ -14,6 +15,7 @@ import java.util.Map;
 import java.util.function.Function;
 
 @Component
+@Slf4j
 public class JwtTokenUtil implements Serializable {
 
     private static final long serialVersionUID = -2550185165626007488L;
@@ -49,6 +51,7 @@ public class JwtTokenUtil implements Serializable {
         Map<String, Object> claims = new HashMap<>();
         claims.put("ROLE", "PASIEN");
         claims.put("ORGANIZATION", "RumahSehat");
+        log.info("User melakukan generate token");
         return doGenerateToken(claims, userDetails.getUsername());
     }
 
-- 
GitLab


From 35cdc628656527d331cf855d0888a2058feed834 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 20:31:43 +0700
Subject: [PATCH 10/16] feat: delete button

---
 SpringTkApap/src/main/resources/templates/home/home.html | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/SpringTkApap/src/main/resources/templates/home/home.html b/SpringTkApap/src/main/resources/templates/home/home.html
index 1207edb..76db255 100644
--- a/SpringTkApap/src/main/resources/templates/home/home.html
+++ b/SpringTkApap/src/main/resources/templates/home/home.html
@@ -40,7 +40,6 @@
                     <div class="text-center mt-1">
                         <img src="../img/appointment.png" width="60" height="60">
                         <p class="card-text my-3">Lihat jadwal dan detail dari appointment yang telah dibuat.</p>
-                        <a th:href="@{/appointment/viewall}" class="btn btn-sm btn-primary">Appointment</a>
                     </div>
                 </div>
             </div>
@@ -53,7 +52,6 @@
                     <div class="text-center mt-1">
                         <img src="../img/resep.png" width="60" height="60">
                         <p class="card-text my-3">Buat resep, serta lihat daftar dan detail resep yang tersedia.</p>
-                        <a th:href="@{/}" class="btn btn-sm btn-primary">Resep</a>
                     </div>
                 </div>
             </div>
@@ -66,8 +64,6 @@
                     <div class="text-center mt-1">
                         <img src="../img/obat.png" width="60" height="60">
                         <p class="card-text my-3">Lihat stok dan daftar obat yang tersedia.</p>
-                        <a th:href="@{/obat/add}" class="mx-2 mb-2 btn btn-sm btn-primary">Add Obat</a>
-                        <a th:href="@{/obat/viewall}" class="mx-2 mb-2 btn btn-sm btn-primary">Lihat Semua Obat</a>
                     </div>
                 </div>
             </div>
-- 
GitLab


From b56626ec5e3b048ff1ef557da076a2e709d8965f Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 21:30:58 +0700
Subject: [PATCH 11/16] feat: fix sonarqube

---
 .../AppointmentRestController.java            |  2 +-
 .../auth/controller/AuthController.java       |  3 +-
 .../auth/security/WebSecurityConfig.java      |  2 +-
 .../manage/controller/ManageController.java   |  2 +-
 .../service/TagihanServiceRestImpl.java       | 28 ++++++++++---------
 .../user/controller/DokterController.java     | 21 +++++---------
 .../user/repository/DokterDB.java             |  2 --
 7 files changed, 27 insertions(+), 33 deletions(-)

diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestController.java
index f4b9218..6a3d7c7 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentRestController.java
@@ -22,7 +22,7 @@ import java.security.Principal;
 import java.util.List;
 
 @RestController
-@CrossOrigin(origins = "apap-tk-53.cs.ui.ac.id")
+@CrossOrigin(origins = "*")
 @RequestMapping("/api/appointment")
 @Slf4j
 public class AppointmentRestController {
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
index d9990b7..8e229ad 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/controller/AuthController.java
@@ -20,7 +20,8 @@ import java.util.Objects;
 
 
 @RestController
-@CrossOrigin(origins = "apap-tk-53.cs.ui.ac.id")
+@CrossOrigin(origins = "*")
+
 @RequestMapping("/api")
 @Slf4j
 public class AuthController {
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
index 93d55bd..cf9b231 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/auth/security/WebSecurityConfig.java
@@ -107,7 +107,7 @@ public class WebSecurityConfig {
 
         @Override
         protected void configure(HttpSecurity http) throws Exception {
-            http.antMatcher("/api/**").csrf().disable()
+            http.antMatcher("/api/**").cors().and().csrf().disable()
                     .authorizeRequests()
                     .antMatchers("/api/authenticate", "/api/pasien/register").permitAll()
                     .antMatchers(HttpMethod.GET, "/api/user").hasAuthority(PASIEN)
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/controller/ManageController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/controller/ManageController.java
index 8512bfa..98b159c 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/controller/ManageController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/manage/controller/ManageController.java
@@ -126,7 +126,7 @@ public class ManageController {
     }
     @GetMapping("/viewall/tembak")
     public void tembakApi(Model model) {
-        PasienModel pasien = new PasienModel();
+        var pasien = new PasienModel();
         pasien.setUmur(30);
         pasien.setSaldo(500000);
         pasien.setNama("Argaaaa");
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/service/TagihanServiceRestImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/service/TagihanServiceRestImpl.java
index b86b3c6..c45182c 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/service/TagihanServiceRestImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/service/TagihanServiceRestImpl.java
@@ -29,7 +29,7 @@ public class TagihanServiceRestImpl implements TagihanServiceRest {
         for (AppointmentModel appointment : listAppointment) {
             if (appointment.getListTagihan().get(0) != null) {
                 TagihanModel tagihan = appointment.getListTagihan().get(0);
-                TagihanDTO dto = new TagihanDTO();
+                var dto = new TagihanDTO();
                 dto.setTanggalTerbuat(tagihan.getTanggalTerbuat().toString());
                 if(tagihan.getIsPaid()) {
                     dto.setTanggalBayar(tagihan.getTanggalBayar().toString());
@@ -57,13 +57,13 @@ public class TagihanServiceRestImpl implements TagihanServiceRest {
         } else {
             throw new NoSuchElementException();
         }
-        String done = "";
+        var done = "";
         if (tag.getIsPaid()) {
             done = "lunas";
         } else {
             done = "belum lunas";
         }
-        TagihanDTO newTagihan = new TagihanDTO();
+        var newTagihan = new TagihanDTO();
         newTagihan.setKode(tag.getKode());
         newTagihan.setTanggalTerbuat(tag.getTanggalTerbuat().toString());
         newTagihan.setIsPaid(done);
@@ -80,16 +80,18 @@ public class TagihanServiceRestImpl implements TagihanServiceRest {
     @Override
     public int bayar(String kode,PasienModel pasien){
         Optional<TagihanModel> tagihan = tagihanDB.findByKode(kode);
-        TagihanModel tagihan1 = tagihan.get();
-        if(tagihan1.getIsPaid()){
-            return -1;
-        }
-        if((pasien.getSaldo() - tagihan1.getJumlahTagihan()) < 0){
-            return 0;
+        if (tagihan.isPresent()) {
+            TagihanModel tagihan1 = tagihan.get();
+            if(tagihan1.getIsPaid()){
+                return -1;
+            }
+            if((pasien.getSaldo() - tagihan1.getJumlahTagihan()) < 0){
+                return 0;
+            }
+            pasien.setSaldo(pasien.getSaldo() - tagihan1.getJumlahTagihan());
+            tagihan1.setIsPaid(true);
+            tagihan1.setTanggalBayar(LocalDateTime.now());
         }
-        pasien.setSaldo(pasien.getSaldo() - tagihan1.getJumlahTagihan());
-        tagihan1.setIsPaid(true);
-        tagihan1.setTanggalBayar(LocalDateTime.now());
-        return  1;
+        return  -1;
     }
 }
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
index 1a26d1a..91b05bc 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
@@ -1,8 +1,6 @@
 package spring.tk.springtkapap.user.controller;
 
 import lombok.extern.slf4j.Slf4j;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
@@ -10,7 +8,6 @@ import org.springframework.web.bind.annotation.*;
 import spring.tk.springtkapap.appointment.AppointmentService;
 import spring.tk.springtkapap.appointment.model.AppointmentModel;
 import spring.tk.springtkapap.user.model.DokterModel;
-import spring.tk.springtkapap.user.model.DokterRevDTO;
 import spring.tk.springtkapap.user.service.DokterService;
 
 
@@ -23,9 +20,6 @@ import java.util.List;
 @RequestMapping("/dokter")
 @Slf4j
 public class DokterController {
-
-    Logger logger = LoggerFactory.getLogger(DokterRestController.class);
-
     @Autowired
     DokterService dokterService;
 
@@ -40,21 +34,21 @@ public class DokterController {
 
     @PostMapping("/chart")
     public String chart(@RequestParam(value = "choosed") String[] choosed, Model model) {
-        int[] rev = new int[choosed.length];
-        int[] banyakApt = new int[choosed.length];
+        var rev = new int[choosed.length];
+        var banyakApt = new int[choosed.length];
         List<int[]> monthlyRev= new ArrayList<>();
         List<String> month = new ArrayList<>();
         List<String> day = new ArrayList<>();
         List<int[]> dailyRev = new ArrayList<>();
 
-        for (int i = 0; i < rev.length; i++) {
+        for (var i = 0; i < rev.length; i++) {
             DokterModel dokter = dokterService.getDokterByUsername(choosed[i]);
             List<AppointmentModel> listApt = appointmentService.findAllByDokter(dokter);
             banyakApt[i] = listApt.size();
             rev[i] = listApt.size() * dokter.getTarif();
 
-            int[] dataMonthly = new int[12];
-            int[] dataDaily = new int[31];
+            var dataMonthly = new int[12];
+            var dataDaily = new int[31];
             for (AppointmentModel apt : listApt) {
                 dataMonthly[apt.getWaktuAwal().getMonthValue()-1] += dokter.getTarif();
                 dataDaily[apt.getWaktuAwal().getDayOfMonth()-1] += dokter.getTarif();
@@ -63,14 +57,13 @@ public class DokterController {
             dailyRev.add(dataDaily);
         }
 
-        for (int i = 0; i < 12; i++) {
+        for (var i = 0; i < 12; i++) {
             month.add(LocalDateTime.of(LocalDateTime.now().getYear(), 1, 1, 0, 0).plusMonths(i).getMonth().toString() + " " + LocalDateTime.now().getYear());
         }
 
-        for (int i = 0; i < 31; i++) {
+        for (var i = 0; i < 31; i++) {
             day.add(LocalDateTime.of(LocalDateTime.now().getYear(), LocalDateTime.now().getMonth(), 1, 0, 0).plusDays(i).getDayOfWeek().toString());
         }
-        System.out.println(day);
         model.addAttribute("label", choosed);
         model.addAttribute("rev", rev);
         model.addAttribute("banyakApt", banyakApt);
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/DokterDB.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/DokterDB.java
index 7f06613..79702e9 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/DokterDB.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/repository/DokterDB.java
@@ -3,8 +3,6 @@ package spring.tk.springtkapap.user.repository;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 import spring.tk.springtkapap.user.model.DokterModel;
-
-import java.util.List;
 import java.util.Optional;
 
 @Repository
-- 
GitLab


From e84207e15a832f1e37a3499a46bf062297992c4a Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 21:37:53 +0700
Subject: [PATCH 12/16] feat: fix sonarqube

---
 .../tk/springtkapap/user/controller/DokterController.java       | 2 --
 1 file changed, 2 deletions(-)

diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
index 1b993e8..d4b19f3 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterController.java
@@ -9,8 +9,6 @@ import spring.tk.springtkapap.appointment.AppointmentService;
 import spring.tk.springtkapap.appointment.model.AppointmentModel;
 import spring.tk.springtkapap.user.model.DokterModel;
 import spring.tk.springtkapap.user.service.DokterService;
-import spring.tk.springtkapap.user.controller.DokterRestController;
-
 
 import java.time.LocalDateTime;
 import java.util.ArrayList;
-- 
GitLab


From 113e6a3cb4422f00eccc49e9f35560c4d0a1a2fb Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 21:56:23 +0700
Subject: [PATCH 13/16] feat: fix sonarqube

---
 .../resep/controller/ResepController.java     | 77 +++++++------------
 .../TK/SpringTkApap/resep/model/ResepDTO.java | 25 ++++++
 2 files changed, 54 insertions(+), 48 deletions(-)
 create mode 100644 SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/model/ResepDTO.java

diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
index ac2edf0..652ad80 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
@@ -21,6 +21,7 @@ import spring.tk.springtkapap.jumlah.service.JumlahService;
 import spring.tk.springtkapap.manage.service.ApotekerService;
 import spring.tk.springtkapap.obat.model.ObatModel;
 import spring.tk.springtkapap.obat.service.ObatService;
+import spring.tk.springtkapap.resep.model.ResepDTO;
 import spring.tk.springtkapap.resep.model.ResepModel;
 import spring.tk.springtkapap.resep.service.ResepService;
 import spring.tk.springtkapap.user.model.ApotekerModel;
@@ -48,10 +49,11 @@ public class ResepController {
     @GetMapping("/add/{kodeAppointment}")
     public String addResepForm(@PathVariable("kodeAppointment") String kodeApt, Model model){
         AppointmentModel appointment = appointmentService.getAppointment(kodeApt);
-        ResepModel resep = new ResepModel();
+        ResepDTO resep = new ResepDTO();
         List<ObatModel> listObat = obatService.getListObat();
         List<ApotekerModel> listApoteker = apotekerService.getAll();
 
+        // resep.setIsDone(false);
         resep.setAppointment(appointment);
         resep.setListJumlah(new ArrayList<>());
         resep.getListJumlah().add(new JumlahModel());
@@ -65,24 +67,27 @@ public class ResepController {
     }
 
     @PostMapping("/add/{kodeAppointment}")
-    public String addResepSubmit(@PathVariable("kodeAppointment") String kodeApt, @ModelAttribute ResepModel resep, Model model){
+    public String addResepSubmit(@PathVariable("kodeAppointment") String kodeApt, @ModelAttribute ResepDTO resep, Model model){
+        ResepModel resepModel = new ResepModel();
+        resepModel.setApoteker(resep.getApoteker());
+        resepModel.setListJumlah(resep.getListJumlah());
+
         AppointmentModel appointment = appointmentService.getAppointment(kodeApt);
-        
-        resep.setAppointment(appointment);
-        resep.setIsDone(false);
-        resep.setCreatedAt(LocalDateTime.now());
 
-        if (resep.getListJumlah() != null){
-            for (JumlahModel jumlah : resep.getListJumlah()){
-                jumlah.setResep(resep);
+        resepModel.setAppointment(appointment);
+        resepModel.setIsDone(false);
+        resepModel.setCreatedAt(LocalDateTime.now());
+
+        if (resepModel.getListJumlah() != null){
+            for (JumlahModel jumlah : resepModel.getListJumlah()){
+                jumlah.setResep(resepModel);
                 jumlahService.addJumlah(jumlah);
             }
         }
-        resepService.addResep(resep);
-        appointment.setListResep(resep);
+        resepService.addResep(resepModel);
+        appointment.setListResep(resepModel);
         appointmentService.updateAppointment(appointment);
-        System.out.println(appointment.getListResep().getId());
-        model.addAttribute("resep", resep);
+        model.addAttribute("resep", resepModel);
         return "resep/add-resep";
     }
 
@@ -104,25 +109,13 @@ public class ResepController {
         model.addAttribute("pasien", resep.getAppointment().getPasien());
         model.addAttribute("apoteker", resep.getApoteker());
 
-        Boolean stokAda = true;
-        for (JumlahModel obatDibutuhkan : listJumlah){
-            String idObat = obatDibutuhkan.getObat().getIdObat();
-            System.out.println("stok tersedia adalah " + obatService.getObat(idObat).getStok());
-            System.out.println("stok diperlukan adalah " + obatDibutuhkan.getKuantitas());
-            if(obatDibutuhkan.getKuantitas() > obatService.getObat(idObat).getStok()){
-                stokAda = false;
-            }
-        }
-
-        model.addAttribute("stokAda", stokAda);
-
         return "resep/view-resep";
     }
 
     @PostMapping(value = "/add/{kodeAppointment}", params = {"addRowResep"})
     private String addRowObatMultiple(
             @PathVariable("kodeAppointment") String kodeApt,
-            @ModelAttribute ResepModel resep,
+            @ModelAttribute ResepDTO resep,
             Model model
     ) {
         List<ObatModel> listObat = obatService.getListObat();
@@ -133,8 +126,15 @@ public class ResepController {
             resep.setListJumlah(new ArrayList<>());
         }
         resep.setAppointment(appointment);
+
+        ResepModel resepModel = new ResepModel();
+        resepModel.setAppointment(appointment);
+        resepModel.setListJumlah(resep.getListJumlah());
+        resepModel.setApoteker(resep.getApoteker());
+
         JumlahModel newJumlah = new JumlahModel();
-        newJumlah.setResep(resep);
+        newJumlah.setResep(resepModel);
+
         resep.getListJumlah().add(newJumlah);
         List<JumlahModel> listJumlah = jumlahService.getListJumlah();
 
@@ -150,7 +150,7 @@ public class ResepController {
     @PostMapping(value = "/add/{kodeAppointment}", params = {"deleteRowResep"})
     private String deleteRowObatMultiple(
             @PathVariable("kodeAppointment") String kodeApt,
-            @ModelAttribute ResepModel resep,
+            @ModelAttribute ResepDTO resep,
             @RequestParam("deleteRowResep") Integer row,
             Model model
     ) {
@@ -173,23 +173,4 @@ public class ResepController {
         return "resep/form-add-resep";
     }
 
-    @PostMapping("/update/{idResep}")
-    public String updateResep(@PathVariable Long idResep, Model model){
-        ResepModel resep = resepService.getResep(idResep);
-        resep.setIsDone(Boolean.TRUE);
-        resepService.addResep(resep);
-        model.addAttribute("resep", resep);
-
-        List<JumlahModel> listJumlah = resep.getListJumlah();
-        model.addAttribute("listJumlah", listJumlah);
-        model.addAttribute("resep", resep);
-        model.addAttribute("dokter", resep.getAppointment().getDokter());
-        model.addAttribute("pasien", resep.getAppointment().getPasien());
-        model.addAttribute("apoteker", resep.getApoteker());
-        model.addAttribute("stokAda", true);
-        return "redirect:/resep/view-detail/?id=" + idResep;
-    }
-
-
-}
-
+}
\ No newline at end of file
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/model/ResepDTO.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/model/ResepDTO.java
new file mode 100644
index 0000000..317ce78
--- /dev/null
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/model/ResepDTO.java
@@ -0,0 +1,25 @@
+package spring.tk.springtkapap.resep.model;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import spring.tk.springtkapap.appointment.model.AppointmentModel;
+import spring.tk.springtkapap.jumlah.model.JumlahModel;
+import spring.tk.springtkapap.user.model.ApotekerModel;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+@Setter
+@Getter
+@NoArgsConstructor
+@AllArgsConstructor
+public class ResepDTO {
+    Long id;
+    Boolean isDone;
+    LocalDateTime createdAt;
+    ApotekerModel apoteker;
+    List<JumlahModel> listJumlah;
+    AppointmentModel appointment;
+}
-- 
GitLab


From 64de88e46d23fa30ad61473779db392b63fb0491 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 22:12:41 +0700
Subject: [PATCH 14/16] feat: fix merge

---
 .../resep/controller/ResepController.java     | 24 ++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
index 652ad80..d468ab2 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
@@ -24,6 +24,7 @@ import spring.tk.springtkapap.obat.service.ObatService;
 import spring.tk.springtkapap.resep.model.ResepDTO;
 import spring.tk.springtkapap.resep.model.ResepModel;
 import spring.tk.springtkapap.resep.service.ResepService;
+import spring.tk.springtkapap.tagihan.TagihanService;
 import spring.tk.springtkapap.user.model.ApotekerModel;
 
 @Controller
@@ -46,6 +47,9 @@ public class ResepController {
     @Autowired
     private ApotekerService apotekerService;
 
+    @Autowired
+    private TagihanService tagihanService;
+
     @GetMapping("/add/{kodeAppointment}")
     public String addResepForm(@PathVariable("kodeAppointment") String kodeApt, Model model){
         AppointmentModel appointment = appointmentService.getAppointment(kodeApt);
@@ -173,4 +177,22 @@ public class ResepController {
         return "resep/form-add-resep";
     }
 
-}
\ No newline at end of file
+    @PostMapping("/update/{idResep}")
+    public String updateResep(@PathVariable Long idResep, Model model){
+        ResepModel resep = resepService.getResep(idResep);
+        AppointmentModel appointment = resep.getAppointment();
+        resep.setIsDone(Boolean.TRUE);
+        resepService.addResep(resep);
+        model.addAttribute("resep", resep);
+        List<JumlahModel> listJumlah = resep.getListJumlah();
+        tagihanService.addTagihan(appointment, listJumlah);
+
+        model.addAttribute("listJumlah", listJumlah);
+        model.addAttribute("resep", resep);
+        model.addAttribute("dokter", resep.getAppointment().getDokter());
+        model.addAttribute("pasien", resep.getAppointment().getPasien());
+        model.addAttribute("apoteker", resep.getApoteker());
+        model.addAttribute("stokAda", true);
+        return "redirect:/resep/view-detail/?id=" + idResep;
+    }
+}
-- 
GitLab


From 56e888e6436b93edaae98695da29afce0f49c274 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 22:31:40 +0700
Subject: [PATCH 15/16] feat: handle sonarqube

---
 SpringTkApap/gradle.properties                |  4 +-
 .../resep/controller/ResepController.java     | 61 ++++++++++---------
 .../SpringTkApap/resep/model/ResepModel.java  |  5 +-
 .../resep/rest/ResepRestController.java       |  8 +--
 .../tagihan/TagihanServiceImpl.java           |  2 +-
 5 files changed, 43 insertions(+), 37 deletions(-)

diff --git a/SpringTkApap/gradle.properties b/SpringTkApap/gradle.properties
index f52c4b6..0478156 100644
--- a/SpringTkApap/gradle.properties
+++ b/SpringTkApap/gradle.properties
@@ -1,3 +1,3 @@
 systemProp.sonar.host.url=https://sonarqube.cs.ui.ac.id
-systemProp.sonar.projectKey= tk-apap-53
-systemProp.sonar.login=57e13a92a36c10e15e0a60bf9f39493b1c8b28ac
\ No newline at end of file
+systemProp.sonar.projectKey= spring-tk-apap-53
+systemProp.sonar.login=5aaccf38ab7b1144d0cf4365521911591314e892
\ No newline at end of file
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
index d468ab2..ab7fe8d 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/controller/ResepController.java
@@ -50,29 +50,34 @@ public class ResepController {
     @Autowired
     private TagihanService tagihanService;
 
+    private static final String RESEP = "resep";
+    private static final String LISTOBAT = "listObat";
+    private static final String LISTAPOTEKER = "listApoteker";
+    private static final String LISTJUMLAH = "listJumlah";
+    private static final String FORMADDRESEP = "resep/form-add-resep";
+
     @GetMapping("/add/{kodeAppointment}")
     public String addResepForm(@PathVariable("kodeAppointment") String kodeApt, Model model){
         AppointmentModel appointment = appointmentService.getAppointment(kodeApt);
-        ResepDTO resep = new ResepDTO();
+        var resep = new ResepDTO();
         List<ObatModel> listObat = obatService.getListObat();
         List<ApotekerModel> listApoteker = apotekerService.getAll();
 
-        // resep.setIsDone(false);
         resep.setAppointment(appointment);
         resep.setListJumlah(new ArrayList<>());
         resep.getListJumlah().add(new JumlahModel());
 
         model.addAttribute("kode", appointment.getKode());
-        model.addAttribute("resep", resep);
-        model.addAttribute("listObat", listObat);
-        model.addAttribute("listApoteker", listApoteker);
+        model.addAttribute(RESEP, resep);
+        model.addAttribute(LISTOBAT, listObat);
+        model.addAttribute(LISTAPOTEKER, listApoteker);
 
-        return "resep/form-add-resep";
+        return FORMADDRESEP;
     }
 
     @PostMapping("/add/{kodeAppointment}")
     public String addResepSubmit(@PathVariable("kodeAppointment") String kodeApt, @ModelAttribute ResepDTO resep, Model model){
-        ResepModel resepModel = new ResepModel();
+        var resepModel = new ResepModel();
         resepModel.setApoteker(resep.getApoteker());
         resepModel.setListJumlah(resep.getListJumlah());
 
@@ -91,7 +96,7 @@ public class ResepController {
         resepService.addResep(resepModel);
         appointment.setListResep(resepModel);
         appointmentService.updateAppointment(appointment);
-        model.addAttribute("resep", resepModel);
+        model.addAttribute(RESEP, resepModel);
         return "resep/add-resep";
     }
 
@@ -107,8 +112,8 @@ public class ResepController {
     public String viewDetailResepById(@RequestParam(value = "id") Long id, Model model) {
         ResepModel resep = resepService.getResep(id);
         List<JumlahModel> listJumlah = resep.getListJumlah();
-        model.addAttribute("listJumlah", listJumlah);
-        model.addAttribute("resep", resep);
+        model.addAttribute(LISTJUMLAH, listJumlah);
+        model.addAttribute(RESEP, resep);
         model.addAttribute("dokter", resep.getAppointment().getDokter());
         model.addAttribute("pasien", resep.getAppointment().getPasien());
         model.addAttribute("apoteker", resep.getApoteker());
@@ -117,7 +122,7 @@ public class ResepController {
     }
 
     @PostMapping(value = "/add/{kodeAppointment}", params = {"addRowResep"})
-    private String addRowObatMultiple(
+    public String addRowObatMultiple(
             @PathVariable("kodeAppointment") String kodeApt,
             @ModelAttribute ResepDTO resep,
             Model model
@@ -126,33 +131,33 @@ public class ResepController {
         AppointmentModel appointment = appointmentService.getAppointment(kodeApt);
         List<ApotekerModel> listApoteker = apotekerService.getAll();
 
-        if (resep.getListJumlah() == null || resep.getListJumlah().size() == 0) {
+        if (resep.getListJumlah() == null || resep.getListJumlah().isEmpty()) {
             resep.setListJumlah(new ArrayList<>());
         }
         resep.setAppointment(appointment);
 
-        ResepModel resepModel = new ResepModel();
+        var resepModel = new ResepModel();
         resepModel.setAppointment(appointment);
         resepModel.setListJumlah(resep.getListJumlah());
         resepModel.setApoteker(resep.getApoteker());
 
-        JumlahModel newJumlah = new JumlahModel();
+        var newJumlah = new JumlahModel();
         newJumlah.setResep(resepModel);
 
         resep.getListJumlah().add(newJumlah);
         List<JumlahModel> listJumlah = jumlahService.getListJumlah();
 
-        model.addAttribute("resep", resep);
-        model.addAttribute("listJumlah", listJumlah);
-        model.addAttribute("listObat", listObat);
+        model.addAttribute(RESEP, resep);
+        model.addAttribute(LISTJUMLAH, listJumlah);
+        model.addAttribute(LISTOBAT, listObat);
         model.addAttribute("kode", appointment.getKode());
-        model.addAttribute("listApoteker", listApoteker);
+        model.addAttribute(LISTAPOTEKER, listApoteker);
 
-        return "resep/form-add-resep";
+        return FORMADDRESEP;
     }
 
     @PostMapping(value = "/add/{kodeAppointment}", params = {"deleteRowResep"})
-    private String deleteRowObatMultiple(
+    public String deleteRowObatMultiple(
             @PathVariable("kodeAppointment") String kodeApt,
             @ModelAttribute ResepDTO resep,
             @RequestParam("deleteRowResep") Integer row,
@@ -168,13 +173,13 @@ public class ResepController {
 
         List<JumlahModel> listJumlah = jumlahService.getListJumlah();
 
-        model.addAttribute("resep", resep);
-        model.addAttribute("listJumlah", listJumlah);
-        model.addAttribute("listObat", listObat);
+        model.addAttribute(RESEP, resep);
+        model.addAttribute(LISTJUMLAH, listJumlah);
+        model.addAttribute(LISTOBAT, listObat);
         model.addAttribute("kode", appointment.getKode());
-        model.addAttribute("listApoteker", listApoteker);
+        model.addAttribute(LISTAPOTEKER, listApoteker);
 
-        return "resep/form-add-resep";
+        return FORMADDRESEP;
     }
 
     @PostMapping("/update/{idResep}")
@@ -183,12 +188,12 @@ public class ResepController {
         AppointmentModel appointment = resep.getAppointment();
         resep.setIsDone(Boolean.TRUE);
         resepService.addResep(resep);
-        model.addAttribute("resep", resep);
+        model.addAttribute(RESEP, resep);
         List<JumlahModel> listJumlah = resep.getListJumlah();
         tagihanService.addTagihan(appointment, listJumlah);
 
-        model.addAttribute("listJumlah", listJumlah);
-        model.addAttribute("resep", resep);
+        model.addAttribute(LISTJUMLAH, listJumlah);
+        model.addAttribute(RESEP, resep);
         model.addAttribute("dokter", resep.getAppointment().getDokter());
         model.addAttribute("pasien", resep.getAppointment().getPasien());
         model.addAttribute("apoteker", resep.getApoteker());
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/model/ResepModel.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/model/ResepModel.java
index 718872f..ced7f9e 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/model/ResepModel.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/model/ResepModel.java
@@ -2,7 +2,6 @@ package spring.tk.springtkapap.resep.model;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.sun.istack.NotNull;
 import lombok.*;
 import org.hibernate.annotations.OnDelete;
 import org.hibernate.annotations.OnDeleteAction;
@@ -12,6 +11,7 @@ import spring.tk.springtkapap.jumlah.model.JumlahModel;
 import spring.tk.springtkapap.user.model.ApotekerModel;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.time.LocalDateTime;
 import java.util.List;
@@ -27,7 +27,8 @@ public class ResepModel implements Serializable {
     @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
     private Long id;
 
-    @NotNull @Column(nullable = false)
+    @NotNull
+    @Column(nullable = false)
     private Boolean isDone;
 
     @NotNull @Column(nullable = false)
diff --git a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/rest/ResepRestController.java b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/rest/ResepRestController.java
index 0669589..bc3bb5a 100644
--- a/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/rest/ResepRestController.java
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/resep/rest/ResepRestController.java
@@ -24,13 +24,13 @@ public class ResepRestController {
     ResepRestService resepRestService;
 
     @PostMapping("/add/{kodeAppointment}")
-    private ResponseEntity createResep(@RequestBody ResepDTO resep, BindingResult bindingResult, @PathVariable String kodeAppointment){
+    public ResponseEntity<Object> createResep(@RequestBody ResepDTO resep, BindingResult bindingResult, @PathVariable String kodeAppointment){
         if (bindingResult.hasFieldErrors()) {
             throw new ResponseStatusException(
                     HttpStatus.BAD_REQUEST, "Request body has invalid type or missing field."
             );
         } else {
-            ResepModel resepModel = new ResepModel();
+            var resepModel = new ResepModel();
             resepModel.setIsDone(resep.getIsDone());
             resepModel.setCreatedAt(resep.getCreatedAt());
             resepModel.setApoteker(resep.getApoteker());
@@ -42,7 +42,7 @@ public class ResepRestController {
     }
 
     @GetMapping("/detail/{idResep}")
-    private ResponseEntity<ResepModel> getResep(@PathVariable(name = "id") Long id){
+    public ResponseEntity<ResepModel> getResep(@PathVariable(name = "id") Long id){
         try {
             return ResponseEntity.status(HttpStatus.OK).body(resepRestService.getResep(id));
         } catch (NoSuchElementException e) {
@@ -53,7 +53,7 @@ public class ResepRestController {
     }
 
     @GetMapping("/all")
-    private ResponseEntity<List<ResepModel>> getAllResep(){
+    public ResponseEntity<List<ResepModel>> getAllResep(){
         return ResponseEntity.status(HttpStatus.OK).body(resepRestService.getListResep());
     }
 }
\ No newline at end of file
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
index 45f1d91..b9267c2 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/tagihan/TagihanServiceImpl.java
@@ -39,7 +39,7 @@ public class TagihanServiceImpl implements TagihanService{
                 obatService.updateObat(obatUpdate);
             }
         }
-        TagihanModel tagihan = new TagihanModel();
+        var tagihan = new TagihanModel();
         tagihan.setAppointment(appointment);
         tagihan.setJumlahTagihan(nominalTagihan);
         tagihan.setIsPaid(Boolean.FALSE);
-- 
GitLab


From 823fd4cd41c3fca5ba78d3d08a47254ad107c807 Mon Sep 17 00:00:00 2001
From: "nandhita.zefania" <nandhita.zefania@ui.ac.id>
Date: Mon, 12 Dec 2022 22:57:20 +0700
Subject: [PATCH 16/16] feat: handle uri parse

---
 tk_apap_flutter/lib/pages/CreateAppointment.dart | 13 +++----------
 tk_apap_flutter/lib/pages/DaftarAppointment.dart |  2 +-
 tk_apap_flutter/lib/pages/DetailAppointment.dart |  4 ++--
 tk_apap_flutter/lib/pages/HomeScreen.dart        |  2 +-
 tk_apap_flutter/lib/pages/LihatProfil.dart       |  2 +-
 tk_apap_flutter/lib/pages/TopUpSaldo.dart        |  4 ++--
 tk_apap_flutter/lib/pages/detailTagihan.dart     |  4 ++--
 tk_apap_flutter/lib/pages/login.dart             |  7 +------
 tk_apap_flutter/lib/pages/register.dart          |  2 +-
 tk_apap_flutter/lib/pages/tagihan.dart           |  2 +-
 tk_apap_flutter/lib/widgets/drawerWidget.dart    |  2 +-
 11 files changed, 16 insertions(+), 28 deletions(-)

diff --git a/tk_apap_flutter/lib/pages/CreateAppointment.dart b/tk_apap_flutter/lib/pages/CreateAppointment.dart
index 7f42d5c..6a7ba2a 100644
--- a/tk_apap_flutter/lib/pages/CreateAppointment.dart
+++ b/tk_apap_flutter/lib/pages/CreateAppointment.dart
@@ -20,11 +20,7 @@ class _CreateAppointmentState extends State<CreateAppointment> {
   // Data yang diperlukan tanggal dan waktu, dropdown [namaDokter - Tarif]
 
   Future<List<Dokter>> getAllDoktor() async {
-<<<<<<< HEAD
-    var uri = Uri.parse('http://10.0.2.2:8080/api/doktor/all');
-=======
-    var uri = Uri.parse('http://192.168.1.2:8080/api/doktor/all');
->>>>>>> 043382a8d2493050d1fd9e4c42073c45da6a4ea9
+    var uri = Uri.parse('https://apap-053.cs.ui.ac.id/api/doktor/all');
     dynamic token = await SessionManager().get('token');
     String tknString = ('Bearer $token');
     print(tknString);
@@ -107,11 +103,8 @@ class _CreateAppointmentState extends State<CreateAppointment> {
                             String strUsername = username;
                             var response = await http.post(
                               Uri.parse(
-<<<<<<< HEAD
-                                  'http://10.0.2.2:8080/api/appointment/create'),
-=======
-                                  'http://192.168.1.2:8080/api/appointment/create'),
->>>>>>> 043382a8d2493050d1fd9e4c42073c45da6a4ea9
+                                  'https://apap-053.cs.ui.ac.id/api/appointment/create'),
+
                               headers: {
                                 'Accept': 'application/json',
                                 'Content-Type': 'application/json; charset=UTF-8',
diff --git a/tk_apap_flutter/lib/pages/DaftarAppointment.dart b/tk_apap_flutter/lib/pages/DaftarAppointment.dart
index 5138fbd..8e16d1f 100644
--- a/tk_apap_flutter/lib/pages/DaftarAppointment.dart
+++ b/tk_apap_flutter/lib/pages/DaftarAppointment.dart
@@ -17,7 +17,7 @@ class DaftarAppointment extends StatefulWidget {
 
 class _DaftarAppointmentState extends State<DaftarAppointment> {
   Future<List<AptDTO>> getAppointment() async {
-    var uri = Uri.parse('http://192.168.1.5:8080/api/appointment/all');
+    var uri = Uri.parse('https://apap-053.cs.ui.ac.id/api/appointment/all');
     dynamic token = await SessionManager().get('token');
     String tknString = ('Bearer $token');
     http.Response response = await http.get(uri, headers: {
diff --git a/tk_apap_flutter/lib/pages/DetailAppointment.dart b/tk_apap_flutter/lib/pages/DetailAppointment.dart
index 8acc8bb..b6ef909 100644
--- a/tk_apap_flutter/lib/pages/DetailAppointment.dart
+++ b/tk_apap_flutter/lib/pages/DetailAppointment.dart
@@ -16,7 +16,7 @@ class DetailAppointment extends StatelessWidget {
 
   Future<DetailDTO> getDetailApt() async {
     String kode = await SessionManager().get("kodeApt") as String;
-    var uri = Uri.parse('http://192.168.1.5:8080/api/appointment/detail/$kode');
+    var uri = Uri.parse('https://apap-053.cs.ui.ac.id/api/appointment/detail/$kode');
     dynamic token = await SessionManager().get("token");
     String tknString = 'Bearer $token';
     log("here");
@@ -100,7 +100,7 @@ class DetailAppointment extends StatelessWidget {
                               const SizedBox(height: 16,),
                               TextButton(
                                 onPressed: (data.detailResep == 0) ? null : () {
-                                    return Navigator.of(context).pushNamed(HomeScreen.routeName); // TODO: Ke Resep
+                                    return Navigator.of(context).pushNamed(HomeScreen.routeName);
                                 },
                                 child: (data.detailResep == 0) ? const Text('Tidak Ada Resep') : const Text('Detail Resep'),
                               ),
diff --git a/tk_apap_flutter/lib/pages/HomeScreen.dart b/tk_apap_flutter/lib/pages/HomeScreen.dart
index 6ed3278..19614cc 100644
--- a/tk_apap_flutter/lib/pages/HomeScreen.dart
+++ b/tk_apap_flutter/lib/pages/HomeScreen.dart
@@ -310,7 +310,7 @@ class _HomeScreenState extends State<HomeScreen> {
     }
   }
 
-  final List<Widget> _children = [ //TODO:ubah pages
+  final List<Widget> _children = [
     HomeScreen(),
     CreateAppointment(),
     LihatProfil(),
diff --git a/tk_apap_flutter/lib/pages/LihatProfil.dart b/tk_apap_flutter/lib/pages/LihatProfil.dart
index 851a247..82b6b93 100644
--- a/tk_apap_flutter/lib/pages/LihatProfil.dart
+++ b/tk_apap_flutter/lib/pages/LihatProfil.dart
@@ -13,7 +13,7 @@ class LihatProfil extends StatelessWidget {
   static const routeName = '/edit';
 
   Future<PasienDTO> getPasien() async {
-    var uri = Uri.parse('http://10.0.2.2:8080/api/pasien/getself');
+    var uri = Uri.parse('https://apap-053.cs.ui.ac.id/api/pasien/getself');
     dynamic token = await SessionManager().get('token');
     String tknString = ('Bearer $token');
     http.Response response = await http.get(uri, headers: {
diff --git a/tk_apap_flutter/lib/pages/TopUpSaldo.dart b/tk_apap_flutter/lib/pages/TopUpSaldo.dart
index a8ab4f3..4e96423 100644
--- a/tk_apap_flutter/lib/pages/TopUpSaldo.dart
+++ b/tk_apap_flutter/lib/pages/TopUpSaldo.dart
@@ -18,7 +18,7 @@ class TopUpSaldo extends StatelessWidget {
   var textJumlahTopUp = TextEditingController();
 
   Future<PasienDTO> getPasien() async {
-    var uri = Uri.parse('http://10.0.2.2:8080/api/pasien/getself');
+    var uri = Uri.parse('https://apap-053.cs.ui.ac.id/api/pasien/getself');
     dynamic token = await SessionManager().get('token');
     String tknString = ('Bearer $token');
     http.Response response = await http.get(uri, headers: {
@@ -303,7 +303,7 @@ class TopUpSaldo extends StatelessWidget {
                             String strUsername = username;
                             var response = await http.post(
                               Uri.parse(
-                                  'http://10.0.2.2:8080/api/pasien/top-up/' + strUsername),
+                                  'https://apap-053.cs.ui.ac.id/api/pasien/top-up/' + strUsername),
                               headers: {
                                 'Accept': 'application/json',
                                 'Content-Type': 'application/json; charset=UTF-8',
diff --git a/tk_apap_flutter/lib/pages/detailTagihan.dart b/tk_apap_flutter/lib/pages/detailTagihan.dart
index 28849d1..ad563eb 100644
--- a/tk_apap_flutter/lib/pages/detailTagihan.dart
+++ b/tk_apap_flutter/lib/pages/detailTagihan.dart
@@ -15,7 +15,7 @@ class DetailTagihan extends StatelessWidget {
 
   Future<TagihanDTO> getDetailTagihan() async {
     String kode = await SessionManager().get("kodeTagihan") as String;
-    var uri = Uri.parse('http://192.168.1.2:8080/api/tagihan/detail/$kode');
+    var uri = Uri.parse('https://apap-053.cs.ui.ac.id/api/tagihan/detail/$kode');
     dynamic token = await SessionManager().get("token");
     String tknString = 'Bearer $token';
     log("here");
@@ -105,7 +105,7 @@ class DetailTagihan extends StatelessWidget {
                                   dynamic kodeTagihan = await SessionManager().get("kodeTagihan");
                                   var response = await http.post(
                                     Uri.parse(
-                                        'http://192.168.1.2:8080/api/tagihan/bayar'),
+                                        'https://apap-053.cs.ui.ac.id/api/tagihan/bayar'),
                                     headers: {
                                       'Accept': 'application/json',
                                       'Content-Type': 'application/json; charset=UTF-8',
diff --git a/tk_apap_flutter/lib/pages/login.dart b/tk_apap_flutter/lib/pages/login.dart
index bb5f597..e5c1054 100644
--- a/tk_apap_flutter/lib/pages/login.dart
+++ b/tk_apap_flutter/lib/pages/login.dart
@@ -24,14 +24,10 @@ class _LoginState extends State<Login> {
   final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
   UserLogin user = UserLogin("", "");
   bool _isHidden = true;
-<<<<<<< HEAD
 
   final url = Uri.parse(
-      'http://10.0.2.2:8080/api/authenticate'); //TODO:ubah sesuai IP Address, nanti pakai link web
+      'https://apap-053.cs.ui.ac.id/api/authenticate');
 
-=======
-  final url = Uri.parse('http://192.168.1.2:8080/api/authenticate'); //TODO:ubah sesuai IP Address, nanti pakai link web
->>>>>>> 043382a8d2493050d1fd9e4c42073c45da6a4ea9
   final header = <String, String>{
     'Content-Type': 'application/json; charset=UTF-8'
   };
@@ -51,7 +47,6 @@ class _LoginState extends State<Login> {
         Map<String, dynamic> jsonResponse = await stringToMap(json);
         print(jsonResponse);
         if (jsonResponse["role"] == "PASIEN") {
-          // TODO: PASIEN
           saveSession(jsonResponse);
           Navigator.of(context).pushReplacementNamed(HomeScreen.routeName);
         } else {
diff --git a/tk_apap_flutter/lib/pages/register.dart b/tk_apap_flutter/lib/pages/register.dart
index c9c032e..c42b9e4 100644
--- a/tk_apap_flutter/lib/pages/register.dart
+++ b/tk_apap_flutter/lib/pages/register.dart
@@ -224,7 +224,7 @@ class _RegisterState extends State<Register> {
                                       if (_formKey.currentState.validate()) {
                                         var response = await http.post(
                                             Uri.parse(
-                                              'http://10.0.2.2:8080/api/pasien/register'),
+                                                'https://apap-053.cs.ui.ac.id/api/pasien/register'),
                                             headers: {
                                               'Accept': 'application/json',
                                               'Content-Type': 'application/json'},
diff --git a/tk_apap_flutter/lib/pages/tagihan.dart b/tk_apap_flutter/lib/pages/tagihan.dart
index ea6f461..8df7ae0 100644
--- a/tk_apap_flutter/lib/pages/tagihan.dart
+++ b/tk_apap_flutter/lib/pages/tagihan.dart
@@ -20,7 +20,7 @@ class DaftarTagihan extends StatefulWidget {
 class _DaftarTagihanState extends State<DaftarTagihan> {
 
   Future<List<TagihanDTO>> getTagihan() async {
-    var uri = Uri.parse('http://192.168.1.2:8080/api/tagihan/all');
+    var uri = Uri.parse('https://apap-053.cs.ui.ac.id/api/tagihan/all');
     dynamic token = await SessionManager().get('token');
     String tknString = ('Bearer $token');
     http.Response response = await http.get(uri,
diff --git a/tk_apap_flutter/lib/widgets/drawerWidget.dart b/tk_apap_flutter/lib/widgets/drawerWidget.dart
index 10e0852..f1011fd 100644
--- a/tk_apap_flutter/lib/widgets/drawerWidget.dart
+++ b/tk_apap_flutter/lib/widgets/drawerWidget.dart
@@ -118,7 +118,7 @@ class CustomDrawer extends StatelessWidget {
                           color: Colors.black
                       ),),
                     onTap: () {
-                      Navigator.of(context).pushNamed(DaftarTagihan.routeName); // TODO: ubah tagihan
+                      Navigator.of(context).pushNamed(DaftarTagihan.routeName);
                     },
                   ),
                   ListTile(
-- 
GitLab