public async Task <IActionResult> PersistirClienteSalesforce([FromBody] AccountSalesObject salesObject) { try { var pendente = false; salesObject.IdStfCorp = _clienteService.ObterClientePorIdSalesForce(salesObject.Id).HasValue ? _clienteService.ObterClientePorIdSalesForce(salesObject.Id).Value : 0; if (salesObject.IdStfCorp == 0) { if (salesObject.Type == "Mãe") { salesObject.IdGrupoCliente = _grupoClienteService.ObterIdGrupoClientePorIdClienteMae(salesObject.Id); if (salesObject.IdGrupoCliente == 0) { salesObject.IdGrupoCliente = _grupoClienteService.PersistirGrupoClienteSalesForce(salesObject.Id, salesObject.Name); await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.INTEGRACAO.GetDescription(), NmOrigem = Origem.SALESFORCE.GetDescription(), DtHoraLogGenerico = DateTime.Now, DescLogGenerico = "Persistencia do cliente mãe: " + salesObject.Name + " concluida", DescExcecao = "" }); } } else { salesObject.IdGrupoCliente = _grupoClienteService.ObterIdGrupoClientePorIdClienteMae(salesObject.ParentId); if (salesObject.IdGrupoCliente == 0) { salesObject.IdGrupoCliente = null; } } var clienteEacessoService = new ClienteEacessoService(_connectionStrings.Value.EacessoConnection); var clienteEacesso = clienteEacessoService.ObterClienteEacessoPorIdSalesForce(salesObject.Id); ClienteET clienteStfCorp = null; if (clienteEacesso != null) { salesObject = Mapper.Map(clienteEacesso, salesObject); } if (salesObject.CNPJ__c != null && salesObject.CNPJ__c.Trim() != "") { salesObject.CNPJ__c = _clienteService.ApenasNumeros(salesObject.CNPJ__c); } else { pendente = true; await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.INTEGRACAO.GetDescription(), NmOrigem = Origem.SALESFORCE.GetDescription(), DtHoraLogGenerico = DateTime.Now, DescLogGenerico = "cliente: " + salesObject.Name + " não possui cnpj", DescExcecao = "" }); salesObject.CNPJ__c = _clienteService.ApenasNumeros("NWM9709244W4"); } clienteStfCorp = Mapper.Map <ClienteET>(salesObject); if (clienteStfCorp.Id == 0) { clienteStfCorp.Id = _clienteService.VerificarIdCliente(); } var endereco = Mapper.Map <Endereco>(salesObject); if (clienteStfCorp.NrTelefone != null) { clienteStfCorp.NrTelefone = clienteStfCorp.NrTelefone.Replace(" ", ""); if (clienteStfCorp.NrTelefone.Contains('/')) { var numeros = clienteStfCorp.NrTelefone.Split("/"); clienteStfCorp.NrTelefone = numeros[0]; clienteStfCorp.NrTelefone2 = numeros[0].Substring(0, 2) + numeros[1]; } } if (clienteStfCorp.NrTelefone2 != null) { clienteStfCorp.NrTelefone = clienteStfCorp.NrTelefone2.Replace(" ", ""); } if (clienteStfCorp.NmRazaoSocial == null || !clienteStfCorp.NmRazaoSocial.Any()) { clienteStfCorp.NmRazaoSocial = ""; pendente = true; await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.INTEGRACAO.GetDescription(), NmOrigem = Origem.SALESFORCE.GetDescription(), DtHoraLogGenerico = DateTime.Now, DescLogGenerico = "cliente: " + salesObject.Name + " não possui uma razão social", DescExcecao = "" }); } if (clienteStfCorp.NmFantasia == null || !clienteStfCorp.NmFantasia.Any()) { clienteStfCorp.NmFantasia = ""; pendente = true; await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.INTEGRACAO.GetDescription(), NmOrigem = Origem.SALESFORCE.GetDescription(), DtHoraLogGenerico = DateTime.Now, DescLogGenerico = "cliente: " + salesObject.Name + " não possui um nome fantasia", DescExcecao = "" }); } endereco.IdCidade = _enderecoService.VerificarEndereco(salesObject.CNPJ_Cidade__c); clienteStfCorp.Enderecos.Add(endereco); if (endereco.IdCidade == null) { pendente = true; await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.INTEGRACAO.GetDescription(), NmOrigem = Origem.SALESFORCE.GetDescription(), DtHoraLogGenerico = DateTime.Now, DescLogGenerico = "cliente: " + salesObject.Name + " não possui uma cidade valida", DescExcecao = "" }); } if (!_clienteService.ValidarCNPJ(clienteStfCorp.NrCnpj, "BRASIL").Result) { pendente = true; await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.INTEGRACAO.GetDescription(), NmOrigem = Origem.SALESFORCE.GetDescription(), DtHoraLogGenerico = DateTime.Now, DescLogGenerico = "cliente: " + salesObject.Name + " não possui um cnpj valido", DescExcecao = "" }); } if (pendente) { clienteStfCorp.FlStatus = "P"; } else { clienteStfCorp.FlStatus = "A"; } salesObject.IdStfCorp = _clienteService.PersistirCliente(clienteStfCorp); } else { await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.INTEGRACAO.GetDescription(), NmOrigem = Origem.SALESFORCE.GetDescription(), DtHoraLogGenerico = DateTime.Now, DescLogGenerico = "cliente: " + salesObject.Name + " encontrado no sistema", DescExcecao = "" }); } return(Ok(salesObject.IdStfCorp)); } catch (Exception) { return(BadRequest()); } }