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.GerenciamentoMudancasDTO;
import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.ExecucaoMudancaService;
import br.com.centralit.citcorpore.negocio.RequisicaoMudancaService;
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"})
public class GerenciamentoMudancas extends AjaxFormAction {
@Override
public Class<GerenciamentoMudancasDTO> getBeanClass() {
return GerenciamentoMudancasDTO.class;
}
@Override
public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
this.exibeTarefas(document, request, response);
}
/**
* Exibe as tarefas para o gerenciamento de mudan�as
*
* @param document
* @param request
* @param response
* @throws Exception
*/
public void exibeTarefas(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final 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;
}
final GerenciamentoMudancasDTO gerenciamentoBean = (GerenciamentoMudancasDTO) document.getBean();
final ExecucaoMudancaService execucaoMudancaService = (ExecucaoMudancaService) ServiceLocator.getInstance().getService(ExecucaoMudancaService.class, null);
final List<TarefaFluxoDTO> colTarefas = execucaoMudancaService.recuperaTarefas(usuario.getLogin());
if (colTarefas == null) {
return;
}
final boolean bFiltroPorSolicitacao = gerenciamentoBean.getIdRequisicaoSel() != null && gerenciamentoBean.getIdRequisicaoSel().length() > 0;
final List<TarefaFluxoDTO> colTarefasFiltradas = new ArrayList();
if (!bFiltroPorSolicitacao) {
colTarefasFiltradas.addAll(colTarefas);
} else {
for (final TarefaFluxoDTO tarefaDto : colTarefas) {
boolean bAdicionar = false;
final String idRequisicao = "" + ((RequisicaoMudancaDTO) tarefaDto.getRequisicaoMudancaDto()).getIdRequisicaoMudanca();
bAdicionar = idRequisicao.indexOf(gerenciamentoBean.getIdRequisicaoSel()) >= 0;
if (bAdicionar) {
colTarefasFiltradas.add(tarefaDto);
}
}
}
final List colTarefasFiltradasFinal = new ArrayList();
final HashMap mapAtr = new HashMap();
mapAtr.put("-- Sem Atribui��o --", "-- Sem Atribui��o --");
for (final TarefaFluxoDTO tarefaDto : colTarefasFiltradas) {
final RequisicaoMudancaDTO requisicaoMudancaDto = (RequisicaoMudancaDTO) tarefaDto.getRequisicaoMudancaDto();
requisicaoMudancaDto.setDataHoraLimiteToString(""); // Apenas forca atualizacao
requisicaoMudancaDto.setDataHoraInicioToString(""); // Apenas forca atualizacao
requisicaoMudancaDto.setDescricao("");
requisicaoMudancaDto.setDataHoraInicioStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_DEFAULT, requisicaoMudancaDto.getDataHoraInicio(),
WebUtil.getLanguage(request)));
requisicaoMudancaDto.setDataHoraTerminoStr(UtilDatas.convertDateToString(TipoDate.TIMESTAMP_DEFAULT, requisicaoMudancaDto.getDataHoraTermino(),
WebUtil.getLanguage(request)));
if (requisicaoMudancaDto.getResponsavelAtual() != null) {
if (!mapAtr.containsKey(requisicaoMudancaDto.getResponsavelAtual())) {
mapAtr.put(requisicaoMudancaDto.getResponsavelAtual(), requisicaoMudancaDto.getResponsavelAtual());
}
}
if (gerenciamentoBean.getAtribuidaCompartilhada() == null || gerenciamentoBean.getAtribuidaCompartilhada().trim().equalsIgnoreCase("")) {
colTarefasFiltradasFinal.add(tarefaDto);
} else {
if (gerenciamentoBean.getAtribuidaCompartilhada().trim().equalsIgnoreCase(UtilI18N.internacionaliza(request, "citcorpore.comum.sematribuicao"))) {
if (requisicaoMudancaDto.getResponsavelAtual() == null || requisicaoMudancaDto.getResponsavelAtual().trim().equalsIgnoreCase("")) {
colTarefasFiltradasFinal.add(tarefaDto);
}
} else {
if (gerenciamentoBean.getAtribuidaCompartilhada().trim().equalsIgnoreCase(requisicaoMudancaDto.getResponsavelAtual())) {
colTarefasFiltradasFinal.add(tarefaDto);
}
}
}
}
final String tarefasStr = this.serializaTarefas(colTarefasFiltradasFinal, request);
document.executeScript("exibirTarefas('" + tarefasStr + "');");
document.getSelectById("atribuidaCompartilhada").removeAllOptions();
document.getSelectById("atribuidaCompartilhada").addOption("", "-- " + UtilI18N.internacionaliza(request, "citcorpore.comum.todos") + " --");
for (final Iterator it = mapAtr.values().iterator(); it.hasNext();) {
final String str = (String) it.next();
document.getSelectById("atribuidaCompartilhada").addOption(str, str);
}
document.getSelectById("atribuidaCompartilhada").setValue(gerenciamentoBean.getAtribuidaCompartilhada());
}
public void preparaExecucaoTarefa(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final 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;
}
final GerenciamentoMudancasDTO gerenciamentoBean = (GerenciamentoMudancasDTO) document.getBean();
if (gerenciamentoBean.getIdTarefa() == null) {
return;
}
final ExecucaoMudancaService execucaoMudancaService = (ExecucaoMudancaService) ServiceLocator.getInstance().getService(ExecucaoMudancaService.class, null);
final TarefaFluxoDTO tarefaDto = execucaoMudancaService.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) {
caracterParmURL = "&";
}
document.executeScript("exibirUrl('Executar tarefa " + tarefaDto.getElementoFluxoDto().getDocumentacao() + "','" + tarefaDto.getElementoFluxoDto().getUrl()
+ caracterParmURL + "idRequisicaoMudanca=" + ((RequisicaoMudancaDTO) tarefaDto.getRequisicaoMudancaDto()).getIdRequisicaoMudanca() + "&idTarefa="
+ tarefaDto.getIdItemTrabalho() + "&acaoFluxo=" + gerenciamentoBean.getAcaoFluxo() + "');");
}
}
public void reativaRequisicao(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception {
final 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;
}
final GerenciamentoMudancasDTO gerenciamentoBean = (GerenciamentoMudancasDTO) document.getBean();
if (gerenciamentoBean.getIdRequisicao() == null) {
return;
}
final RequisicaoMudancaService requisicaoMudancaService = (RequisicaoMudancaService) ServiceLocator.getInstance().getService(RequisicaoMudancaService.class, null);
final RequisicaoMudancaDTO requisicaoMudancaDto = requisicaoMudancaService.restoreAll(gerenciamentoBean.getIdRequisicao());
requisicaoMudancaService.reativa(usuario, requisicaoMudancaDto);
this.exibeTarefas(document, request, response);
}
private String serializaTarefas(final List<TarefaFluxoDTO> colTarefas, final HttpServletRequest request) throws Exception {
if (colTarefas == null) {
return null;
}
for (final TarefaFluxoDTO tarefaDto : colTarefas) {
final String elementoFluxo_serialize = StringEscapeUtils.escapeJavaScript(br.com.citframework.util.WebUtil.serializeObject(tarefaDto.getElementoFluxoDto(),
WebUtil.getLanguage(request)));
final String requisicaoMudanca_serialize = StringEscapeUtils.escapeJavaScript(br.com.citframework.util.WebUtil.serializeObject(tarefaDto.getRequisicaoMudancaDto(),
WebUtil.getLanguage(request)));
tarefaDto.setElementoFluxo_serialize(elementoFluxo_serialize);
tarefaDto.setSolicitacao_serialize(requisicaoMudanca_serialize);
}
return br.com.citframework.util.WebUtil.serializeObjects(colTarefas, WebUtil.getLanguage(request));
}
public void capturaTarefa(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;
}
GerenciamentoMudancasDTO requisicaoBean = (GerenciamentoMudancasDTO) document.getBean();
if (requisicaoBean.getIdTarefa() == null) {
return;
}
final RequisicaoMudancaService requisicaoMudancaService = (RequisicaoMudancaService) ServiceLocator.getInstance().getService(RequisicaoMudancaService.class, null);
RequisicaoMudancaDTO requisicaoDto = new RequisicaoMudancaDTO();
requisicaoDto.setIdRequisicaoMudanca(requisicaoBean.getIdRequisicao());
requisicaoDto = (RequisicaoMudancaDTO) requisicaoMudancaService.restore(requisicaoDto);
requisicaoDto.setIdProprietario(usuario.getIdEmpregado());
requisicaoMudancaService.updateNotNull(requisicaoDto);
final ExecucaoMudancaService execucaoMudancaService = (ExecucaoMudancaService) ServiceLocator.getInstance().getService(ExecucaoMudancaService.class, null);
execucaoMudancaService.executa(usuario, requisicaoBean.getIdTarefa(), Enumerados.ACAO_INICIAR);
this.exibeTarefas(document, request, response);
requisicaoBean = null;
}
}