예제 #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());
            }
        }
예제 #2
0
        public async Task CriarServicos(VinculoClienteServico vinculoClienteServico, string codContrato, string siglaTipoServico, int idCelula, string cnpjFilial, int idCliente, int?idCelulaDelivery)
        {
            Contrato    contrato    = null;
            TipoServico tipoServico = null;
            Filial      filial      = null;
            ServicoPai  servicoPai  = null;

            var vinculoExistente = await VerificarExistenciaServico(vinculoClienteServico);

            if (codContrato != null && codContrato != "")
            {
                contrato = await _contratoRepository.ObterContratoPorCodigo(codContrato);
            }

            if (siglaTipoServico != null && siglaTipoServico != "")
            {
                tipoServico = await _serviceRepository.ObterTipoServicoPorSigla(siglaTipoServico);
            }

            if (cnpjFilial != null && cnpjFilial != "")
            {
                filial = await _contratoRepository.ObterFilialComEmpresa(cnpjFilial);

                if (filial != null)
                {
                    vinculoClienteServico.IdFilial  = filial.Id;
                    vinculoClienteServico.IdEmpresa = filial.IdEmpresa;
                }
            }
            if (vinculoExistente == null)
            {
                servicoPai = CriarServicoPai(vinculoClienteServico);
            }
            else
            {
                servicoPai = vinculoExistente.Servico.ServicoPai;
            }
            var combinada = CriarCombinada();

            //Comercial
            servicoPai.Servicos.Add(await CriarServico(vinculoClienteServico, idCelula, contrato, tipoServico, combinada, false));

            if (idCelulaDelivery != null && idCelulaDelivery != 0)
            {
                //Tecnica
                servicoPai.Servicos.Add(await CriarServico(vinculoClienteServico, idCelulaDelivery, contrato, tipoServico, combinada, true));
            }
            try
            {
                servicoPai.DescServicoPai = "TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT";
                await _serviceRepository.PersistirServicoPai(servicoPai);

                var logInserirServico = new { Tipo = vinculoExistente == null ? "Inclusao" : "Alteracao", NomeServico = vinculoClienteServico.NmClienteServico, SalesId = vinculoClienteServico.IdSalesForce, };
                await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.TRANSACAO.ToString(), NmOrigem = Origem.SALESFORCE.ToString(), DescLogGenerico = logInserirServico.Tipo + " de dados Servico: " + JsonConvert.SerializeObject(logInserirServico), DescExcecao = "", DtHoraLogGenerico = DateTime.Now });
            }
            catch (Exception e)
            {
                var logInserirServico = new { Tipo = vinculoExistente == null ? "Inclusao" : "Alteracao", NomeServico = vinculoClienteServico.NmClienteServico, SalesId = vinculoClienteServico.IdSalesForce, };
                await _logGenericoRepository.AddLog(new LogGenerico { NmTipoLog = Tipo.TRANSACAO.ToString(), NmOrigem = Origem.SALESFORCE.ToString(), DescLogGenerico = "Falha " + logInserirServico.Tipo + " de dados Servico: " + JsonConvert.SerializeObject(logInserirServico), DescExcecao = e.StackTrace, DtHoraLogGenerico = DateTime.Now });
            }
        }