From 4b2598fb5b3f93397f6d56c1d287b797f9380a73 Mon Sep 17 00:00:00 2001 From: lds217 <91755733+lds217@users.noreply.github.com> Date: Sun, 23 Feb 2025 19:27:47 -0500 Subject: [PATCH] [add]! :add to checkup --- src/main/java/BsK/client/LocalStorage.java | 1 + .../CheckUpPage/AddDialog/AddDialog.java | 22 ++++++-- .../ui/component/CheckUpPage/CheckUpPage.java | 5 +- .../ui/component/LoginPage/LoginPage.java | 1 + .../common/packet/req/AddCheckupRequest.java | 14 +++++ .../common/packet/res/AddCheckupResponse.java | 12 ++++ .../server/network/handler/ServerHandler.java | 53 ++++++++++++++++++ src/main/resources/database/BSK.db | Bin 1445888 -> 1458176 bytes 8 files changed, 101 insertions(+), 7 deletions(-) create mode 100644 src/main/java/BsK/common/packet/req/AddCheckupRequest.java create mode 100644 src/main/java/BsK/common/packet/res/AddCheckupResponse.java diff --git a/src/main/java/BsK/client/LocalStorage.java b/src/main/java/BsK/client/LocalStorage.java index 5b1e17d..f35a567 100644 --- a/src/main/java/BsK/client/LocalStorage.java +++ b/src/main/java/BsK/client/LocalStorage.java @@ -11,6 +11,7 @@ import java.util.HashMap; public class LocalStorage { public static String username; public static Role role; + public static int userId; public static String ClinicName = "Phòng khám BSK"; public static String ClinicAddress = "Số ABC, Đường XYZ, Quận 1, TP.HCM"; public static String ClinicPhone = "0123456789"; 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 da7d67f..dbeff5c 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 @@ -43,12 +43,22 @@ public class AddDialog extends JDialog { private final ResponseListener districtResponseListener = this::handleGetDistrictResponse; private final ResponseListener wardResponseListener = this::handleGetWardResponse; private final ResponseListener addPatientResponseListener = this::handleAddPatientResponse; + private final ResponseListener addCheckupResponseListener = this::handleAddCheckupResponse; private JComboBox doctorComboBox; JButton saveButton; private DefaultComboBoxModel districtModel, wardModel; private JDatePickerImpl dobPicker; - + private void handleAddCheckupResponse(AddCheckupResponse response) { + log.info("Received AddCheckupResponse"); + if (response.isSuccess()) { + JOptionPane.showMessageDialog(this, "Thêm bệnh nhân vào khám thành công"); + setVisible(false); + } else { + JOptionPane.showMessageDialog(this, response.getError()); + } + setVisible(false); + } private void sendGetRecentPatientRequest() { log.info("Sending GetRecentPatientRequest"); @@ -104,6 +114,7 @@ public class AddDialog extends JDialog { ClientHandler.addResponseListener(GetDistrictResponse.class, districtResponseListener); ClientHandler.addResponseListener(GetWardResponse.class, wardResponseListener); ClientHandler.addResponseListener(AddPatientResponse.class, addPatientResponseListener); + ClientHandler.addResponseListener(AddCheckupResponse.class, addCheckupResponseListener); // Add patent table on the right side // Add a scroll pane to the table @@ -351,7 +362,6 @@ public class AddDialog extends JDialog { // Clear selection if search text is empty saveButton.setEnabled(false); patientTable.clearSelection(); - patientIdField.setText(""); return; } @@ -426,9 +436,12 @@ public class AddDialog extends JDialog { }); ButtonPanel.add(closeButton); - saveButton = new JButton("Save"); + saveButton = new JButton("Add to Checkup"); saveButton.addActionListener(e -> { - // Send request to save the patient + int patientId = Integer.parseInt(patientIdField.getText()); + int doctorId = doctorComboBox.getSelectedIndex() + 1; + NetworkUtil.sendPacket(ClientHandler.ctx.channel(), new AddCheckupRequest(patientId, doctorId, LocalStorage.userId)); + }); saveButton.setEnabled(false); ButtonPanel.add(saveButton); @@ -513,6 +526,7 @@ public class AddDialog extends JDialog { } } + private void handleGetDistrictResponse(GetDistrictResponse response) { log.info("Received dialog district data"); 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 0275665..fdc3d8a 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java @@ -249,10 +249,9 @@ public class CheckUpPage extends JPanel { rightButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); rightButton.addActionListener(e -> { - if(addDialog == null) { - addDialog = new AddDialog(mainFrame); - } + addDialog = new AddDialog(mainFrame); addDialog.setVisible(true); + updateQueue(); }); topPanel.add(titleText1, BorderLayout.WEST); diff --git a/src/main/java/BsK/client/ui/component/LoginPage/LoginPage.java b/src/main/java/BsK/client/ui/component/LoginPage/LoginPage.java index 66e9010..8a60561 100644 --- a/src/main/java/BsK/client/ui/component/LoginPage/LoginPage.java +++ b/src/main/java/BsK/client/ui/component/LoginPage/LoginPage.java @@ -90,6 +90,7 @@ public class LoginPage extends JPanel { ClientHandler.addResponseListener(LoginSuccessResponse.class, response -> { log.info("Login successful, UserId: {}, Role: {}", response.getUserId(), response.getRole()); LocalStorage.username = loginField.getText(); + LocalStorage.userId = response.getUserId(); NetworkUtil.sendPacket(ClientHandler.ctx.channel(), new ClinicInfoRequest()); // Request clinic info NetworkUtil.sendPacket(ClientHandler.ctx.channel(), new GetDoctorGeneralInfo()); // Request doctor info NetworkUtil.sendPacket(ClientHandler.ctx.channel(), new GetProvinceRequest()); // Request province info diff --git a/src/main/java/BsK/common/packet/req/AddCheckupRequest.java b/src/main/java/BsK/common/packet/req/AddCheckupRequest.java new file mode 100644 index 0000000..ca8141e --- /dev/null +++ b/src/main/java/BsK/common/packet/req/AddCheckupRequest.java @@ -0,0 +1,14 @@ +package BsK.common.packet.req; + +import BsK.common.packet.Packet; +import lombok.AllArgsConstructor; +import lombok.Data; + + +@Data +@AllArgsConstructor +public class AddCheckupRequest implements Packet { + int customerId; + int doctorId; + int processedById; +} diff --git a/src/main/java/BsK/common/packet/res/AddCheckupResponse.java b/src/main/java/BsK/common/packet/res/AddCheckupResponse.java new file mode 100644 index 0000000..e33b1de --- /dev/null +++ b/src/main/java/BsK/common/packet/res/AddCheckupResponse.java @@ -0,0 +1,12 @@ +package BsK.common.packet.res; + +import BsK.common.packet.Packet; +import lombok.AllArgsConstructor; +import lombok.Data; + +@AllArgsConstructor +@Data +public class AddCheckupResponse implements Packet { + boolean success; + String error; +} diff --git a/src/main/java/BsK/server/network/handler/ServerHandler.java b/src/main/java/BsK/server/network/handler/ServerHandler.java index bc30513..bfde016 100644 --- a/src/main/java/BsK/server/network/handler/ServerHandler.java +++ b/src/main/java/BsK/server/network/handler/ServerHandler.java @@ -12,6 +12,7 @@ import BsK.server.network.util.UserUtil; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import io.netty.handler.codec.http.websocketx.TextWebSocketFrame; +import io.netty.handler.codec.http.websocketx.Utf8FrameValidator; import io.netty.handler.codec.http.websocketx.WebSocketServerProtocolHandler.HandshakeComplete; import io.netty.handler.timeout.IdleState; import io.netty.handler.timeout.IdleStateEvent; @@ -476,6 +477,58 @@ public class ServerHandler extends SimpleChannelInboundHandler;k;?CiX= zGds`wJ~Q(^GkElc!NE1J&9PI>0Kf#PaR2~C>YE1}ytB#Z!aZwfeF)zr7AEjGzI!sa z7tbR-tB)A$;)yl0!wA15T;s0_Yx&LGJ?;P}vcsB9I>Ij6VitgNmdQkeIm_m$^31N%s96 zmJRbP4a^X&0ygzzp=qJ)TiMecimY1I(Y0K3v2_5N2|)nryi@z(HjvSS0?)tss7EY`?tqZiB{vxNXLI73GG|Om;=*- zR+K}1L8+w_v`r{Qge9*2YSUw`eo-Q6BM1Fb2}Zc0HhyO4fU68Ew*{r5R%AwJG~>00 zxWR~)0h4Gv#+;|mqSN#cS~gjrojMMVgMiSDukxe3%6IS`nlzH57h{+m03!K;y6CrTF-MsM0hv`ktPt0L)smStsu2n9maLWD9{m^)AQ zhr7EX)z$iFQF8E&K=hPYCO2Jbvbw9#ST0@XlhXZH8J>Z5;zWNSsU~vH-xz30<{imhgB9bRQb)Cj?NwK3V8d)Cc z5yO#XOILSB#rkY6vniMAOV+!e&bk}i{pp<+w?|wc%912`wC=GjuuaZy5LPn?C z4G-*6H(Y;J4I1VM6U)>cWot%Usw-cpg8;b9e&V_zqscc2_|0Ii#}%pDpxpn_+z<6g-*i zX%8j(qQTIyb|p6TBjGD`9=I*X)jk5@Mdjd0|IyD8aF}7W@tTxdz30oZLpCZf!TfN(sP^@kQK; zOSPw3N^4NxsW;RCwLfzQzV*s#AIBmp>21g zRo%Z!R~CQ^z>S(L00_Cw0N9^>#%lX!k-_uZRavmo{dKx}nnBVwg+UVJjsjo_1C>_I zK$Al$B1ynft|g2#*5%439c`=Oyf|M2Y|*6u2_47Xo;t;LR*R*3GFk zP;y>PZE*7le+APTF`ijs>3tp%CtMGN zd)$nW;&!0d(1RwyB&gEb@JscJYAyY`6Zm8z`_WdT!g>AWEkbh6x&5tz=TrOrqVw^` z3n*5vbuDi#gVvth8tcQNj^I@X{%nG_U2U}3=e8Jkr=vB-d1%+x80#pch;o#t0(DW5 b=23~}Q<*AMr5eT5O?B#_%V+`hP8#mt7rO1_