package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.math.NumberUtils;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citcorpore.bean.AutoCompleteDTO;
import br.com.centralit.citcorpore.bean.EmpregadoDTO;
import br.com.centralit.citcorpore.bean.UnidadeDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.EmpregadoService;
import br.com.centralit.citcorpore.negocio.UnidadeService;
import br.com.centralit.citcorpore.util.Arvore;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.service.ServiceLocator;
public class AutoCompleteUnidade extends AbstractAutoComplete {
@Override
public Class<UnidadeDTO> getBeanClass() {
return UnidadeDTO.class;
}
@Override
public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final String consulta = request.getParameter("query");
final String unidadeVinculoContrato = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.UNIDADE_VINC_CONTRATOS, "N");
Integer idContrato = 0;
if (unidadeVinculoContrato != null && unidadeVinculoContrato.equalsIgnoreCase("S")) {
final String idContratoStr = request.getParameter("idContrato");
idContrato = NumberUtils.toInt(idContratoStr, -1);
}
final UsuarioDTO usuario = WebUtil.getUsuario(request);
EmpregadoDTO empregado = new EmpregadoDTO();
try {
final EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null);
empregado.setIdEmpregado(usuario.getIdEmpregado());
empregado = (EmpregadoDTO) empregadoService.restore(empregado);
} catch (final Exception e) {
e.printStackTrace();
}
final Integer idUnidadeColaborador = empregado.getIdUnidade() != null && empregado.getIdUnidade().intValue() > 0 ? empregado.getIdUnidade() : 0;
final String consideraHierarquia = request.getParameter("consideraHierarquia");
String tipoHierarquia;
if (consideraHierarquia == null) {
tipoHierarquia = "1";
} else {
tipoHierarquia = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.TIPO_HIERARQUIA_UNIDADE, "1");
}
final UnidadeService unidadeService = (UnidadeService) ServiceLocator.getInstance().getService(UnidadeService.class, null);
final Arvore arvore = unidadeService.obtemArvoreUnidades(consulta, idContrato, idUnidadeColaborador, tipoHierarquia, 40);
String json = "";
final Collection<UnidadeDTO> listaResultado = new ArrayList<>();
if (request.getParameter("colection") != null) {
listaResultado.clear();
UnidadeDTO unidadeDTO;
for (int i = 0; i < arvore.getListaID().size(); i++) {
unidadeDTO = new UnidadeDTO();
unidadeDTO.setIdUnidade(arvore.getListaID().get(i));
unidadeDTO.setNome(arvore.getListaTexto().get(i));
listaResultado.add(unidadeDTO);
}
json = getGSON().toJson(listaResultado);
} else {
final AutoCompleteDTO autoCompleteDTO = new AutoCompleteDTO();
autoCompleteDTO.setQuery(consulta);
autoCompleteDTO.setSuggestions(arvore.getListaTexto());
autoCompleteDTO.setData(arvore.getListaID());
json = getGSON().toJson(autoCompleteDTO);
}
request.setAttribute("json_response", json);
}
}