package gcom.gui.cadastro;
import gcom.batch.Processo;
import gcom.cadastro.localidade.GerenciaRegional;
import gcom.cadastro.localidade.Localidade;
import gcom.cadastro.localidade.UnidadeNegocio;
import gcom.cadastro.tarifasocial.TarifaSocialComandoCarta;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.util.ConstantesSistema;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author Vivianne Sousa
* @data 23/03/2011
*/
public class GerarComandoCartasTarifaSocialAction extends
ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("telaSucesso");
GerarComandoCartasTarifaSocialActionForm form = (GerarComandoCartasTarifaSocialActionForm) actionForm;
//Este map levar� todos os par�metros para a inicializa��o do relat�rio
Map parametros = new HashMap();
Fachada fachada = Fachada.getInstancia();
String criteriosSelecionados = (String)httpServletRequest.getParameter("criterios");
String[] arrayCriterios = criteriosSelecionados.split(",");
if(arrayCriterios.length == 0 && form.getTipoCarta().equals("1")){
throw new ActionServletException("atencao.campo.informado", null, "Pelo menos um crit�rio");
}
String acao = (String)httpServletRequest.getParameter("acao");
TarifaSocialComandoCarta tarifaSocialComandoCarta = inserirComando(form,arrayCriterios,acao,httpServletRequest);
String msgSucesso = "";
if(acao.equals("1")){
msgSucesso = "Comando " + tarifaSocialComandoCarta.getId() + " de Simula��o inserido com sucesso.";
parametros.put("tarifaSocialComandoCarta",tarifaSocialComandoCarta);
//Simular
fachada.inserirProcessoIniciadoParametrosLivres(parametros,
Processo.PROCESSAR_CARTA_TARIFA_SOCIAL_SIMULAR ,
this.getUsuarioLogado(httpServletRequest));
}else{
msgSucesso = "Comando " + tarifaSocialComandoCarta.getId() + " de Gera��o inserido com sucesso.";
tarifaSocialComandoCarta.setDataProcessamento(new Date());
parametros.put("tarifaSocialComandoCarta",tarifaSocialComandoCarta);
//Gerar
fachada.inserirProcessoIniciadoParametrosLivresAguardandoAutorizacao(parametros,
Processo.PROCESSAR_CARTA_TARIFA_SOCIAL_GERAR ,
this.getUsuarioLogado(httpServletRequest));
}
montarPaginaSucesso(httpServletRequest, msgSucesso, "", "");
return retorno;
}
//[SB0003]�Incluir Comando
private TarifaSocialComandoCarta inserirComando(GerarComandoCartasTarifaSocialActionForm form,
String[] arrayCriterios,String acao,HttpServletRequest httpServletRequest) {
Integer idGerenciaRegional = null;
GerenciaRegional gerenciaRegional = null;
Integer idUnidadeNegocio = null;
UnidadeNegocio unidadeNegocio = null;
Integer idLocalidade = null;
Localidade localidade = null;
String tipoCarta = null;
Integer qtdeDiasAtraso = null;
Integer anoMesPesquisaInicial = null;
Integer anoMesPesquisaFinal = null;
Integer prazoComparecerCompesa = null;
if(form.getGerenciaRegionalId() != null && !form.getGerenciaRegionalId().equals("")
&& !form.getGerenciaRegionalId().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){
idGerenciaRegional = new Integer(form.getGerenciaRegionalId());
gerenciaRegional = new GerenciaRegional();
gerenciaRegional.setId(idGerenciaRegional);
}
if(form.getUnidadeNegocioId() != null && !form.getUnidadeNegocioId().equals("")
&& !form.getUnidadeNegocioId().equals("" + ConstantesSistema.NUMERO_NAO_INFORMADO)){
idUnidadeNegocio= new Integer(form.getUnidadeNegocioId());
unidadeNegocio = new UnidadeNegocio();
unidadeNegocio.setId(idUnidadeNegocio);
}
if(form.getCodigoLocalidade() != null && !form.getCodigoLocalidade().equals("")){
idLocalidade = new Integer(form.getCodigoLocalidade());
localidade = new Localidade();
localidade.setId(idLocalidade);
}
if(form.getTipoCarta() == null || form.getTipoCarta().equals("")){
throw new ActionServletException("atencao.campo.informado", null, "Tipo da Carta");
}else{
tipoCarta = form.getTipoCarta();
}
if(tipoCarta.equals("1")){
if(form.getAnoMesPesquisaInicial() != null && !form.getAnoMesPesquisaInicial().equals("")){
anoMesPesquisaInicial = gcom.util.Util.formatarMesAnoComBarraParaAnoMes(form.getAnoMesPesquisaInicial());
//Util.formatarMesAnoComBarraParaAnoMes(form.getAnoMesPesquisaInicial());
}else{
throw new ActionServletException("atencao.campo.informado", null, "Per�odo a ser pesquisado inicial");
}
if(form.getAnoMesPesquisaFinal() != null && !form.getAnoMesPesquisaFinal().equals("")){
anoMesPesquisaFinal = gcom.util.Util.formatarMesAnoComBarraParaAnoMes(form.getAnoMesPesquisaFinal());
}else{
throw new ActionServletException("atencao.campo.informado", null, "Per�odo a ser pesquisado final");
}
if(arrayCriterios == null || arrayCriterios.length == 0 ||
(arrayCriterios.length == 1 && arrayCriterios[0].equals(""))){
throw new ActionServletException("atencao.campo.informado", null, "Par�metros para Recadastramento dos Clientes");
}
}else if(tipoCarta.equals("2")){
if(form.getQtdeDiasAtraso() != null && !form.getQtdeDiasAtraso().equals("")){
qtdeDiasAtraso = new Integer(form.getQtdeDiasAtraso());
}else{
throw new ActionServletException("atencao.campo.informado", null, "Cobrar D�bito com mais de 'XX' dias de atraso");
}
}
if(form.getPrazoComparecerCompesa() != null && !form.getPrazoComparecerCompesa().equals("")){
prazoComparecerCompesa = new Integer(form.getPrazoComparecerCompesa());
}else{
throw new ActionServletException("atencao.campo.informado", null, "Prazo para comparecer na Companhia de Saneamento");
}
TarifaSocialComandoCarta tarifaSocialComandoCarta = new TarifaSocialComandoCarta();
tarifaSocialComandoCarta.setGerenciaRegional(gerenciaRegional);
tarifaSocialComandoCarta.setUnidadeNegocio(unidadeNegocio);
tarifaSocialComandoCarta.setLocalidade(localidade);
tarifaSocialComandoCarta.setCodigoTipoCarta(new Integer(tipoCarta));
tarifaSocialComandoCarta.setQuantidadeDiasComparecimento(prazoComparecerCompesa);
tarifaSocialComandoCarta.setQuantidadeDiasDebitoVencimento(qtdeDiasAtraso);
tarifaSocialComandoCarta.setAnoMesInicialImplantacao(anoMesPesquisaInicial);
tarifaSocialComandoCarta.setAnoMesFinalImplantacao(anoMesPesquisaFinal);
tarifaSocialComandoCarta.setIndicadorCriterioCpf(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioIdentidade(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioContratoEnergia(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioDadosEnergia(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioProgramaSocial(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioSeguroDesemprego(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioRendaComprovada(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioRendaDeclarada(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioQtdeEconomia(ConstantesSistema.NAO);
tarifaSocialComandoCarta.setIndicadorCriterioRecadastramento(ConstantesSistema.NAO);
if(tipoCarta.equals("1") && arrayCriterios != null && arrayCriterios.length > 0){
if(!(arrayCriterios.length == 1 && arrayCriterios[0].equals(""))){
for (int i = 0; i < (arrayCriterios.length); i++) {
Integer indicador = new Integer(arrayCriterios[i]);
switch (indicador) {
case 1:
tarifaSocialComandoCarta.setIndicadorCriterioCpf(ConstantesSistema.SIM);
break;
case 2:
tarifaSocialComandoCarta.setIndicadorCriterioIdentidade(ConstantesSistema.SIM);
break;
case 3:
tarifaSocialComandoCarta.setIndicadorCriterioContratoEnergia(ConstantesSistema.SIM);
break;
case 4:
tarifaSocialComandoCarta.setIndicadorCriterioDadosEnergia(ConstantesSistema.SIM);
break;
case 5:
tarifaSocialComandoCarta.setIndicadorCriterioProgramaSocial(ConstantesSistema.SIM);
break;
case 6:
tarifaSocialComandoCarta.setIndicadorCriterioSeguroDesemprego(ConstantesSistema.SIM);
break;
case 7:
tarifaSocialComandoCarta.setIndicadorCriterioRendaComprovada(ConstantesSistema.SIM);
break;
case 8:
tarifaSocialComandoCarta.setIndicadorCriterioRendaDeclarada(ConstantesSistema.SIM);
break;
case 9:
tarifaSocialComandoCarta.setIndicadorCriterioQtdeEconomia(ConstantesSistema.SIM);
break;
case 10:
tarifaSocialComandoCarta.setIndicadorCriterioRecadastramento(ConstantesSistema.SIM);
break;
}
}
}else{
throw new ActionServletException("atencao.campo.informado", null, "Par�metros para Recadastramento dos Clientes");
}
}
tarifaSocialComandoCarta.setQuantidadeCartasGeradas(new Integer(0));
tarifaSocialComandoCarta.setUsuario(this.getUsuarioLogado(httpServletRequest));
if(acao.equals("1")){
//Simular
tarifaSocialComandoCarta.setDataSimulacao(new Date());
}else{
//Gerar
tarifaSocialComandoCarta.setDataGeracao(new Date());
}
tarifaSocialComandoCarta.setUltimaAlteracao(new Date());
Integer idComando = (Integer)Fachada.getInstancia().inserir(tarifaSocialComandoCarta);
tarifaSocialComandoCarta.setId(idComando);
return tarifaSocialComandoCarta;
}
}