permisocontroller.java
/*
* 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.avbravo.seguridad.controller;
// <editor-fold defaultstate="collapsed" desc="imports">
import com.avbravo.avbravoutils.JsfUtil;
import com.avbravo.avbravoutils.printer.Printer;
import com.avbravo.ejbjmoordb.interfaces.IController;
import com.avbravo.ejbjmoordb.services.RevisionHistoryServices;
import com.avbravo.ejbjmoordb.services.UserInfoServices;
import com.avbravo.seguridad.util.ResourcesFiles;
import com.avbravo.seguridadejb.datamodel.PermisoDataModel;
import com.avbravo.seguridadejb.entity.Agente;
import com.avbravo.seguridadejb.entity.Permiso;
import com.avbravo.seguridadejb.repository.AgenteRepository;
import com.avbravo.seguridadejb.repository.PermisoRepository;
import com.avbravo.seguridadejb.repository.RevisionHistorySeguridadejbRepository;
import com.avbravo.seguridadejb.services.AutoincrementableSeguridadejbServices;
import com.avbravo.seguridadejb.services.LookupSeguridadejbServices;
import com.avbravo.seguridadejb.services.PermisoServices;
import java.util.ArrayList;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import javax.annotation.PostConstruct;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import javax.faces.context.FacesContext;
import org.bson.Document;
import org.primefaces.context.RequestContext;
import org.primefaces.event.SelectEvent;
// </editor-fold>
/**
*
* @authoravbravo
*/
@Named
@ViewScoped
public class PermisoController implements Serializable, IController {
// <editor-fold defaultstate="collapsed" desc="fields">
private static final long serialVersionUID = 1L;
private Boolean writable = false;
//DataModel
private PermisoDataModel permisoDataModel;
Integer page = 1;
Integer rowPage = 25;
List<Integer> pages = new ArrayList<>();
String localIdagente = "";
//
//Entity
Permiso permiso;
Permiso permisoSelected;
Agente agente;
Agente agenteSelected;
//List
List<Permiso> permisoList = new ArrayList<>();
List<Permiso> permisoFiltered = new ArrayList<>();
//Repository
@Inject
PermisoRepository permisoRepository;
@Inject
AgenteRepository agenteRepository;
@Inject
RevisionHistorySeguridadejbRepository revisionHistorySeguridadejbRepository;
//Services
//Atributos para busquedas
@Inject
LookupSeguridadejbServices lookupSeguridadejbServices;
@Inject
AutoincrementableSeguridadejbServices autoincrementableSeguridadejbServices;
@Inject
RevisionHistoryServices revisionHistoryServices;
@Inject
UserInfoServices userInfoServices;
@Inject
PermisoServices permisoServices;
@Inject
ResourcesFiles rf;
@Inject
Printer printer;
@Inject
LoginController loginController;
//List of Relations
//Repository of Relations
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="getter/setter">
public List<Integer> getPages() {
return permisoRepository.listOfPage(rowPage);
}
public LookupSeguridadejbServices getLookupSeguridadejbServices() {
return lookupSeguridadejbServices;
}
public void setLookupSeguridadejbServices(LookupSeguridadejbServices lookupSeguridadejbServices) {
this.lookupSeguridadejbServices = lookupSeguridadejbServices;
}
public void setPages(List<Integer> pages) {
this.pages = pages;
}
public Agente getAgente() {
return agente;
}
public void setAgente(Agente agente) {
this.agente = agente;
}
public Integer getPage() {
return page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getRowPage() {
return rowPage;
}
public void setRowPage(Integer rowPage) {
this.rowPage = rowPage;
}
public PermisoServices getPermisoServices() {
return permisoServices;
}
public void setPermisoServices(PermisoServices permisoServices) {
this.permisoServices = permisoServices;
}
public List<Permiso> getPermisoList() {
return permisoList;
}
public void setPermisoList(List<Permiso> permisoList) {
this.permisoList = permisoList;
}
public List<Permiso> getPermisoFiltered() {
return permisoFiltered;
}
public void setPermisoFiltered(List<Permiso> permisoFiltered) {
this.permisoFiltered = permisoFiltered;
}
public Permiso getPermiso() {
return permiso;
}
public void setPermiso(Permiso permiso) {
this.permiso = permiso;
}
public Permiso getPermisoSelected() {
return permisoSelected;
}
public void setPermisoSelected(Permiso permisoSelected) {
this.permisoSelected = permisoSelected;
}
public PermisoDataModel getPermisoDataModel() {
return permisoDataModel;
}
public void setPermisoDataModel(PermisoDataModel permisoDataModel) {
this.permisoDataModel = permisoDataModel;
}
public Boolean getWritable() {
return writable;
}
public void setWritable(Boolean writable) {
this.writable = writable;
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="constructor">
public PermisoController() {
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="preRenderView()">
@Override
public String preRenderView(String action) {
//acciones al llamar el formulario despues del init
return "";
}
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="init">
@PostConstruct
public void init() {
try {
//Permiso
String action = loginController.get("permiso");
String idpermiso = loginController.get("idpermiso");
String pageSession = loginController.get("pagepermiso");
//El agente seleccionado
String idagente = loginController.get("idagente");
//Search
loginController.put("searchpermiso", "_init");
//buscar el agente
localIdagente = idagente;
writable = false;
permisoList = new ArrayList<>();
permisoFiltered = new ArrayList<>();
permiso = new Permiso();
permisoDataModel = new PermisoDataModel(permisoList);
agente = new Agente();
agenteSelected = new Agente();
if (idagente != null) {
Optional<Agente> optionalAgente = agenteRepository.find("idagente", idagente);
if (optionalAgente.isPresent()) {
agente = optionalAgente.get();
agenteSelected = agente;
writable = true;
permiso.setAgente(agente);
}
}
if (idpermiso != null) {
Optional<Permiso> optional = permisoRepository.find("idpermiso", Integer.parseInt(idpermiso));
if (optional.isPresent()) {
permiso = optional.get();
permisoSelected = permiso;
writable = true;
}
}
if (action != null && action.equals("gonew")) {
permiso = new Permiso();
permiso.setAgente(agente);
permisoSelected = permiso;
writable = true;
}
if (pageSession != null) {
page = Integer.parseInt(pageSession);
}
Integer c = agenteRepository.sizeOfPage(rowPage);
page = page > c ? c : page;
move();
} catch (Exception e) {
JsfUtil.errorMessage("init() " + e.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="reset">
@Override
public void reset() {
RequestContext.getCurrentInstance().reset(":form:content");
prepare("new");
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="prepare(String action, Object... item)">
@Override
public String prepare(String action, Object... item) {
String url = "";
try {
loginController.put("pagepermiso", page.toString());
loginController.put("permiso", action);
switch (action) {
case "new":
permiso = new Permiso();
permiso.setAgente(agente);
permisoSelected = permiso;
writable = true;
break;
case "view":
if (item.length != 0) {
permisoSelected = (Permiso) item[0];
permiso = permisoSelected;
loginController.put("idpermiso", permiso.getIdpermiso().toString());
}
url = "/pages/permiso/view.xhtml";
break;
case "golist":
url = "/pages/permiso/list.xhtml";
break;
case "gonew":
url = "/pages/permiso/new.xhtml";
break;
}
} catch (Exception e) {
JsfUtil.errorMessage("prepare() " + e.getLocalizedMessage());
}
return url;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="showAll">
@Override
public String showAll() {
try {
permisoList = new ArrayList<>();
permisoFiltered = new ArrayList<>();
permisoList = permisoRepository.findAll();
permisoFiltered = permisoList;
permisoDataModel = new PermisoDataModel(permisoList);
} catch (Exception e) {
JsfUtil.errorMessage("showAll()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="isNew">
@Override
public String isNew() {
try {
writable = true;
if(JsfUtil.isVacio(permiso.getIdpermiso())){
writable=false;
return "";
}
Optional<Permiso> optional = permisoRepository.findById(permiso);
if (optional.isPresent()) {
writable = false;
JsfUtil.warningMessage(rf.getAppMessage("warning.idexist"));
return "";
} else {
Integer id = permiso.getIdpermiso();
permiso = new Permiso();
permiso.setIdpermiso(id);
permisoSelected = new Permiso();
}
} catch (Exception e) {
JsfUtil.errorMessage("isNew()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="save">
@Override
public String save() {
try {
// Optional<Permiso> optional = permisoRepository.findById(permiso);
// if (optional.isPresent()) {
// JsfUtil.warningMessage(rf.getAppMessage("warning.idexist"));
// return null;
// }
// if (JsfUtil.diasEntreFechas(permiso.getFechainicio(), permiso.getFechafin()) > 1) {
// JsfUtil.warningMessage("La fecha de terminacion debe ser mayor");
// return "";
//
// }
// List<Permiso> list = permisoRepository.findBy(new Document("agente.idagente", agente.getIdagente()).append("fecha", permiso.getFecha()));
//
// if (!list.isEmpty()) {
// writable = false;
//
// JsfUtil.warningMessage(rf.getAppMessage("warning.idexist"));
// return "";
// }
Integer idpermiso = autoincrementableSeguridadejbServices.getContador("permiso");
permiso.setIdpermiso(idpermiso);
permiso.setUserInfo(userInfoServices.generateListUserinfo(loginController.getUsername(), "create"));
if (permisoRepository.save(permiso)) {
revisionHistorySeguridadejbRepository.save(revisionHistoryServices.getRevisionHistory(permiso.getIdpermiso().toString(), loginController.getUsername(),
"create", "permiso", permisoRepository.toDocument(permiso).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.save"));
reset();
} else {
JsfUtil.successMessage("save() " + permisoRepository.getException().toString());
}
} catch (Exception e) {
JsfUtil.errorMessage("save()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="edit">
@Override
public String edit() {
try {
permiso.getUserInfo().add(userInfoServices.generateUserinfo(loginController.getUsername(), "update"));
//guarda el contenido anterior
//guarda el contenido actualizado
revisionHistorySeguridadejbRepository.save(revisionHistoryServices.getRevisionHistory(permiso.getIdpermiso().toString(), loginController.getUsername(),
"update", "permiso", permisoRepository.toDocument(permiso).toString()));
permisoRepository.update(permiso);
JsfUtil.successMessage(rf.getAppMessage("info.update"));
} catch (Exception e) {
JsfUtil.errorMessage("edit()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="delete(Object item, Boolean deleteonviewpage)">
@Override
public String delete(Object item, Boolean deleteonviewpage) {
String path = "";
try {
permiso = (Permiso) item;
permisoSelected = permiso;
if (permisoRepository.delete("idpermiso", permiso.getIdpermiso())) {
revisionHistorySeguridadejbRepository.save(revisionHistoryServices.getRevisionHistory(permiso.getIdpermiso().toString(), loginController.getUsername(), "delete", "permiso", permisoRepository.toDocument(permiso).toString()));
JsfUtil.successMessage(rf.getAppMessage("info.delete"));
if (!deleteonviewpage) {
permisoList.remove(permiso);
permisoFiltered = permisoList;
permisoDataModel = new PermisoDataModel(permisoList);
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pagepermiso", page.toString());
} else {
permiso = new Permiso();
permisoSelected = new Permiso();
writable = false;
}
}
} catch (Exception e) {
JsfUtil.errorMessage("delete() " + e.getLocalizedMessage());
}
//path = deleteonviewpage ? "/pages/permiso/list.xhtml" : "";
path = "";
return path;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="deleteAll">
@Override
public String deleteAll() {
if (permisoRepository.deleteAll() != 0) {
JsfUtil.successMessage(rf.getAppMessage("info.delete"));
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="print">
@Override
public String print() {
try {
FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("pagepermiso", page.toString());
List<Permiso> list = new ArrayList<>();
list.add(permiso);
String ruta = "/resources/reportes/permiso/details.jasper";
HashMap parameters = new HashMap();
// parameters.put("P_parametro", "valor");
printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.errorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="printAll">
@Override
public String printAll() {
try {
List<Permiso> list = new ArrayList<>();
list = permisoRepository.findAll(new Document("idpermiso", 1));
String ruta = "/resources/reportes/permiso/all.jasper";
HashMap parameters = new HashMap();
// parameters.put("P_parametro", "valor");
printer.imprimir(list, ruta, parameters);
} catch (Exception ex) {
JsfUtil.errorMessage("imprimir() " + ex.getLocalizedMessage());
}
return null;
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="handleSelect">
public void handleSelect(SelectEvent event) {
try {
permisoList.removeAll(permisoList);
permisoList.add(permisoSelected);
permisoFiltered = permisoList;
permisoDataModel = new PermisoDataModel(permisoList);
loginController.put("searchpermiso", "_autocomplete");
} catch (Exception ex) {
JsfUtil.errorMessage("handleSelect() " + ex.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="clear()">
@Override
public String clear() {
try {
loginController.put("searchpermiso", "_init");
page = 1;
lookupSeguridadejbServices.setIdpermiso(null);
lookupSeguridadejbServices.setFecha(null);
move();
} catch (Exception e) {
JsfUtil.errorMessage("clear()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="last">
@Override
public String last() {
try {
page = permisoRepository.sizeOfPage(rowPage);
move();
} catch (Exception e) {
JsfUtil.errorMessage("last() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="first">
@Override
public String first() {
try {
page = 1;
move();
} catch (Exception e) {
JsfUtil.errorMessage("first() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="next">
@Override
public String next() {
try {
if (page < (permisoRepository.sizeOfPage(rowPage))) {
page++;
}
move();
} catch (Exception e) {
JsfUtil.errorMessage("next() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="back">
@Override
public String back() {
try {
if (page > 1) {
page--;
}
move();
} catch (Exception e) {
JsfUtil.errorMessage("back() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="skip(Integer page)">
@Override
public String skip(Integer page) {
try {
this.page = page;
move();
} catch (Exception e) {
JsfUtil.errorMessage("skip() " + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="move">
@Override
public void move() {
try {
Document doc;
switch (loginController.get("searchpermiso")) {
case "_init":
permisoList = permisoRepository.findFilterPagination(new Document("agente.idagente", localIdagente), page, rowPage, new Document("idpermiso", -1));
break;
case "_autocomplete":
//no se realiza ninguna accion
break;
case "_betweendates":
permisoList = permisoRepository.filterBetweenDatePagination("agente.idagente", agente.getIdagente(), "fechainicio", lookupSeguridadejbServices.getFechaDesde(), "fechafin", lookupSeguridadejbServices.getFechaHasta(), page, rowPage, new Document("idpermiso", -1));
break;
case "idagente":
permisoList = permisoRepository.findFilterPagination(new Document("agente.idagente", localIdagente), page, rowPage, new Document("idpermiso", -1));
break;
case "idpermiso":
doc = new Document("idpermiso", lookupSeguridadejbServices.getIdpermiso()).append("agente.idagente", agente.getIdagente());
permisoList = permisoRepository.findFilterPagination(doc, page, rowPage, new Document("idpermiso", -1));
break;
case "fechainicio":
permisoList = permisoRepository.filterDayWithoutHourPagination("agente.idagente", agente.getIdagente(), "fechainicio", lookupSeguridadejbServices.getFechaincio(), page, rowPage, new Document("idpermiso", -1));
break;
case "fechafin":
permisoList = permisoRepository.filterDayWithoutHourPagination("agente.idagente", agente.getIdagente(), "fechafin", lookupSeguridadejbServices.getFechafin(), page, rowPage, new Document("idpermiso", -1));
break;
default:
permisoList = permisoRepository.findFilterPagination(new Document("agente.idagente", localIdagente), page, rowPage, new Document("idpermiso", -1));
break;
}
permisoFiltered = permisoList;
permisoDataModel = new PermisoDataModel(permisoList);
} catch (Exception e) {
JsfUtil.errorMessage("move() " + e.getLocalizedMessage());
}
}// </editor-fold>
// <editor-fold defaultstate="collapsed" desc="searchBy(String string)">
@Override
public String searchBy(String string) {
try {
loginController.put("searchpermiso", string);
writable = true;
move();
} catch (Exception e) {
JsfUtil.errorMessage("searchBy()" + e.getLocalizedMessage());
}
return "";
}// </editor-fold>
}
Last updated
Was this helpful?