ligaazteca-admin

Como se había acordado se va realizar un modlulo para adminsitrar la liga.
Ahora vamos con la parte de la vista nos vamos al modulo ligaazteca-admin y el archivo pom.xml nos queda de la siguiente manera:
 
   
          <project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.tutosoftware.ligaazteca</groupId>
    <artifactId>ligaazteca</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>ligaazteca-admin</artifactId>
  <packaging>war</packaging>
  <name>ligaaztecaadmin</name>

  
  
   <build>
		<finalName>ligaaztecaadmin</finalName>
		<plugins>	
			<plugin>            
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.3</version>
				<configuration>
					<webXml>src/main/webapp/WEB-INF/web.xml</webXml>
					<webResources>
						<resource>
							<!-- this is relative to the pom.xml directory -->
							<directory>src/main/webapp/WEB-INF</directory>
							<targetPath>WEB-INF</targetPath>
						</resource>
					</webResources>
				</configuration>
			</plugin>
		</plugins>
	</build>
  <dependencies>
  
  
  
  
  
  
  <dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    
     </dependency>
     
		
		
		<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
       
    </dependency>
			
		
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-api</artifactId>
		
		</dependency>
		<dependency>
			<groupId>com.sun.faces</groupId>
			<artifactId>jsf-impl</artifactId>
		
		</dependency>
		
			
		
		 <dependency>
				<groupId>javax.servlet.jsp</groupId>
				<artifactId>jsp-api</artifactId>
			
				
			</dependency>
			
			
         <dependency>
	     <groupId>javax.servlet</groupId>
	    <artifactId>javax.servlet-api</artifactId>
	  
        </dependency>
			
			
			
			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>jstl</artifactId>
				
			</dependency>
		
     <dependency>
			<groupId>com.sun.el</groupId>
			<artifactId>el-ri</artifactId>
			
		</dependency>
		<dependency>
			<groupId>javax</groupId>
			<artifactId>javaee-web-api</artifactId>
			
		</dependency>
 
  
  <dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
   
</dependency>
     
   <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
   
</dependency>





   <dependency>
      <groupId>javax.ws.rs</groupId>
      <artifactId>javax.ws.rs-api</artifactId>
      
   </dependency>
   


 <dependency>
 <groupId>org.glassfish.jersey.core</groupId>
 <artifactId>jersey-client</artifactId>
 </dependency>
 
 <dependency>
 <groupId>org.glassfish.jersey.media</groupId>
 <artifactId>jersey-media-json-jackson</artifactId>
</dependency>



  
  </dependencies>
</project>  
            
            
        
     

En src/main/webapp/WEB-INF modificamos el archivo faces-config.xml
 
             
      <?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
     http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
    version="2.2">
    
    
 <navigation-rule>
<from-view-id>
/login.xhtml
</from-view-id>
<navigation-case>
<from-outcome>
admin
</from-outcome>
<to-view-id>
/admin.xhtml
</to-view-id>
</navigation-case>
</navigation-rule>      
     
     

Modelo

El modelo se realiza para consumir los objetos del api rest que realizamos en springboot.
Creamos el paquete com.tutosoftware.ligaazteca.model en el creamos la clase Torneo
 
   
package com.tutosoftware.ligaazteca.model;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter @Setter @NoArgsConstructor @AllArgsConstructor
public class Torneo {
	
	
	private String idTorneo;
	private String nombreTorneo;
	private int cantidadEquipos;
	private int activarTorneo;
	private double costoInscripcion;
	private int numJugPorEquipo;
	private int numVueltas;
	private int refuerzos;

}              
            
        
     

Creamos la clase UsuarioAdmin
 
   
 package com.tutosoftware.ligaazteca.model;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter @Setter @NoArgsConstructor @AllArgsConstructor
public class UsuarioAdmin {
	
	private String nombre;
	private String apellidoPaterno;
	private String apellidoMaterno;
	private String email;
	private String password;

}
 
 
    
     

Sesión

Vamos a crear la sesión para cuando nos logueamos. Creamos el paquete com.tutosoftware.ligaazteca.util creamos la clase SessionUtils
 
   
   package com.tutosoftware.ligaazteca.util;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

public class SessionUtils {
	
	public static HttpSession getSession() {
		return (HttpSession) FacesContext.getCurrentInstance()
				.getExternalContext().getSession(false);
	}

	public static HttpServletRequest getRequest() {
		return (HttpServletRequest) FacesContext.getCurrentInstance()
				.getExternalContext().getRequest();
	}

	public static String getUserName() {
		HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
				.getExternalContext().getSession(false);
		return session.getAttribute("username").toString();
	}

	public static String getUserId() {
		HttpSession session = getSession();
		if (session != null)
			return (String) session.getAttribute("userid");
		else
			return null;
	}

}
   
   
   
     

Filtro

Creamos el paquete com.tutosoftware.ligaazteca.filtery en el la clase AuthorizationFilter
 
                
     package com.tutosoftware.ligaazteca.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


@WebFilter(filterName = "AuthFilter", urlPatterns = { "*.xhtml" })
public class AuthorizationFilter implements Filter {

	
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub

	}

	
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		// TODO Auto-generated method stub
		try {

			HttpServletRequest reqt = (HttpServletRequest) request;
			HttpServletResponse resp = (HttpServletResponse) response;
			HttpSession ses = reqt.getSession(false);

			String reqURI = reqt.getRequestURI();
			if (reqURI.indexOf("/login.xhtml") >= 0
					|| (ses != null && ses.getAttribute("username") != null)
					|| reqURI.indexOf("/public/") >= 0
					|| reqURI.contains("javax.faces.resource"))
				chain.doFilter(request, response);
			else
				resp.sendRedirect(reqt.getContextPath() + "/faces/login.xhtml");
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}

		

	}

	
	public void destroy() {
		// TODO Auto-generated method stub

	}

}
               
            
            
            
            
            
            
       
     

ManagedBean

Creamos los Beans para las vistas.
Creamos el paquete com.tutosoftware.ligaazteca.view y Creamos la clase LoginView
 
            
       package com.tutosoftware.ligaazteca.view;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.MediaType;

import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.MenuModel;

import com.tutosoftware.ligaazteca.model.UsuarioAdmin;
import com.tutosoftware.ligaazteca.util.SessionUtils;



@ManagedBean
@SessionScoped
public class LoginView {
	
	private String email;
	private String password;
	private UsuarioAdmin usuario;
	private String nombreUsuario;
	private MenuModel model;
	
	


    @PostConstruct
    public void init() {
        model = new DefaultMenuModel();

        //First submenu
        DefaultSubMenu firstSubmenu = DefaultSubMenu.builder()
                .label("Dynamic Submenu")
                .build();

        DefaultMenuItem item = DefaultMenuItem.builder()
                .value("External")
                .url("http://www.primefaces.org")
                .icon("pi pi-home")
                .build();
        firstSubmenu.getElements().add(item);

        model.getElements().add(firstSubmenu);

        //Second submenu
        DefaultSubMenu secondSubmenu = DefaultSubMenu.builder()
                .label("Dynamic Actions")
                .build();

        item = DefaultMenuItem.builder()
                .value("Save")
                .icon("pi pi-save")
                .command("#{encuestaView.save}")
                .update("messages")
                .build();
        secondSubmenu.getElements().add(item);

        item = DefaultMenuItem.builder()
                .value("Delete")
                .icon("pi pi-times")
                .command("#{encuestaView.delete}")
                .ajax(false)
                .build();
        secondSubmenu.getElements().add(item);

        item = DefaultMenuItem.builder()
                .value("Redirect")
                .icon("pi pi-search")
                .command("#{encuestaView.redirect}")
                .build();
        secondSubmenu.getElements().add(item);

        model.getElements().add(secondSubmenu);
    }

	
	
    public MenuModel getModel() {
        return model;
    }

    public void save() {
        addMessage("Success", "Data saved");
    }

    public void update() {
        addMessage("Success", "Data updated");
    }

    public void delete() {
        addMessage("Success", "Data deleted");
    }

	
	
	
	
	
	
	
	
	
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	

	
	
	public UsuarioAdmin getUsuario() {
		return usuario;
	}



	public void setUsuario(UsuarioAdmin usuario) {
		this.usuario = usuario;
	}



	public String getNombreUsuario() {
		return nombreUsuario;
	}



	public void setNombreUsuario(String nombreUsuario) {
		this.nombreUsuario = nombreUsuario;
	}


	
	
	public String loginLiga() {
		
		
		
		String URL ="http://localhost:8888/api/usuarioadmin/";
		
		
		
		
			
			
			Client client = ClientBuilder.newClient();
			
			
			usuario=client.target(URL+email).request(MediaType.APPLICATION_JSON_TYPE).get(UsuarioAdmin.class);
			
			
			if(usuario == null) {
				
				addMessage("Success", "Usuario o password incorrectos");
				
				
				return "login";
				
			}	
			
			
			
			if(usuario.getPassword().equals(password)) {
				
				
				HttpSession session = SessionUtils.getSession();
				nombreUsuario=usuario.getNombre()+" "+usuario.getApellidoPaterno()+" "+usuario.getApellidoMaterno();
				session.setAttribute("username",nombreUsuario);
				
				return "admin";
			}else {
				
				addMessage("Success", "Usuario o password incorrectos");
				
				return "login";
				
			}	
		
		
		
		
		
	}
	
	
	

	public void addMessage(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
	
	
	
	public String logout() {
		HttpSession session = SessionUtils.getSession();
		session.invalidate();
		return "login";
	}
	
}
	
	      
            
            
     
     

Ahora creamos la clase TorneoView
 
   
  package com.tutosoftware.ligaazteca.view;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;


import com.tutosoftware.ligaazteca.model.Torneo;

@ManagedBean
@SessionScoped
public class TorneoView {
   
	
	private String idTorneo;
	private String nombreTorneo;
	private int cantidadEquipos;
	private int activarTorneo;
	private double costoInscripcion;
	private int numJugPorEquipo;
	private int numVueltas;
	private int refuerzos;
	
	public void setIdTorneo(String idTorneo) {
		this.idTorneo = idTorneo;
	}
	public String getNombreTorneo() {
		return nombreTorneo;
	}
	public void setNombreTorneo(String nombreTorneo) {
		this.nombreTorneo = nombreTorneo;
	}
	public int getCantidadEquipos() {
		return cantidadEquipos;
	}
	public void setCantidadEquipos(int cantidadEquipos) {
		this.cantidadEquipos = cantidadEquipos;
	}
	public int getActivarTorneo() {
		return activarTorneo;
	}
	public void setActivarTorneo(int activarTorneo) {
		this.activarTorneo = activarTorneo;
	}
	public double getCostoInscripcion() {
		return costoInscripcion;
	}
	public void setCostoInscripcion(double costoInscripcion) {
		this.costoInscripcion = costoInscripcion;
	}
	public int getNumJugPorEquipo() {
		return numJugPorEquipo;
	}
	public void setNumJugPorEquipo(int numJugPorEquipo) {
		this.numJugPorEquipo = numJugPorEquipo;
	}
	public int getNumVueltas() {
		return numVueltas;
	}
	public void setNumVueltas(int numVueltas) {
		this.numVueltas = numVueltas;
	}
	public int getRefuerzos() {
		return refuerzos;
	}
	public void setRefuerzos(int refuerzos) {
		this.refuerzos = refuerzos;
	}
	
	
	public void crearTorneo() {
	    Torneo torneo= new Torneo();
		
		idTorneo= uuid();
	
	
		torneo.setIdTorneo(idTorneo);
		
		
		
		torneo.setNombreTorneo(nombreTorneo);
		torneo.setCantidadEquipos(cantidadEquipos);
		torneo.setActivarTorneo(0);//Incripciones abiertas
		torneo.setCostoInscripcion(costoInscripcion);
		torneo.setNumJugPorEquipo(numJugPorEquipo);
		torneo.setNumVueltas(numVueltas);
		torneo.setRefuerzos(refuerzos);
		
		String URL ="http://localhost:8888/api/torneos";
		
	    Client client = ClientBuilder.newClient();
	    
	    Response response =
	            client.target(URL)
	            .request(MediaType.APPLICATION_JSON_TYPE)
	            .post(Entity.entity(torneo,MediaType.APPLICATION_JSON_TYPE),Response.class);
	    
	    
	    if (response.getStatus() == Status.CREATED.getStatusCode()) {
              addMessage("Confirmado","Torneo aceptado");	        
	    	
	    } else {
	    	
	    	addMessage("Fallo","Torneo no registrado");	
	    }
	    
	    limpiarTorneo();
	}
	
	public String uuid() {
		
	       Long numero = System.currentTimeMillis();
			
			String cadena=numero.toString();
			
			
			return cadena;
			
    }
	
	
	
	public void addMessage(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
	
	
	public void limpiarTorneo() {
		
	
		
		nombreTorneo="";
		cantidadEquipos=0;
		costoInscripcion=0.00;
		numJugPorEquipo=0;
		numVueltas=0;
		refuerzos=0;
		
	}
	
	
	
	
	
}