package br.com.centralit.citcorpore.ajaxForms;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringEscapeUtils;
import br.com.centralit.bpm.dto.TarefaFluxoDTO;
import br.com.centralit.bpm.util.Enumerados;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citcorpore.bean.GerenciamentoLiberacaoDTO;
import br.com.centralit.citcorpore.bean.RequisicaoLiberacaoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.ExecucaoLiberacaoService;
import br.com.centralit.citcorpore.negocio.RequisicaoLiberacaoService;
import br.com.centralit.citcorpore.util.Enumerados.TipoDate;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
import br.com.citframework.util.UtilDatas;
import br.com.citframework.util.UtilI18N;
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
public class GerenciamentoLiberacao extends AjaxFormAction {
@Override
public Class getBeanClass() {
return GerenciamentoLiberacaoDTO.class;
}
@Override
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
exibeTarefas(document, request, response);
}
public void exibeTarefas(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sessao expirada! Favor efetuar logon novamente!");
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
GerenciamentoLiberacaoDTO gerenciamentoBean = (GerenciamentoLiberacaoDTO) document.getBean();
ExecucaoLiberacaoService execucaoLiberacaoService = (ExecucaoLiberacaoService) ServiceLocator.getInstance().getService(ExecucaoLiberacaoService.class, null);
RequisicaoLiberacaoService liberacaoService = (RequisicaoLiberacaoService) ServiceLocator.getInstance().getService(RequisicaoLiberacaoService.class, null);
List<TarefaFluxoDTO> colTarefas = execucaoLiberacaoService.recuperaTarefas(usuario.getLogin());
if (colTarefas == null)
return;
boolean bFiltroPorSolicitacao = gerenciamentoBean.getIdRequisicaoSel() != null && gerenciamentoBean.getIdRequisicaoSel().length() > 0;
List<TarefaFluxoDTO> colTarefasFiltradas = new ArrayList();
if (!bFiltroPorSolicitacao)
colTarefasFiltradas.addAll(colTarefas);
else {
for (TarefaFluxoDTO tarefaDto : colTarefas) {
boolean bAdicionar = false;
String idRequisicao = "" + ((RequisicaoLiberacaoDTO) tarefaDto.getRequisicaoLiberacaoDto()).getIdRequisicaoLiberacao();
bAdicionar = idRequisicao.indexOf(gerenciamentoBean.getIdRequisicaoSel()) >= 0;
if (bAdicionar)
colTarefasFiltradas.add(tarefaDto);
}
}
List colTarefasFiltradasFinal = new ArrayList();
HashMap mapAtr = new HashMap();
mapAtr.put("-- Sem Atribui��o --", "-- Sem Atribui��o --");
for (TarefaFluxoDTO tarefaDto : colTarefasFiltradas) {
RequisicaoLiberacaoDTO requisicaoLiberacaoDto = (RequisicaoLiberacaoDTO) tarefaDto.getRequisicaoLiberacaoDto();
requisicaoLiberacaoDto.setDataHoraLimiteToString(""); // Apenas forca atualizacao
requisicaoLiberacaoDto.setDataHoraInicioToString(""); // Apenas forca atualizacao
requisicaoLiberacaoDto.setDescricao("");
int prazoHH = 0;
int prazoMM = 0;
if (requisicaoLiberacaoDto.getPrazoHH() != null) {
prazoHH = requisicaoLiberacaoDto.getPrazoHH();
}
if (requisicaoLiberacaoDto.getPrazoMM() != null) {
prazoMM = requisicaoLiberacaoDto.getPrazoMM();
}
if (tarefaDto.getResponsavelAtual() != null) {
if (!mapAtr.containsKey(requisicaoLiberacaoDto.getResponsavelAtual())) {
mapAtr.put(requisicaoLiberacaoDto.getResponsavelAtual(), requisicaoLiberacaoDto.getResponsavelAtual());
}
}
requisicaoLiberacaoDto.setDataHoraInicioStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_DEFAULT, requisicaoLiberacaoDto.getDataHoraInicio(), WebUtil.getLanguage(request)));
requisicaoLiberacaoDto.setDataHoraSolicitacaoStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_DEFAULT, requisicaoLiberacaoDto.getDataHoraInicio(), WebUtil.getLanguage(request)));
requisicaoLiberacaoDto.setDataHoraTerminoStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_DEFAULT, requisicaoLiberacaoDto.getDataHoraTermino(), WebUtil.getLanguage(request)));
requisicaoLiberacaoDto.setDataInicioStr(UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, requisicaoLiberacaoDto.getDataHoraInicioAgendada(), WebUtil.getLanguage(request)));
requisicaoLiberacaoDto.setDataTerminoStr(UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, requisicaoLiberacaoDto.getDataHoraTerminoAgendada(), WebUtil.getLanguage(request)));
requisicaoLiberacaoDto.setDatahoraAprovacaoStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_DEFAULT, requisicaoLiberacaoDto.getDatahoraAprovacao(), WebUtil.getLanguage(request)));
//Verifica se usuario � o responsavel pela libera��o da requisi��o
//(usuario.getIdEmpregado() == dtoSol.getIdSolicitante() ){
// dtoSol.setAutorizadoLiberar("S");
//}
if (gerenciamentoBean.getAtribuidaCompartilhada() == null || gerenciamentoBean.getAtribuidaCompartilhada().trim().equalsIgnoreCase("")) {
colTarefasFiltradasFinal.add(tarefaDto);
} else {
if (gerenciamentoBean.getAtribuidaCompartilhada().trim().equalsIgnoreCase(UtilI18N.internacionaliza(request, "citcorpore.comum.sematribuicao"))) {
if (requisicaoLiberacaoDto.getResponsavelAtual() == null || requisicaoLiberacaoDto.getResponsavelAtual().trim().equalsIgnoreCase("")) {
colTarefasFiltradasFinal.add(tarefaDto);
}
} else {
if (gerenciamentoBean.getAtribuidaCompartilhada().trim().equalsIgnoreCase(requisicaoLiberacaoDto.getResponsavelAtual())) {
colTarefasFiltradasFinal.add(tarefaDto);
}
}
}
}
String tarefasStr = serializaTarefas(colTarefasFiltradasFinal, request);
/*
* Collections.sort(colTarefasFiltradasFinal, new ObjectSimpleComparator("getDataHoraLimite", ObjectSimpleComparator.ASC)); String tarefasStr = new Gson().toJson(colTarefasFiltradasFinal);
* tarefasStr = tarefasStr.replaceAll("\n", " "); tarefasStr = tarefasStr.replaceAll("\r", " "); tarefasStr = tarefasStr.replaceAll("\\\\n", " ");
*/
document.executeScript("exibirTarefas('" + tarefasStr + "');");
document.getSelectById("atribuidaCompartilhada").removeAllOptions();
document.getSelectById("atribuidaCompartilhada").addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todos") + " --");
for (Iterator it = mapAtr.values().iterator(); it.hasNext();) {
String str = (String) it.next();
document.getSelectById("atribuidaCompartilhada").addOption(str, str);
}
document.getSelectById("atribuidaCompartilhada").setValue(gerenciamentoBean.getAtribuidaCompartilhada());
document.getJanelaPopupById("parent.JANELA_AGUARDE_MENU").hide();
}
public void preparaExecucaoTarefa(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
GerenciamentoLiberacaoDTO gerenciamentoBean = (GerenciamentoLiberacaoDTO) document.getBean();
if (gerenciamentoBean.getIdTarefa() == null)
return;
ExecucaoLiberacaoService execucaoLiberacaoService = (ExecucaoLiberacaoService) ServiceLocator.getInstance().getService(ExecucaoLiberacaoService.class, null);
TarefaFluxoDTO tarefaDto = execucaoLiberacaoService.recuperaTarefa(usuario.getLogin(), gerenciamentoBean.getIdTarefa());
if (tarefaDto == null || tarefaDto.getElementoFluxoDto() == null || !tarefaDto.getExecutar().equals("S") || tarefaDto.getElementoFluxoDto().getTipoInteracao() == null)
return;
if (tarefaDto.getElementoFluxoDto().getTipoInteracao().equals(Enumerados.INTERACAO_VISAO)) {
if (tarefaDto.getIdVisao() != null) {
document.executeScript("exibirVisao('Executar tarefa " + tarefaDto.getElementoFluxoDto().getDocumentacao() + "','" + tarefaDto.getIdVisao() + "','"
+ tarefaDto.getElementoFluxoDto().getIdFluxo() + "','" + tarefaDto.getIdItemTrabalho() + "','" + gerenciamentoBean.getAcaoFluxo() + "');");
} else {
document.alert("Vis�o para tarefa \"" + tarefaDto.getElementoFluxoDto().getDocumentacao() + "\" n�o encontrada");
}
} else {
String caracterParmURL = "?";
if (tarefaDto.getElementoFluxoDto().getUrl().indexOf("?") > -1) { // Se na URL já conter ?, entao colocar &
caracterParmURL = "&";
}
document.executeScript("exibirUrl('Executar tarefa " + tarefaDto.getElementoFluxoDto().getDocumentacao() + "','" + tarefaDto.getElementoFluxoDto().getUrl() + caracterParmURL
+ "idRequisicaoLiberacao=" + ((RequisicaoLiberacaoDTO) tarefaDto.getRequisicaoLiberacaoDto()).getIdRequisicaoLiberacao() + "&idTarefa=" + tarefaDto.getIdItemTrabalho() + "&acaoFluxo="
+ gerenciamentoBean.getAcaoFluxo() + "');");
}
}
public void reativaRequisicao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
GerenciamentoLiberacaoDTO gerenciamentoBean = (GerenciamentoLiberacaoDTO) document.getBean();
if (gerenciamentoBean.getIdRequisicao() == null)
return;
RequisicaoLiberacaoService requisicaoLiberacaoService = (RequisicaoLiberacaoService) ServiceLocator.getInstance().getService(RequisicaoLiberacaoService.class, null);
RequisicaoLiberacaoDTO requisicaoLiberacaoDto = requisicaoLiberacaoService.restoreAll(gerenciamentoBean.getIdRequisicao());
requisicaoLiberacaoService.reativa(usuario, requisicaoLiberacaoDto);
exibeTarefas(document, request, response);
}
public void aprovarLiberacao(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("Sess�o expirada! Favor efetuar logon novamente!");
document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'");
return;
}
GerenciamentoLiberacaoDTO gerenciamentoBean = (GerenciamentoLiberacaoDTO) document.getBean();
if (gerenciamentoBean.getIdRequisicao() == null)
return;
RequisicaoLiberacaoService requisicaoLiberacaoService = (RequisicaoLiberacaoService) ServiceLocator.getInstance().getService(RequisicaoLiberacaoService.class, WebUtil.getUsuarioSistema(request));
RequisicaoLiberacaoDTO requisicaoLiberacaoDto = requisicaoLiberacaoService.restoreAll(gerenciamentoBean.getIdRequisicao());
if(requisicaoLiberacaoDto != null && requisicaoLiberacaoDto.getIdAprovador() == null){
if(requisicaoLiberacaoDto != null){
if(usuario.getIdUsuario() != null){
requisicaoLiberacaoDto.setIdAprovador(usuario.getIdUsuario());
requisicaoLiberacaoDto.setDatahoraAprovacao(UtilDatas.getDataHoraAtual());
requisicaoLiberacaoDto.setUsuarioDto(usuario);
}
}
requisicaoLiberacaoService.updateLiberacaoAprovada(requisicaoLiberacaoDto);
document.alert(UtilI18N.internacionaliza(request, "requisicaoLiberacao.LiberacaoSucesso"));
}else{
document.alert(UtilI18N.internacionaliza(request, "requisicaoLiberacao.requisicaoLiderada"));
return;
}
exibeTarefas(document, request, response);
}
private String serializaTarefas(List<TarefaFluxoDTO> colTarefas, HttpServletRequest request) throws Exception {
if (colTarefas == null)
return null;
for (TarefaFluxoDTO tarefaDto : colTarefas) {
String elementoFluxo_serialize = StringEscapeUtils.escapeJavaScript(br.com.citframework.util.WebUtil.serializeObject(tarefaDto.getElementoFluxoDto(), WebUtil.getLanguage(request)));
String requisicaoLiberacao_serialize = StringEscapeUtils.escapeJavaScript(br.com.citframework.util.WebUtil.serializeObject(tarefaDto.getRequisicaoLiberacaoDto(), WebUtil.getLanguage(request)));
tarefaDto.setElementoFluxo_serialize(elementoFluxo_serialize);
tarefaDto.setSolicitacao_serialize(requisicaoLiberacao_serialize);
}
return br.com.citframework.util.WebUtil.serializeObjects(colTarefas, WebUtil.getLanguage(request));
}
public void capturaTarefa(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
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;
}
GerenciamentoLiberacaoDTO requisicaoBean = (GerenciamentoLiberacaoDTO) document.getBean();
if (requisicaoBean.getIdTarefa() == null) {
return;
}
RequisicaoLiberacaoService reqService = (RequisicaoLiberacaoService) ServiceLocator.getInstance().getService(RequisicaoLiberacaoService.class, WebUtil.getUsuarioSistema(request));
RequisicaoLiberacaoDTO reqDto = new RequisicaoLiberacaoDTO();
reqDto.setIdRequisicaoLiberacao(requisicaoBean.getIdRequisicao());
reqDto = (RequisicaoLiberacaoDTO) reqService.restore(reqDto);
reqDto.setIdProprietario(usuario.getIdUsuario());
reqService.updateSimples(reqDto);
ExecucaoLiberacaoService execucaoLiberacaoService = (ExecucaoLiberacaoService) ServiceLocator.getInstance().getService(ExecucaoLiberacaoService.class, WebUtil.getUsuarioSistema(request));
execucaoLiberacaoService.executa(usuario, requisicaoBean.getIdTarefa(), Enumerados.ACAO_INICIAR);
exibeTarefas(document, request, response);
requisicaoBean = null;
}
public void onClosePopUp(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception{
exibeTarefas(document,request,response);
}
}