/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.pepe.controller;
import com.pepe.jpa.entities.Actividad;
import com.pepe.jpa.entities.ActividadHasResultadoAprendizaje;
import com.pepe.jpa.entities.Evento;
import com.pepe.jpa.entities.Fase;
import com.pepe.jpa.entities.Ficha;
import com.pepe.jpa.entities.Programador;
import com.pepe.jpa.entities.Proyecto;
import com.pepe.jpa.entities.ResultadoAprendizaje;
import com.pepe.jpa.entities.Usuario;
import com.pepe.jpa.entities.UsuarioHasFicha;
import com.pepe.jpa.sesions.ActividadAprendizajeFacade;
import com.pepe.jpa.sesions.ActividadFacade;
import com.pepe.jpa.sesions.ActividadHasResultadoAprendizajeFacade;
import com.pepe.jpa.sesions.CompetenciaFacade;
import com.pepe.jpa.sesions.EventoFacade;
import com.pepe.jpa.sesions.FaseFacade;
import com.pepe.jpa.sesions.ProgramadorFacade;
import com.pepe.jpa.sesions.ProyectoFacade;
import com.pepe.jpa.sesions.ResultadoAprendizajeFacade;
import com.pepe.jpa.sesions.UsuarioFacade;
import com.pepe.jpa.sesions.UsuarioHasFichaFacade;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
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;
/**
*
* @author ADSI TARDE
*/
@ManagedBean
@SessionScoped
public class EventoController implements Serializable {
@EJB
private ResultadoAprendizajeFacade resultadoAprendizajeFacade;
@EJB
private FaseFacade faseFacade;
@EJB
private ActividadAprendizajeFacade actividadAprendizajeFacade;
@EJB
private CompetenciaFacade competenciaFacade;
@EJB
private EventoFacade eventoFacade;
@EJB
private ActividadFacade actividadFacade;
@EJB
private ProyectoFacade ProyectoFacade;
@EJB
private ActividadHasResultadoAprendizajeFacade ActividadHasResultadoAprendizajeFacade;
@EJB
private ProgramadorFacade programadorFacade;
@EJB
private UsuarioHasFichaFacade UsuarioHasFichaFacade;
private Evento eventoActual;
private List<Evento> listaEvento = null;
private List<Programador> listaProgramador = null;
private Programador programadorActual;
private Proyecto proyectoActual;
private Ficha fichaActual;
private List<Usuario> listaUsuario = null;
public List<Usuario> getListaUsuario() {
return listaUsuario;
}
public void setListaUsuario(List<Usuario> listaUsuario) {
this.listaUsuario = listaUsuario;
}
public UsuarioHasFichaFacade getUsuarioHasFichaFacade() {
return UsuarioHasFichaFacade;
}
public void setUsuarioHasFichaFacade(UsuarioHasFichaFacade UsuarioHasFichaFacade) {
this.UsuarioHasFichaFacade = UsuarioHasFichaFacade;
}
public ProgramadorFacade getProgramadorFacade() {
return programadorFacade;
}
public void setProgramadorFacade(ProgramadorFacade programadorFacade) {
this.programadorFacade = programadorFacade;
}
public Programador getProgramadorActual() {
if (programadorActual == null) {
programadorActual = new Programador();
}
return programadorActual;
}
public void setProgramadorActual(Programador programadorActual) {
this.programadorActual = programadorActual;
}
public Ficha getFichaActual() {
return fichaActual;
}
public void setFichaActual(Ficha fichaActual) {
this.fichaActual = fichaActual;
}
public ActividadHasResultadoAprendizajeFacade getActividadHasResultadoAprendizajeFacade() {
return ActividadHasResultadoAprendizajeFacade;
}
public void setActividadHasResultadoAprendizajeFacade(ActividadHasResultadoAprendizajeFacade ActividadHasResultadoAprendizajeFacade) {
this.ActividadHasResultadoAprendizajeFacade = ActividadHasResultadoAprendizajeFacade;
}
public ActividadFacade getActividadFacade() {
return actividadFacade;
}
public void setActividadFacade(ActividadFacade actividadFacade) {
this.actividadFacade = actividadFacade;
}
public ProyectoFacade getProyectoFacade() {
return ProyectoFacade;
}
public void setProyectoFacade(ProyectoFacade ProyectoFacade) {
this.ProyectoFacade = ProyectoFacade;
}
public List<Evento> getListaEvento() {
return listaEvento;
}
public void setListaEvento(List<Evento> listaEvento) {
this.listaEvento = listaEvento;
}
public Proyecto getProyectoActual() {
return proyectoActual;
}
public void setProyectoActual(Proyecto proyectoActual) {
this.proyectoActual = proyectoActual;
}
public EventoController() {
}
public EventoFacade getEventoFacade() {
return eventoFacade;
}
public void setEventoFacade(EventoFacade eventoFacade) {
this.eventoFacade = eventoFacade;
}
public Evento getEventoActual() {
return eventoActual;
}
public void setEventoActual(Evento eventoActual) {
this.eventoActual = eventoActual;
}
public ResultadoAprendizajeFacade getResultadoAprendizajeFacade() {
return resultadoAprendizajeFacade;
}
public void setResultadoAprendizajeFacade(ResultadoAprendizajeFacade resultadoAprendizajeFacade) {
this.resultadoAprendizajeFacade = resultadoAprendizajeFacade;
}
public FaseFacade getFaseFacade() {
return faseFacade;
}
public void setFaseFacade(FaseFacade faseFacade) {
this.faseFacade = faseFacade;
}
public ActividadAprendizajeFacade getActividadAprendizajeFacade() {
return actividadAprendizajeFacade;
}
public void setActividadAprendizajeFacade(ActividadAprendizajeFacade actividadAprendizajeFacade) {
this.actividadAprendizajeFacade = actividadAprendizajeFacade;
}
public CompetenciaFacade getCompetenciaFacade() {
return competenciaFacade;
}
public void setCompetenciaFacade(CompetenciaFacade competenciaFacade) {
this.competenciaFacade = competenciaFacade;
}
public List<Programador> getListaProgramador() {
return listaProgramador;
}
private void recargarLista() {
listaEvento = null;
}
public List<ActividadHasResultadoAprendizaje> obtListaAHR(Actividad a) {
return a.getActividadHasResultadoAprendizajeList();
}
public List<ActividadHasResultadoAprendizaje> actividadResultadoLista(Actividad a) {
try {
List<ActividadHasResultadoAprendizaje> l = getActividadHasResultadoAprendizajeFacade().finByResultado(a);
return l;
} catch (Exception ex) {
Logger.getLogger(EventoController.class.getName()).log(Level.SEVERE, null, ex);
return null;
}
}
public void sumaHoras() {
int acum = 0;
if (listaProgramador != null) {
for (Programador evento : listaProgramador) {
acum = acum + evento.getCantidadHora();
}
if (acum > 40) {
addErrorMessage("Advertencia", "La cantidad de horas sobrepasa las 40");
}
}
}
public void prepareCreate(ActionEvent event) {
fichaActual = new Ficha();
fichaActual = ((Ficha) event.getComponent().getAttributes().get("ficha"));
listaProgramador = getProgramadorFacade().findByProyecto(fichaActual);
programadorActual = getProgramadorFacade().find(fichaActual.getIdFicha()) == null ? new Programador(fichaActual.getIdFicha()) : getProgramadorFacade().find(fichaActual.getIdFicha());
boolean v;
for (ActividadHasResultadoAprendizaje resultado : getActividadHasResultadoAprendizajeFacade().findByIdActividadPoyecto(fichaActual)) {
v = false;
Programador programador;
for (Programador programado : listaProgramador) {
v = false;
if ((programado.getActividadHasResultadoAprendizaje().getActividad().equals(resultado.getActividad()) && programado.getActividadHasResultadoAprendizaje().getResultadoAprendizaje().equals(resultado.getResultadoAprendizaje()))) {
v = true;
}
}
if (!v) {
programador = new Programador();
programador.setIdFicha(fichaActual);
programador.setActividadHasResultadoAprendizaje(resultado);
listaProgramador.add(programador);
}
}
}
public List<Usuario> getListaUsuarioSelectOne() {
return getUsuarioHasFichaFacade().finByUsuario(fichaActual.getCodigoFicha());
}
public List<Programador> getListaFichaProgramador() {
return getProgramadorFacade().findByFichaProgramador(programadorActual.getIdFicha());
}
public String cargarCreate() {
return "/ProgramaciondeProyecto/programacion";
}
public String prepareEdit() {
return "";
}
public String prepareView() {
return "";
}
public String prepareList() {
recargarLista();
return "";
}
public String addProgramador() {
try {
for (Programador programador : listaProgramador) {
getProgramadorFacade().edit(programador);
}
recargarLista();
return "";
} catch (Exception e) {
addErrorMessage("Error closing resource " + e.getClass().getName(), "Message: " + e.getMessage());
return null;
}
}
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 Evento getEvento(java.lang.Integer id) {
return getEventoFacade().find(id);
}
@FacesConverter(forClass = Evento.class)
public static class EventoControllerConverter implements Converter {
@Override
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0) {
return null;
}
EventoController controller = (EventoController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "eventoController");
return controller.getEvento(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 Evento) {
Evento o = (Evento) object;
return getStringKey(o.getIdEvento());
} else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + Evento.class.getName());
}
}
}
}