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
new file mode 100644
index 0000000000000000000000000000000000000000..3f7f265c3344377f8f41ec36a0870817e7e5e2dc
--- /dev/null
+++ b/SpringTkApap/src/main/java/spring/TK/SpringTkApap/user/controller/DokterRestController.java
@@ -0,0 +1,34 @@
+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.user.model.DokterDTO;
+import spring.TK.SpringTkApap.user.service.DokterService;
+
+import java.util.List;
+
+@RestController
+@CrossOrigin(origins = "*")
+@RequestMapping("/api/doktor")
+@Slf4j
+public class DokterRestController {
+
+    Logger logger = LoggerFactory.getLogger(DokterRestController.class);
+
+    @Autowired
+    private DokterService dokterService;
+
+    @GetMapping(value = "/all")
+    public List<DokterDTO>  getAllDoktor() {
+        logger.info("Berhasil mengambil data seluruh dokter yang ada");
+        return dokterService.getAll();
+    }
+
+}
diff --git a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java
index fe12341954572a67dba668e4a405629c6f02d2e1..a95004bfd6fd3c8bdd5aaaefb7431548cc88106f 100644
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java
+++ b/SpringTkApap/src/main/java/spring/tk/springtkapap/appointment/AppointmentServiceImpl.java
@@ -1,7 +1,7 @@
 package spring.tk.springtkapap.appointment;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
+import org.springframework.stereotype.Service;<<
 import spring.tk.springtkapap.appointment.model.AppointmentModel;
 import spring.tk.springtkapap.user.model.DokterModel;
 
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 4f8fb40883f42e6234e4648afeb0c0309c0340af..1a26d1a1e48046cc3b637015e45bab7a3eba8430 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,6 +1,8 @@
 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;
@@ -11,89 +13,72 @@ 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.time.LocalDateTime;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
+
 
 @Controller
 @RequestMapping("/dokter")
 @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();
-        var dokterRevDTO = new DokterRevDTO();
-        List<String> listLabels = new ArrayList<>();
-        List<Long> listRevenue = new ArrayList<>();
-        List<Integer> listBanyakApt = new ArrayList<>();
-        for (DokterModel dokterModel : listDokter) {
-            List<AppointmentModel> listApt = appointmentService.findAllByDokter(dokterModel);
-            listLabels.add(dokterModel.getUsername());
-            long rev = 0;
-            var banyakApt = 0;
-            var i = 0;
-            while (i < listApt.size()) {
-                rev += dokterModel.getTarif();
-                banyakApt += 1;
-                i++;
-            }
-            listRevenue.add(rev);
-            listBanyakApt.add(banyakApt);
-        }
-        dokterRevDTO.setNama(listLabels);
-        dokterRevDTO.setRevenue(listRevenue);
-        dokterRevDTO.setBanyakAppointment(listBanyakApt);
-        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());
-        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<>();
-        for (String usernameDokter : listString) {
-            var dokterModel = dokterService.getDokterByUsername(usernameDokter);
-            List<AppointmentModel> listApt = appointmentService.findAllByDokter(dokterModel);
-            listLabels.add(dokterModel.getUsername());
-            long rev = 0;
-            var banyakApt = 0;
-            List<LocalDate> tanggal = new ArrayList<>();
+        int[] rev = new int[choosed.length];
+        int[] 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++) {
+            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];
             for (AppointmentModel apt : listApt) {
-                log.info(apt.getWaktuAwal().toString());
-                rev += dokterModel.getTarif();
-                banyakApt += 1;
-                tanggal.add(apt.getWaktuAwal().toLocalDate());
+                dataMonthly[apt.getWaktuAwal().getMonthValue()-1] += dokter.getTarif();
+                dataDaily[apt.getWaktuAwal().getDayOfMonth()-1] += dokter.getTarif();
             }
-            listRevenue.add(rev);
-            listBanyakApt.add(banyakApt);
-            listTanggal.add(tanggal);
+            monthlyRev.add(dataMonthly);
+            dailyRev.add(dataDaily);
+        }
+
+        for (int 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++) {
+            day.add(LocalDateTime.of(LocalDateTime.now().getYear(), LocalDateTime.now().getMonth(), 1, 0, 0).plusDays(i).getDayOfWeek().toString());
         }
-        dokterRevDTO.setNama(listLabels);
-        dokterRevDTO.setRevenue(listRevenue);
-        dokterRevDTO.setBanyakAppointment(listBanyakApt);
-        dokterRevDTO.setTanggal(listTanggal);
-        model.addAttribute(LISTDOKTER, dokterRevDTO);
+        System.out.println(day);
+        model.addAttribute("label", choosed);
+        model.addAttribute("rev", rev);
+        model.addAttribute("banyakApt", banyakApt);
+        model.addAttribute("bulan", month);
+        model.addAttribute("day", day);
+        model.addAttribute("monthlyRev", monthlyRev);
+        model.addAttribute("dailyRev", dailyRev);
+
         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
deleted file mode 100644
index 9cc803a5681bcd972c75c2e34997596c4db430d5..0000000000000000000000000000000000000000
--- a/SpringTkApap/src/main/java/spring/tk/springtkapap/user/controller/DokterRestController.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package spring.tk.springtkapap.user.controller;
-
-import lombok.extern.slf4j.Slf4j;
-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.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;
-
-@RestController
-@CrossOrigin(origins = "apap-tk-53.cs.ui.ac.id")
-@RequestMapping("/api/doktor")
-@Slf4j
-public class DokterRestController {
-
-    @Autowired
-    private DokterService dokterService;
-
-    @Autowired
-    private AppointmentService appointmentService;
-
-    @GetMapping(value = "/all")
-    public List<DokterDTO> getAllDoktor() {
-        log.info("Berhasil mengambil data seluruh dokter yang ada");
-        return dokterService.getAll();
-    }
-
-    @GetMapping(value = "/rev")
-    public DokterRevDTO getDokterRev() {
-        List<DokterModel> listDokter = dokterService.retrieveAll();
-        var dokterRevDTO = new DokterRevDTO();
-        List<String> listLabels = new ArrayList<>();
-        List<Long> listRevenue = new ArrayList<>();
-        List<Integer> listBanyakApt = new ArrayList<>();
-        for (DokterModel dokterModel : listDokter) {
-            List<AppointmentModel> listApt = appointmentService.findAllByDokter(dokterModel);
-            listLabels.add(dokterModel.getUsername());
-            long rev = 0;
-            var banyakApt = 0;
-            var i = 0;
-            while (i < listApt.size()) {
-                rev += dokterModel.getTarif();
-                banyakApt += 1;
-                i++;
-            }
-            listRevenue.add(rev);
-            listBanyakApt.add(banyakApt);
-        }
-        dokterRevDTO.setNama(listLabels);
-        dokterRevDTO.setRevenue(listRevenue);
-        dokterRevDTO.setBanyakAppointment(listBanyakApt);
-        return dokterRevDTO;
-    }
-
-}
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
index 44cc5b40e116758b9942e6564acd3eea14af156b..33bfa1b1a739fec4cc5fab49250214fbd4ada019 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
@@ -14,8 +14,9 @@ import java.util.List;
 @AllArgsConstructor
 @NoArgsConstructor
 public class DokterRevDTO implements Serializable {
-    private List<String> nama;
-    private List<Long> revenue;
-    private List<Integer> banyakAppointment;
-    private List<List<LocalDate>> tanggal;
+    private int[] month = new int[12];
+    private String nama;
+    private Long revenue = 0L;
+    private Integer banyakAppointment = 0;
+    private List<LocalDate> tanggal;
 }
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 63a9982c4eee9d57495aaa7b4a591b275160d61b..7f06613727add92b13468538d56c6d464a44c766 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
@@ -4,6 +4,7 @@ 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
diff --git a/SpringTkApap/src/main/resources/templates/dokter/dokter-chart.html b/SpringTkApap/src/main/resources/templates/dokter/dokter-chart.html
index 33a4224855966957340d1b7101d24a5466ebd43b..4d4ace46daf29b2215767b59235cb675350baf0e 100644
--- a/SpringTkApap/src/main/resources/templates/dokter/dokter-chart.html
+++ b/SpringTkApap/src/main/resources/templates/dokter/dokter-chart.html
@@ -28,10 +28,12 @@
                 </div>
                 <div id="line-chart">
                     <canvas id="yourChart" height="700" width="500"></canvas>
-                    <input type="date" onchange="filterData()" id="startDate"></input>
-                    <input type="date" onchange="filterData()" id="endDate"></input>
+                    <button type="button" class="btn btn-outline-danger" onclick="changesType('monthly')">monthly
+                    </button>
+                    <button type="button" class="btn btn-outline-danger" onclick="changesType('daily')">daily</button>
                 </div>
-                <button type="button" id="changes" onclick="changes()" class="btn btn-outline-success">Changes Style</button>
+                <button type="button" id="changes" onclick="changes()" class="btn btn-outline-success">Changes Style
+                </button>
                 <a class="btn btn-primary" href="/">Home</a>
             </div>
         </div>
@@ -41,9 +43,10 @@
 
 
 <script th:inline="javascript">
-    getData();
-    var newChart;
-    var data;
+    getData('revenue');
+    getDataLines('monthly');
+    var barChart;
+    var lineChart;
 
     function changes() {
         const lineDiv = document.getElementById('line-chart');
@@ -60,43 +63,81 @@
         }
     }
 
-    async function getDataLines() {
-        data = [[${listDokter}]]
-        newChart = new Chart(document.getElementById('yourChart'), {
-            type: 'line',
-            data: {
-                labels: data.tanggal,
-                datasets: [
-                    {
-                        labels: data.name,
-                        data: data.revenue
+    async function getDataLines(types) {
+        if (types === 'monthly') {
+            let listDokter = [[${label}]]
+            let monthly = [[${monthlyRev}]]
+            let dataset = []
+
+            for (let i = 0; i < listDokter.length; i++) {
+                let data = {
+                    label: listDokter[i],
+                    data: monthly[i]
+                }
+                dataset.push(data);
+            }
+
+            const data = {
+                labels: [[${bulan}]],
+                datasets: dataset
+            }
+            lineChart = new Chart(document.getElementById('yourChart'), {
+                    type: 'line',
+                    data: data,
+                    options: {
+                        legend: {display: false},
+                        title: {
+                            display: true,
+                            text: "Revenue Dokter"
+                        }
                     }
-                ]
-            }, options: {
-                legend: {display: false},
-                title: {
-                    display: true,
-                    text: "Revenue Dokter"
                 }
+            )
+        } else {
+            let listDokter = [[${label}]]
+            let daily = [[${dailyRev}]]
+            let dataset = []
+
+            for (let i = 0; i < listDokter.length; i++) {
+                let data = {
+                    label: listDokter[i],
+                    data: daily[i]
+                }
+                dataset.push(data);
+            }
+            const data = {
+                labels: [[${day}]],
+                datasets: dataset
             }
-        })
+            lineChart = new Chart(document.getElementById('yourChart'), {
+                type: 'line',
+                data: data,
+                options: {
+                    legend: {display: false},
+                    title: {
+                        display: true,
+                        text: "Revenue Dokter"
+                    }
+                }
+            })
+        }
     }
 
     async function getData(types) {
         if (types === "revenue") {
-            data = [[${listDokter}]]
-            console.log(data);
-            newChart = new Chart(document.getElementById('myChart'), {
+            const data = {
+                labels: [[${label}]],
+                datasets: [{
+                    label: "Revenue",
+                    data: [[${rev}]],
+                    borderWidth: 2
+                }]
+            }
+
+            barChart = new Chart(document.getElementById('myChart'), {
                 type: 'bar',
-                data: {
-                    labels: data.nama,
-                    datasets: [
-                        {
-                            label: "revenue",
-                            data: data.revenue
-                        }
-                    ]
-                }, options: {
+                data: data,
+                options: {
                     legend: {display: false},
                     title: {
                         display: true,
@@ -105,37 +146,45 @@
                 }
             })
         } else {
-            data = [[${listDokter}]]
-            console.log(data);
-            newChart = new Chart(document.getElementById('myChart'), {
+            const data = {
+                labels: [[${label}]],
+                datasets: [{
+                    label: "Banyak Appointment",
+                    data: [[${banyakApt}]],
+                    borderWidth: 2
+                }]
+            }
+
+            barChart = new Chart(document.getElementById('myChart'), {
                 type: 'bar',
-                data: {
-                    labels: data.nama,
-                    datasets: [
-                        {
-                            label: "banyakAppointment",
-                            data: data.banyakAppointment
-                        }
-                    ]
-                }, options: {
+                data: data,
+                options: {
                     legend: {display: false},
                     title: {
                         display: true,
-                        text: "Banyak appointment dokter"
+                        text: "Banyak Appointment"
                     }
                 }
             })
         }
     }
 
+    function changesType(type) {
+        if (type === 'monthly') {
+            lineChart.destroy();
+            getDataLines('monthly')
+        } else {
+            lineChart.destroy();
+            getDataLines('daily')
+        }
+    }
+
     function dataType(type) {
-        var newDataset
-        newChart.destroy()
         if (type === "revenue") {
-            console.log(data.revenue);
+            barChart.destroy();
             getData("revenue")
         } else {
-            console.log(data.banyakAppointment);
+            barChart.destroy();
             getData("banyak Appointment")
         }
     }