package com.pepe.controller;
import com.pepe.jpa.entities.CentroFormacion;
import com.pepe.jpa.entities.Ficha;
import com.pepe.jpa.entities.Jornada;
import com.pepe.jpa.entities.Programa;
import com.pepe.jpa.entities.Proyecto;
import com.pepe.jpa.entities.TipoFormacion;
import com.pepe.jpa.entities.TipoOferta;
import com.pepe.jpa.entities.UsuarioHasFicha;
import com.pepe.jpa.entities.UsuarioHasFichaPK;
import com.pepe.jpa.sesions.CentroFormacionFacade;
import com.pepe.jpa.sesions.FichaFacade;
import com.pepe.jpa.sesions.JornadaFacade;
import com.pepe.jpa.sesions.ProgramaFacade;
import com.pepe.jpa.sesions.ProyectoFacade;
import com.pepe.jpa.sesions.TipoFormacionFacade;
import com.pepe.jpa.sesions.TipoInstructorFacade;
import com.pepe.jpa.sesions.TipoOfertaFacade;
import com.pepe.jpa.sesions.UsuarioFacade;
import com.pepe.jpa.sesions.UsuarioHasFichaFacade;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
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 javax.faces.event.ActionEvent;
import javax.faces.validator.ValidatorException;
import javax.inject.Named;
/**
*
* @author Adsim
*/
@Named(value = "fichaController")
@SessionScoped
public class FichaController implements Serializable {
private Programa programaActual = null;
@EJB
private FichaFacade fichaFacade;
@EJB
private CentroFormacionFacade centroFormacionFacade;
@EJB
private TipoOfertaFacade tipoOfertaFacade;
@EJB
private JornadaFacade JornadaFacade;
@EJB
private ProyectoFacade proyectoFacade;
@EJB
private TipoFormacionFacade tipoFormacionFacade;
@EJB
private ProgramaFacade programaFacade;
@EJB
private UsuarioHasFichaFacade usuarioHasFichaFacade;
@EJB
private UsuarioFacade usuarioFacade;
@EJB
private TipoInstructorFacade tipoInstructorFacade;
private List<Ficha> listaFicha = null;
private Ficha fichaActual = null;
private int idCentro;
private int idOferta;
private int jornada;
private int idTipoFormacion;
private int idProyecto;
private int fichaSeleccionadaInt;
private int idUsu;
private Ficha fichaSeleccionada;
private UsuarioHasFicha usuarioHasFichaSeleccionada = null;
public FichaController() {
}
public UsuarioHasFichaFacade getUsuarioHasFichaFacade() {
return usuarioHasFichaFacade;
}
public Programa getProgramaActual() {
if (programaActual == null) {
programaActual = new Programa();
}
return programaActual;
}
public void setProgramaActual(Programa programaActual) {
this.programaActual = programaActual;
}
public UsuarioFacade getUsuarioFacade() {
return usuarioFacade;
}
public void setUsuarioFacade(UsuarioFacade usuarioFacade) {
this.usuarioFacade = usuarioFacade;
}
public void setUsuarioHasFichaFacade(UsuarioHasFichaFacade usuarioHasFichaFacade) {
this.usuarioHasFichaFacade = usuarioHasFichaFacade;
}
public TipoInstructorFacade getTipoInstructorFacade() {
return tipoInstructorFacade;
}
public void setTipoInstructorFacade(TipoInstructorFacade tipoInstructorFacade) {
this.tipoInstructorFacade = tipoInstructorFacade;
}
public UsuarioHasFicha getUsuarioHasFichaSeleccionada() {
return usuarioHasFichaSeleccionada;
}
public void setUsuarioHasFichaSeleccionada(UsuarioHasFicha usuarioHasFichaSeleccionada) {
this.usuarioHasFichaSeleccionada = usuarioHasFichaSeleccionada;
}
public Ficha getFichaSeleccionada() {
if (fichaSeleccionada == null) {
fichaSeleccionada = new Ficha();
}
return fichaSeleccionada;
}
// public void asignarFichaSeleccionada(){
// fichaSeleccionada = getFichaFacade().find(fichaActual.getIdFicha());
// }
public int getFichaSeleccionadaInt() {
return fichaSeleccionadaInt;
}
public void setFichaSeleccionadaInt(int fichaSeleccionadaInt) {
this.fichaSeleccionadaInt = fichaSeleccionadaInt;
}
public void setFichaSeleccionada(Ficha fichaSeleccionada) {
this.fichaSeleccionada = fichaSeleccionada;
}
public int getIdProyecto() {
if (fichaActual != null && fichaActual.getIdProyecto() != null) {
idProyecto = fichaActual.getIdProyecto().getIdProyecto();
}
return idProyecto;
}
public void setIdProyecto(int idProyecto) {
this.idProyecto = idProyecto;
}
public int getIdTipoFormacion() {
if (fichaActual != null && fichaActual.getIdTipoFormacion() != null) {
idTipoFormacion = fichaActual.getIdTipoFormacion().getIdTipoFormacion();
}
return idTipoFormacion;
}
public void setIdTipoFormacion(int idTipoFormacion) {
this.idTipoFormacion = idTipoFormacion;
}
public int getIdUsu() {
return idUsu;
}
public void setIdUsu(int idUsu) {
this.idUsu = idUsu;
}
public int getJornada() {
if (fichaActual != null && fichaActual.getIdJornada() != null) {
jornada = fichaActual.getIdJornada().getIdJornada();
}
return jornada;
}
public void setJornada(int jornada) {
this.jornada = jornada;
}
public int getIdOferta() {
if (fichaActual != null && fichaActual.getIdTipoOferta() != null) {
idOferta = fichaActual.getIdTipoOferta().getIdTipoOferta();
}
return idOferta;
}
public void setIdOferta(int idOferta) {
this.idOferta = idOferta;
}
public int getIdCentro() {
if (fichaActual != null && fichaActual.getIdCentroFormacion() != null) {
idCentro = fichaActual.getIdCentroFormacion().getIdCentroFormacion();
}
return idCentro;
}
public void setIdCentro(int idCentro) {
this.idCentro = idCentro;
}
public ProgramaFacade getProgramaFacade() {
return programaFacade;
}
public void setProgramaFacade(ProgramaFacade programaFacade) {
this.programaFacade = programaFacade;
}
public List<Programa> getListaProgramaAutocomplete(String query) {
try {
return getProgramaFacade().finByNombre(query);
} catch (Exception ex) {
Logger.getLogger(FichaController.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
public UsuarioHasFicha getUsuarioFicha() {
try {
if (getFichaSeleccionada().getCodigoFicha() != null) {
return getUsuarioHasFichaFacade().finByTipoInstructor(getFichaSeleccionada().getCodigoFicha());
} else {
return null;
}
} catch (Exception ex) {
Logger.getLogger(FichaController.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
public FichaFacade getFichaFacade() {
return fichaFacade;
}
public void validarCodigoFicha(FacesContext context, UIComponent component, Object o) throws ValidatorException {
Ficha u = getFichaFacade().getByCodigoFicha((String) o);
Pattern pat = Pattern.compile("[0-9]{6,8}");
Matcher mat = pat.matcher((String) o);
if (mat.matches()) {
if (u == null) {
fichaActual.setCodigoFicha((String) o);
} else {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El Codigo de Ficha ya fue registrado"));
}
} else {
throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El codigo de la ficha debe contener 6 digitos nĂºmericos"));
}
}
public void setFichaFacade(FichaFacade fichaFacade) {
this.fichaFacade = fichaFacade;
}
public List<Ficha> getListaFicha() {
if (listaFicha == null) {
try {
listaFicha = getFichaFacade().findAll();
} catch (Exception e) {
addErrorMessage("Error closing resource " + e.getClass().getName(), "Message: " + e.getMessage());
}
}
return listaFicha;
}
public void setListaFicha(List<Ficha> listaFicha) {
this.listaFicha = listaFicha;
}
public Ficha getFichaActual() {
if (fichaActual == null) {
fichaActual = new Ficha();
}
return fichaActual;
}
public void setFichaActual(Ficha fichaActual) {
this.fichaActual = fichaActual;
}
public CentroFormacionFacade getCentroFormacionFacade() {
return centroFormacionFacade;
}
public void setCentroFormacionFacade(CentroFormacionFacade centroFormacionFacade) {
this.centroFormacionFacade = centroFormacionFacade;
}
public List<CentroFormacion> getListaCentroFormacionSelectOne() {
return getCentroFormacionFacade().findAll();
}
public TipoOfertaFacade getTipoOfertaFacade() {
return tipoOfertaFacade;
}
public void setTipoOfertaFacade(TipoOfertaFacade tipoOfertaFacade) {
this.tipoOfertaFacade = tipoOfertaFacade;
}
public List<TipoOferta> getListaTipoOfertaSelectOne() {
return getTipoOfertaFacade().findAll();
}
public JornadaFacade getJornadaFacade() {
return JornadaFacade;
}
public void setJornadaFacade(JornadaFacade JornadaFacade) {
this.JornadaFacade = JornadaFacade;
}
public List<Jornada> getListaJornadaSelectOne() {
return getJornadaFacade().findAll();
}
public ProyectoFacade getProyectoFacade() {
return proyectoFacade;
}
public void setProyectoFacade(ProyectoFacade proyectoFacade) {
this.proyectoFacade = proyectoFacade;
}
public List<Proyecto> getListaProyectoSelectOne() {
return getProyectoFacade().findAll();
}
public TipoFormacionFacade getTipoFormacionFacade() {
return tipoFormacionFacade;
}
public void setTipoFormacionFacade(TipoFormacionFacade tipoFormacionFacade) {
this.tipoFormacionFacade = tipoFormacionFacade;
}
public List<TipoFormacion> getListaTipoFormacionSelectOne() {
return getTipoFormacionFacade().findAll();
}
public List<Ficha> getFichaListaPrograma() {
return programaActual.getFichaList();
}
public void asignarProgramaActual(ActionEvent event) {
programaActual = (Programa) event.getComponent().getAttributes().get("prog");
getProgramaActual();
}
private void recargarLista() {
listaFicha = null;
}
public void prepareCreate() {
idCentro = 0;
idOferta = 0;
jornada = 0;
idTipoFormacion = 0;
idUsu = 0;
fichaActual = null;
}
public String prepareEdit() {
return "";
}
public String prepareView() {
return "";
}
public String prepareList() {
recargarLista();
return "";
}
public void addFicha(ActionEvent event) {
try {
fichaActual.setPrograma((Programa) event.getComponent().getAttributes().get("prog"));
fichaActual.setIdCentroFormacion(getCentroFormacionFacade().find(idCentro));
fichaActual.setIdTipoOferta(getTipoOfertaFacade().find(idOferta));
fichaActual.setIdJornada(getJornadaFacade().find(jornada));
fichaActual.setIdTipoFormacion(getTipoFormacionFacade().find(idTipoFormacion));
fichaActual.setEstado(true);
getFichaFacade().create(fichaActual);
usuarioHasFichaSeleccionada = new UsuarioHasFicha();
usuarioHasFichaSeleccionada.setUsuarioHasFichaPK(new UsuarioHasFichaPK());
usuarioHasFichaSeleccionada.getUsuarioHasFichaPK().setIdUsuario(idUsu);
usuarioHasFichaSeleccionada.getUsuarioHasFichaPK().setIdFicha(fichaActual.getIdFicha());
usuarioHasFichaSeleccionada.setFicha(fichaActual);
usuarioHasFichaSeleccionada.setUsuario(getUsuarioFacade().find(idUsu));
usuarioHasFichaSeleccionada.setIdTipoInstructor(getTipoInstructorFacade().find(1));
getUsuarioHasFichaFacade().create(usuarioHasFichaSeleccionada);
recargarLista();
idUsu = 0;
idCentro = 0;
idOferta = 0;
jornada = 0;
idTipoFormacion = 0;
fichaActual = null;
getFichaActual();
} catch (Exception e) {
addErrorMessage("Error closing resource " + e.getClass().getName(), "Message: " + e.getMessage());
}
}
public boolean fichaBoolean() {
if (getFichaSeleccionada().getIdFicha() == null) {
return true;
} else {
return false;
}
}
public boolean proyectoBoolean() {
if (getFichaSeleccionada().getIdProyecto() == null) {
return true;
} else {
return false;
}
}
public boolean proyectoActividadBoolean() {
try {
if (!proyectoBoolean() || (fichaActual.getIdProyecto().getActividadList().isEmpty())) {
return true;
} else {
return false;
}
} catch (Exception e) {
System.out.println(e.getMessage() + e.getCause());
return false;
}
}
private void addErrorMessage(String title, String msg) {
FacesMessage facesMsg
= new FacesMessage(FacesMessage.SEVERITY_ERROR, title, msg);
FacesContext.getCurrentInstance().addMessage(null, facesMsg);
}
private void addSuccessMessage(String title, String msg) {
FacesMessage facesMsg
= new FacesMessage(FacesMessage.SEVERITY_INFO, title, msg);
FacesContext.getCurrentInstance().addMessage("successInfo", facesMsg);
}
public Ficha getFicha(java.lang.Integer id) {
return fichaFacade.find(id);
}
@FacesConverter(forClass = Ficha.class)
public static class FichaControllerConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
FichaController controller = (FichaController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "fichaController");
return controller.getFicha(getKey(value));
}
java.lang.Integer getKey(String value) {
java.lang.Integer key;
key = Integer.valueOf(value);
return key;
}
String getStringKey(java.lang.Integer value) {
StringBuilder sb = new StringBuilder();
sb.append(value);
return sb.toString();
}
@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
if (object == null) {
return null;
}
if (object instanceof Ficha) {
Ficha o = (Ficha) object;
return getStringKey(o.getIdFicha());
} else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + Ficha.class.getName());
}
}
}
public UsuarioHasFicha getUsuarioHasFicha(com.pepe.jpa.entities.UsuarioHasFichaPK id) {
return getUsuarioHasFichaFacade().find(id);
}
@FacesConverter(forClass = UsuarioHasFicha.class)
public static class UsuarioHasFichaControllerConverter implements Converter {
private static final String SEPARATOR = "#";
private static final String SEPARATOR_ESCAPED = "\\#";
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
UsuarioHasFichaController controller = (UsuarioHasFichaController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "usuarioHasFichaController");
return controller.getUsuarioHasFicha(getKey(value));
}
com.pepe.jpa.entities.UsuarioHasFichaPK getKey(String value) {
com.pepe.jpa.entities.UsuarioHasFichaPK key;
String values[] = value.split(SEPARATOR_ESCAPED);
key = new com.pepe.jpa.entities.UsuarioHasFichaPK();
key.setIdUsuario(Integer.parseInt(values[0]));
key.setIdFicha(Integer.parseInt(values[1]));
return key;
}
String getStringKey(com.pepe.jpa.entities.UsuarioHasFichaPK value) {
StringBuilder sb = new StringBuilder();
sb.append(value.getIdUsuario());
sb.append(SEPARATOR);
sb.append(value.getIdFicha());
return sb.toString();
}
@Override
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
if (object == null) {
return null;
}
if (object instanceof UsuarioHasFicha) {
UsuarioHasFicha o = (UsuarioHasFicha) object;
return getStringKey(o.getUsuarioHasFichaPK());
} else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + UsuarioHasFicha.class.getName());
}
}
}
}
//<!--
// <label for="ProgrmaText">Programa:</label>
// <p:autoComplete id="Programa" value="#{fichaController.fichaActual.programa}"
// completeMethod="#{fichaController.getListaProgramaAutocomplete}"
// var="Programa" itemLabel="#{Programa}" itemValue="#{Programa}"
// converter="ProgramaConverter" required="true"
// forceSelection="true" maxResults="10"/>
// -->