package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLElement;
import br.com.centralit.citcorpore.bean.BaseConhecimentoDTO;
import br.com.centralit.citcorpore.bean.CatalogoServicoDTO;
import br.com.centralit.citcorpore.bean.ContratosGruposDTO;
import br.com.centralit.citcorpore.bean.InfoCatalogoServicoDTO;
import br.com.centralit.citcorpore.bean.PastaDTO;
import br.com.centralit.citcorpore.bean.PedidoPortalDTO;
import br.com.centralit.citcorpore.bean.PortalDTO;
import br.com.centralit.citcorpore.bean.ServicoContratoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoQuestionarioDTO;
import br.com.centralit.citcorpore.bean.UploadDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.BaseConhecimentoService;
import br.com.centralit.citcorpore.negocio.CatalogoServicoService;
import br.com.centralit.citcorpore.negocio.ComentariosService;
import br.com.centralit.citcorpore.negocio.ContratosGruposService;
import br.com.centralit.citcorpore.negocio.InfoCatalogoServicoService;
import br.com.centralit.citcorpore.negocio.PastaService;
import br.com.centralit.citcorpore.negocio.PerfilAcessoPastaService;
import br.com.centralit.citcorpore.negocio.PortalService;
import br.com.centralit.citcorpore.negocio.ServicoContratoService;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.Enumerados.PermissaoAcessoPasta;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.centralit.citquestionario.negocio.QuestionarioService;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.core.PageRequest;
import br.com.citframework.integracao.core.Pageable;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.Reflexao;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
public class Portal extends AjaxFormAction {
private static final String NAO = "N";
private static final String SCRIPT_SHOW_MODAL_ANEXOS = "$('#modal_upload_files').modal('show');";
private BaseConhecimentoService baseConhecimentoService;
private PastaService pastaService;
private PerfilAcessoPastaService perfilAcessoPastaService;
private Integer quantidadePaginasBaseConhecimento;
private Integer quantidadePaginasFaq;
@Override
public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final UsuarioDTO usrDto = WebUtil.getUsuario(request);
if (usrDto == null) {
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "/pages/login/login.load'");
return;
}
if (request.getParameter("logout") != null && "yes".equalsIgnoreCase(request.getParameter("logout"))) {
request.getSession().setAttribute(Constantes.getValue("USUARIO_SESSAO") + "_CITCORPORE", null);
request.getSession().setAttribute("acessosUsuario", null);
}
this.contentCatalogoServico(document, request, response);
limparObjetosSessao(document, request);
}
@Override
public Class<PortalDTO> getBeanClass() {
return PortalDTO.class;
}
public void contentCatalogoServico(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final UsuarioDTO usrDto = WebUtil.getUsuario(request);
final Integer idEmpregado = new Integer(usrDto.getIdEmpregado());
final ContratosGruposService contratosGruposService = (ContratosGruposService) ServiceLocator.getInstance().getService(ContratosGruposService.class, null);
final Collection<ContratosGruposDTO> contratosGrupos = contratosGruposService.findByIdEmpregado(idEmpregado);
final StringBuilder sbCatSer = new StringBuilder();
final CatalogoServicoService catalogoServicoService = (CatalogoServicoService) ServiceLocator.getInstance().getService(CatalogoServicoService.class, null);
final Collection<CatalogoServicoDTO> listCatalogos = new ArrayList<CatalogoServicoDTO>();
if (contratosGrupos != null) {
for (final ContratosGruposDTO contratoGrupoDTO : contratosGrupos) {
List<CatalogoServicoDTO> temp = null;
temp = (List<CatalogoServicoDTO>) catalogoServicoService.listByIdContrato(contratoGrupoDTO.getIdContrato());
if (temp != null) {
for (final CatalogoServicoDTO catalogoServicoDTO : temp) {
listCatalogos.add(catalogoServicoDTO);
}
}
}
}
sbCatSer.append(" <ul class='row-fluid'>");
for (final CatalogoServicoDTO catalogoServicoDTO : listCatalogos) {
// Criando lista de Servi�os
sbCatSer.append(" <li class='span4'>");
sbCatSer.append(" <a href='javascript:carregarServicos(" + catalogoServicoDTO.getIdCatalogoServico() + "," + catalogoServicoDTO.getIdContrato() + ");' >");
sbCatSer.append(" <span class='pull-right glyphicons shopping_cart'><i></i></span>");
sbCatSer.append(" <h5>");
sbCatSer.append(StringEscapeUtils.escapeHtml(catalogoServicoDTO.getTituloCatalogoServico()));
sbCatSer.append(" </h5>");
sbCatSer.append(" <span class='price'>");
sbCatSer.append(" ");
sbCatSer.append(" </span>");
sbCatSer.append(" <span class='clearfix'></span>");
sbCatSer.append(" </a>");
sbCatSer.append(" </li>");
}
sbCatSer.append(" </ul>");
// atribuindo informa��es da lista de Servi�os
final HTMLElement divPrincipal = document.getElementById("listaServicos");
divPrincipal.setInnerHTML(sbCatSer.toString());
}
/**
* Modificado 09/12/2014. Adicionado condicional para exibi��o completa
* @author thyen.chang
*/
public void contentServicos(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final InfoCatalogoServicoService infoCatalogoServicoService = (InfoCatalogoServicoService) ServiceLocator.getInstance().getService(InfoCatalogoServicoService.class, null);
final StringBuilder sbDesc = new StringBuilder();
// Criando tabela Descri��o
sbDesc.append("<h5>" + UtilI18N.internacionaliza(request, "portal.carrinho.listagem") + "</h5>");
sbDesc.append("<table class='table table-bordered uniformjs tabelaFixa' id='tblDescricao'>");
sbDesc.append(" <button type='button' class='close' data-dismiss='modal' aria-hidden='true'>�</button>");
sbDesc.append(" <tr>");
sbDesc.append(" <th class='span1'>");
sbDesc.append(" <input class='checkbox' "
+ (ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.DESMARCAR_SERVICOS_CARRINHO_PORTAL, "S").equals(NAO) ? " checked='checked' " : "" )
+ " type='checkbox' id='checkboxCheckAll' name='checkboxCheckAll' onclick='marcarTodos(this.checked);' />");
sbDesc.append(" </th>");
sbDesc.append(" <th class='span2'>");
sbDesc.append(" " + UtilI18N.internacionaliza(request, "portal.carrinho.nomeAmigavel.servico") + "");
sbDesc.append(" </th>");
if(obterParametroHabilitaCarrinhoPortal().equals("S")){
sbDesc.append(" <th class='span2'>");
sbDesc.append(" " + UtilI18N.internacionaliza(request, "portal.carrinho.nomeTecnico.servico") + "");
sbDesc.append(" </th>");
}
sbDesc.append(" <th class='span4'>");
sbDesc.append(" " + UtilI18N.internacionaliza(request, "portal.carrinho.descricao") + "");
sbDesc.append(" </th>");
sbDesc.append(" <th class='span3'>");
sbDesc.append(" " + UtilI18N.internacionaliza(request, "portal.carrinho.observacao") + "");
sbDesc.append(" </th>");
sbDesc.append(" </tr>");
final PortalDTO portalDTO = (PortalDTO) document.getBean();
final Collection<InfoCatalogoServicoDTO> listInfoCatalogoServico = infoCatalogoServicoService.findByCatalogoServico(portalDTO.getIdCatalogoServico());
if (listInfoCatalogoServico != null && !listInfoCatalogoServico.isEmpty()) {
int i = 1;
for (final InfoCatalogoServicoDTO info : listInfoCatalogoServico) {
if (info.getIdServicoCatalogo() != null && info.getIdServicoCatalogo() != 0) {
sbDesc.append("<tr>");
sbDesc.append("<td>");
sbDesc.append(" <input type='checkbox' "
+ (ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.DESMARCAR_SERVICOS_CARRINHO_PORTAL, "S").equals(NAO) ? " checked='checked' " : "" )
+ " class='perm checkbox' id='idServicoCatalogo" + i + "' name='idServicoCatalogo' value='"
+ info.getIdServicoCatalogo() + "' />");
sbDesc.append(" <input type='hidden'id='idContrato" + i + "' name='idContrato' value='" + portalDTO.getIdContratoUsuario() + "' />");
sbDesc.append(" <input type='hidden'id='descInfoCatalogoServico" + i + "' name='descInfoCatalogoServico' value='"
+ StringEscapeUtils.escapeJavaScript(info.getDescInfoCatalogoServico()) + "' />");
sbDesc.append(" <input type='hidden'id='observacaoInfoCatalogoServico" + i + "' name='observacaoInfoCatalogoServico' value='' />");
sbDesc.append(" <input type='hidden'id='nomeServico" + i + "' name='nomeServico' value='"
+ StringEscapeUtils.escapeJavaScript(info.getNomeInfoCatalogoServico()) + "' />");
sbDesc.append(" <input type='hidden'id='idInfoCatalogoServico" + i + "' name='idInfoCatalogoServico' value='"
+info.getIdInfoCatalogoServico()+ "' /></td>");
sbDesc.append("<td class ='quebraPalavras' >" + StringEscapeUtils.escapeJavaScript(info.getNomeInfoCatalogoServico()) + "</td>");
sbDesc.append("<td class ='quebraPalavras'>" + StringEscapeUtils.escapeJavaScript(info.getNomeServicoContrato()) + "</td>");
sbDesc.append("<td class ='quebraPalavras'>" + StringEscapeUtils.escapeJavaScript(info.getDescInfoCatalogoServico()) + "</td>");
sbDesc.append("<td>");
sbDesc.append(" <textarea onkeyup='javascript:limita(this.id);' id='observacaoPortal" + i
+ "' name='observacaoPortal' class='' style='width: 96%;' rows='2' maxlength = '3000'></textarea>");
sbDesc.append("</td>");
i++;
}
}
/*
* Desenvolvedor: Thiago Matias - Data: 07/11/2013 - Hor�rio: 14:50 - ID Citsmart: 123357 - Motivo/Coment�rio: uma forma de verificar se no cat�logo de Neg�cio o campo
* Servi�o foi
* preenchido, pois pode haver dados antigos no banco que n�o tenha essa vincula��o do Cat. Neg�cio com o Servi�o
*/
if (i == 1) {
document.alert(UtilI18N.internacionaliza(request, "portal.naohaserviconocatalogo"));
return;
}
} else {
/*
* Desenvolvedor: Thiago Matias - Data: 07/11/2013 - Hor�rio: 14:50 - ID Citsmart: 123357 - Motivo/Coment�rio: Exibir um alert se no cat�logo de Neg�cio n�o houver
* nenhum servi�o
* vinculados
*/
document.alert(UtilI18N.internacionaliza(request, "portal.naohaserviconocatalogo"));
return;
}
sbDesc.append("</tr>");
sbDesc.append("</table>");
if( NAO.equalsIgnoreCase(obterParametroHabilitaCarrinhoPortal())){
sbDesc.append("<br/>");
sbDesc.append("<div>");
sbDesc.append("<label class='checkbox'>");
sbDesc.append("<input type='checkbox' class='radio' name='checkAnexarArquivos' value='S' id='checkAnexarArquivos' onclick='controlarCheckAnexos(this)'/>");
sbDesc.append(UtilI18N.internacionaliza(request, "portal.servicos.desejaAnexarArquivos"));
sbDesc.append("</label>");
sbDesc.append("</div>");
}
document.executeScript("setarValoresTabela(\"" + sbDesc.toString() + "\")");
}
@SuppressWarnings("unchecked")
private List<ServicoContratoDTO> adicionaItensCarrinho(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final List<ServicoContratoDTO> listaServicosContrato = new ArrayList<ServicoContratoDTO>();
final ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance().getService(ServicoContratoService.class, null);
final List<InfoCatalogoServicoDTO> infoCatalogoServicoDTOs = (ArrayList<InfoCatalogoServicoDTO>) br.com.citframework.util.WebUtil.deserializeCollectionFromRequest(
InfoCatalogoServicoDTO.class, "servicosEscolhidos", request);
PortalDTO portalDto = (PortalDTO) document.getBean();
PortalService portalService = (PortalService) ServiceLocator.getInstance().getService(PortalService.class, null);
if (infoCatalogoServicoDTOs != null) {
for (final InfoCatalogoServicoDTO infoCatalogoServicoDTO : infoCatalogoServicoDTOs) {
final ServicoContratoDTO servicoContratoDto = servicoContratoService.findByIdServicoContrato(infoCatalogoServicoDTO.getIdServicoCatalogo(),
infoCatalogoServicoDTO.getIdContrato());
if (servicoContratoDto != null) {
servicoContratoDto.setIdServico(infoCatalogoServicoDTO.getIdServicoCatalogo());
servicoContratoDto.setIdContrato(infoCatalogoServicoDTO.getIdContrato());
servicoContratoDto.setDescricao(infoCatalogoServicoDTO.getDescInfoCatalogoServico());
servicoContratoDto.setObservacaoPortal(StringEscapeUtils.escapeJavaScript(br.com.citframework.util.WebUtil.codificaEnter(infoCatalogoServicoDTO.getObservacaoPortal())));
servicoContratoDto.setNomeServico(infoCatalogoServicoDTO.getNomeServico());
servicoContratoDto.setIdInfoCatalogoServico(infoCatalogoServicoDTO.getIdInfoCatalogoServico());
/*
* Obtem o idQuestionario
*/
servicoContratoDto.setIdQuestionario(portalService.obterIdQuestionarioServico(infoCatalogoServicoDTO.getIdServicoCatalogo()));
montarAnexosCarrinho(document, request, portalDto, servicoContratoDto, obterParametroHabilitaCarrinhoPortal());
montarQuestionarioCarrinho(document, request, portalService, infoCatalogoServicoDTO, servicoContratoDto, obterParametroHabilitaCarrinhoPortal());
verificarQuestaoObrigatoria(servicoContratoDto);
listaServicosContrato.add(servicoContratoDto);
adicionarObjetoCarrinhoNaSessao(servicoContratoDto, request);
}
}
if (listaServicosContrato != null && listaServicosContrato.size() > 0) {
document.executeScript("adicionarColecaoItensItens(\"" + br.com.citframework.util.WebUtil.serializeObjects(listaServicosContrato, WebUtil.getLanguage(request))
+ "\")");
}
document.executeScript("$('.tabsbar a[href=\"#tab2-4\"]').tab('show');");
}
/*
* Parametro bloqueiaAcoes � recupearado, caso esteja com o valor falso significa que o
*
* usuario n�o selecionou em nenhum servi�o a op��o "Deseja anexar arquivo(s)" e o servi�o
*
* n�o possua questionario vinculado, ent�o continua com as rotinas normais.
*
* @author Ezequiel
*
*/
boolean existeAnexo = (boolean) request.getSession().getAttribute("existeAnexo");
boolean existeQuestionario = (boolean) request.getSession().getAttribute("existeQuestionario");
if (!existeAnexo && !existeQuestionario){
if (portalDto != null && portalDto.getFinalizaCompra() != null && "s".equalsIgnoreCase(portalDto.getFinalizaCompra())) {
document.executeScript("ocultarColunaQuestionario()");
document.executeScript("ocultarColunaAnexar()");
document.executeScript("finalizarCarrinho()");
}
}
if (!existeAnexo){
document.executeScript("ocultarColunaAnexar()");
}
if (!existeQuestionario){
document.executeScript("ocultarColunaQuestionario()");
}
atualizarListaQuestionarios(document, request, response, listaServicosContrato);
return listaServicosContrato;
}
/**
* N�o existia este m�todo para atualizar o valor do atributo "colecao_dados_solicit_quest"
* @author cristian.guedes
* @param document
* @param request
* @param response
* @param listaServicosContrato
*/
private void atualizarListaQuestionarios(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response, final List<ServicoContratoDTO> listaServicosContrato) {
Collection<SolicitacaoServicoQuestionarioDTO> colecaoDeQuestionarios = (Collection<SolicitacaoServicoQuestionarioDTO>) request.getSession(true).getAttribute("colecao_dados_solicit_quest");
if (colecaoDeQuestionarios==null) {
colecaoDeQuestionarios = new ArrayList<SolicitacaoServicoQuestionarioDTO>();
}
try {
for (ServicoContratoDTO servico : listaServicosContrato) {
SolicitacaoServicoQuestionarioDTO solicitacaoServicoQuestionarioDTO = new SolicitacaoServicoQuestionarioDTO();
Reflexao.copyPropertyValues(servico, solicitacaoServicoQuestionarioDTO);
if (objetoJaFoiAdicionado(request, solicitacaoServicoQuestionarioDTO, colecaoDeQuestionarios)==false) {
colecaoDeQuestionarios.add(solicitacaoServicoQuestionarioDTO);
}
}
request.getSession(true).setAttribute("colecao_dados_solicit_quest", colecaoDeQuestionarios);
} catch (Exception e) {
// TODO: handle exception
}
}
/**
* A requisi��o no citsmart sempre � executada 2 vezes, por isto criei este m�todo para n�o inserir o mesmo
* question�rio mais de uma vez na lista
* @param request
* @param solicitacaoServicoQuestionarioDTO
* @param colecaoDeQuestionarios
* @return
*/
private boolean objetoJaFoiAdicionado(final HttpServletRequest request,
SolicitacaoServicoQuestionarioDTO solicitacaoServicoQuestionarioDTO, Collection<SolicitacaoServicoQuestionarioDTO> colecaoDeQuestionarios) {
if (colecaoDeQuestionarios!=null) {
for (SolicitacaoServicoQuestionarioDTO objetoDaColecao : colecaoDeQuestionarios) {
if (solicitacaoServicoQuestionarioDTO.getIdServico().equals(objetoDaColecao.getIdServico())) {
return true;
}
}
}
return false;
}
public void adicionaItensCarrinhoDeCompraEContinuar(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
verificarExisteQuestSemResposta(document, request, adicionaItensCarrinho(document, request, response), obterParametroHabilitaCarrinhoPortal(), false);
// adicionaItensCarrinho(document, request, response);
document.executeScript("reativarObjetos();");
}
public void adicionaItensCarrinhoDeCompra(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
verificarExisteQuestSemResposta(document, request, adicionaItensCarrinho(document, request, response), obterParametroHabilitaCarrinhoPortal(), true);
// adicionaItensCarrinho(document, request, response);
document.executeScript("reativarObjetos();");
}
/**
* @author cristian.guedes
* @param servicoContratoDTO
* @param request
*/
private void adicionarObjetoCarrinhoNaSessao(final ServicoContratoDTO servicoContratoDTO, final HttpServletRequest request) {
ArrayList<ServicoContratoDTO> listaObjetosCarrinho = (ArrayList<ServicoContratoDTO>) request.getSession().getAttribute("listaObjetosCarrinho");
if (listaObjetosCarrinho==null || listaObjetosCarrinho.isEmpty()) {
listaObjetosCarrinho = new ArrayList<ServicoContratoDTO>();
}
listaObjetosCarrinho.add(servicoContratoDTO);
request.getSession().setAttribute("listaObjetosCarrinho", listaObjetosCarrinho);
}
/**
* @author cristian.guedes
* @param servicoContratoDTO
* @param request
*/
private void removerObjetoCarrinhoDaSessao(final ServicoContratoDTO servicoContratoDTO, final HttpServletRequest request) {
ArrayList<ServicoContratoDTO> listaObjetosCarrinho = (ArrayList<ServicoContratoDTO>) request.getSession().getAttribute("listaObjetosCarrinho");
if (listaObjetosCarrinho==null || listaObjetosCarrinho.isEmpty()) {
listaObjetosCarrinho = new ArrayList<ServicoContratoDTO>();
}
ServicoContratoDTO objetoCarrinhoRemover = null;
for (ServicoContratoDTO objetoCarrinho : listaObjetosCarrinho) {
if (
// objetoCarrinho.getIdContrato().equals(servicoContratoDTO.getIdContrato())
// &&
objetoCarrinho.getIdServico().equals(servicoContratoDTO.getIdServico())
// &&
// objetoCarrinho.getObservacaoPortal().equalsIgnoreCase(servicoContratoDTO.getObservacaoPortal())
// &&
// objetoCarrinho.getNomeCategoriaServico().equalsIgnoreCase(servicoContratoDTO.getNomeCategoriaServico())
// &&
// objetoCarrinho.getNomeServico().equalsIgnoreCase(servicoContratoDTO.getNomeServico())
) {
objetoCarrinhoRemover = objetoCarrinho;
}
}
if (objetoCarrinhoRemover!=null) {
listaObjetosCarrinho.remove(objetoCarrinhoRemover);
}
request.getSession().setAttribute("listaObjetosCarrinho", listaObjetosCarrinho);
}
/**
* Metodo responsavel por obter o valor do parametro HABILITA_PRECO_CARRINHO_PORTAL
*
* O par�metro 245 dever� estar setado em "N". Caso esteja setado em "S" o sistema apresentar�
*
* a tela completa que n�o possui as fun��es de "Responder Question�rio e Anexar Arquivos".
*
* @author Ezequiel
*
* @return <code>String</code>
*/
private String obterParametroHabilitaCarrinhoPortal() {
try {
return ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.HABILITA_PRECO_CARRINHO_PORTAL, "S");
} catch (Exception ex) {
return "";
}
}
public void validarParametroUpload(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
try {
String parametro44 = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.DISKFILEUPLOAD_REPOSITORYPATH, "");
if (parametro44 == null || parametro44.trim().isEmpty()){
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.anexosUploadSemParametro"));
}else{
document.executeScript("continueUpload()");
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Metodo responsavel por verificar se existe questionario para o servi�o especifico
*
* Se sim e o parametro 245 esteja com valor 'N', emt�o ser� setado um valor 'S' para
*
* o atributo existe questionario, esse atributo � responsavel por renderizar os bot�es
*
* na grid, foi criado um atributo na sess�o para amarrar a existencia do questionario.
*
* No complete do metodo uma fun��o javascript e executada para exibir a coluna de
*
* questionario.
*
* @param document
* @param request
* @param portalService
* @param infoCatalogoServicoDTO
* @param servicoContratoDto
* @throws ServiceException
* @throws Exception
*
* @author Ezequiel
*/
private void montarQuestionarioCarrinho(final DocumentHTML document, final HttpServletRequest request, PortalService portalService, final InfoCatalogoServicoDTO infoCatalogoServicoDTO, final ServicoContratoDTO servicoContratoDto,
String exibirPrecoCarrinhoCompra) throws ServiceException, Exception {
boolean existeQuestionario = portalService.existeQuestionarioServico(infoCatalogoServicoDTO.getIdServicoCatalogo());
if (existeQuestionario && NAO.equalsIgnoreCase(exibirPrecoCarrinhoCompra)){
servicoContratoDto.setExisteQuestionario("S");
request.getSession().setAttribute("existeQuestionario", Boolean.TRUE);
document.executeScript("exibirColunaQuestionario()");
}
}
/**
* Verifica se a op��o de anexar arquivos foi marcada.
*
* Se sim, o sistema popula o campo permiteAnexo, para cada linha da tabela que tera a op��o de anexar, caso n�o a linha n�o
*
* tera o bot�o de anexar.
*
* Foi criado um objeto na sess�o com o nome "bloqueiaAcoes" remetendo ao campo "Deseja anexar arquivo(s)", esse atributo foi
*
* criado com a fun��o de controlar se pelo menos um dos servi�os possui op��o de anexar, isso foi feito para disabilitar algumas
*
* fun��es j� existentes.
*
* @param document
* @param request
* @param portalDto
* @param servicoContratoDto
*
* @autor Ezequiel
*/
private void montarAnexosCarrinho(final DocumentHTML document, final HttpServletRequest request, PortalDTO portalDto, final ServicoContratoDTO servicoContratoDto, String exibirPrecoCarrinhoCompra) {
if ("s".equalsIgnoreCase(portalDto.getAnexarArquivos()) && NAO.equalsIgnoreCase(exibirPrecoCarrinhoCompra)){
servicoContratoDto.setPermiteAnexar(Boolean.TRUE);
request.getSession().setAttribute("existeAnexo", Boolean.TRUE);
document.executeScript("exibirColunaAnexar()");
}
}
/**
* Metodo responsavel por verificar se existe questionario a ser respondido, nos servi�os do carrinho.
*
* Essa valida��o s� ser� feita se o parametro 245 estiver com o valor setado como 'N'.
*
* @param document
* @param request
*
* @author Ezequiel
* @throws Exception
*/
private void verificarExisteQuestSemResposta(final DocumentHTML document, final HttpServletRequest request, List<ServicoContratoDTO> servicoDTOs, String exibirPrecoCarrinhoCompra, boolean alertar) {
try {
if (NAO.equalsIgnoreCase(exibirPrecoCarrinhoCompra)){
for(ServicoContratoDTO servicoContratoDTO : servicoDTOs){
if (servicoContratoDTO.getIdServico() != null){
if (
"s".equalsIgnoreCase(servicoContratoDTO.getExisteQuestionario()) &&
"s".equalsIgnoreCase(servicoContratoDTO.getRespostaObrigatoria())
){
String mensagem = UtilI18N.internacionaliza(request, "portal.servicos.existeQuestionarios");
if (request.getSession().getAttribute("qtdQuestionarioObrigatorios") == null){
request.getSession().setAttribute("qtdQuestionarioObrigatorios", 1);
}else{
Integer quantidade = (Integer) request.getSession().getAttribute("qtdQuestionarioObrigatorios");
quantidade++;
request.getSession().setAttribute("qtdQuestionarioObrigatorios", quantidade);
}
mensagem = mensagem.replace("\\", "");
if (alertar) {
document.alert(mensagem);
}
return;
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@SuppressWarnings("unchecked")
public void finalizarCarrinho(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada"));
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
final PortalService portalService = (PortalService) ServiceLocator.getInstance().getService(PortalService.class, null);
ArrayList<ServicoContratoDTO> servicoDTOs = (ArrayList<ServicoContratoDTO>) request.getSession().getAttribute("listaObjetosCarrinho");
if (servicoDTOs != null) {
/* Pedido */
PedidoPortalDTO pedidoPortalDTO = new PedidoPortalDTO();
pedidoPortalDTO.setIdEmpregado(usuario.getIdEmpregado());
pedidoPortalDTO.setDataPedido(UtilDatas.getDataAtual());
pedidoPortalDTO.setListaServicoContrato(servicoDTOs);
Collection<UploadDTO> arquivosUpados = (Collection<UploadDTO>) request.getSession(true).getAttribute("colUploadsGED");
Collection<SolicitacaoServicoQuestionarioDTO> colecaoRespQuestionario = obterListaQuestionarioSession(request);
if (existeQuestaoObrigatoriaNaoRespondida(document, request, colecaoRespQuestionario)) {
return;
}
if(!existeQuestaoObrigatoriaNaoRespondida(document, request, colecaoRespQuestionario)){
try {
pedidoPortalDTO = portalService.criarPedidoSolicitacao(pedidoPortalDTO, usuario, colecaoRespQuestionario, arquivosUpados);
request.getSession().setAttribute("idServicoUp", null);
String mensagem = "";
mensagem += "<h4>" + UtilI18N.internacionaliza(request, "MSG05") + "</h4>";
for (final SolicitacaoServicoDTO solicitacaoServicoDTO : pedidoPortalDTO.getListaSolicitacoes()) {
mensagem += "<br/>";
mensagem += UtilI18N.internacionaliza(request, "gerenciaservico.numerosolicitacao") + " <b><u>" + solicitacaoServicoDTO.getIdSolicitacaoServico() + "</u></b> "
+ UtilI18N.internacionaliza(request, "citcorpore.comum.crida") + ".<br>" + UtilI18N.internacionaliza(request, "prioridade.prioridade") + ": "
+ solicitacaoServicoDTO.getIdPrioridade();
if (solicitacaoServicoDTO.getPrazoHH() > 0 || solicitacaoServicoDTO.getPrazoMM() > 0) {
mensagem += " - SLA: " + solicitacaoServicoDTO.getSLAStr() + "<br/>";
}
}
document.executeScript("mostrarMensagemSolicitacoes(\"" + mensagem + "\")");
limparObjetosSessao(document, request);
} catch (final Exception e) {
e.printStackTrace();
document.alert(UtilI18N.internacionaliza(request, "portal.pendenciaFinalizaCarrinhoCompras"));
}
}
}
/**
* Cristian: Solicita��o 165383
* Os arquivos que haviam sido previamente "upados" continuavam a aparecer na pr�xima tentativa de upload
*/
request.getSession(true).setAttribute("colUploadsGED", null);
/**
* Cristian: solicita��o 165505
* Reativa os objetos que foram desativados durante o processamento de fechamento da compra
*/
document.executeScript("reativarObjetos();");
request.getSession(true).setAttribute("listaObjetosCarrinho", new ArrayList<ServicoContratoDTO>());
}
/**
* Verifica as Permiss�es de Acesso do Usu�rio a Pasta informada
*
* @param document
* @param request
* @param response
* @param baseConhecimentoDto
* @return
* @throws Exception
* @author thays.araujo
*/
public boolean verificarPermissaoDeAcesso(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response,
BaseConhecimentoDTO baseConhecimentoDto) throws Exception {
final UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
PastaDTO pastaDto = new PastaDTO();
if (baseConhecimentoDto.getIdBaseConhecimento() != null) {
baseConhecimentoDto = (BaseConhecimentoDTO) this.getBaseConhecimentoService().restore(baseConhecimentoDto);
}
if (baseConhecimentoDto.getIdPasta() != null) {
pastaDto.setId(baseConhecimentoDto.getIdPasta());
pastaDto = (PastaDTO) this.getPastaService().restore(pastaDto);
}
PermissaoAcessoPasta permissao = this.getPerfilAcessoPastaService().verificarPermissaoDeAcessoPasta(usuarioDto, pastaDto);
if (permissao != null) {
if (PermissaoAcessoPasta.LEITURA.equals(permissao) || PermissaoAcessoPasta.LEITURAGRAVACAO.equals(permissao)) {
return true;
} else {
if (PermissaoAcessoPasta.SEMPERMISSAO.equals(permissao)) {
return false;
}
}
}
return false;
}
private PastaService getPastaService() throws Exception {
if (pastaService == null) {
pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null);
}
return pastaService;
}
private PerfilAcessoPastaService getPerfilAcessoPastaService() throws Exception {
if (perfilAcessoPastaService == null) {
perfilAcessoPastaService = (PerfilAcessoPastaService) ServiceLocator.getInstance().getService(PerfilAcessoPastaService.class, null);
}
return perfilAcessoPastaService;
}
private BaseConhecimentoService getBaseConhecimentoService() throws Exception {
if (baseConhecimentoService == null) {
baseConhecimentoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
}
return baseConhecimentoService;
}
/**
* Metodo responsavel por controlar olaguns objetos vinculados a sess�o e abrir um popup para anexos de arquivos.
*
* @param document
* @param request
* @param response
* @throws Exception
*
* @author Ezequiel Bispo Nunes
* @date 2014-12-04
*/
@SuppressWarnings("rawtypes")
public void ajustarObjetosSessao(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
Map map = document.getForm("formUpload").getDocument().getValuesForm();
if (map.get("IDSERVICOUP") != null && !map.get("IDSERVICOUP").toString().isEmpty()){
Integer idServicoUp = Integer.valueOf((String) map.get("IDSERVICOUP"));
request.getSession().setAttribute("idServicoUp", idServicoUp);
document.executeScript(SCRIPT_SHOW_MODAL_ANEXOS);
}
}
/**
* Metodo responsavel por exibir o modal de questionario, o questionario s� ser� apresentado se ainda n�o foi respondido.
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void abrirModalQuestionario(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
try{
Integer idQuestionario = Integer.valueOf((String) request.getParameter("idQuestionarioQuest"));
Integer idServicoContrato = Integer.valueOf((String) request.getParameter("idServicoContratoQuest"));
Integer idServico = Integer.valueOf((String) request.getParameter("idServicoUp"));
String respostaObrigatoria = request.getParameter("respostaObrigatoria");
if (!questionarioServicoRespondido(request, idQuestionario, idServico)) {
StringBuilder scriptFrame = new StringBuilder();
scriptFrame.append("document.getElementById('fraInformacoesComplementares').src = '../../pages/visualizacaoQuestionario/visualizacaoQuestionario.load?modo=edicao&idQuestionarioOrigem=");
scriptFrame.append(idQuestionario + "&idServicoContrato=" + idServicoContrato + "&idServico=" + idServico + "&respostaObrigatoria="+respostaObrigatoria+ "'");
String scriptShowModal = "$('#modal_questionario').modal('show');";
document.executeScript(scriptFrame.toString());
document.executeScript(scriptShowModal);
}
else {
/**
* Cristian: solicita��o 165475
*/
String mensagem = UtilI18N.internacionaliza(request, "questionario.jafoirespondido");
document.executeScript("alert('"+mensagem+"')");
}
}catch(Exception e){
}
}
/**
* Metodo responsavel por desabilitar o bot�o caso o questionario do relatorio j� tenha sido respondido.
*
* @param request
* @param idQuestionario
* @param idServico
* @return
*
* @author Ezequiel
*/
private boolean questionarioServicoRespondido(HttpServletRequest request,final Integer idQuestionario, final Integer idServico){
Collection<SolicitacaoServicoQuestionarioDTO> list = obterListaQuestionarioSession(request);
if (list != null && list.size() > 0){
for (SolicitacaoServicoQuestionarioDTO dto : list) {
if (dto.getIdServico().equals(idServico) && dto.getIdQuestionario().equals(idQuestionario) && dto.getQuestionarioRespondido()!=null && dto.getQuestionarioRespondido().equalsIgnoreCase("S")){
return Boolean.TRUE;
}
}
}
return Boolean.FALSE;
}
/**
* Metodo responsavel por verificar se existe alguma quest�o obrigatoria no questionario.
*
* @param idQuestionario
* @author Ezequiel
*/
private void verificarQuestaoObrigatoria(final ServicoContratoDTO servicoContratoDTO){
try {
QuestionarioService service = (QuestionarioService) ServiceLocator.getInstance().getService(QuestionarioService.class, null);
boolean eObrigatoria = service.existeQuestaoObrigatoria(servicoContratoDTO.getIdQuestionario());
servicoContratoDTO.setRespostaObrigatoria(eObrigatoria ? "S" : "N");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Metodo responsavel por verificar se existe quest�o obrigatoria n�o respondida.
*
* @param document
* @param request
* @param listQuestionarioSessao
* @return <code>boolean</code>
*
* @author Ezequiel
*/
private boolean existeQuestaoObrigatoriaNaoRespondida(final DocumentHTML document, HttpServletRequest request, Collection<SolicitacaoServicoQuestionarioDTO> listQuestionarioSessao) {
try {
Integer countSessao = (Integer) request.getSession().getAttribute("qtdQuestionarioObrigatorios");
Integer countRespondidas = 0;
if (listQuestionarioSessao != null && listQuestionarioSessao.size() > 0) {
for (SolicitacaoServicoQuestionarioDTO dto : listQuestionarioSessao) {
if ("S".equalsIgnoreCase(dto.getRespostaObrigatoria()) && "S".equalsIgnoreCase(dto.getQuestionarioRespondido())) {
countRespondidas++;
}
}
}
if (countSessao!= null && (countSessao > countRespondidas)) {
String mensagem = UtilI18N.internacionaliza(request, "portal.servicos.existeQuestionarios");
mensagem = mensagem.replace("\\", "");
document.alert(mensagem);
return Boolean.TRUE;
}
} catch (Exception e) {
}
return Boolean.FALSE;
}
/**
* Metodo responsavel por remover da sess�o o questionario vinculado a um servi�o que foi removido da grid.
*
* Existe um contado na sess�o com o nome "qtdQuestionarioObrigatorios", quando esse metodo for assionando
*
* ser� decrementado 1 do contatod.
*
* @param document
* @param request
* @param response
* @throws Exception
*
* @author Ezequiel
*/
public void removerQuestionarioSessao(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
Collection<SolicitacaoServicoQuestionarioDTO> list = obterListaQuestionarioSession(request);
SolicitacaoServicoQuestionarioDTO questionarioRemover = new SolicitacaoServicoQuestionarioDTO();
ServicoContratoDTO objetoCarrinho = new ServicoContratoDTO();
Integer idServico = Integer.valueOf((String)request.getParameter("idServicoUp"));
if (list != null && list.size() > 0){
for (SolicitacaoServicoQuestionarioDTO dto : list) {
if (dto.getIdServico().equals(idServico)){
questionarioRemover = dto;
objetoCarrinho.setIdServico(dto.getIdServico());
}
}
if ((questionarioRemover!=null) && (questionarioRemover.getRespostaObrigatoria()!=null) && (questionarioRemover.getRespostaObrigatoria().equalsIgnoreCase("s"))) {
Integer countSessao = (Integer) request.getSession().getAttribute("qtdQuestionarioObrigatorios");
if (countSessao != null && countSessao > 0){
countSessao--;
request.getSession().setAttribute("qtdQuestionarioObrigatorios", countSessao);
}
}
list.remove(questionarioRemover);
removerObjetoCarrinhoDaSessao(objetoCarrinho, request);
request.getSession(true).setAttribute("colecao_dados_solicit_quest", list);
}
}
/**
* Metodo responsavel por remover da sess�o o anexo do servi�o excluido da grid do carrinho de compras.
* <p>
* Metodo verifica se o <code>idServicoSelecionado</code> � igual ao <code>idLinhaPai</code>(vinculo do anexo ao servico) se sim monta o objeto <code>anexosARemover</code>.
*
* Ap�s � chamado o metodo <code>remove</code> da <code>Collection</code> passando o objeto a ser removido.
*
* @param document
* @param request
* @param response
* @throws Exception
*
* @author Ezequiel
*/
@SuppressWarnings("unchecked")
public void removerAnexoSessao(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
final Collection<UploadDTO> arquivosUploadSession = (Collection<UploadDTO>) request.getSession(true).getAttribute("colUploadsGED");
try {
final Integer idServicoSelecionado = Integer.valueOf((String) request.getParameter("idServicoUp"));
Collection<UploadDTO> anexosARemover = new ArrayList<UploadDTO>();
if (arquivosUploadSession != null && arquivosUploadSession.size() > 0) {
for (UploadDTO upload : arquivosUploadSession) {
if (upload.getIdLinhaPai().equals(idServicoSelecionado)) {
anexosARemover.add(upload);
}
}
arquivosUploadSession.removeAll(anexosARemover);
request.getSession(true).setAttribute("colUploadsGED", arquivosUploadSession);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Metodo responsavel por limpar objetos adicionados a sess�o, para controle do questionario e anexo na tela de carrinho
*
* Esse metodo s� ser� assionado no load da pagina.
*
* @param document
* @param request
*
* @author Ezequiel
*/
private void limparObjetosSessao(final DocumentHTML document, final HttpServletRequest request) {
request.getSession().setAttribute("existeAnexo", Boolean.FALSE);
request.getSession().setAttribute("existeQuestionario", Boolean.FALSE);
request.getSession(true).setAttribute("colecao_dados_solicit_quest", null);
request.getSession().setAttribute("idServicoUp", null);
request.getSession().setAttribute("qtdQuestionarioObrigatorios", null);
document.executeScript("ocultarColunaQuestionario()");
document.executeScript("ocultarColunaAnexar()");
}
/**
* Metodo responsavel por limpar da sess�o o objeto "existeQuestionario", ap�s a exclus�o de um servi�o da grid que contenha questionario.
*
* Esse metodo s� ser� assionado se n�o conter na grid nenhum servi�o que contenha questionario.
*
* @param document
* @param request
* @param response
* @throws Exception
*
* @author Ezequiel
*/
public void limparObjetoQuestionarioCarrinho(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
request.getSession().setAttribute("existeQuestionario", Boolean.FALSE);
}
/**
* Metodo responsavel por limparda sess�o o objeto "existeAnexo", ap�s a exclus�o de um servi�o da grid que contenha a fun��o de anexar.
*
* Esse metodo s� ser� assionado se n�o conter na grid nenhum servi�o que contenha anexo.
*
* @param document
* @param request
* @param response
* @throws Exception
*
* @author Ezequiel
*/
public void limparObjetoAnexarCarrinho(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
request.getSession().setAttribute("existeAnexo", Boolean.FALSE);
request.getSession().setAttribute("colUploadsGED", null);
}
/**
* Metodo responsavel por recuperar da sess�o a lista de questionarios.
*
* @param request
* @return
*
* @author Ezequiel
*/
@SuppressWarnings("unchecked")
private Collection<SolicitacaoServicoQuestionarioDTO> obterListaQuestionarioSession(HttpServletRequest request) {
return (Collection<SolicitacaoServicoQuestionarioDTO>) request.getSession(true).getAttribute("colecao_dados_solicit_quest");
}
/**
* M�todo para carregar Base de Conhecimento paginado
*
* @author thyen.chang
* @since 06/02/2015
* @param document
* @param request
* @param response
* @throws Exception
*/
public void carregaBaseConhecimento(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
final BaseConhecimentoService baseServicoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
final ComentariosService comentariosService = (ComentariosService) ServiceLocator.getInstance().getService(ComentariosService.class, null);
final int quantidadePorPagina = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.QUANT_RETORNO_PESQUISA, "10"));
Integer paginaAtual = Integer.parseInt(request.getParameter("paginaAtualBaseConhecimento"));
if(paginaAtual == null){
paginaAtual = 0;
}
Pageable pageable = new PageRequest(paginaAtual - 1, quantidadePorPagina);
if(this.quantidadePaginasBaseConhecimento == null){
this.quantidadePaginasBaseConhecimento = baseServicoService.listarBaseConhecimentoPortal(pageable, true).getTotalPages();
}
final List<BaseConhecimentoDTO> listBase = baseServicoService.listarBaseConhecimentoPortal(pageable, false).getContent();
final StringBuilder strBase = new StringBuilder();
final StringBuilder colBase = new StringBuilder();
strBase.append("<table>");
strBase.append(" <tr>");
strBase.append(" <form onsubmit='javascript:;' action='javascript:;'>");
strBase.append(" </tr>");
strBase.append("</table>");
strBase.append("<div id ='tableBc'><table class='table table-bordered table-striped' id='tblBaseConhecimento'>");
strBase.append("<thead><tr><th>Titulo</th><th>Nota</th></tr></thead><tbody>");
if (listBase != null) {
for (final BaseConhecimentoDTO baseDTO : listBase) {
boolean permissao;
permissao = this.verificarPermissaoDeAcesso(document, request, response, baseDTO);
if (permissao) {
if (baseDTO.getDataFim() == null) {
final Double nota = comentariosService.calcularNota(baseDTO.getIdBaseConhecimento());
String nt = null;
if (nota == null) {
nt = "S/N";
} else {
nt = String.valueOf(nota);
}
strBase.append("<tr><td style='text-align: left;'> <a href='javascript:;' class='passar_mouse' onclick='executaModal(");
strBase.append(baseDTO.getIdBaseConhecimento());
strBase.append(")' >");
strBase.append(UtilStrings.unescapeJavaString(baseDTO.getTitulo()));
strBase.append("</a></td><td style='text-align: left;'>");
strBase.append(nt);
strBase.append("</td></tr>");
}
}
}
}
strBase.append("</tbody></table>");
colBase.append(" <li class='span12'>" + "<div id='portlet-content-03' class='portlet-content'>" + strBase + "</div>" + "</li>");
geraPaginacao(this.quantidadePaginasBaseConhecimento, colBase, paginaAtual, request, "carregaBaseConhecimento(this.value)");
final HTMLElement divBase = document.getElementById("column4");
divBase.setInnerHTML(colBase.toString());
document.executeScript("JANELA_AGUARDE_MENU.hide()");
}
/**
* M�todo para carregar FAQ paginado
*
* @author thyen.chang
* @since 06/02/2015
* @param document
* @param request
* @param response
* @throws Exception
*/
public void carregaFaq(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final BaseConhecimentoService baseServicoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
final int quantidadePorPagina = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.QUANT_RETORNO_PESQUISA, "10"));
Integer paginaAtual = Integer.parseInt(request.getParameter("paginaAtualFaq"));
if(paginaAtual == null){
paginaAtual = 0;
}
Pageable pageable = new PageRequest(paginaAtual - 1, quantidadePorPagina);
if(this.quantidadePaginasFaq == null){
this.quantidadePaginasFaq = baseServicoService.listarBaseConhecimentoFAQPortal(pageable, true).getTotalPages();
}
final Collection<BaseConhecimentoDTO> listBaseFaq = baseServicoService.listarBaseConhecimentoFAQPortal(pageable, false).getContent();
final UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
final StringBuilder strFaq = new StringBuilder();
if (listBaseFaq != null) {
final HTMLElement divFaq = document.getElementById("faqs");// Encontrando o elemento no html
for (final BaseConhecimentoDTO baseDTO : listBaseFaq) {
if (baseDTO.getDataFim() == null) {
PastaDTO pastaDto = new PastaDTO();
if (baseDTO.getIdPasta() != null) {
pastaDto.setId(baseDTO.getIdPasta());
pastaDto = (PastaDTO) getPastaService().restore(pastaDto);
}
final PermissaoAcessoPasta permissao = getPerfilAcessoPastaService().verificarPermissaoDeAcessoPasta(usuarioDto, pastaDto);
strFaq.append("<div class='accordion-heading'>");// Inicio div Cabe�alho
strFaq.append("<a class='accordion-toggle glyphicons circle_question_mark' data-toggle='collapse' data-parent='#accordion' href='#collapse-" + baseDTO.getIdBaseConhecimento()
+ "'>");
strFaq.append("<i></i>" + UtilStrings.unescapeJavaString(baseDTO.getTitulo()));// Titulo
strFaq.append("</a>");
strFaq.append("</div>");// Fim div cabe�alho
strFaq.append("<div id='collapse-" + baseDTO.getIdBaseConhecimento() + "' class='accordion-body collapse'>");// Inicio div Corpo
if (permissao != null) {
if (PermissaoAcessoPasta.SEMPERMISSAO.equals(permissao)) {
strFaq.append("<div class='accordion-inner' sytle='text-align:center;'>" + UtilI18N.internacionaliza(request, "baseconhecimento.validacao.usuariosemacesso") + "<br></div>");
} else {
strFaq.append("<div class='accordion-inner' sytle='text-align:center;'>" + baseDTO.getConteudo() + "<br></div>");// Corpo do conteudo
}
} else {
strFaq.append("<div class='accordion-inner' sytle='text-align:center;'>" + UtilI18N.internacionaliza(request, "baseconhecimento.validacao.usuariosemacesso") + "<br></div>");
}
strFaq.append("</div>");// Fim div corpo
}// Fim do if
}// Fim do for
geraPaginacao(quantidadePaginasFaq, strFaq, paginaAtual, request, "carregaFaq(this.value)");
divFaq.setInnerHTML(strFaq.toString());// Adicionando o elemento no html
}// Fim do if
document.executeScript("JANELA_AGUARDE_MENU.hide()");
}
/**
* M�todo que gera div com p�ginas
*
* @author thyen.chang
* @since 06/02/2015
* @param totalPaginas - N�mero total de p�ginas da div
* @param sb - StringBuilder contendo os elementos HTML
* @param paginaSelecionada - Qual a p�ginada selecionada
* @param request
* @param functionName - Nome da fun��o para os bot�es de p�gina
* @return
* @throws Exception
*/
public String geraPaginacao(Integer totalPaginas, StringBuilder sb, Integer paginaSelecionada, HttpServletRequest request, String functionName) throws Exception {
String locale = (String) request.getSession().getAttribute("locale");
if (locale == null) {
locale = "pt";
}
final Integer adjacentes = 2;
if (paginaSelecionada == null)
paginaSelecionada = 1;
sb.append(" <div id='itenPaginacaoGerenciamento' class='pagination pagination-right margin-none'>");
sb.append(" <ul>");
sb.append(" <li " + (totalPaginas == 0 || paginaSelecionada == 1 ? "class='disabled'" : "value='1' onclick='"+functionName+"'") + " ><a>"
+ UtilI18N.internacionaliza(locale, "citcorpore.comum.primeiro") + "</a></li>");
sb.append(" <li " + ((totalPaginas == 0 || totalPaginas == 1 || paginaSelecionada == 1) ? "class='disabled'" : "value='" + (paginaSelecionada - 1) + "' onclick='paginarItens(this.value);'")
+ "><a>«</a></li>");
if (totalPaginas <= 5) {
for (int i = 1; i <= totalPaginas; i++) {
if (i == paginaSelecionada) {
sb.append("<li id='" + i + "' value='" + i + "' onclick='"+functionName+"' class='active'><a >" + i + "</a></li> ");
} else {
sb.append("<li id='" + i + "' value='" + i + "' onclick='"+functionName+"'><a >" + i + "</a></li> ");
}
}
} else {
if (totalPaginas > 5) {
if (paginaSelecionada < 1 + (2 * adjacentes)) {
for (int i = 1; i < 2 + (2 * adjacentes); i++) {
if (i == paginaSelecionada) {
sb.append("<li id='" + i + "' value='" + i + "' onclick='"+functionName+"' class='active'><a >" + i + "</a></li> ");
} else {
sb.append("<li id='" + i + "' value='" + i + "' onclick='"+functionName+"'><a >" + i + "</a></li> ");
}
}
} else if (paginaSelecionada > (2 * adjacentes) && paginaSelecionada < totalPaginas - 3) {
for (int i = paginaSelecionada - adjacentes; i <= paginaSelecionada + adjacentes; i++) {
if (i == paginaSelecionada) {
sb.append("<li id='" + i + "' value='" + i + "' onclick='"+functionName+"' class='active'><a >" + i + "</a></li> ");
} else {
sb.append("<li id='" + i + "' value='" + i + "' onclick='"+functionName+"'><a >" + i + "</a></li> ");
}
}
} else {
for (int i = totalPaginas - (/* 4 + */(2 * adjacentes)); i <= totalPaginas; i++) {
if (i == paginaSelecionada) {
sb.append("<li id='" + i + "' value='" + i + "' onclick='"+functionName+"' class='active'><a >" + i + "</a></li> ");
} else {
sb.append("<li id='" + i + "' value='" + i + "' onclick='"+functionName+"'><a >" + i + "</a></li> ");
}
}
}
}
}
sb.append(" <li "
+ ((totalPaginas == 0 || totalPaginas == 1 || paginaSelecionada.equals(totalPaginas)) ? "class='disabled'" : "value='" + (paginaSelecionada + 1)
+ "' onclick='"+functionName+"(this.value);'") + " ><a >»</a></li>");
sb.append(" <li " + (totalPaginas == 0 || paginaSelecionada.equals(totalPaginas) ? "class='disabled'" : "value='" + totalPaginas + "' onclick='"+functionName+"(this.value);'") + " ><a >"
+ UtilI18N.internacionaliza(locale, "citcorpore.comum.ultimo") + "</a></li> ");
sb.append(" </ul>");
sb.append(" </div>");
return sb.toString();
}
/**
* Pesquisa os itens da base de conhecimento do portal
*
* @author thyen.chang
* @since 09/02/2015 - OPERA��O USAIN BOLT
* @param document
* @param request
* @param response
* @throws Exception
*/
public void pesquisaBaseConhecimento(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
final BaseConhecimentoService baseServicoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
final ComentariosService comentariosService = (ComentariosService) ServiceLocator.getInstance().getService(ComentariosService.class, null);
final int quantidadePorPagina = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.QUANT_RETORNO_PESQUISA, "10"));
document.getElementById("paginaAtualBaseConhecimento").getValue();
Integer paginaAtual = Integer.parseInt(request.getParameter("paginaAtualBaseConhecimento"));
if(paginaAtual == null){
paginaAtual = 0;
}
Pageable pageable = new PageRequest(paginaAtual - 1, quantidadePorPagina);
String titulo = request.getParameter("tituloPesquisaBaseConhecimento");
if(this.quantidadePaginasBaseConhecimento == null){
this.quantidadePaginasBaseConhecimento = baseServicoService.pesquisaBaseConhecimentoPortal(pageable, true, titulo).getTotalPages();
}
final List<BaseConhecimentoDTO> listBase = baseServicoService.pesquisaBaseConhecimentoPortal(pageable, false, titulo).getContent();
final StringBuilder strBase = new StringBuilder();
final StringBuilder colBase = new StringBuilder();
strBase.append("<table>");
strBase.append(" <tr>");
strBase.append(" <form onsubmit='javascript:;' action='javascript:;'>");
strBase.append(" </tr>");
strBase.append("</table>");
strBase.append("<div id ='tableBc'><table class='table table-bordered table-striped' id='tblBaseConhecimento'>");
strBase.append("<thead><tr><th>Titulo</th><th>Nota</th></tr></thead><tbody>");
if (listBase != null) {
for (final BaseConhecimentoDTO baseDTO : listBase) {
boolean permissao;
permissao = this.verificarPermissaoDeAcesso(document, request, response, baseDTO);
if (permissao) {
if (baseDTO.getDataFim() == null) {
final Double nota = comentariosService.calcularNota(baseDTO.getIdBaseConhecimento());
String nt = null;
if (nota == null) {
nt = "S/N";
} else {
nt = String.valueOf(nota);
}
strBase.append("<tr><td style='text-align: left;'> <a href='javascript:;' class='passar_mouse' onclick='executaModal(");
strBase.append(baseDTO.getIdBaseConhecimento());
strBase.append(")' >");
strBase.append(UtilStrings.unescapeJavaString(baseDTO.getTitulo()));
strBase.append("</a></td><td style='text-align: left;'>");
strBase.append(nt);
strBase.append("</td></tr>");
}
}
}
}
strBase.append("</tbody></table>");
colBase.append(" <li class='span12'>" + "<div id='portlet-content-03' class='portlet-content'>" + strBase + "</div>" + "</li>");
geraPaginacao(this.quantidadePaginasBaseConhecimento, colBase, paginaAtual, request, "pesquisaBaseConhecimento(\"" + titulo + "\", this.value);");
final HTMLElement divBase = document.getElementById("column4");
divBase.setInnerHTML(colBase.toString());
document.executeScript("JANELA_AGUARDE_MENU.hide()");
}
/**
* Pesquisa os itens do FAQ do portal
*
* @author thyen.chang
* @since 09/02/2015
* @param document
* @param request
* @param response
* @throws Exception
*/
public void pesquisaFaq(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception{
final BaseConhecimentoService baseServicoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
final int quantidadePorPagina = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.QUANT_RETORNO_PESQUISA, "10"));
Integer paginaAtual = Integer.parseInt(request.getParameter("paginaAtualFaq"));
if(paginaAtual == null){
paginaAtual = 0;
}
Pageable pageable = new PageRequest(paginaAtual - 1, quantidadePorPagina);
String titulo = request.getParameter("tituloPesquisaFaq");
if(this.quantidadePaginasFaq == null){
this.quantidadePaginasFaq = baseServicoService.pesquisaBaseConhecimentoFAQPortal(pageable, true, titulo).getTotalPages();
}
final Collection<BaseConhecimentoDTO> listBaseFaq = baseServicoService.pesquisaBaseConhecimentoFAQPortal(pageable, false, titulo).getContent();
final UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
final StringBuilder strFaq = new StringBuilder();
if (listBaseFaq != null) {
final HTMLElement divFaq = document.getElementById("faqs");// Encontrando o elemento no html
for (final BaseConhecimentoDTO baseDTO : listBaseFaq) {
if (baseDTO.getDataFim() == null) {
PastaDTO pastaDto = new PastaDTO();
if (baseDTO.getIdPasta() != null) {
pastaDto.setId(baseDTO.getIdPasta());
pastaDto = (PastaDTO) getPastaService().restore(pastaDto);
}
final PermissaoAcessoPasta permissao = getPerfilAcessoPastaService().verificarPermissaoDeAcessoPasta(usuarioDto, pastaDto);
strFaq.append("<div class='accordion-heading'>");// Inicio div Cabe�alho
strFaq.append("<a class='accordion-toggle glyphicons circle_question_mark' data-toggle='collapse' data-parent='#accordion' href='#collapse-" + baseDTO.getIdBaseConhecimento()
+ "'>");
strFaq.append("<i></i>" + UtilStrings.unescapeJavaString(baseDTO.getTitulo()));// Titulo
strFaq.append("</a>");
strFaq.append("</div>");// Fim div cabe�alho
strFaq.append("<div id='collapse-" + baseDTO.getIdBaseConhecimento() + "' class='accordion-body collapse'>");// Inicio div Corpo
if (permissao != null) {
if (PermissaoAcessoPasta.SEMPERMISSAO.equals(permissao)) {
strFaq.append("<div class='accordion-inner' sytle='text-align:center;'>" + UtilI18N.internacionaliza(request, "baseconhecimento.validacao.usuariosemacesso") + "<br></div>");
} else {
strFaq.append("<div class='accordion-inner' sytle='text-align:center;'>" + baseDTO.getConteudo() + "<br></div>");// Corpo do conteudo
}
} else {
strFaq.append("<div class='accordion-inner' sytle='text-align:center;'>" + UtilI18N.internacionaliza(request, "baseconhecimento.validacao.usuariosemacesso") + "<br></div>");
}
strFaq.append("</div>");// Fim div corpo
}// Fim do if
}// Fim do for
geraPaginacao(quantidadePaginasFaq, strFaq, paginaAtual, request, "pesquisaFaq(\"" + titulo + "\", this.value);");
divFaq.setInnerHTML(strFaq.toString());// Adicionando o elemento no html
}// Fim do if
document.executeScript("JANELA_AGUARDE_MENU.hide()");
}
}