package gcom.gui.cadastro.tarifasocial;
import java.util.Collection;
import java.util.List;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.imovel.Imovel;
import gcom.cadastro.imovel.ImovelPerfil;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
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;
import org.apache.struts.validator.DynaValidatorForm;
/**
* < <Descri��o da Classe>>
*
* @author rodrigo
*/
public class ExibirInserirTarifaSocialDadosEconomiaAction extends GcomAction {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = null;
// Pega uma instancia da sessao
HttpSession sessao = httpServletRequest.getSession(false);
// Pega uma instancia do actionform
DynaValidatorForm inserirTarifaSocialActionForm = (DynaValidatorForm) actionForm;
Fachada fachada = Fachada.getInstancia();
int quantidadeEconomiasImovel = 0;
if (inserirTarifaSocialActionForm.get("nomeRegistroAtendimento") != null
&& !inserirTarifaSocialActionForm
.get("nomeRegistroAtendimento").equals("")) {
quantidadeEconomiasImovel = ((Integer) inserirTarifaSocialActionForm
.get("qtdEconomia")).intValue();
} else {
String idRA = (String) inserirTarifaSocialActionForm
.get("registroAtendimento");
RegistroAtendimento registroAtendimento = fachada
.verificarRegistroAtendimentoTarifaSocial(idRA);
if (registroAtendimento != null) {
String idImovel = registroAtendimento.getImovel().getId()
.toString();
inserirTarifaSocialActionForm.set("nomeRegistroAtendimento",
registroAtendimento.getSolicitacaoTipoEspecificacao()
.getDescricao());
Collection clientesImoveis = fachada
.pesquisarClienteImovelPeloImovelParaEndereco(new Integer(
idImovel));
if (!clientesImoveis.isEmpty()) {
ClienteImovel clienteImovel = (ClienteImovel) ((List) clientesImoveis)
.get(0);
Imovel imovel = clienteImovel.getImovel();
if (imovel.getImovelPerfil().getId().intValue() == ImovelPerfil.TARIFA_SOCIAL
.intValue()) {
// FS0002 - Verificar im�vel na tarifa social
throw new ActionServletException(
"atencao.imovel.associado.registro_atendimento.ja.tarifa_social",
null, imovel.getId().toString());
}
// Obter a quantidade de economias do im�vel escolhido
quantidadeEconomiasImovel = fachada
.obterQuantidadeEconomias(imovel);
// Seta no request
sessao.setAttribute("clienteImovel", clienteImovel);
sessao.setAttribute("quantEconomias", String
.valueOf(quantidadeEconomiasImovel));
inserirTarifaSocialActionForm.set("qtdEconomia", quantidadeEconomiasImovel);
httpServletRequest.setAttribute("idImovelRA", idImovel);
} else {
// Matr�cula inexistente
// httpServletRequest.setAttribute("matriculaInvalida",
// "Matr�cula do im�vel " + idImovel + " inexistente");
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Matr�cula do im�vel " + idImovel);
}
} else {
throw new ActionServletException(
"atencao.pesquisa_inexistente", null,
"Registro de Atendimento");
}
}
// Dependendo da quantidade de economias do imovel, o action ser�
// redirecionado para o
// caso de uso correspondente
if (quantidadeEconomiasImovel == 1) {
// Chama o caso de uso [UC0065 - Inserir Dados Tarifa Social - Uma
// Economia]
sessao.removeAttribute("colecaoClienteImovelEconomia");
retorno = actionMapping
.findForward("inserirTarifaSocialDadosUmaEconomia");
} else if (quantidadeEconomiasImovel > 1) {
// Chama o caso de uso [UC0066 - Inserir Dados Tarifa Social - Mais
// de Uma Economia]
sessao.removeAttribute("clienteImovel");
sessao.removeAttribute("colecaoDadosTarifaSocial");
retorno = actionMapping
.findForward("inserirTarifaSocialDadosMultiplasEconomias");
}
return retorno;
}
}