package gcom.cadastro.atualizacaocadastral.validador;
import gcom.cadastro.atualizacaocadastral.command.AtualizacaoCadastralImovel;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.IRepositorioClienteImovel;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import java.util.Collection;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
public class ValidadorCPFsClientesCommand extends ValidadorCommand {
private final String MSG_FORMATO_CPF_CNPJ_INVALIDO = "Formato do CPF/CNPJ de %S inv�lido";
private final String MSG_CPF_CNPJ_INVALIDO_BASE = "N�o � poss�vel apagar cpf/cnpj do %S";
private IRepositorioClienteImovel repositorioClienteImovel;
public ValidadorCPFsClientesCommand(AtualizacaoCadastralImovel cadastroImovel,
Map<String, String> linha,
IRepositorioClienteImovel repositorioClienteImovel) {
super(cadastroImovel, linha);
this.repositorioClienteImovel = repositorioClienteImovel;
}
public void execute() throws Exception {
validarCampoCpfCnpj("Usuario");
validarCampoCpfCnpj("Proprietario");
validarCampoCpfCnpj("Responsavel");
Collection<ClienteImovel> clientes = repositorioClienteImovel.pesquisarClienteImovel(cadastroImovel.getMatricula());
validarCpfCnpjComBase(linha, clientes, "Usuario", ClienteRelacaoTipo.USUARIO);
validarCpfCnpjComBase(linha, clientes, "Proprietario", ClienteRelacaoTipo.PROPRIETARIO);
validarCpfCnpjComBase(linha, clientes, "Responsavel", ClienteRelacaoTipo.RESPONSAVEL);
}
private void validarCampoCpfCnpj(String cliente) {
if (StringUtils.isNotEmpty(linha.get("cnpjCpf" + cliente))
&& Util.cpfCnpjInvalido(linha.get("cnpjCpf" + cliente))) {
cadastroImovel.addMensagemErro(String.format(MSG_FORMATO_CPF_CNPJ_INVALIDO, cliente.toLowerCase()));
}
}
private void validarCpfCnpjComBase(Map<String, String> linha,
Collection<ClienteImovel> clientes, String cliente, Short relacao) {
Integer matriculaRetorno = Integer.valueOf(linha.get("matricula" + cliente));
String cpfCpnjRetorno = linha.get("cnpjCpf" + cliente);
if (StringUtils.isEmpty(cpfCpnjRetorno)) {
for (ClienteImovel clienteImovel : clientes) {
int relacaoTipoBase = clienteImovel.getClienteRelacaoTipo().getId().intValue();
if ((relacao.equals(ClienteRelacaoTipo.USUARIO))
|| (relacao.equals(ClienteRelacaoTipo.PROPRIETARIO)
&& linha.get("usuarioProprietario").equals(String.valueOf(ConstantesSistema.NAO)))
|| (relacao.equals(ClienteRelacaoTipo.RESPONSAVEL)
&& linha.get("tipoResponsavel").equals(String.valueOf(ConstantesSistema.NAO)))) {
if (relacaoTipoBase == (int) relacao && matriculaRetorno.equals(clienteImovel.getCliente().getId())) {
verificarCpfCnpjVazio(cliente, clienteImovel);
}
}
}
}
}
private void verificarCpfCnpjVazio(String cliente,
ClienteImovel clienteImovel) {
String cpfCnpj = clienteImovel.getCliente().getCpf();
if (StringUtils.isEmpty(cpfCnpj)) {
cpfCnpj = clienteImovel.getCliente().getCnpj();
}
if (StringUtils.isNotEmpty(cpfCnpj)) {
cadastroImovel.addMensagemErro(String.format(MSG_CPF_CNPJ_INVALIDO_BASE, cliente));
}
}
}