diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/EditarContigenciaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/EditarContigenciaController.java new file mode 100644 index 000000000..efd2765a7 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/seguridad/EditarContigenciaController.java @@ -0,0 +1,283 @@ +/** + * + */ +package com.rjconsultores.ventaboletos.web.gui.controladores.seguridad; + +import java.util.List; + +import org.apache.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zk.ui.event.EventListener; +import org.zkoss.zul.Button; +import org.zkoss.zul.Combobox; +import org.zkoss.zul.Comboitem; +import org.zkoss.zul.Paging; +import org.zkoss.zul.Textbox; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Estado; +import com.rjconsultores.ventaboletos.entidad.LogHistoricoContingencia; +import com.rjconsultores.ventaboletos.service.ContingenciaService; +import com.rjconsultores.ventaboletos.service.EstadoService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderHistoricoContingencia; +import com.trg.search.Filter; + +/** + * @author vjcor + * + */ +@Controller("editarContigenciaController") +@Scope("prototype") +public class EditarContigenciaController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + + private static Logger log = Logger.getLogger(EditarContigenciaController.class); + + @Autowired + private ContingenciaService contigenciaService; + + @Autowired + private EstadoService estadoService; + + private List lsEstado; + + private Combobox cmbEmpresa; + private Combobox cmbEstado; + private List lsEmpresas; + private MyListbox historicoList; + private Button btnContingencia; + private Boolean setarContigencia; + private Textbox txtMotivo; + private Textbox txtStatus; + + private Paging pagingHistorico; + @Autowired + private transient PagedListWrapper plwLogContingencia; + + @Override + public void doAfterCompose(Component comp) throws Exception { + lsEstado = estadoService.obtenerTodos(); + + lsEmpresas = UsuarioLogado.getUsuarioLogado().getEmpresa(); + + super.doAfterCompose(comp); + + historicoList.setItemRenderer(new RenderHistoricoContingencia()); + + setarContigencia = false; + + txtStatus.setDisabled(true); + + cmbEmpresa.addEventListener("onChange", new EventListener() { + + @Override + public void onEvent(Event arg0) throws Exception { + buscarHistoricoContigencia(); + } + }); + + cmbEstado.addEventListener("onChange", new EventListener() { + + @Override + public void onEvent(Event arg0) throws Exception { + buscarHistoricoContigencia(); + } + }); + + btnContingencia.setDisabled(true); + + } + + public void onClick$btnContingencia(Event ev) { + try { + + if (Messagebox.show("Deseja Continuar?", "Continuar?", Messagebox.YES | Messagebox.NO, Messagebox.QUESTION) == Messagebox.NO) { + return; + } + + if("".equals(txtMotivo.getValue().trim())) { + try { + Messagebox.show("É necessário inserir o motivo da operação para continuar.", + Labels.getLabel("editarContigencia.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + + return; + } + + // TODO: setar status pelo servico criado pelo alberto de acordo com o boolean 'setarContigencia' definido anteriormente na pesquisa + + // TODO: em caso de sucesso salvar o historico + + LogHistoricoContingencia logHistorico = new LogHistoricoContingencia(); + + Comboitem itemEmpresa = cmbEmpresa.getSelectedItem(); + Empresa empresa = (Empresa) itemEmpresa.getValue(); + + logHistorico.setEmpresa(empresa); + + Comboitem itemEstado = cmbEstado.getSelectedItem(); + Estado estado = (Estado) itemEstado.getValue(); + + logHistorico.setEstado(estado); + + logHistorico.setMotivo(txtMotivo.getValue().trim()); + + contigenciaService.salvarHistoricoContingencia(logHistorico); + + try { + Messagebox.show("Status alterado com sucesso.", + Labels.getLabel("editarContigencia.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + + buscarHistoricoContigencia(); + + } catch (Exception e) { + log.error("Erro ao setar contingencia: " , e); + try { + Messagebox.show("Ocorreu um erro ao setar a contingencia", + Labels.getLabel("editarContigencia.window.title"), + Messagebox.OK, Messagebox.ERROR); + } catch (InterruptedException ex) { + } + } + } + + private void verificarStatus() { + //TODO: buscar o status pelo servico e mostrar o status atual e alterar o label do botão de acordo com a acao que pode ser tomada + txtStatus.setValue(""); + + // TODO: setar o botao para contigencia caso for e mostrar p status + setarContigencia = true; + + alterarTextoBotao(); + + } + + private void buscarHistoricoContigencia() { + + if(cmbEmpresa.getSelectedIndex() < 0 || cmbEstado.getSelectedIndex() < 0) { + log.info("Não foi seecionado empresa e/ou estado"); + return; + } + + txtMotivo.setValue(""); + + //Verifica o status do estado e seta os labels do botao e status + verificarStatus(); + + HibernateSearchObject sistemaBusqueda = new HibernateSearchObject + (LogHistoricoContingencia.class, pagingHistorico.getPageSize()); + + Comboitem itemEmpresa = cmbEmpresa.getSelectedItem(); + Empresa empresa = (Empresa) itemEmpresa.getValue(); + + sistemaBusqueda.addFilter(Filter.equal("empresa", empresa)); + + Comboitem itemEstado = cmbEstado.getSelectedItem(); + Estado estado = (Estado) itemEstado.getValue(); + + sistemaBusqueda.addFilter(Filter.equal("estado", estado)); + + sistemaBusqueda.addSortDesc("LogHistoricoContingenciaId"); + + plwLogContingencia.init(sistemaBusqueda, historicoList, pagingHistorico); + } + + private void alterarTextoBotao() { + btnContingencia.setDisabled(false); + if(setarContigencia) { + btnContingencia.setLabel("SETAR CONTINGENCIA"); + } else { + btnContingencia.setLabel("RETIRAR CONTINGENCIA"); + } + } + + public List getLsEstado() { + return lsEstado; + } + + public void setLsEstado(List lsEstado) { + this.lsEstado = lsEstado; + } + + public Combobox getCmbEmpresa() { + return cmbEmpresa; + } + + public void setCmbEmpresa(Combobox cmbEmpresa) { + this.cmbEmpresa = cmbEmpresa; + } + + public List getLsEmpresas() { + return lsEmpresas; + } + + public void setLsEmpresas(List lsEmpresas) { + this.lsEmpresas = lsEmpresas; + } + + public Combobox getCmbEstado() { + return cmbEstado; + } + + public void setCmbEstado(Combobox cmbEstado) { + this.cmbEstado = cmbEstado; + } + + public MyListbox getHistoricoList() { + return historicoList; + } + + public void setHistoricoList(MyListbox historicoList) { + this.historicoList = historicoList; + } + + public Paging getPagingHistorico() { + return pagingHistorico; + } + + public void setPagingHistorico(Paging pagingHistorico) { + this.pagingHistorico = pagingHistorico; + } + + public Button getBtnContingencia() { + return btnContingencia; + } + + public void setBtnContingencia(Button btnContingencia) { + this.btnContingencia = btnContingencia; + } + + public Textbox getTxtMotivo() { + return txtMotivo; + } + + public void setTxtMotivo(Textbox txtMotivo) { + this.txtMotivo = txtMotivo; + } + + public Textbox getTxtStatus() { + return txtStatus; + } + + public void setTxtStatus(Textbox txtStatus) { + this.txtStatus = txtStatus; + } + +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/ContingenciaUtils.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/ContingenciaUtils.java new file mode 100644 index 000000000..5f44e99d9 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/ContingenciaUtils.java @@ -0,0 +1,51 @@ +package com.rjconsultores.ventaboletos.web.utilerias; + +import org.apache.log4j.Logger; +/** + * @author vjcor + * + */ +public class ContingenciaUtils { + + private static Logger log = Logger.getLogger(ContingenciaUtils.class); + + private static ContingenciaUtils instance; + + public static ContingenciaUtils getInstance() { + if(instance == null) { + instance = new ContingenciaUtils(); + } + + return instance; + } + + private String buscarConstanteURL() { + //TODO: buscar constante com o valor da URL + return "http://10.20.30.157:8130"; + } + + private void verificarStatus(String uf, String ambiente, String cnpj) { + String uri = buscarConstanteURL().concat("/BPeRS/rest/adm/contingencia/tipoEmissaoEmpresa"); +/* + String response = null; + + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { + HttpGet httpGet = new HttpGet(uri+"?uf=".concat(uf).concat("&ambiente=").concat(ambiente).concat("&cnpj=").concat(cnpj)); + + String encoding = Base64.getEncoder().encodeToString("rjconsultores:RJ#C0nsul10res@2019".getBytes()); + + httpGet.addHeader("Authorization", "Basic " + encoding); + httpGet.setHeader("Content-type", MediaType.APPLICATION_JSON); + httpGet.setHeader("accept", MediaType.APPLICATION_JSON); + + try (CloseableHttpResponse httpResponse = httpClient.execute(httpGet)) { + response = EntityUtils.toString(httpResponse.getEntity()); + } + } catch (IOException e) { + log.error("Erro: ", e); + } + + log.info("[response] " + response); + */ + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/seguridad/ItemMenuContingencia.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/seguridad/ItemMenuContingencia.java new file mode 100644 index 000000000..778f59225 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/seguridad/ItemMenuContingencia.java @@ -0,0 +1,26 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.constantes.ConstantesFuncionSistema; +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuContingencia extends DefaultItemMenuSistema { + + public ItemMenuContingencia() { + super("indexController.mniTelaContingencia.label"); + } + + @Override + public String getClaveMenu() { + return ConstantesFuncionSistema.CLAVE_CONTINGENCIA; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/seguridad/editarContingencia.zul", + Labels.getLabel("editarContigencia.window.title"), getArgs(), desktop); + + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties index 3934df491..ad6abe412 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/menu_original.properties @@ -259,6 +259,7 @@ seguridad.custom=com.rjconsultores.ventaboletos.web.utilerias.menu.item.segurida seguridad.dispositivoVendaEmbarcada=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuDispositivoVendaEmbarcada seguridad.autorizacaoSerieEmbarcada=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuAutorizacaoUsoSerieEmbarcada seguridad.painelBpe=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuPainelBPe +seguridad.contingencia=com.rjconsultores.ventaboletos.web.utilerias.menu.item.seguridad.ItemMenuContingencia pasajerofrecuente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.MenuPasajeroFrecuente pasajerofrecuente.cliente=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.ItemMenuCliente pasajerofrecuente.importarClientes=com.rjconsultores.ventaboletos.web.utilerias.menu.item.pasajerofrecuente.ItemMenuImportarClientes diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderHistoricoContingencia.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderHistoricoContingencia.java new file mode 100644 index 000000000..64efdeabe --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderHistoricoContingencia.java @@ -0,0 +1,34 @@ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.entidad.LogHistoricoContingencia; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; + +public class RenderHistoricoContingencia implements ListitemRenderer { + + @Override + public void render(Listitem lstm, Object o) throws Exception { + LogHistoricoContingencia log = (LogHistoricoContingencia) o; + + Listcell lc = new Listcell(log.getLogHistoricoContingenciaId().toString()); + lc.setParent(lstm); + + lc = new Listcell(log.getMotivo()); + lc.setParent(lstm); + + lc = new Listcell(log.getUsuario().getUsuarioId() + " - " + log.getUsuario().getName()); + lc.setParent(lstm); + + lc = new Listcell(DateUtil.getStringDateHour(log.getDataHora())); + lc.setParent(lstm); + + lc = new Listcell(log.getStatus()); + lc.setParent(lstm); + + lstm.setAttribute("data", log); + } + +} diff --git a/web/WEB-INF/i3-label_es_MX.label b/web/WEB-INF/i3-label_es_MX.label index da57ab3be..e674c7826 100644 --- a/web/WEB-INF/i3-label_es_MX.label +++ b/web/WEB-INF/i3-label_es_MX.label @@ -8142,3 +8142,19 @@ relatorioReceitasDespesasDivController.msg.erro.empresa = Sem dados para gerar o editarEmpresaController.permitirVendaEstudanteTotem.ajuda = Habilita la venta de pasajes para estudiantes en el Toten para la Empresa configurada. Se necesitará el número de fidelidad para la validación del paso. Para que esta configuración haga efecto es necesario habilitar la configuración 'Habilita Fidelidad'. editarEmpresaController.permitirVendaEstudanteTotem = Habilitar la venta de pasajes para estudiantes en el tótem. + +#Tela de contigencia +indexController.mniTelaContingencia.label=Contigência +editarContigencia.window.title=Contingência +editarContigencia.btnFechar.tooltiptext= Fechar +editarContigencia.estado.label = Estado +editarContigencia.empresa.label = Empresa +editarContigencia.status.label = Status +editarContigencia.motivo.label = Motivo +editarContigencia.btnSetarContingencia.label=Setar Contingência +editarContigencia.btnRetirarContingencia.label=Retirar Contingência +editarContigencia.tabela.id=ID +editarContigencia.tabela.motivo=MOTIVO +editarContigencia.tabela.usuario=USUARIO +editarContigencia.tabela.data=DATA +editarContigencia.tabela.status=STATUS diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 91a7e99fa..f6aee8ba5 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -8637,3 +8637,19 @@ relatorioReceitasDespesasDivController.msg.erro.empresa = Sem dados para gerar o #painelBpe painelbpe.title=Painel BPe painelbpe.message.naoconfigurado=Favor realizar a configuração do Painel BPe. O mesmo não se encontra configurado: {0}. + +#Tela de contigencia +indexController.mniTelaContingencia.label=Contigência +editarContigencia.window.title=Contingência +editarContigencia.btnFechar.tooltiptext= Fechar +editarContigencia.estado.label = Estado +editarContigencia.empresa.label = Empresa +editarContigencia.status.label = Status +editarContigencia.motivo.label = Motivo +editarContigencia.btnSetarContingencia.label=Setar Contingência +editarContigencia.btnRetirarContingencia.label=Retirar Contingência +editarContigencia.tabela.id=ID +editarContigencia.tabela.motivo=MOTIVO +editarContigencia.tabela.usuario=USUARIO +editarContigencia.tabela.data=DATA +editarContigencia.tabela.status=STATUS diff --git a/web/gui/seguridad/editarContingencia.zul b/web/gui/seguridad/editarContingencia.zul new file mode 100644 index 000000000..d91c2d194 --- /dev/null +++ b/web/gui/seguridad/editarContingencia.zul @@ -0,0 +1,102 @@ + + + + + + + + + + +