package gcom.gui.cadastro.tarifasocial;
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 java.util.Collection;
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 rodrigo
*/
public class ManterTarifaSocialImovelAction 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 = actionMapping
.findForward("gerenciadorProcesso");
HttpSession sessao = httpServletRequest.getSession(false);
//Instancia da fachada
Fachada fachada = Fachada.getInstancia();
ManterTarifaSocialActionForm manterTarifaSocialActionForm = (ManterTarifaSocialActionForm) actionForm;
String idImovel = manterTarifaSocialActionForm.getIdImovel();
if (idImovel != null && !idImovel.equals("")) {
//Pesquisa e monta uma cole��o de cliente im�veis
Collection clienteImoveis = fachada.pesquisarClienteImovelPeloImovelParaEndereco(new Integer(idImovel));
ClienteImovel clienteImovelObj = null;
//Verifica se o resultado da busca de im�vel foi vazia
if (clienteImoveis == null || clienteImoveis.isEmpty()) {
throw new ActionServletException(
"atencao.pesquisa.nenhumresultado", null, "imovel");
} else {
//Verifica se o im�vel j� est� com a tarifa social
clienteImovelObj = (ClienteImovel) clienteImoveis.iterator()
.next();
if (clienteImovelObj.getImovel().getImovelPerfil() != null &&
!clienteImovelObj.getImovel().getImovelPerfil().getId()
.equals(ImovelPerfil.TARIFA_SOCIAL)) {
throw new ActionServletException("atencao.imovel.associado.registro_atendimento.nao.esta.tarifa_social");
}
}
//Obter quantidade de economias do im�vel para determinar qual o
// pr�ximo caso de uso
//ser� executado
//[UC0065 - Inserir dados tarifa social - Uma economia]
//[UC0066 - Inserir dados tarifa social - Mais de uma economia]
Imovel imovel = new Imovel();
imovel.setId(new Integer(idImovel));
int quantidadeEconomiasImovel = fachada
.obterQuantidadeEconomias(imovel);
if (!(quantidadeEconomiasImovel > 0)) {
//O imovel n�o possui nenhuma economia
throw new ActionServletException(
"atencao.imovel.economias_nao_cadastradas");
}
//atualiza a quantidade de economias do ActionForm
manterTarifaSocialActionForm.setQtdeEconomias("" + quantidadeEconomiasImovel);
//Coloca o imovel na sessao
sessao.setAttribute("imovelTarifa", clienteImovelObj.getImovel());
}
return retorno;
}
}