package gcom.cadastro.atualizacaocadastral.command;
import gcom.atualizacaocadastral.ControladorAtualizacaoCadastralLocal;
import gcom.cadastro.IRepositorioCadastro;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorCPFsClientesCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorCepClienteProprietarioResponsavel;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorCepImovelCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorEconomiasCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorHidrometroCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorLogradouroCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorNomesClientesCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorRamoAtividadeCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorSexoCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorTipoClientesCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorTipoEnderecoCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorTipoLogradouroCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorTipoOperacaoCommand;
import gcom.cadastro.atualizacaocadastral.validador.ValidadorTipoPessoaCommand;
import gcom.cadastro.cliente.ControladorClienteLocal;
import gcom.cadastro.cliente.IRepositorioClienteImovel;
import gcom.cadastro.endereco.ControladorEnderecoLocal;
import gcom.cadastro.imovel.CadastroOcorrencia;
import gcom.cadastro.imovel.IRepositorioImovel;
import gcom.seguranca.transacao.ControladorTransacaoLocal;
import gcom.util.ConstantesSistema;
import gcom.util.ControladorUtilLocal;
import gcom.util.ParserUtil;
public class EfetuarValidacoesAtualizacaoCadastralCommand extends AbstractAtualizacaoCadastralCommand {
private AtualizacaoCadastralImovel imovelAtual;
private IRepositorioClienteImovel repositorioClienteImovel;
public EfetuarValidacoesAtualizacaoCadastralCommand() {
super();
}
public EfetuarValidacoesAtualizacaoCadastralCommand(
ParserUtil parser,
IRepositorioCadastro repositorioCadastro,
ControladorUtilLocal controladorUtil,
ControladorTransacaoLocal controladorTransacao,
IRepositorioImovel repositorioImovel,
ControladorEnderecoLocal controladorEndereco,
ControladorAtualizacaoCadastralLocal controladorAtualizacaoCadastral,
ControladorClienteLocal controladorCliente,
IRepositorioClienteImovel repositorioClienteImovel) {
super(parser, repositorioCadastro, controladorUtil, controladorTransacao,
repositorioImovel, controladorEndereco,
controladorAtualizacaoCadastral, controladorCliente);
this.repositorioClienteImovel = repositorioClienteImovel;
}
@Override
public void execute(AtualizacaoCadastral atualizacao) throws Exception {
imovelAtual = atualizacao.getImovelAtual();
CadastroOcorrencia cadastroOcorrencia = imovelAtual.getCadastroOcorrencia();
if (cadastroOcorrencia != null
&& cadastroOcorrencia.getIndicadorValidacao().equals(ConstantesSistema.SIM)) {
validarLinhaCliente();
validarLinhaImovel();
validarLinhaRamoAtividade();
validarLinhaMedidor();
}
new ValidadorCepImovelCommand(imovelAtual, imovelAtual.getLinhaImovel()).execute();
}
private void validarLinhaMedidor() {
new ValidadorHidrometroCommand(imovelAtual, imovelAtual.getLinhaMedidor(), controladorUtil);
}
private void validarLinhaRamoAtividade() {
new ValidadorRamoAtividadeCommand(imovelAtual, imovelAtual.getLinhaRamoAtividade(), repositorioCadastro);
if (imovelAtual.getDadosImovel().contemTipoEconomia(
TipoEconomia.COMERCIAL,
TipoEconomia.PUBLICO,
TipoEconomia.INDUSTRIAL)) {
if (imovelAtual.getDadosRamoAtividade().isEmpty()) {
imovelAtual.addMensagemErro("Im�vel do tipo comercial, p�blico ou industrial deve possuir ramo de atividade");
}
}
}
private void validarLinhaImovel() throws Exception {
new ValidadorTipoOperacaoCommand(imovelAtual, imovelAtual.getLinhaImovel(), repositorioImovel).execute();
new ValidadorTipoLogradouroCommand(imovelAtual, imovelAtual.getLinhaImovel(), repositorioImovel).execute();
new ValidadorLogradouroCommand(imovelAtual, imovelAtual.getLinhaImovel(), repositorioImovel).execute();
new ValidadorEconomiasCommand(imovelAtual, imovelAtual.getLinhaImovel()).execute();
}
private void validarLinhaCliente() throws Exception {
new ValidadorSexoCommand(imovelAtual, imovelAtual.getLinhaCliente()).execute();
new ValidadorNomesClientesCommand(imovelAtual, imovelAtual.getLinhaCliente()).execute();
new ValidadorCPFsClientesCommand(imovelAtual, imovelAtual.getLinhaCliente(), repositorioClienteImovel).execute();
new ValidadorCepClienteProprietarioResponsavel(imovelAtual, imovelAtual.getLinhaCliente()).execute();
new ValidadorTipoPessoaCommand(imovelAtual, imovelAtual.getLinhaCliente(), repositorioClienteImovel).execute();
new ValidadorTipoEnderecoCommand(imovelAtual, imovelAtual.getLinhaCliente()).execute();
new ValidadorTipoClientesCommand(imovelAtual, imovelAtual.getLinhaCliente()).execute();
}
}