From 78cad9d60e5a2640c9b0fc293de20de76f488ece Mon Sep 17 00:00:00 2001
From: Falucho <german.faller@pcunix71.fing.edu.uy>
Date: Tue, 25 Jun 2019 16:01:01 -0300
Subject: [PATCH] Gestion de Usuario

---
 .../edu/fing/tse/jsf/GestionUsuariosBean.java | 72 +++++++++++++++++++
 .../src/main/webapp/jsf/gestionUsuarios.xhtml | 22 ++++++
 .../fing/tse/central/business/Business.java   |  6 ++
 .../tse/central/business/BusinessBean.java    | 23 +++++-
 .../tse/central/business/startup/Config.java  |  7 ++
 5 files changed, 129 insertions(+), 1 deletion(-)
 create mode 100644 backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionUsuariosBean.java

diff --git a/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionUsuariosBean.java b/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionUsuariosBean.java
new file mode 100644
index 0000000..3195a3c
--- /dev/null
+++ b/backoffice/src/main/java/uy/edu/fing/tse/jsf/GestionUsuariosBean.java
@@ -0,0 +1,72 @@
+package uy.edu.fing.tse.jsf;
+
+import uy.edu.fing.tse.central.business.BusinessLocal;
+import uy.edu.fing.tse.dto.Role;
+import uy.edu.fing.tse.dto.User;
+import uy.edu.fing.tse.dto.UserBO;
+import uy.edu.fing.tse.dto.UserFO;
+
+import javax.annotation.PostConstruct;
+import javax.ejb.EJB;
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+import java.io.Serializable;
+import java.util.List;
+
+@RequestScoped
+@Named("gestionUsuarios")
+public class GestionUsuariosBean implements Serializable {
+
+    private static final long serialVersionUID = 9142442208455999158L;
+
+    @EJB
+    private BusinessLocal service;
+
+    @PostConstruct
+    public void init() {
+        usuarios = service.listarUsuarios();
+        roles = service.listarRoles();
+    }
+
+    private List<User> usuarios;
+    private List<User> usuariosFilter;
+
+    private List<Role> roles;
+
+    public List<User> getUsuarios() {
+        return usuarios;
+    }
+
+    public void setUsuarios(List<User> usuarios) {
+        this.usuarios = usuarios;
+    }
+
+    public List<Role> getRoles() {
+        return roles;
+    }
+
+    public void setRoles(List<Role> roles) {
+        this.roles = roles;
+    }
+
+    public List<User> getUsuariosFilter() {
+        return usuariosFilter;
+    }
+
+    public void setUsuariosFilter(List<User> usuariosFilter) {
+        this.usuariosFilter = usuariosFilter;
+    }
+
+    public boolean isBO(User u) {
+        return u instanceof UserBO;
+    }
+
+    public boolean isFO(User u) {
+        return u instanceof UserFO;
+    }
+
+    public String getRole(User u) {
+        return ((UserBO) u).getRole().getName();
+    }
+}
+
diff --git a/backoffice/src/main/webapp/jsf/gestionUsuarios.xhtml b/backoffice/src/main/webapp/jsf/gestionUsuarios.xhtml
index 6e8aa7f..de8d633 100644
--- a/backoffice/src/main/webapp/jsf/gestionUsuarios.xhtml
+++ b/backoffice/src/main/webapp/jsf/gestionUsuarios.xhtml
@@ -13,6 +13,28 @@
                 <h:outputText value="Gestion de Usuarios"/>
             </p:outputPanel>
 
+            <p:dataTable var="u" id="dataUser" value="#{gestionUsuarios.usuarios}" widgetVar="UsuariosTable"
+                         emptyMessage="Sin usuarios">
+                <p:column headerText="Id">
+                    <h:outputText value="#{u.id}"/>
+                </p:column>
+
+                <p:column headerText="Mail">
+                    <h:outputText value="#{u.mail}"/>
+                </p:column>
+
+                <p:column headerText="Tipo">
+                    <h:outputText value="BackOffice" rendered="#{gestionUsuarios.isBO(u)}"/>
+                    <h:outputText value="FrontOffice" rendered="#{gestionUsuarios.isFO(u)}"/>
+                </p:column>
+                <p:column headerText="Rol">
+                    <h:outputText value="#{gestionUsuarios.getRole(u)}" rendered="#{gestionUsuarios.isBO(u)}"/>
+                </p:column>
+                <p:column headerText="Accion">
+                    <p:commandButton value="Borrar"/>
+                    <p:commandButton value="Editar"/>
+                </p:column>
+            </p:dataTable>
         </h:form>
     </ui:define>
 </ui:decorate>
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java
index 4963b8b..ef644d4 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/Business.java
@@ -10,6 +10,8 @@ public interface Business extends Serializable {
 
     void altaPeriferico(Peripherical p);
 
+    void updateUsuario(User u);
+
     void altaVerificacionMecanismo(CheckMechanism cm);
 
     List<Fact> listarHechos();
@@ -22,8 +24,12 @@ public interface Business extends Serializable {
 
     List<Role> listarRoles();
 
+    List<User> listarUsuarios();
+
     Score altaCalificacion(Score e);
 
     List<State> listarEstados();
+
+    void altaUsuario(User user);
 }
 
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java
index 460fe9e..55a6129 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/BusinessBean.java
@@ -4,6 +4,8 @@ package uy.edu.fing.tse.central.business;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import uy.edu.fing.tse.central.db.dao.category.CategoryDaoLocal;
+import uy.edu.fing.tse.central.db.dao.check.checker.CheckCheckerDaoLocal;
+import uy.edu.fing.tse.central.db.dao.check.mechanism.CheckMechanismDaoLocal;
 import uy.edu.fing.tse.central.db.dao.fact.FactDaoLocal;
 import uy.edu.fing.tse.central.db.dao.mechanism.MechanismDaoLocal;
 import uy.edu.fing.tse.central.db.dao.role.RoleDaoLocal;
@@ -26,6 +28,10 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
     @EJB
     private CategoryDaoLocal categorias;
     @EJB
+    private CheckCheckerDaoLocal verificacionesChecker;
+    @EJB
+    private CheckMechanismDaoLocal verificacionesMecanismos;
+    @EJB
     private FactDaoLocal hechos;
     @EJB
     private MechanismDaoLocal mecanismos;
@@ -43,12 +49,17 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
 
     @Override
     public void altaPeriferico(Peripherical p) {
+        mecanismos.create(p);
+    }
 
+    @Override
+    public void updateUsuario(User u) {
+        usuarios.update(u);
     }
 
     @Override
     public void altaVerificacionMecanismo(CheckMechanism cm) {
-
+        verificacionesMecanismos.create(cm);
     }
 
     @Override
@@ -100,6 +111,11 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
         return hechos.findAll();
     }
 
+    @Override
+    public List<User> listarUsuarios() {
+        return usuarios.findAll();
+    }
+
     @Override
     public List<Role> listarRoles() {
         return roles.findAll();
@@ -109,4 +125,9 @@ public class BusinessBean implements BusinessLocal, BusinessRemote {
     public List<State> listarEstados() {
         return estados.findAll();
     }
+
+    @Override
+    public void altaUsuario(User user) {
+        usuarios.create(user);
+    }
 }
diff --git a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java
index d9fcbd1..daeacd4 100644
--- a/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java
+++ b/central-ejb/src/main/java/uy/edu/fing/tse/central/business/startup/Config.java
@@ -73,6 +73,13 @@ public class Config {
         e.setName("Submitter");
         u.setRole(e);
         users.register(u);
+
+        UserFO fo;
+        for (int i = 1; i <= 10; i++) {
+            fo = new UserFO();
+            fo.setMail("citizen" + i);
+            negocio.altaUsuario(fo);
+        }
     }
 
     private void initEstados() {
-- 
GitLab