Named

En src/main/java creamos el paquete com.tutosoftware.micoven.view
En el paquete com.tutosoftware.view creamos la clase LoginView
 
    
  package com.tutosoftware.micoven.view;

import java.io.Serializable;

import com.tutosoftware.micoven.model.Usuario;
import com.tutosoftware.micoven.util.SessionUtils;

import jakarta.enterprise.context.SessionScoped;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;
import jakarta.inject.Named;
import jakarta.servlet.http.HttpSession;
import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.core.MediaType;


@Named
@SessionScoped
public class LoginView implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 5105898498765679410L;
	/**
	 * 
	 */
	
	private String email;
	private String contrasena;
	private String nombreUsuario;
	private Usuario usuario;
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getContrasena() {
		return contrasena;
	}
	public void setContrasena(String contrasena) {
		this.contrasena = contrasena;
	}
	
	public void setNombreUsuario(String nombreUsuario) {
		this.nombreUsuario = nombreUsuario;
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public String getNombreUsuario() {
		return nombreUsuario;
	}
	public String loginAccess() {
	    
		String URL ="http://127.0.0.1:8000/usuario/";
		
		Client client = ClientBuilder.newClient();
		
		usuario=client.target(URL+email).request(MediaType.APPLICATION_JSON_TYPE).get(Usuario.class);
		
		if(usuario == null) {
			
			addMessage("Success", "Usuario o password incorrectos");
			
			
			return "login";
			
		}	
		
		
		
		
		
	    
	    if(usuario.getPassword().equals(contrasena)) {
			
			
			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";
	}

	
	
	
	
	

}

  
  
  
  
    
   

Creamos la clase UsuarioView
 
      
       
   package com.tutosoftware.micoven.view;

import java.io.Serializable;
import java.util.List;

import org.primefaces.PrimeFaces;

import com.tutosoftware.micoven.model.Usuario;

import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.SessionScoped;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;
import jakarta.inject.Named;
import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;
import jakarta.ws.rs.core.GenericType;


@Named
@SessionScoped
public class UsuarioView implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -4322992641156262239L;
	
	
	private List<Usuario> usuarios;
	private Usuario newusuario;
	public List<Usuario> getUsuarios() {
		return usuarios;
	}
	public void setUsuarios(List<Usuario> usuarios) {
		this.usuarios = usuarios;
	}
	
	public Usuario getNewusuario() {
		return newusuario;
	}
	public void setNewusuario(Usuario newusuario) {
		this.newusuario = newusuario;
	}
	
	@PostConstruct
	public void listarUsuarios() {
		
		String URL ="http://127.0.0.1:8000/usuario";
		
		Client client = ClientBuilder.newClient();
		
		usuarios=client.target(URL).request(MediaType.APPLICATION_JSON_TYPE).get(new GenericType<List<Usuario>>() {});
		
	}
	
	public void abrirNuevoUsuario() {
		this.newusuario = new Usuario();
	}
	
	public void crearUsuario() {
		
		String URL ="http://127.0.0.1:8000/usuario";
		
		Client client = ClientBuilder.newClient();
		
		Response response =
	            client.target(URL)
	            .request(MediaType.APPLICATION_JSON_TYPE)
	            .post(Entity.entity(newusuario,MediaType.APPLICATION_JSON_TYPE),Response.class);
		
		if (response.getStatus() == Status.CREATED.getStatusCode()) {
            addMessage("Confirmado","Usuario aceptado");	        
	    	
	    } else {
	    	
	    	addMessage("Fallo","Usuario no registrado");	
	    }
	    
	    limpiarUsuario();
	    
	    PrimeFaces current = PrimeFaces.current();
	    current.executeScript("PF('manageUsuarioDialog').hide();");
	    
		
		listarUsuarios();
		
	}
	
	
	
	public void actualizarUsuario() {
		
         String URL ="http://127.0.0.1:8000/usuario";
		
		Client client = ClientBuilder.newClient();
		
		Response response =
	            client.target(URL)
	            .request(MediaType.APPLICATION_JSON_TYPE)
	            .put(Entity.entity(newusuario,MediaType.APPLICATION_JSON_TYPE),Response.class);
		
		if (response.getStatus() == Status.OK.getStatusCode()) {
            addMessage("Usuario actualizado","Usuario aceptado");	        
	    	
	    } else {
	    	
	    	addMessage("Fallo","Usuario no registrado");	
	    }
		
		PrimeFaces current = PrimeFaces.current();
	    current.executeScript("PF('manageUsuarioDialog2').hide();");
	    
	    listarUsuarios();
		
	}
	
        public void eliminarUsuario() {
		
		
         String URL ="http://127.0.0.1:8000/usuario/";
		
		Client client = ClientBuilder.newClient();
		
		
		client.target(URL+newusuario.getEmail()).request(MediaType.APPLICATION_JSON_TYPE).delete().close();
		
		
	    
	    listarUsuarios();
		
		
	}

	
	
	
	
	
	
	public void addMessage(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
	
	
    public void limpiarUsuario() {
		
		newusuario=null;
		
	}

	
	
	
}
    
       
       
       
       
       
     
   

Creamos la clase ClienteView
 
        
 package com.tutosoftware.micoven.view;


import java.io.Serializable;
import java.util.List;

import org.primefaces.PrimeFaces;

import com.tutosoftware.micoven.model.Cliente;


import jakarta.annotation.PostConstruct;
import jakarta.enterprise.context.RequestScoped;
import jakarta.enterprise.context.SessionScoped;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;
import jakarta.inject.Named;
import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.core.GenericType;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;

@Named
@SessionScoped
public class ClienteView implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = -7348461013240183913L;
	
	private List<Cliente> clientes;
	private Cliente newcliente;
	
	
	public List<Cliente> getClientes() {
		return clientes;
	}
	public void setClientes(List<Cliente> clientes) {
		this.clientes = clientes;
	}
	public Cliente getNewcliente() {
		return newcliente;
	}
	public void setNewcliente(Cliente newcliente) {
		this.newcliente = newcliente;
	}
	
	
	@PostConstruct
	public void listarClientes() {
       String URL ="http://127.0.0.1:8000/cliente";
		
		Client client = ClientBuilder.newClient();
		
		clientes = client.target(URL).request(MediaType.APPLICATION_JSON_TYPE).get(new GenericType<List<Cliente>>() {});
	}
	
	
	public void abrirNuevoCliente() {
		this.newcliente = new Cliente();
		
	}
	
    public void crearCliente() {
		
		String URL ="http://127.0.0.1:8000/cliente";
		
		Client client = ClientBuilder.newClient();
		
		Response response =
	            client.target(URL)
	            .request(MediaType.APPLICATION_JSON_TYPE)
	            .post(Entity.entity(newcliente,MediaType.APPLICATION_JSON_TYPE),Response.class);
		
		if (response.getStatus() == Status.CREATED.getStatusCode()) {
            addMessage("Confirmado","Cliente aceptado");	        
	    	
	    } else {
	    	
	    	addMessage("Fallo","Cliente no registrado");	
	    }
	    
	    limpiarCliente();
	    
	    PrimeFaces current = PrimeFaces.current();
	    current.executeScript("PF('manageClienteDialog').hide();");
	    
		
		listarClientes();
		
	}
	
    public void actualizarCliente() {
		
        String URL ="http://127.0.0.1:8000/cliente";
		
		Client client = ClientBuilder.newClient();
		
		Response response =
	            client.target(URL)
	            .request(MediaType.APPLICATION_JSON_TYPE)
	            .put(Entity.entity(newcliente,MediaType.APPLICATION_JSON_TYPE),Response.class);
		
		if (response.getStatus() == Status.OK.getStatusCode()) {
           addMessage("Cliente actualizado","Cliente aceptado");	        
	    	
	    } else {
	    	
	    	addMessage("Fallo","Cliente no registrado");	
	    }
		
		PrimeFaces current = PrimeFaces.current();
	    current.executeScript("PF('manageClienteDialog2').hide();");
	    
	    listarClientes();
		
	}
	
    public void eliminarCliente() {
		
		
        String URL ="http://127.0.0.1:8000/cliente/";
		
		Client client = ClientBuilder.newClient();
		
		
		client.target(URL+newcliente.getWhatsapp()).request(MediaType.APPLICATION_JSON_TYPE).delete().close();
		
		
	    
	    listarClientes();
		
		
	}
	
	public String verCuenta() {
		
		return "cuenta";
	}
	
	
	
	
	
	public void addMessage(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
	
	
    public void limpiarCliente() {
		
		newcliente=null;
		
	}
	
	
	
	
	
	
	
	

}
       
       
   
   

Creamos la clase CuentaView
 
   
  package com.tutosoftware.micoven.view;

import java.io.Serializable;
import java.util.List;

import org.primefaces.PrimeFaces;

import com.tutosoftware.micoven.model.Cliente;
import com.tutosoftware.micoven.model.Cuenta;


import jakarta.annotation.PostConstruct;

import jakarta.enterprise.context.SessionScoped;

import jakarta.faces.annotation.ManagedProperty;
import jakarta.faces.application.FacesMessage;
import jakarta.faces.context.FacesContext;

import jakarta.inject.Inject;
import jakarta.inject.Named;
import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.core.GenericType;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import jakarta.ws.rs.core.Response.Status;


@Named
@SessionScoped
public class CuentaView implements Serializable{
	
	
	
	
	
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -7389349921743244855L;
	
	
	
	@Inject @ManagedProperty("#{cliente}")
	private Cliente cliente;
	private String whatsapp;
	private List<Cuenta> cuentas;
	private double sumaCargo;
	private double sumaAbono;
	private double montoTotal;
	private Cuenta nuevaCuenta;
    
	



	

   public String getWhatsapp() {
		return whatsapp;
	}



	public void setWhatsapp(String whatsapp) {
		this.whatsapp = whatsapp;
	}



	public Cliente getCliente() {
		return cliente;
	}



	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}



   public List<Cuenta> getCuentas() {
		return cuentas;
	}



	public void setCuentas(List<Cuenta> cuentas) {
		this.cuentas = cuentas;
	}



   public double getSumaCargo() {
		return sumaCargo;
	}



	public void setSumaCargo(double sumaCargo) {
		this.sumaCargo = sumaCargo;
	}



	public double getSumaAbono() {
		return sumaAbono;
	}



	public void setSumaAbono(double sumaAbono) {
		this.sumaAbono = sumaAbono;
	}



	public double getMontoTotal() {
		return montoTotal;
	}



	public void setMontoTotal(double montoTotal) {
		this.montoTotal = montoTotal;
	}



   public Cuenta getNuevaCuenta() {
		return nuevaCuenta;
	}



	public void setNuevaCuenta(Cuenta nuevaCuenta) {
		this.nuevaCuenta = nuevaCuenta;
	}



   @PostConstruct
   public void init() {
	   
	   this.whatsapp = cliente.getWhatsapp();
	   listarCuentas();
   }
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   public void listarCuentas() {
	   String URL ="http://127.0.0.1:8000/cuenta/";
		
		Client client = ClientBuilder.newClient();
		
		cuentas = client.target(URL+whatsapp).request(MediaType.APPLICATION_JSON_TYPE).get(new GenericType<List<Cuenta>>() {});
		
	    sumaCargo=cuentas.stream().filter(tipo -> tipo.getTipomovimiento().equals("Cargo"))
	        		.mapToDouble(Cuenta::getMonto).sum();
	    sumaAbono=cuentas.stream().filter(tipo -> tipo.getTipomovimiento().equals("Abono"))
	        		.mapToDouble(Cuenta::getMonto).sum();
	    
	    //System.out.println(sumaCargo);
	    //System.out.println(sumaAbono);
	    
	    
	    montoTotal=sumaCargo-sumaAbono;
		
   }
    
   public void abrirNuevaCuenta() {
	     System.out.println(cliente.getWhatsapp());

		this.nuevaCuenta = new Cuenta();
				
		this.nuevaCuenta.setIdmovimiento(0);
		this.nuevaCuenta.setWhatsapp(this.whatsapp);
		
	}
	
	public void crearMovimiento() {
		
        String URL ="http://127.0.0.1:8000/cuenta";
		
		Client client = ClientBuilder.newClient();
		System.out.println(nuevaCuenta.getIdmovimiento());
		System.out.println(nuevaCuenta.getWhatsapp());
		System.out.println(nuevaCuenta.getConcepto());
		System.out.println(nuevaCuenta.getFecha());
		System.out.println(nuevaCuenta.getMonto());
		System.out.println(nuevaCuenta.getTipomovimiento());
		
		
		Response response =
	            client.target(URL)
	            .request(MediaType.APPLICATION_JSON_TYPE)
	            .post(Entity.entity(nuevaCuenta,MediaType.APPLICATION_JSON_TYPE),Response.class);
		
		if (response.getStatus() == Status.CREATED.getStatusCode()) {
            addMessage("Confirmado","Cuenta aceptada");	        
	    	
	    } else {
	    	
	    	addMessage("Fallo","Cuenta no registrado");	
	    }
		
		
		limpiarCuenta();
		
		
		PrimeFaces current = PrimeFaces.current();
	    current.executeScript("PF('manageCuentaDialog').hide();");
	    
	    listarCuentas();
		
	}
	
       public void actualizarMovimento() {
		
        String URL ="http://127.0.0.1:8000/cuenta";
		
		Client client = ClientBuilder.newClient();
		
		Response response =
	            client.target(URL)
	            .request(MediaType.APPLICATION_JSON_TYPE)
	            .put(Entity.entity(nuevaCuenta,MediaType.APPLICATION_JSON_TYPE),Response.class);
		
		if (response.getStatus() == Status.OK.getStatusCode()) {
           addMessage("Cuenta actualizado","Cliente aceptado");	        
	    	
	    } else {
	    	
	    	addMessage("Fallo","Cuenta no actualizada");	
	    }
		
		PrimeFaces current = PrimeFaces.current();
	    current.executeScript("PF('manageCuentaDialog2').hide();");
	    
	    listarCuentas();
		
	}
	
       public void eliminarMovimiento() {
   		
   		
           String URL ="http://127.0.0.1:8000/cuenta/";
   		
   		Client client = ClientBuilder.newClient();
   		
   		
   		
   		client.target(URL+nuevaCuenta.getIdmovimiento()).request(MediaType.APPLICATION_JSON_TYPE).delete().close();
   		
   		
   	    
   	    listarCuentas();
   		
   		
   	}   
       
       
       public void limpiarMovimientos() {
      		
      		
           String URL ="http://127.0.0.1:8000/cuentas/";
   		
   		Client client = ClientBuilder.newClient();
   		
   		
   		
   		client.target(URL+whatsapp).request(MediaType.APPLICATION_JSON_TYPE).delete().close();
   		
   		
   	    
   	    listarCuentas();
   		
   		
   	}     
       
       
       
	
	public void addMessage(String summary, String detail) {
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail);
        FacesContext.getCurrentInstance().addMessage(null, message);
    }
	
   public void limpiarCuenta() {
		
		nuevaCuenta=null;
		
	}
	
   
   

}