From af0a2cf98c89f3ecd096934f7f57fb1dad33bff0 Mon Sep 17 00:00:00 2001 From: Roberto Orden Erena Date: Sat, 28 Dec 2019 13:23:00 +0100 Subject: [PATCH] Issue #40 corregida. --- .../medicalTest/MedicalTestFacadeBean.java | 63 ++++++++++++------- .../medicalTest/MedicalTestFacadeRemote.java | 2 +- .../medicalTest/QuestionsMBean.java | 13 ++-- 3 files changed, 52 insertions(+), 26 deletions(-) diff --git a/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeBean.java b/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeBean.java index dfd8911..4567047 100644 --- a/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeBean.java +++ b/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeBean.java @@ -20,10 +20,12 @@ import jpa.QuestionJPA; import jpa.SpecialistDoctorJPA; /** - * EJB Session Bean Class para la Practica 2, Ejercicio 1 (ISCSD) Implementa los métodos de la capa de negocio que implementan la logica de negocio y la interacción con la capa de - * persistencia. + * EJB Session Bean Class para la Practica 2, Ejercicio 1 (ISCSD) Implementa los + * métodos de la capa de negocio que implementan la logica de negocio y la + * interacción con la capa de persistencia. * - * Tanto los pacientes como los médicos deben acceder a la vista de pruebas médicas. + * Tanto los pacientes como los médicos deben acceder a la vista de pruebas + * médicas. * * @author rorden * @@ -47,18 +49,28 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote { * @param title * @param message */ - public void askQuestion(int userId, String title, String message) { - QuestionJPA qjpa = new QuestionJPA(); - qjpa.setId(0); - qjpa.setTitle(title); - qjpa.setMessage(message); - qjpa.setStatus(QuestionStatus.PENDING); + public String askQuestion(int userId, String title, String message) { PatientJPA pat = entman.find(PatientJPA.class, userId); - qjpa.setPatient(pat); - qjpa.setFamilyDoctor(pat.getFamilyDoctor()); - entman.persist(qjpa); + if (pat.getFamilyDoctor() != null) { + + QuestionJPA qjpa = new QuestionJPA(); + qjpa.setId(0); + qjpa.setTitle(title); + qjpa.setMessage(message); + qjpa.setStatus(QuestionStatus.PENDING); + + qjpa.setPatient(pat); + qjpa.setFamilyDoctor(pat.getFamilyDoctor()); + + entman.persist(qjpa); + + return "ok"; + + } else { + return "No tienes médico de familia elegido, por favor acude a la sección 'Gestionar Perfil' -> 'Cambiar médico de familia'"; + } } /** @@ -80,7 +92,9 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote { // TypedQuery query = entman.createQuery("SELECT q from QuestionJPA // q where q.status=:status and q.familyDoctor.id=:docId order by q.title", // QuestionJPA.class); - TypedQuery query = entman.createQuery("SELECT q from QuestionJPA q where q.familyDoctor.id=:docId order by q.status desc, q.title asc", QuestionJPA.class); + TypedQuery query = entman.createQuery( + "SELECT q from QuestionJPA q where q.familyDoctor.id=:docId order by q.status desc, q.title asc", + QuestionJPA.class); // query.setParameter("status", QuestionStatus.PENDING); query.setParameter("docId", familyDoctorId); @@ -99,7 +113,9 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote { // TypedQuery query = entman.createQuery("SELECT q from QuestionJPA // q where q.status=:status and q.familyDoctor.id=:docId order by q.title", // QuestionJPA.class); - TypedQuery query = entman.createQuery("SELECT q from QuestionJPA q where q.patient.id=:patientId order by q.status desc, q.title asc", QuestionJPA.class); + TypedQuery query = entman.createQuery( + "SELECT q from QuestionJPA q where q.patient.id=:patientId order by q.status desc, q.title asc", + QuestionJPA.class); // query.setParameter("status", QuestionStatus.PENDING); query.setParameter("patientId", userId); @@ -120,7 +136,8 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote { public QuestionTO getQuestion(int idQuestion) { QuestionTO resp = new QuestionTO(); - TypedQuery query = entman.createQuery("SELECT q from QuestionJPA q where q.id=:idquestion", QuestionJPA.class); + TypedQuery query = entman.createQuery("SELECT q from QuestionJPA q where q.id=:idquestion", + QuestionJPA.class); query.setParameter("idquestion", idQuestion); @@ -140,7 +157,8 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote { * @param idMedicalTest * @param date * @param time - * @param testType Pudiera llegar a ser: Análisis de sangre, resonancias magnéticas y TAC + * @param testType Pudiera llegar a ser: Análisis de sangre, resonancias + * magnéticas y TAC * @param observations */ public void addMedicalTest(int idMedicalTest, Date date, long time, MedicalTestType testType, String observations) { @@ -183,29 +201,32 @@ public class MedicalTestFacadeBean implements MedicalTestFacadeRemote { } public Long getSpecialistDoctorByMedicalSpecialityCount(int specialityId) { - TypedQuery query = entman.createQuery("SELECT count(1) from SpecialistDoctorJPA q where q.medicalSpecialty.id=:specId", Long.class); + TypedQuery query = entman.createQuery( + "SELECT count(1) from SpecialistDoctorJPA q where q.medicalSpecialty.id=:specId", Long.class); query.setParameter("specId", specialityId); return query.getSingleResult(); } - + /** * Listar médicos con una especialidad concreta * * @param speciality */ - public List findSpecialistDoctorByMedicalSpeciality(int specialityId, int pageNumber, int pageSize) { + public List findSpecialistDoctorByMedicalSpeciality(int specialityId, int pageNumber, + int pageSize) { List pendingQuestions = new ArrayList(); TypedQuery query = entman.createQuery( - "SELECT q from SpecialistDoctorJPA q where q.medicalSpecialty.id=:specId order by q.medicalSpecialty.name asc, q.surname asc", SpecialistDoctorJPA.class); + "SELECT q from SpecialistDoctorJPA q where q.medicalSpecialty.id=:specId order by q.medicalSpecialty.name asc, q.surname asc", + SpecialistDoctorJPA.class); query.setParameter("specId", specialityId); if (pageSize > 0) { query.setFirstResult(pageNumber * pageSize); query.setMaxResults(pageSize); } - + List allJPA = query.getResultList(); for (SpecialistDoctorJPA item : allJPA) { diff --git a/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeRemote.java b/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeRemote.java index 0bde678..8cef72e 100644 --- a/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeRemote.java +++ b/1.sources/MyHealth/src/ejb/medicalTest/MedicalTestFacadeRemote.java @@ -28,7 +28,7 @@ public interface MedicalTestFacadeRemote { * @param title * @param message */ - public void askQuestion(int userID, String title, String message); + public String askQuestion(int userID, String title, String message); /** * El médico responde a una pregunta diff --git a/1.sources/MyHealth/src/managedbean/medicalTest/QuestionsMBean.java b/1.sources/MyHealth/src/managedbean/medicalTest/QuestionsMBean.java index d8a3a3b..1497118 100644 --- a/1.sources/MyHealth/src/managedbean/medicalTest/QuestionsMBean.java +++ b/1.sources/MyHealth/src/managedbean/medicalTest/QuestionsMBean.java @@ -100,10 +100,15 @@ public class QuestionsMBean extends ManagedBeanBase implements Serializable { } public void addNewQuestion() { - getRemoteManagerMedicalTest().askQuestion(userID, this.selected.getTitle(), this.selected.getMessage()); - this.create(); - this.loadQuestions(); - this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Datos guardados", "La pregunta se registrado correctamente en el sistema."); + String result = getRemoteManagerMedicalTest().askQuestion(userID, this.selected.getTitle(), this.selected.getMessage()); + if(result == "ok") { + this.create(); + this.loadQuestions(); + this.addFacesMessage(FacesMessage.SEVERITY_INFO, "Datos guardados", "La pregunta se registrado correctamente en el sistema."); + } else { + this.addFacesMessage(FacesMessage.SEVERITY_ERROR, "Error", result); + } + } public boolean isShowPanelDetail() {