package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.EspecificacaoServicoTipo;
import gcom.atendimentopublico.ordemservico.FiltroServicoTipoPrioridade;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.ServicoTipo;
import gcom.atendimentopublico.ordemservico.ServicoTipoPrioridade;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.bean.ObterDadosRegistroAtendimentoHelper;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.faturamento.credito.FiltroCreditoTipo;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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;
/**
* <<Descri��o da Classe>>
*
* @author lms
* @date 14/08/2006
*/
public class ExibirGerarOrdemServicoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
String forward = getRealForward(httpServletRequest.getParameter("forward"));
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
ActionForward retorno = actionMapping.findForward(forward);
GerarOrdemServicoActionForm form = (GerarOrdemServicoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
if(httpServletRequest.getParameter("limparTela") != null){
form.limparTodosCamposForm();
}
if(httpServletRequest.getParameter("forward") != null){
form.setObservacao(null);
}
if(httpServletRequest.getParameter("caminhoRetornoGerarOs") != null){
sessao.setAttribute("caminhoRetornoGerarOs",httpServletRequest.getParameter("caminhoRetornoGerarOs"));
}
if(httpServletRequest.getParameter("veioAcompanhamento") != null){
sessao.setAttribute("veioAcompanhamento",httpServletRequest.getParameter("veioAcompanhamento"));
}
if(httpServletRequest.getParameter("veioAcompanhamentoRoteiro") != null){
sessao.setAttribute("veioAcompanhamentoRoteiro",httpServletRequest.getParameter("veioAcompanhamentoRoteiro"));
}
//Registro de Atendimento
Integer idRA = Integer.valueOf(httpServletRequest.getParameter("idRegistroAtendimento"));
ObterDadosRegistroAtendimentoHelper registroAtendimentoHelper = fachada.obterDadosRegistroAtendimento(idRA);
RegistroAtendimento ra = fachada.validarRegistroAtendimento(idRA);
//[SF0004] - Verificar unidade do usu�rio
fachada.verificarUnidadeUsuario(ra,usuarioLogado);
form.getOrdemServico().setRegistroAtendimento(ra);
form.getOrdemServico().setImovel(registroAtendimentoHelper.getRegistroAtendimento().getImovel());
//Servi�o Tipo
ServicoTipo servicoTipo = null;
Integer idServicoTipo = Util.converterStringParaInteger(form.getIdServicoTipo());
String descricaoServicoTipo = null;
String valorServicoOriginal = null;
Integer idServicoTipoPrioridadeOriginal = null;
String descricaoServicoTipoPrioridadeOriginal = null;
if (Util.validarNumeroMaiorQueZERO(idServicoTipo)) {
servicoTipo = fachada.pesquisarSevicoTipo(idServicoTipo);
fachada.validarServicoTipo(ra.getId(),idServicoTipo);
if (servicoTipo != null) {
descricaoServicoTipo = servicoTipo.getDescricao();
if (servicoTipo.getValor() != null) {
String valorFormatado = servicoTipo.getValor().toString().replace('.',',');
valorServicoOriginal = valorFormatado;
}
if (servicoTipo.getServicoTipoPrioridade() != null) {
idServicoTipoPrioridadeOriginal = servicoTipo.getServicoTipoPrioridade().getId();
descricaoServicoTipoPrioridadeOriginal = servicoTipo.getServicoTipoPrioridade().getDescricao();
}
httpServletRequest.setAttribute("idServicoTipoEncontrada","true");
}else{
form.setIdServicoTipo("");
descricaoServicoTipo = "Tipo de Servi�o inexistente";
}
form.getOrdemServico().setServicoTipo(servicoTipo);
}
form.setIdRegistroAtendimento( (String) httpServletRequest.getParameter("idRegistroAtendimento") );
form.setDescricaoServicoTipo(descricaoServicoTipo);
form.setValorServicoOriginal(valorServicoOriginal);
form.setIdPrioridadeServicoOriginal(idServicoTipoPrioridadeOriginal + "");
form.setDescricaoPrioridadeServicoOriginal(descricaoServicoTipoPrioridadeOriginal);
//Ordem de Servi�o Refer�ncia
Integer idOrdemServicoReferencia = Util.converterStringParaInteger(form.getIdOrdemServicoReferencia());
if (Util.validarNumeroMaiorQueZERO(idOrdemServicoReferencia)) {
OrdemServico os = fachada.pesquisarOrdemServico(idOrdemServicoReferencia);
if(os == null){
form.setIdOrdemServicoReferencia(null);
form.setDescricaoOrdemServicoReferencia("Ordem de Servi�o inexistente");
}else{
form.setIdOrdemServicoReferencia(os.getId().toString());
form.setDescricaoOrdemServicoReferencia(os.getServicoTipo().getDescricao());
form.getOrdemServico().setOsReferencia(os);
httpServletRequest.setAttribute("osReferenciaEncontrada","true");
}
}
//Servi�o Tipo Refer�ncia
Integer idServicoTipoReferencia = Util.converterStringParaInteger(form.getIdServicoTipoReferencia());
if (Util.validarNumeroMaiorQueZERO(idServicoTipoReferencia)) {
ServicoTipo st = fachada.pesquisarSevicoTipo(idServicoTipoReferencia);
if(st != null){
form.setIdServicoTipoReferencia(st.getId().toString());
form.setDescricaoServicoTipoReferencia(st.getDescricao());
form.getOrdemServico().setServicoTipoReferencia(st);
httpServletRequest.setAttribute("servicoTipoReferenciaEncontrada","true");
}else{
form.setIdServicoTipoReferencia("");
form.setDescricaoServicoTipoReferencia("Tipo de Servi�o refer�ncia inexistente");
}
}
//Cole��o de Servi�os Tipo
Collection colecaoServicosTipo = new ArrayList();
for (Iterator iter = ra.getSolicitacaoTipoEspecificacao().getEspecificacaoServicoTipos().iterator(); iter.hasNext();) {
EspecificacaoServicoTipo est = (EspecificacaoServicoTipo) iter.next();
colecaoServicosTipo.add(est.getServicoTipo());
}
sessao.setAttribute("colecaoServicosTipo", colecaoServicosTipo);
UnidadeOrganizacional unidadeAtualRA = fachada.obterUnidadeAtualRA(idRA);
FiltroServicoTipoPrioridade filtroServicoTipoPrioridade = new FiltroServicoTipoPrioridade();
filtroServicoTipoPrioridade.setCampoOrderBy(FiltroCreditoTipo.DESCRICAO);
filtroServicoTipoPrioridade.adicionarParametro(new ParametroSimples(FiltroCreditoTipo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoServicoTipoPrioridade = fachada.pesquisar(filtroServicoTipoPrioridade, ServicoTipoPrioridade.class.getName());
sessao.setAttribute("colecaoServicoTipoPrioridade", colecaoServicoTipoPrioridade);
httpServletRequest.setAttribute("servicoTipo", servicoTipo);
if (servicoTipo != null && servicoTipo.getServicoTipoReferencia() != null ) {
httpServletRequest.setAttribute("servicoTipoReferencia", servicoTipo.getServicoTipoReferencia());
}
httpServletRequest.setAttribute("registroAtendimento", ra);
httpServletRequest.setAttribute("registroAtendimentoHelper", registroAtendimentoHelper);
httpServletRequest.setAttribute("unidadeAtualRA", unidadeAtualRA);
sessao.setAttribute("ordemServico", form.getOrdemServico());
return retorno;
}
private String getRealForward(String upper) {
String forward = "";
if ("exibirGerarOrdemServico".toUpperCase().equals(upper.toUpperCase()) ) {
forward = "exibirGerarOrdemServico";
} else if ("exibirGerarOrdemServicoPopup".toUpperCase().equals(upper.toUpperCase())) {
forward = "exibirGerarOrdemServicoPopup";
} else {
throw new IllegalArgumentException();
}
return forward;
}
}