Esempio n. 1
0
        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());
            }
        }