diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/AddDialog/AddDialog.java b/src/main/java/BsK/client/ui/component/CheckUpPage/AddDialog/AddDialog.java index 172c2d7..d85a524 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/AddDialog/AddDialog.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/AddDialog/AddDialog.java @@ -12,6 +12,8 @@ import lombok.extern.slf4j.Slf4j; import org.jdatepicker.impl.JDatePanelImpl; import org.jdatepicker.impl.JDatePickerImpl; import org.jdatepicker.impl.UtilDateModel; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.swing.*; import javax.swing.event.DocumentEvent; @@ -28,6 +30,7 @@ import java.util.Properties; @Slf4j public class AddDialog extends JDialog { + private static final Logger log = LoggerFactory.getLogger(AddDialog.class); private JTextField patientNameField; private JTextField patientYearField; private JTextField patientIdField; @@ -56,11 +59,6 @@ public class AddDialog extends JDialog { } else { JOptionPane.showMessageDialog(this, response.getError()); } - ClientHandler.deleteListener(AddCheckupResponse.class); - ClientHandler.deleteListener(AddPatientResponse.class); - ClientHandler.deleteListener(GetRecentPatientResponse.class); - ClientHandler.deleteListener(GetDistrictResponse.class); - ClientHandler.deleteListener(GetWardResponse.class); setVisible(false); } @@ -104,8 +102,19 @@ public class AddDialog extends JDialog { return -1; } + @Override + public void dispose() { + // Clean up listeners + log.info("Cleaning up listeners"); + ClientHandler.deleteListener(AddCheckupResponse.class); + ClientHandler.deleteListener(AddPatientResponse.class); + ClientHandler.deleteListener(GetRecentPatientResponse.class); + super.dispose(); + } + public AddDialog(Frame parent) { super(parent, "Add Patient", true); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); // Set size of the dialog setSize(1000, 400); @@ -436,11 +445,6 @@ public class AddDialog extends JDialog { JPanel ButtonPanel = new JPanel(); JButton closeButton = new JButton("Close"); closeButton.addActionListener(e -> { - ClientHandler.deleteListener(AddCheckupResponse.class); - ClientHandler.deleteListener(AddPatientResponse.class); - ClientHandler.deleteListener(GetRecentPatientResponse.class); - ClientHandler.deleteListener(GetDistrictResponse.class); - ClientHandler.deleteListener(GetWardResponse.class); setVisible(false); }); ButtonPanel.add(closeButton); diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java index fdc3d8a..c307919 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java @@ -40,6 +40,7 @@ public class CheckUpPage extends JPanel { private String[][] history; private DefaultTableModel model, historyModel; private JTable table1, historyTable; + private final ResponseListener checkUpQueueUpdateListener = this::handleGetCheckUpQueueUpdateResponse; private final ResponseListener checkUpQueueListener = this::handleGetCheckUpQueueResponse; private final ResponseListener customerHistoryListener = this::handleGetCustomerHistoryResponse; private final ResponseListener districtResponseListener = this::handleGetDistrictResponse; @@ -61,9 +62,13 @@ public class CheckUpPage extends JPanel { boolean returnCell = false; public void updateQueue() { - ClientHandler.addResponseListener(GetCheckUpQueueResponse.class, checkUpQueueListener); NetworkUtil.sendPacket(ClientHandler.ctx.channel(), new GetCheckUpQueueRequest()); } + + public void updateUpdateQueue() { + NetworkUtil.sendPacket(ClientHandler.ctx.channel(), new GetCheckUpQueueUpdateRequest()); + } + private int findProvinceIndex(String province) { for (int i = 0; i < LocalStorage.provinces.length; i++) { if (TextUtils.removeAccents(LocalStorage.provinces[i]).equals(TextUtils.removeAccents(province))) { @@ -94,7 +99,9 @@ public class CheckUpPage extends JPanel { public CheckUpPage(MainFrame mainFrame) { setLayout(new BorderLayout()); - // add history listener + + ClientHandler.addResponseListener(GetCheckUpQueueResponse.class, checkUpQueueListener); + ClientHandler.addResponseListener(GetCheckUpQueueUpdateResponse.class, checkUpQueueUpdateListener); ClientHandler.addResponseListener(GetCustomerHistoryResponse.class, customerHistoryListener); ClientHandler.addResponseListener(GetDistrictResponse.class, districtResponseListener); ClientHandler.addResponseListener(GetWardResponse.class, wardResponseListener); @@ -251,7 +258,7 @@ public class CheckUpPage extends JPanel { rightButton.addActionListener(e -> { addDialog = new AddDialog(mainFrame); addDialog.setVisible(true); - updateQueue(); + updateUpdateQueue(); }); topPanel.add(titleText1, BorderLayout.WEST); @@ -835,6 +842,12 @@ public class CheckUpPage extends JPanel { LocalStorage.doctorsName = response.getDoctorsName(); } + private void handleGetCheckUpQueueUpdateResponse(GetCheckUpQueueUpdateResponse response) { + log.info("Received checkup update queue"); + this.queue = response.getQueue(); + model.setDataVector(this.queue, new String[]{"Mã khám bệnh", "Ngày Tháng", "Họ", "Tên", "Bác Sĩ", "Triệu chứng", "Chẩn đoán", "Ghi chú", "Trạng thái"}); + } + private void handleGetCheckUpQueueResponse(GetCheckUpQueueResponse response) { log.info("Received checkup queue"); this.queue = response.getQueue(); diff --git a/src/main/java/BsK/common/packet/req/GetCheckUpQueueUpdateRequest.java b/src/main/java/BsK/common/packet/req/GetCheckUpQueueUpdateRequest.java new file mode 100644 index 0000000..5bf5bf8 --- /dev/null +++ b/src/main/java/BsK/common/packet/req/GetCheckUpQueueUpdateRequest.java @@ -0,0 +1,6 @@ +package BsK.common.packet.req; + +import BsK.common.packet.Packet; + +public class GetCheckUpQueueUpdateRequest implements Packet { +} diff --git a/src/main/java/BsK/common/packet/res/GetCheckUpQueueUpdateResponse.java b/src/main/java/BsK/common/packet/res/GetCheckUpQueueUpdateResponse.java new file mode 100644 index 0000000..e436195 --- /dev/null +++ b/src/main/java/BsK/common/packet/res/GetCheckUpQueueUpdateResponse.java @@ -0,0 +1,11 @@ +package BsK.common.packet.res; + +import BsK.common.packet.Packet; +import lombok.AllArgsConstructor; +import lombok.Data; + +@AllArgsConstructor +@Data +public class GetCheckUpQueueUpdateResponse implements Packet { + private String[][] queue; +} \ No newline at end of file diff --git a/src/main/java/BsK/server/network/handler/ServerHandler.java b/src/main/java/BsK/server/network/handler/ServerHandler.java index d6935f1..d42cefb 100644 --- a/src/main/java/BsK/server/network/handler/ServerHandler.java +++ b/src/main/java/BsK/server/network/handler/ServerHandler.java @@ -112,6 +112,72 @@ public class ServerHandler extends SimpleChannelInboundHandler resultList = new ArrayList<>(); + while (rs.next()) { + String checkupId = rs.getString("checkup_id"); + String checkupDate = rs.getString("checkup_date"); + long checkupDateLong = Long.parseLong(checkupDate); + Timestamp timestamp = new Timestamp(checkupDateLong); + Date date = new Date(timestamp.getTime()); // Needed to recode + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + checkupDate = sdf.format(date); + String customerLastName = rs.getString("customer_last_name"); + String customerFirstName = rs.getString("customer_first_name"); + String doctorFirstName = rs.getString("doctor_first_name"); + String doctorLastName = rs.getString("doctor_last_name"); + String symptoms = rs.getString("symptoms"); + String diagnosis = rs.getString("diagnosis"); + String notes = rs.getString("notes"); + String status = rs.getString("status"); + String customerId = rs.getString("customer_id"); + String customerNumber = rs.getString("customer_number"); + String customerAddress = rs.getString("customer_address"); + String customerWeight = rs.getString("customer_weight"); + String customerHeight = rs.getString("customer_height"); + String customerGender = rs.getString("customer_gender"); + String customerDob = rs.getString("customer_dob"); + + String result = String.join("|", checkupId, checkupDate, customerLastName, customerFirstName, doctorLastName + " " + doctorFirstName, symptoms, @@ -129,9 +195,11 @@ public class ServerHandler extends SimpleChannelInboundHandler