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