package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.OrdemServicoFoto;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.Util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* [UC1199] � Acompanhar Arquivos de Roteiro
*
* @author Th�lio Ara�jo
*
* @date 15/07/2011
*/
public class SelecionarAcompanhamentoArquivosRoteiroAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirAcompanhamentoArquivosRoteiro");
HttpSession sessao = httpServletRequest.getSession(false);
// Precisa pegar a unidade do usuario do login que esta na sessao
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
Integer idUnidadeLotacao = usuario.getUnidadeOrganizacional().getId();
// Obt�m a inst�ncia da Fachada
Fachada fachada = Fachada.getInstancia();
// Form
AcompanharRoteiroProgramacaoOrdemServicoActionForm acompanhamentoArquivosRoteiroActionForm =
(AcompanharRoteiroProgramacaoOrdemServicoActionForm) actionForm;
String limparSessao = httpServletRequest.getParameter("limparSessao");
String metodo = httpServletRequest.getParameter("metodo");
if (Util.verificarNaoVazio(metodo) && metodo.equals("visualizarFotos")){
Integer idOS = Integer.valueOf(httpServletRequest.getParameter("idOS"));
ArrayList<OrdemServicoFoto> fotos = (ArrayList<OrdemServicoFoto>) Fachada.getInstancia().pesquisarFotosOrdemServico(idOS, true);
if (!Util.isVazioOrNulo(fotos)){
sessao.setAttribute("colecaoFotoOS", fotos);
sessao.setAttribute("numeroFotos", fotos.size());
sessao.setAttribute("idFoto", fotos.get(0).getId().intValue());
} else {
throw new ActionServletException("atencao.ordem.servico.nao.possui.foto");
}
retorno = actionMapping.findForward("fotos");
} else {
Collection<?> colecaoAcompanhamentoArquivosRoteiro = fachada.pesquisarAcompanhamentoArquivosRoteiro(
acompanhamentoArquivosRoteiroActionForm.getDataProgramacao(),
acompanhamentoArquivosRoteiroActionForm.getIdEmpresa(),
acompanhamentoArquivosRoteiroActionForm.getIdSituacao(),
idUnidadeLotacao);
if (!colecaoAcompanhamentoArquivosRoteiro.isEmpty()){
sessao.setAttribute("achou","1");
} else {
throw new ActionServletException("atencao.nao_existe_dados_filtro");
}
sessao.setAttribute("colecaoAcompanhamentoArquivosRoteiro", colecaoAcompanhamentoArquivosRoteiro);
}
Date dataInformada = Util.converteStringParaDate(acompanhamentoArquivosRoteiroActionForm.getDataProgramacao());
Date dataAtual = Util.formatarDataSemHora(new Date());
if (Util.compararData(dataInformada, dataAtual) != -1){
httpServletRequest.setAttribute("exibirBotoes", true);
}
if (limparSessao != null && !limparSessao.equals("")){
sessao.removeAttribute("dataRoteiroInformarSituacao");
sessao.removeAttribute("chaveOsInformarSituacao");
sessao.removeAttribute("chaveArquivoInformarSituacao");
}
String idOs = (String)sessao.getAttribute("chaveOsInformarSituacao");
if (idOs != null && !idOs.equals("")){
this.atualizarInformaSituacaoOrdemServico(sessao);
}
httpServletRequest.setAttribute("fecharPopup", "true");
return retorno;
}
private void atualizarInformaSituacaoOrdemServico(HttpSession sessao){
Fachada fachada = Fachada.getInstancia();
Date dataRoteiro = (Date)sessao.getAttribute("dataRoteiroInformarSituacao");
String idOs = (String) sessao.getAttribute("chaveOsInformarSituacao");
String chaveArquivo = (String) sessao.getAttribute("chaveArquivoInformarSituacao");
OrdemServico ordemServico = fachada.recuperaOSPorId(Util.converterStringParaInteger(idOs));
Integer motivoNaoEncerramentoOs = null;
fachada.atualizarOrdemProgramacaoAcompServicoInformarSituacao(Util.converterStringParaInteger(chaveArquivo),dataRoteiro,
ordemServico.getId(), ordemServico.getSituacao(), motivoNaoEncerramentoOs);
boolean naoInformaIndicadorAtivo = false;
fachada.atualizarOrdemServicoProgramacaoSituacaoOs(ordemServico.getId(),
dataRoteiro,ordemServico.getSituacao(),motivoNaoEncerramentoOs, naoInformaIndicadorAtivo);
sessao.removeAttribute("dataRoteiroInformarSituacao");
sessao.removeAttribute("chaveOsInformarSituacao");
sessao.removeAttribute("chaveArquivoInformarSituacao");
}
}