From e5e6ebcf7d6c69668ba85572824462abba9d04f6 Mon Sep 17 00:00:00 2001 From: kenza Date: Mon, 10 Aug 2026 13:05:33 +0100 Subject: [PATCH] #396 --- .../trizservice/bean/FormMedecinBean.java | 262 +++++ .../triz/trizservice/bean/FormUserBean.java | 56 +- .../triz/trizservice/bean/MedecinBean.java | 119 +++ .../bean/converter/ServiceUserConverter.java | 49 + .../SpecialiteMedicaleConverter.java | 48 + .../trizservice/modeles/Consultation.java | 13 +- .../com/triz/trizservice/modeles/Medecin.java | 12 +- .../modeles/MedecinSpecialiste.java | 12 +- .../triz/trizservice/service/DaoService.java | 24 +- .../service/TransactionService.java | 20 + .../service/impl/DaoServiceImpl.java | 47 + .../service/impl/TransactionServiceImpl.java | 148 ++- .../db/migration/V000__main_schema.sql | 8 +- .../resources/langue/message_fr.properties | 14 +- .../webapp/WEB-INF/layout/sections/menu.xhtml | 2 +- src/main/webapp/views/medecin/form.xhtml | 970 ++++++++++++++++++ src/main/webapp/views/medecin/list.xhtml | 330 ++++++ 17 files changed, 2044 insertions(+), 90 deletions(-) create mode 100644 src/main/java/com/triz/trizservice/bean/FormMedecinBean.java create mode 100644 src/main/java/com/triz/trizservice/bean/MedecinBean.java create mode 100644 src/main/java/com/triz/trizservice/bean/converter/ServiceUserConverter.java create mode 100644 src/main/java/com/triz/trizservice/bean/converter/SpecialiteMedicaleConverter.java create mode 100644 src/main/webapp/views/medecin/form.xhtml create mode 100644 src/main/webapp/views/medecin/list.xhtml diff --git a/src/main/java/com/triz/trizservice/bean/FormMedecinBean.java b/src/main/java/com/triz/trizservice/bean/FormMedecinBean.java new file mode 100644 index 0000000..d3406d0 --- /dev/null +++ b/src/main/java/com/triz/trizservice/bean/FormMedecinBean.java @@ -0,0 +1,262 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.triz.trizservice.bean; + +import com.triz.trizservice.modeles.Centre; +import com.triz.trizservice.modeles.Consultation; +import com.triz.trizservice.modeles.Examen; +import com.triz.trizservice.modeles.Medecin; +import com.triz.trizservice.modeles.MedecinSpecialiste; +import com.triz.trizservice.modeles.ServiceUser; +import com.triz.trizservice.modeles.SpecialiteMedicale; +import com.triz.trizservice.service.TransactionService; +import com.triz.util.UtilContext; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; +import javax.annotation.PostConstruct; +import javax.faces.application.FacesMessage; +import javax.faces.context.FacesContext; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +/** + * + * @author FORCE TECH + */ +@Component("formMedecinBean") +@Scope("view") +public class FormMedecinBean { + + private Medecin selectedMedecin; + private String idMedecin; + private ServiceUser user; + private Centre centre; + private String modifier; + private boolean canEdit; + private boolean isNew; + private List listeHistoriqueConsultation; + private List listSelectedSepecialite; + private List listAllSepecialite; + private List listeUsers; + + @Autowired + public TransactionService service; + + @Autowired + public UtilContext context; + + @PostConstruct + public void init() { + user = context.getCurrentUser(); + centre = context.getCurrentEtablissement(); + listSelectedSepecialite = new ArrayList<>(); + listAllSepecialite = service.findAll(SpecialiteMedicale.class); + if (modifier != null) { + if (modifier.equals("true")) { + canEdit = true; + } + } + if (idMedecin == null) { + if (canEdit == true) { + isNew = true; + } + selectedMedecin = new Medecin(); + listeUsers = service.getAllUserByCentreNotInMedecin(centre); + } else { + selectedMedecin = service.findById(Medecin.class, UUID.fromString(idMedecin)); + listeHistoriqueConsultation = service.getAllConsultationByMedecin(selectedMedecin); + listSelectedSepecialite = service.getAllSpecialitiesByMedecin(selectedMedecin); + listeUsers = service.getAllUserByCentreNotInMedecinByUser(centre, selectedMedecin); + } + + } + + public Medecin getSelectedMedecin() { + return selectedMedecin; + } + + public void setSelectedMedecin(Medecin selectedMedecin) { + this.selectedMedecin = selectedMedecin; + } + + public String getIdMedecin() { + return idMedecin; + } + + public void setIdMedecin(String idMedecin) { + this.idMedecin = idMedecin; + } + + public Centre getCentre() { + return centre; + } + + public void setCentre(Centre centre) { + this.centre = centre; + } + + public String getModifier() { + return modifier; + } + + public void setModifier(String modifier) { + this.modifier = modifier; + } + + public boolean isCanEdit() { + return canEdit; + } + + public void setCanEdit(boolean canEdit) { + this.canEdit = canEdit; + } + + public boolean isIsNew() { + return isNew; + } + + public void setIsNew(boolean isNew) { + this.isNew = isNew; + } + + public String voirMedecin() { + System.out.println("isNew " + isNew); + System.out.println("canEdit " + canEdit); + if (!isNew) { + if (!canEdit) { + return "list.xhtml?faces-redirect=true"; + } else { + + return "form.xhtml?faces-redirect=true&medecin=" + selectedMedecin.getId(); + } + } else { + return "list.xhtml?faces-redirect=true"; + } + } + + public String editMedecin() { + return "form.xhtml?faces-redirect=true&modifier=true&medecin=" + selectedMedecin.getId(); + } + + public String deleteMedecin() { + if (selectedMedecin.getFkUser() != null) { + selectedMedecin.getFkUser().setActif("false"); + service.saveUser(selectedMedecin.getFkUser()); + context.saveNewManipulation("User", selectedMedecin.getFkUser().getUserid(), "Supprimer user", new Date(), new Date(), user, "", ""); + FacesContext.getCurrentInstance().addMessage(null, + new FacesMessage(FacesMessage.SEVERITY_INFO, + "L'utilisateur a été supprimé avec succès", null)); + + return voirMedecin(); + } + return null; + } + + public String saveMedecin() { + selectedMedecin.setFkCentre(centre); + service.save(selectedMedecin); + if (isNew) { + context.saveNewManipulation("medecin", selectedMedecin.getId().toString(), "Ajouter medecin", new Date(), new Date(), user, "", ""); + } else { + if (canEdit) { + Medecin oldMedecin = service.findById(Medecin.class, selectedMedecin.getId()); + + if (selectedMedecin.getSexe().equalsIgnoreCase(oldMedecin.getSexe())) { + context.saveNewManipulation("Medecin", selectedMedecin.getFkUser().getUserid(), "modifier sexe medecin", new Date(), new Date(), user, oldMedecin.getSexe(), + selectedMedecin.getSexe()); + } + + if (selectedMedecin.getNbRdvMax() != oldMedecin.getNbRdvMax()) { + context.saveNewManipulation("Medecin", selectedMedecin.getFkUser().getUserid(), "modifier nb max consultation/jour", new Date(), new Date(), user, + String.valueOf(oldMedecin.getNbRdvMax()), String.valueOf(selectedMedecin.getNbRdvMax())); + } + context.saveNewManipulation("Medecin", selectedMedecin.getFkUser().getUserid(), "modifier medecin", new Date(), new Date(), user, "", ""); + } + + } + List oldspecList + = service.getAllSpecialitiesByMedecin(selectedMedecin); + + for (SpecialiteMedicale spc : listSelectedSepecialite) { + + boolean existeDeja = false; + + if (oldspecList.contains(spc)) { + existeDeja = true; + oldspecList.remove(spc); + } + + if (!existeDeja) { + + MedecinSpecialiste medecinSpecialiste = new MedecinSpecialiste(); + + medecinSpecialiste.setFkMedecin(selectedMedecin); + medecinSpecialiste.setFkSpecialite(spc); + + service.save(medecinSpecialiste); + } + } + for (SpecialiteMedicale oldSpc : oldspecList) { + + service.delete(service.getMedecinSpecialisteByMedcinBySpecialiste(selectedMedecin, oldSpc)); + + } + + return voirMedecin(); + } + + public List getListeHistoriqueConsultation() { + return listeHistoriqueConsultation; + } + + public void setListeHistoriqueConsultation(List listeHistoriqueConsultation) { + this.listeHistoriqueConsultation = listeHistoriqueConsultation; + } + + public String voirExamen(Consultation consul) { + return "/views/Examen/form.xhtml?faces-redirect=true&examen=" + consul.getFkExamen().getId(); + } + + public List getListSelectedSepecialite() { + return listSelectedSepecialite; + } + + public void setListSelectedSepecialite(List listSelectedSepecialite) { + this.listSelectedSepecialite = listSelectedSepecialite; + } + + public List getListAllSepecialite() { + return listAllSepecialite; + } + + public void setListAllSepecialite(List listAllSepecialite) { + this.listAllSepecialite = listAllSepecialite; + } + + public List getListeUsers() { + return listeUsers; + } + + public void setListeUsers(List listeUsers) { + this.listeUsers = listeUsers; + } + + public String activerMedecin() { + if (selectedMedecin.getFkUser() != null) { + selectedMedecin.getFkUser().setActif("true"); + service.saveUser(selectedMedecin.getFkUser()); + context.saveNewManipulation("User", selectedMedecin.getFkUser().getUserid(), "Activer user", new Date(), new Date(), user, "", ""); + FacesContext.getCurrentInstance().addMessage(null, + new FacesMessage(FacesMessage.SEVERITY_INFO, + "L'utilisateur a été activé avec succès", null)); + + return voirMedecin(); + } + return null; + } +} diff --git a/src/main/java/com/triz/trizservice/bean/FormUserBean.java b/src/main/java/com/triz/trizservice/bean/FormUserBean.java index 21cdff3..42ef004 100644 --- a/src/main/java/com/triz/trizservice/bean/FormUserBean.java +++ b/src/main/java/com/triz/trizservice/bean/FormUserBean.java @@ -100,34 +100,38 @@ public class FormUserBean { } else { if (canEdit) { ServiceMember oldMember = service.getGroupByUser(user); - if (member.getFkGroupe().getId() == oldMember.getFkGroupe().getId()) { - context.saveNewManipulation("User", userSelected.getUserid(), "modifier groupe user", new Date(), new Date(), user, oldMember.getFkGroupe().getNomGroupe(), - member.getFkGroupe().getNomGroupe()); + if (oldMember != null) { + if (member.getFkGroupe().getId() == oldMember.getFkGroupe().getId()) { + context.saveNewManipulation("User", userSelected.getUserid(), "modifier groupe user", new Date(), new Date(), user, oldMember.getFkGroupe().getNomGroupe(), + member.getFkGroupe().getNomGroupe()); + } } ServiceUser oldUser = service.getUserById(user1); - if (userSelected.getUserpw().equalsIgnoreCase(oldUser.getUserpw())) { - context.saveNewManipulation("User", userSelected.getUserid(), "modifier pw user", new Date(), new Date(), user, "", - ""); - } - if (userSelected.getActif().equalsIgnoreCase(oldUser.getActif())) { - context.saveNewManipulation("User", userSelected.getUserid(), "modifier Statut user", new Date(), new Date(), user, oldUser.getActif(), - userSelected.getActif()); - } - if (userSelected.getPrenom().equalsIgnoreCase(oldUser.getPrenom())) { - context.saveNewManipulation("User", userSelected.getUserid(), "modifier prenom user", new Date(), new Date(), user, oldUser.getPrenom(), - userSelected.getPrenom()); - } - if (userSelected.getNom().equalsIgnoreCase(oldUser.getNom())) { - context.saveNewManipulation("User", userSelected.getUserid(), "modifier nom user", new Date(), new Date(), user, oldUser.getNom(), - userSelected.getNom()); - } - if (userSelected.getTelephone().equalsIgnoreCase(oldUser.getTelephone())) { - context.saveNewManipulation("User", userSelected.getUserid(), "modifier telephone user", new Date(), new Date(), user, oldUser.getTelephone(), - userSelected.getTelephone()); - } - if (userSelected.getMail().equalsIgnoreCase(oldUser.getMail())) { - context.saveNewManipulation("User", userSelected.getUserid(), "modifier mail user", new Date(), new Date(), user, oldUser.getMail(), - userSelected.getMail()); + if (oldUser != null) { + if (userSelected.getUserpw().equalsIgnoreCase(oldUser.getUserpw())) { + context.saveNewManipulation("User", userSelected.getUserid(), "modifier pw user", new Date(), new Date(), user, "", + ""); + } + if (userSelected.getActif().equalsIgnoreCase(oldUser.getActif())) { + context.saveNewManipulation("User", userSelected.getUserid(), "modifier Statut user", new Date(), new Date(), user, oldUser.getActif(), + userSelected.getActif()); + } + if (userSelected.getPrenom().equalsIgnoreCase(oldUser.getPrenom())) { + context.saveNewManipulation("User", userSelected.getUserid(), "modifier prenom user", new Date(), new Date(), user, oldUser.getPrenom(), + userSelected.getPrenom()); + } + if (userSelected.getNom().equalsIgnoreCase(oldUser.getNom())) { + context.saveNewManipulation("User", userSelected.getUserid(), "modifier nom user", new Date(), new Date(), user, oldUser.getNom(), + userSelected.getNom()); + } + if (userSelected.getTelephone().equalsIgnoreCase(oldUser.getTelephone())) { + context.saveNewManipulation("User", userSelected.getUserid(), "modifier telephone user", new Date(), new Date(), user, oldUser.getTelephone(), + userSelected.getTelephone()); + } + if (userSelected.getMail().equalsIgnoreCase(oldUser.getMail())) { + context.saveNewManipulation("User", userSelected.getUserid(), "modifier mail user", new Date(), new Date(), user, oldUser.getMail(), + userSelected.getMail()); + } } context.saveNewManipulation("User", userSelected.getUserid(), "modifier user", new Date(), new Date(), user, "", ""); diff --git a/src/main/java/com/triz/trizservice/bean/MedecinBean.java b/src/main/java/com/triz/trizservice/bean/MedecinBean.java new file mode 100644 index 0000000..2fef638 --- /dev/null +++ b/src/main/java/com/triz/trizservice/bean/MedecinBean.java @@ -0,0 +1,119 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.triz.trizservice.bean; + +import com.triz.trizservice.modeles.Centre; +import com.triz.trizservice.modeles.Medecin; +import com.triz.trizservice.modeles.ServiceUser; +import com.triz.trizservice.modeles.SpecialiteMedicale; +import com.triz.trizservice.service.TransactionService; +import com.triz.util.UtilContext; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import javax.annotation.PostConstruct; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +/** + * + * @author FORCE TECH + */ +@Component("medecinBean") +@Scope("view") +public class MedecinBean { + + private Centre currentCenter; + private ServiceUser user; + private List allMedecin; + private Medecin selectedMedecin; + private List selectedRowSpecialites = new ArrayList<>(); + + @Autowired + public TransactionService service; + @Autowired + public UtilContext context; + + @PostConstruct + public void init() { + currentCenter = context.getCurrentEtablissement(); + user = context.getCurrentUser(); + allMedecin = service.getAllMedecinByCenter(currentCenter); + } + + public Centre getCurrentCenter() { + return currentCenter; + } + + public void setCurrentCenter(Centre currentCenter) { + this.currentCenter = currentCenter; + } + + public ServiceUser getUser() { + return user; + } + + public void setUser(ServiceUser user) { + this.user = user; + } + + public List getAllMedecin() { + return allMedecin; + } + + public void setAllMedecin(List allMedecin) { + this.allMedecin = allMedecin; + } + + public List getSpecialitesList(Medecin medecin) { + if (medecin == null || medecin.getId() == null) { + return new ArrayList<>(); + } + return service.getAllSpecialitiesByMedecin(medecin); + } + + public String getSpecialitesDisplay(Medecin medecin) { + List liste = getSpecialitesList(medecin); + if (liste == null || liste.isEmpty()) { + return "-"; + } + return liste.stream().map(SpecialiteMedicale::getName).collect(Collectors.joining(", ")); + } + + public List getSelectedRowSpecialites() { + return selectedRowSpecialites; + } + + public void onShowSpecialites(Medecin medecin) { + this.selectedRowSpecialites = getSpecialitesList(medecin); + } + + public String getStatusMedecin(Medecin medecin) { + if (medecin == null || medecin.getDisponible() == null) { + return "indisponible"; + } + if (Boolean.TRUE.equals(medecin.getDisponible())) { + return "disponible"; + } + return "false"; + } + + public String ajouterUser() { + return "form.xhtml?faces-redirect=true&modifier=true"; + } + + public String voirUser() { + return "form.xhtml?faces-redirect=true&medecin=" + selectedMedecin.getId(); + } + + public Medecin getSelectedMedecin() { + return selectedMedecin; + } + + public void setSelectedMedecin(Medecin selectedMedecin) { + this.selectedMedecin = selectedMedecin; + } +} \ No newline at end of file diff --git a/src/main/java/com/triz/trizservice/bean/converter/ServiceUserConverter.java b/src/main/java/com/triz/trizservice/bean/converter/ServiceUserConverter.java new file mode 100644 index 0000000..30ef1f0 --- /dev/null +++ b/src/main/java/com/triz/trizservice/bean/converter/ServiceUserConverter.java @@ -0,0 +1,49 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.triz.trizservice.bean.converter; + +import com.triz.trizservice.modeles.ServiceUser; +import com.triz.trizservice.service.TransactionService; +import java.util.UUID; +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.convert.Converter; +import javax.faces.convert.FacesConverter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * + * @author FORCE TECH + */ +@FacesConverter("serviceUserConverter") +@Component +public class ServiceUserConverter implements Converter { + + @Autowired + protected transient TransactionService service; + + @Override + public Object getAsObject(FacesContext fc, UIComponent uic, String value) { + try { + return service.findById(ServiceUser.class, value); + } catch (NumberFormatException e) { + new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "User n'existe pas."); + } + + return null; + } + + @Override + public String getAsString(FacesContext fc, UIComponent uic, Object object) { + if (object != null) { + return String.valueOf(((ServiceUser) object).getUserid()); + } else { + return null; + } + } + +} diff --git a/src/main/java/com/triz/trizservice/bean/converter/SpecialiteMedicaleConverter.java b/src/main/java/com/triz/trizservice/bean/converter/SpecialiteMedicaleConverter.java new file mode 100644 index 0000000..59b06a6 --- /dev/null +++ b/src/main/java/com/triz/trizservice/bean/converter/SpecialiteMedicaleConverter.java @@ -0,0 +1,48 @@ +/* + * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license + * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template + */ +package com.triz.trizservice.bean.converter; + +import com.triz.trizservice.modeles.Centre; +import com.triz.trizservice.modeles.SpecialiteMedicale; +import com.triz.trizservice.service.TransactionService; +import javax.faces.application.FacesMessage; +import javax.faces.component.UIComponent; +import javax.faces.context.FacesContext; +import javax.faces.convert.Converter; +import javax.faces.convert.FacesConverter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * + * @author FORCE TECH + */ +@FacesConverter("specialiteMedicaleConverter") +@Component +public class SpecialiteMedicaleConverter implements Converter { + @Autowired + protected transient TransactionService service; + + @Override + public Object getAsObject(FacesContext fc, UIComponent uic, String value) { + try { + return service.findById(SpecialiteMedicale.class, value); + } catch (NumberFormatException e) + { + new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Specialite Medicale n'existe pas."); + } + + return null; + } + + @Override + public String getAsString(FacesContext fc, UIComponent uic, Object object) { + if (object != null) { + return String.valueOf(((SpecialiteMedicale) object).getName()); + } else { + return null; + } + } +} diff --git a/src/main/java/com/triz/trizservice/modeles/Consultation.java b/src/main/java/com/triz/trizservice/modeles/Consultation.java index 21662fe..f3108cd 100644 --- a/src/main/java/com/triz/trizservice/modeles/Consultation.java +++ b/src/main/java/com/triz/trizservice/modeles/Consultation.java @@ -73,6 +73,9 @@ public class Consultation implements Serializable { @JoinColumn(name = "fk_medecin", referencedColumnName = "id") @ManyToOne private Medecin fkMedecin; + @JoinColumn(name = "fk_patient", referencedColumnName = "id") + @ManyToOne + private Patient fkPatient; public Consultation() { } @@ -185,5 +188,13 @@ public class Consultation implements Serializable { public String toString() { return "com.triz.trizservice.modeles.Consultation[ id=" + id + " ]"; } - + + public Patient getFkPatient() { + return fkPatient; + } + + public void setFkPatient(Patient fkPatient) { + this.fkPatient = fkPatient; + } + } diff --git a/src/main/java/com/triz/trizservice/modeles/Medecin.java b/src/main/java/com/triz/trizservice/modeles/Medecin.java index e780eef..576c60d 100644 --- a/src/main/java/com/triz/trizservice/modeles/Medecin.java +++ b/src/main/java/com/triz/trizservice/modeles/Medecin.java @@ -6,9 +6,11 @@ package com.triz.trizservice.modeles; import java.io.Serializable; import java.util.List; +import java.util.UUID; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.Lob; @@ -41,9 +43,9 @@ public class Medecin implements Serializable { @Id @Basic(optional = false) @NotNull - @Lob + @GeneratedValue @Column(name = "id") - private Object id; + private UUID id; @Column(name = "nb_rdv_max") private Integer nbRdvMax; @Column(name = "nb_patient_max") @@ -67,15 +69,15 @@ public class Medecin implements Serializable { public Medecin() { } - public Medecin(Object id) { + public Medecin(UUID id) { this.id = id; } - public Object getId() { + public UUID getId() { return id; } - public void setId(Object id) { + public void setId(UUID id) { this.id = id; } diff --git a/src/main/java/com/triz/trizservice/modeles/MedecinSpecialiste.java b/src/main/java/com/triz/trizservice/modeles/MedecinSpecialiste.java index e777d2b..a5e6764 100644 --- a/src/main/java/com/triz/trizservice/modeles/MedecinSpecialiste.java +++ b/src/main/java/com/triz/trizservice/modeles/MedecinSpecialiste.java @@ -5,9 +5,11 @@ package com.triz.trizservice.modeles; import java.io.Serializable; +import java.util.UUID; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.Lob; @@ -33,9 +35,9 @@ public class MedecinSpecialiste implements Serializable { @Id @Basic(optional = false) @NotNull - @Lob + @GeneratedValue @Column(name = "id") - private Object id; + private UUID id; @JoinColumn(name = "fk_medecin", referencedColumnName = "id") @ManyToOne private Medecin fkMedecin; @@ -46,15 +48,15 @@ public class MedecinSpecialiste implements Serializable { public MedecinSpecialiste() { } - public MedecinSpecialiste(Object id) { + public MedecinSpecialiste(UUID id) { this.id = id; } - public Object getId() { + public UUID getId() { return id; } - public void setId(Object id) { + public void setId(UUID id) { this.id = id; } diff --git a/src/main/java/com/triz/trizservice/service/DaoService.java b/src/main/java/com/triz/trizservice/service/DaoService.java index e38c62f..36e2bf5 100644 --- a/src/main/java/com/triz/trizservice/service/DaoService.java +++ b/src/main/java/com/triz/trizservice/service/DaoService.java @@ -6,6 +6,9 @@ package com.triz.trizservice.service; import com.triz.trizservice.modeles.Centre; +import com.triz.trizservice.modeles.Consultation; +import com.triz.trizservice.modeles.Medecin; +import com.triz.trizservice.modeles.MedecinSpecialiste; import com.triz.trizservice.modeles.ServiceFonctiongroupe; import com.triz.trizservice.modeles.ServiceFonctionnaliter; import com.triz.trizservice.modeles.ServiceGroupe; @@ -16,6 +19,7 @@ import com.triz.trizservice.modeles.ServicehistoriqueConnection; import com.triz.trizservice.modeles.ServiceHistoriqueManipulation; import com.triz.trizservice.modeles.ServiceHistoriqueManipulation; import com.triz.trizservice.modeles.ServiceUserCentre; +import com.triz.trizservice.modeles.SpecialiteMedicale; import com.triz.trizservice.modeles.Wilaya; import java.io.Serializable; import java.util.List; @@ -116,9 +120,25 @@ public interface DaoService { public int getNbrFonctionnaliteParGroupe(ServiceGroupe groupe); public ServiceFonctiongroupe getFonctiongroupeById(UUID id); - - public void save(final T object); + + public void save(final T object); public void delete(final T object); + public List getAllMedecinByCenter(Centre centre); + + public T findById(Class clazz, ID id); + + public List getAllSpecialitiesByMedecin(Medecin medecin); + + public List getAllConsultationByMedecin(Medecin medecin); + + public List findAll(Class clazz); + + public List getAllUserByCentreNotInMedecinByUser(Centre centre, Medecin medecin); + + public MedecinSpecialiste getMedecinSpecialisteByMedcinBySpecialiste(Medecin medecin, SpecialiteMedicale spc); + + public List getAllUserByCentreNotInMedecin(Centre centre); + } diff --git a/src/main/java/com/triz/trizservice/service/TransactionService.java b/src/main/java/com/triz/trizservice/service/TransactionService.java index 281820a..5819b08 100644 --- a/src/main/java/com/triz/trizservice/service/TransactionService.java +++ b/src/main/java/com/triz/trizservice/service/TransactionService.java @@ -7,6 +7,9 @@ package com.triz.trizservice.service; import com.triz.trizservice.modeles.Centre; +import com.triz.trizservice.modeles.Consultation; +import com.triz.trizservice.modeles.Medecin; +import com.triz.trizservice.modeles.MedecinSpecialiste; import com.triz.trizservice.modeles.ServiceFonctiongroupe; import com.triz.trizservice.modeles.ServiceFonctionnaliter; import com.triz.trizservice.modeles.ServiceGroupe; @@ -17,6 +20,7 @@ import com.triz.trizservice.modeles.ServicehistoriqueConnection; import com.triz.trizservice.modeles.ServiceHistoriqueManipulation; import com.triz.trizservice.modeles.ServiceHistoriqueManipulation; import com.triz.trizservice.modeles.ServiceUserCentre; +import com.triz.trizservice.modeles.SpecialiteMedicale; import com.triz.trizservice.modeles.Wilaya; import java.io.Serializable; import java.util.List; @@ -121,4 +125,20 @@ public interface TransactionService { public void save(final T object); public void delete(final T object); + + public List getAllMedecinByCenter(Centre centre); + + public T findById(Class clazz, ID id); + + public List getAllSpecialitiesByMedecin(Medecin medecin); + + public List getAllConsultationByMedecin(Medecin medecin); + + public List findAll(Class clazz); + + public List getAllUserByCentreNotInMedecinByUser(Centre centre,Medecin medecin); + + public MedecinSpecialiste getMedecinSpecialisteByMedcinBySpecialiste(Medecin medecin,SpecialiteMedicale spc); + + public List getAllUserByCentreNotInMedecin(Centre centre); } diff --git a/src/main/java/com/triz/trizservice/service/impl/DaoServiceImpl.java b/src/main/java/com/triz/trizservice/service/impl/DaoServiceImpl.java index cad97f5..ee667c1 100644 --- a/src/main/java/com/triz/trizservice/service/impl/DaoServiceImpl.java +++ b/src/main/java/com/triz/trizservice/service/impl/DaoServiceImpl.java @@ -6,6 +6,9 @@ package com.triz.trizservice.service.impl; import com.triz.trizservice.modeles.Centre; +import com.triz.trizservice.modeles.Consultation; +import com.triz.trizservice.modeles.Medecin; +import com.triz.trizservice.modeles.MedecinSpecialiste; import com.triz.trizservice.service.DaoService; import com.triz.trizservice.modeles.ServiceFonctiongroupe; import com.triz.trizservice.modeles.ServiceFonctionnaliter; @@ -16,6 +19,7 @@ import com.triz.trizservice.modeles.ServiceUser; import com.triz.trizservice.modeles.ServicehistoriqueConnection; import com.triz.trizservice.modeles.ServiceHistoriqueManipulation; import com.triz.trizservice.modeles.ServiceUserCentre; +import com.triz.trizservice.modeles.SpecialiteMedicale; import com.triz.trizservice.modeles.Wilaya; import java.io.Serializable; import java.util.Date; @@ -316,4 +320,47 @@ public class DaoServiceImpl implements DaoService { System.out.println("delete"); getCurrentSession().delete(object); } + + @Override + public List getAllMedecinByCenter(Centre centre) { + return getCurrentSession().createQuery("select s from Medecin s where s.fkCentre=:centre ").setParameter("centre", centre).list(); + + } + + @Override + public T findById(Class clazz, ID id) { + return getCurrentSession().get(clazz, id); + } + + @Override + public List getAllSpecialitiesByMedecin(Medecin medecin) { + return getCurrentSession().createQuery("select s.fkSpecialite from MedecinSpecialiste s where s.fkMedecin =:medecin ").setParameter("medecin", medecin).list(); + } + + @Override + public List getAllConsultationByMedecin(Medecin medecin) { + return getCurrentSession().createQuery("select s from Consultation s where s.fkMedecin =:medecin ").setParameter("medecin", medecin).list(); + } + + @Override + public List findAll(Class clazz) { + return getCurrentSession().createCriteria(clazz).list(); + } + + @Override + public List getAllUserByCentreNotInMedecinByUser(Centre centre,Medecin medecin) { + return getCurrentSession().createQuery("select s.fkUser from ServiceUserCentre s where s.fkCentre =:centre and (s.fkUser=:user or s.fkUser not in" + + " (select m.fkUser from Medecin m)) ").setParameter("centre", centre).setParameter("user", medecin.getFkUser()).list(); + } + + @Override + public MedecinSpecialiste getMedecinSpecialisteByMedcinBySpecialiste(Medecin medecin, SpecialiteMedicale spc) { + return (MedecinSpecialiste) getCurrentSession().createQuery("select s from MedecinSpecialiste s where s.fkMedecin =:medecin and s.fkSpecialite=:spc ").setParameter("spc", spc).setParameter("medecin", medecin).setMaxResults(1).uniqueResult(); + } + + @Override + public List getAllUserByCentreNotInMedecin(Centre centre) { + return getCurrentSession().createQuery("select s.fkUser from ServiceUserCentre s where s.fkCentre =:centre and ( s.fkUser not in" + + " (select m.fkUser from Medecin m)) ").setParameter("centre", centre).list(); + } } diff --git a/src/main/java/com/triz/trizservice/service/impl/TransactionServiceImpl.java b/src/main/java/com/triz/trizservice/service/impl/TransactionServiceImpl.java index 0ddc947..81ed0ba 100644 --- a/src/main/java/com/triz/trizservice/service/impl/TransactionServiceImpl.java +++ b/src/main/java/com/triz/trizservice/service/impl/TransactionServiceImpl.java @@ -6,6 +6,9 @@ package com.triz.trizservice.service.impl; import com.triz.trizservice.modeles.Centre; +import com.triz.trizservice.modeles.Consultation; +import com.triz.trizservice.modeles.Medecin; +import com.triz.trizservice.modeles.MedecinSpecialiste; import com.triz.trizservice.modeles.ServiceFonctiongroupe; import com.triz.trizservice.modeles.ServiceFonctionnaliter; import com.triz.trizservice.modeles.ServiceGroupe; @@ -16,6 +19,7 @@ import com.triz.trizservice.modeles.ServicehistoriqueConnection; import com.triz.trizservice.modeles.ServiceHistoriqueManipulation; import com.triz.trizservice.modeles.ServiceHistoriqueManipulation; import com.triz.trizservice.modeles.ServiceUserCentre; +import com.triz.trizservice.modeles.SpecialiteMedicale; import com.triz.trizservice.modeles.Wilaya; import com.triz.trizservice.service.DaoService; import com.triz.trizservice.service.TransactionService; @@ -32,287 +36,335 @@ import org.springframework.transaction.annotation.Transactional; */ @Service public class TransactionServiceImpl implements TransactionService { - + @Autowired DaoService daoService; - + @Transactional("transactionManager") @Override public boolean isItTimeToChangePass() { return daoService.isItTimeToChangePass(); } - + @Transactional("transactionManager") @Override public ServiceUser getUserById(String userId) { return daoService.getUserById(userId); } - + @Transactional("transactionManager") @Override public List getGroupsByUser(ServiceUser user) { return daoService.getGroupsByUser(user); } - + @Transactional("transactionManager") @Override public ServiceMember getGroupByUser(ServiceUser user) { return daoService.getGroupByUser(user); } - + @Transactional("transactionManager") @Override public void saveUser(ServiceUser object) { daoService.saveUser(object); } - + @Transactional("transactionManager") @Override public ServiceGroupe getGroupsById(UUID id) { return daoService.getGroupsById(id); } - + @Transactional("transactionManager") @Override public void saveGroup(ServiceGroupe object) { daoService.saveGroup(object); } - + @Transactional("transactionManager") @Override public void saveMembership(ServiceMember object) { daoService.saveMembership(object); } - + @Transactional("transactionManager") @Override public void saveFonctionsGroupes(ServiceFonctiongroupe object) { daoService.saveFonctionsGroupes(object); } - + @Transactional("transactionManager") @Override public List getAllFonctionalite() { return daoService.getAllFonctionalite(); } - + @Transactional("transactionManager") @Override public ServicehistoriqueConnection getLastHistoriqueConnectionByUsers(ServiceUser user) { return daoService.getLastHistoriqueConnectionByUsers(user); } - + @Transactional("transactionManager") @Override public ServicehistoriqueConnection getLastHistoriqueConnectionById(Long id) { return daoService.getLastHistoriqueConnectionById(id); } - + @Transactional("transactionManager") @Override public void save(ServicehistoriqueConnection historique) { daoService.save(historique); } - + @Transactional("transactionManager") @Override public List getAllGroups() { return daoService.getAllGroups(); } - + @Transactional("transactionManager") @Override public List getAllMembershipByUser(ServiceUser user) { return daoService.getAllMembershipByUser(user); } - + @Transactional("transactionManager") @Override public List getAllFonctionsGroupesByGroupe(ServiceGroupe group) { return daoService.getAllFonctionsGroupesByGroupe(group); } - + @Transactional("transactionManager") @Override public List getAllMembership() { return daoService.getAllMembership(); } - + @Transactional("transactionManager") @Override public ServiceFonctionnaliter getFonctionnaliteById(String id) { return daoService.getFonctionnaliteById(id); } - + @Transactional("transactionManager") @Override public List getAllFonctionnaliteServer() { return daoService.getAllFonctionnaliteServer(); } - + @Transactional("transactionManager") @Override public void save(ServiceFonctionnaliter object) { daoService.save(object); } - + @Transactional("transactionManager") @Override public void save(ServiceHistoriqueManipulation object) { daoService.save(object); } - + @Transactional("transactionManager") @Override public List getAllFonctionsGroups() { return daoService.getAllFonctionsGroups(); } - + @Transactional("transactionManager") @Override public List getFonctionServerByGroups(ServiceGroupe groupe) { return daoService.getFonctionServerByGroups(groupe); } - + @Transactional("transactionManager") @Override public List getFonctionServerByUsers(ServiceUser user) { return daoService.getFonctionServerByUsers(user); } - + @Transactional("transactionManager") @Override public ServiceFonctionnaliter getFonctionnaliteServerByFonction(String fonction) { return daoService.getFonctionnaliteServerByFonction(fonction); } - + public int genererBDD(String chemain, String nomSql) { return daoService.genererBDD(chemain, nomSql); } - + @Transactional("transactionManager") @Override public List getAllMemberShipByUser(ServiceUser user) { return daoService.getAllMemberShipByUser(user); } - + @Transactional("transactionManager") @Override public ServiceFonctiongroupe getFonctionGroupByFonctionIdAndGoupe(String id, ServiceGroupe group) { return daoService.getFonctionGroupByFonctionIdAndGoupe(id, group); } - + @Transactional("transactionManager") @Override public void save(ServiceIncrementation object) { daoService.save(object); } - + @Transactional("transactionManager") @Override public ServiceIncrementation getIncrementation() { return daoService.getIncrementation(); } - + @Transactional("transactionManager") @Override public ServiceIncrementation getFirstIncrementation() { return daoService.getFirstIncrementation(); } - + @Transactional("transactionManager") @Override public void save(ServiceGroupe object) { daoService.save(object); } - + @Transactional("transactionManager") @Override public void removeFonctionsGroupes(ServiceFonctiongroupe fonctionGroupe) { daoService.removeFonctionsGroupes(fonctionGroupe); } - + @Transactional("transactionManager") @Override public List getListHistoriqueConnectionByUsers(ServiceUser user) { return daoService.getListHistoriqueConnectionByUsers(user); } - + @Transactional("transactionManager") @Override public List getListHistoriqueManipulationByUsersByEntreprise(ServiceUser user) { return daoService.getListHistoriqueManipulationByUsersByEntreprise(user); } - + @Transactional("transactionManager") @Override public List getAllUsers() { return daoService.getAllUsers(); } - + @Transactional("transactionManager") @Override public Centre getEtablissementById(Object id) { return daoService.getEtablissementById(id); } - + @Transactional("transactionManager") @Override public List getAllStockEtablissementFromUsersEtablissementByUser(ServiceUser user) { return daoService.getAllStockEtablissementFromUsersEtablissementByUser(user); } - + @Transactional("transactionManager") @Override public ServiceUserCentre getAllUserCentreByCentreByUser(Centre etablissement, ServiceUser user) { return daoService.getAllUserCentreByCentreByUser(etablissement, user); } - + @Transactional("transactionManager") @Override public List getFonctionServerByUsersByEtablissement(ServiceUser user, Centre etablissement) { return daoService.getFonctionServerByUsersByEtablissement(user, etablissement); } - + @Transactional("transactionManager") @Override public ServicehistoriqueConnection getLastStockHistoriqueConnectionByUsers(ServiceUser user) { return daoService.getLastHistoriqueConnectionByUsers(user); } - + @Transactional("transactionManager") @Override public List getAllWilaya() { return daoService.getAllWilaya(); } - + @Transactional("transactionManager") @Override public int getNbrUtilisateurParGroupe(ServiceGroupe groupe) { return daoService.getNbrUtilisateurParGroupe(groupe); } - + @Transactional("transactionManager") @Override public int getNbrFonctionnaliteParGroupe(ServiceGroupe groupe) { return daoService.getNbrFonctionnaliteParGroupe(groupe); } - + @Transactional("transactionManager") @Override public ServiceFonctiongroupe getFonctiongroupeById(UUID id) { return daoService.getFonctiongroupeById(id); } - + @Transactional("transactionManager") @Override public void save(T object) { daoService.save(object); } - + @Transactional("transactionManager") @Override public void delete(T object) { daoService.delete(object); } + + @Transactional("transactionManager") + @Override + public List getAllMedecinByCenter(Centre centre) { + return daoService.getAllMedecinByCenter(centre); + } + + @Transactional("transactionManager") + @Override + public T findById(Class clazz, ID id) { + return daoService.findById(clazz, id); + } + + @Transactional("transactionManager") + @Override + public List getAllSpecialitiesByMedecin(Medecin medecin) { + return daoService.getAllSpecialitiesByMedecin(medecin); + } + + @Transactional("transactionManager") + @Override + public List getAllConsultationByMedecin(Medecin medecin) { + return daoService.getAllConsultationByMedecin(medecin); + } + + @Transactional("transactionManager") + @Override + public List findAll(Class clazz) { + return daoService.findAll(clazz); + } + + @Transactional("transactionManager") + @Override + public List getAllUserByCentreNotInMedecinByUser(Centre centre,Medecin medecin) { + return daoService.getAllUserByCentreNotInMedecinByUser(centre,medecin); + } + + @Transactional("transactionManager") + @Override + public MedecinSpecialiste getMedecinSpecialisteByMedcinBySpecialiste(Medecin medecin, SpecialiteMedicale spc) { + return daoService.getMedecinSpecialisteByMedcinBySpecialiste(medecin, spc); + } + + @Transactional("transactionManager") + @Override + public List getAllUserByCentreNotInMedecin(Centre centre) { + return daoService.getAllUserByCentreNotInMedecin(centre); + } } diff --git a/src/main/resources/db/migration/V000__main_schema.sql b/src/main/resources/db/migration/V000__main_schema.sql index 3f47a8d..24e143a 100644 --- a/src/main/resources/db/migration/V000__main_schema.sql +++ b/src/main/resources/db/migration/V000__main_schema.sql @@ -625,4 +625,10 @@ ALTER TABLE service_fonctiongroupe ADD COLUMN can_see boolean; INSERT INTO service_fonctionnaliter (id, nom) VALUES -('modifier_groupe', 'Modifier le groupe'); \ No newline at end of file +('modifier_groupe', 'Modifier le groupe'); + +ALTER TABLE consultation +ADD COLUMN fk_patient uuid, +ADD CONSTRAINT fk_consultation_patient +FOREIGN KEY (fk_patient) +REFERENCES patient(id); \ No newline at end of file diff --git a/src/main/resources/langue/message_fr.properties b/src/main/resources/langue/message_fr.properties index 48b3e67..6932798 100644 --- a/src/main/resources/langue/message_fr.properties +++ b/src/main/resources/langue/message_fr.properties @@ -783,6 +783,7 @@ distribution.page.entreprise.selectionner=Veuillez s\u00e9l\u00e9ctionner un ent distribution.page.groupes=Groupes distribution.page.Utilisateurs=Utilisateurs +distribution.page.medecin=Liste des M\u00e9decins distribution.page.prix=Prix @@ -4305,5 +4306,16 @@ service.page.Telephone.ajouter = Ajouter Telephone service.page.Telephone.liste.message.non=Pas de telephone enregistr\u00e9 ! distribution.buttons.changerEtablissement=changer Centre distribution.page.etablissement.selectionner=Veuillez s\u00e9l\u00e9ctionner un centre +distribution.page.specialite.selectionner=Veuillez s\u00e9l\u00e9ctionner une Sp\u00e9cialit\u00e9 +distribution.page.medecins.user.choisir=Veuillez s\u00e9l\u00e9ctionner un utilisateur distribution.page.fonctionGroup.voir=Voir -distribution.page.fonctionGroup.modifierCeJour=modifier le jour meme \ No newline at end of file +distribution.page.fonctionGroup.modifierCeJour=modifier le jour meme +distribution.page.medecins.sexe=Sexe +distribution.page.medecins.specialite=Sp\u00e9cialit\u00e9s +distribution.page.medecins.nbMaxConsultation=Nb Max consultation / jour +distribution.page.medecins.historiqueConsultation=Historique de Consultation +distribution.page.activer=Activer +distribution.page.medecins.confirmerSuppression=\u00cates-vous s\u00fbr de vouloir supprimer ce m\u00e9decin ? +distribution.page.medecins.confirmerActivation=\u00cates-vous s\u00fbr de vouloir activer ce m\u00e9decin ? +distribution.page.oui=Oui +distribution.page.non=Non \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/layout/sections/menu.xhtml b/src/main/webapp/WEB-INF/layout/sections/menu.xhtml index 3bcc807..018bebb 100644 --- a/src/main/webapp/WEB-INF/layout/sections/menu.xhtml +++ b/src/main/webapp/WEB-INF/layout/sections/menu.xhtml @@ -170,7 +170,7 @@ + + + + + + + + + + #{formMedecinBean.init()} + + + + + +
+ +
+ +
+ +
+ +
+ +
+ + + + + + + +
+
+
+ #{fn:substring(formMedecinBean.selectedMedecin.fkUser.nom,0,1)}#{fn:substring(formMedecinBean.selectedMedecin.fkUser.prenom,0,1)} +
+ + + +
+ +
+ +
+
+ #{msg['distribution.page.user.nom']} + +
+ +
+ #{msg['distribution.page.user.prenom']} + +
+ +
+ #{msg['stock.page.fournisseur.Telephone']} + +
+ +
+ #{msg['stock.page.fournisseur.mail']} + +
+ +
+ #{msg['distribution.page.medecins.sexe']} + +
+ +
+ #{msg['distribution.page.medecins.specialite']} + +
+ + + + + + + + + +
+
+
+
+ +
+ +
+
+ Status + + + #{formMedecinBean.selectedMedecin.fkUser.actif eq 'true' ? 'Actif' : 'Inactif'} + + +
+
+ +
+ +
+ #{msg['distribution.page.user']} + + + + + + + +
+
+ +
+
+ #{msg['distribution.page.medecins.nbMaxConsultation']} + + + + + +
+
+
+ + + + +
+ #{msg['distribution.page.user']} +
+ + + + + + +
+
+ +
+ #{msg['distribution.page.user.nom']} +
+ + + +
+
+ +
+ #{msg['distribution.page.user.prenom']} +
+ + + +
+
+ +
+ #{msg['stock.page.fournisseur.Telephone']} +
+ + + +
+
+ +
+ #{msg['stock.page.fournisseur.mail']} +
+ + + +
+
+ +
+ #{msg['distribution.page.medecins.sexe']} +
+ + + + + +
+
+ +
+ #{msg['distribution.page.medecins.specialite']} +
+ + + + + +
+
+ +
+ +
+ #{msg['distribution.page.client.actif']} +
+ + + + + +
+
+ +
+ +
+ #{msg['distribution.page.medecins.nbMaxConsultation']} +
+ + + +
+
+ +
+ + + +
+ + + + + +
+
+ + + + + + + + + + + + + +
+
+ +
+ + + + +
+ #{msg['distribution.page.medecins.historiqueConsultation']} +
+ + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ +
+ + +
+ \ No newline at end of file diff --git a/src/main/webapp/views/medecin/list.xhtml b/src/main/webapp/views/medecin/list.xhtml new file mode 100644 index 0000000..2521ed5 --- /dev/null +++ b/src/main/webapp/views/medecin/list.xhtml @@ -0,0 +1,330 @@ + + + #{msg['distribution.page.medecin']} + + + + + + + + + + + + + +
+ +
+ + +
+
+ #{msg['distribution.page.Utilisateurs']} +
+
+ + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+
+
+
+
+
+ + +
+
\ No newline at end of file