package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.ComandoOrdemSeletiva;
import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento;
import gcom.batch.Processo;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
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;
/**
* [UC1197] Encerrar Comandos de OS Seletiva de Inspe��o de Anormalidade
*
* @author Vivianne Sousa
* @created 21/07/2011
*/
public class EncerrarComandoOSSeletivaInspecaoAnormalidadeAction extends ExibidorProcessamentoTarefaRelatorio {
/**
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
* @throws IOException
*/
@SuppressWarnings("unchecked")
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws IOException {
ActionForward retorno = actionMapping.findForward("telaSucesso");
ConsultarComandosOSSeletivaInspecaoAnormalidadeActionForm form = (ConsultarComandosOSSeletivaInspecaoAnormalidadeActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
Integer idRegistro = new Integer(form.getIdRegistro()) ;
// String idEmpresa = form.getIdEmpresa();
HttpSession sessao = httpServletRequest.getSession(false);
Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado");
ComandoOrdemSeletiva comandoOrdemSeletiva = fachada.pesquisarComandoOSSeletiva(idRegistro);
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
Short idMotivoEncerramento = null;
if (comandoOrdemSeletiva.getDataEncerramento() != null) {
throw new ActionServletException("atencao.comando.ja_encerrado",
null, "Comandos de OS Seletiva de Inspe��o de Anormalidade");
}
Date dataPrevista = comandoOrdemSeletiva.getDataGeracao();
if(sistemaParametro.getQtdeDiasValidadeOSAnormalidadeFiscalizacao() != null){
dataPrevista = Util.adicionarNumeroDiasDeUmaData(dataPrevista,sistemaParametro.getQtdeDiasValidadeOSAnormalidadeFiscalizacao());
}
Date dataAtual = new Date();
if(dataAtual.compareTo(dataPrevista) >= 0){
idMotivoEncerramento = AtendimentoMotivoEncerramento.CANCELADO_POR_DERCURSO_DE_PRAZO;
}else{
if(comandoOrdemSeletiva.getIndicadorGeracaoTxt().equals(ConstantesSistema.NAO)){
idMotivoEncerramento = AtendimentoMotivoEncerramento.DESISTENCIA_DO_USUARIO;
}else{
throw new ActionServletException("atencao.nao_e_possivel_encerrar_comando");
}
}
Map parametros = new HashMap();
parametros.put("idMotivoEncerramento", idMotivoEncerramento);
parametros.put("idRegistro", idRegistro);
fachada.inserirProcessoIniciadoParametrosLivres(parametros,
Processo.ENCERRAR_COMANDO_OS_SELETIVA_INSP_ANORM, usuarioLogado);
//montando p�gina de sucesso
montarPaginaSucesso(httpServletRequest,
"Encerramento do Comando de OS Seletiva de Inspe��o de Anormalidade Enviado para Processamento",
"Voltar",
"exibirConsultarComandosOSSeletivaInspecaoAnormalidadeAction.do?menu=sim");
return retorno;
}
}