public InputUpdatePessoaJuridica BuscaPessoaJuridicaId(int id)
        {
            using (var db = new FIPEContratosContext())
            {
                var itemPessoaJuridica = new InputUpdatePessoaJuridica();

                try
                {
                    var retornoPessoaJuridica = new bPessoaJuridica(db).BuscarPessoaJuridicaId(id);

                    itemPessoaJuridica.IdPessoaJuridica = retornoPessoaJuridica.IdPessoaJuridica;
                    itemPessoaJuridica.NmFantasia       = retornoPessoaJuridica.NmFantasia;
                    itemPessoaJuridica.RazaoSocial      = retornoPessoaJuridica.RazaoSocial;
                    itemPessoaJuridica.IdCidade         = retornoPessoaJuridica.IdCidade;
                    if (retornoPessoaJuridica.Cnpj != null)
                    {
                        itemPessoaJuridica.Cnpj = Regex.Replace(retornoPessoaJuridica.Cnpj, "[^0-9a-zA-Z]+", "");
                    }
                    itemPessoaJuridica.Uf       = retornoPessoaJuridica.Uf;
                    itemPessoaJuridica.Endereco = retornoPessoaJuridica.Endereco;
                    if (!String.IsNullOrEmpty(retornoPessoaJuridica.Cep))
                    {
                        itemPessoaJuridica.Cep = Regex.Replace(retornoPessoaJuridica.Cep, "[^0-9a-zA-Z]+", "");
                    }
                    itemPessoaJuridica.NmBairro = retornoPessoaJuridica.NmBairro;
                    itemPessoaJuridica.IdClassificacaoEmpresa = retornoPessoaJuridica.IdClassificacaoEmpresa;
                    itemPessoaJuridica.IdEsferaEmpresa        = retornoPessoaJuridica.IdEsferaEmpresa;
                    itemPessoaJuridica.IdTipoAdministracao    = retornoPessoaJuridica.IdTipoAdministracao;
                    itemPessoaJuridica.IdEntidade             = retornoPessoaJuridica.IdEntidade;
                    itemPessoaJuridica.IdPais          = retornoPessoaJuridica.IdPais;
                    itemPessoaJuridica.DsInternacional = retornoPessoaJuridica.DsInternacional;
                    itemPessoaJuridica.NuEndereco      = retornoPessoaJuridica.NuEndereco;
                    itemPessoaJuridica.Complemento     = retornoPessoaJuridica.Complemento;

                    return(itemPessoaJuridica);
                }
                catch (Exception ex)
                {
                    new bEmail(db).EnviarEmailTratamentoErro(ex, "PessoaJuridicaController-BuscaPessoaJuridicaId");


                    throw;
                }
            }
        }
        public OutPutPessoaJuridica AtualizarPessoaJuridica([FromBody] InputUpdatePessoaJuridica item)
        {
            using (var db = new FIPEContratosContext())
            {
                var retorno  = new OutPutPessoaJuridica();
                var strategy = db.Database.CreateExecutionStrategy();

                strategy.Execute(() =>
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            var objPessoaJuridica               = new bPessoaJuridica(db);
                            var itemPessoaJuridica              = new PessoaJuridica();
                            retorno.CNPJExiste                  = false;
                            retorno.IdPessoaJuridica            = 0;
                            PessoaJuridica pessoaJuridicaExiste = null;
                            if (!String.IsNullOrEmpty(item.Cnpj))
                            {
                                pessoaJuridicaExiste = db.PessoaJuridica.Where(w => w.Cnpj == item.Cnpj && w.IdPessoaJuridica != item.IdPessoaJuridica).FirstOrDefault();
                            }
                            else
                            {
                                item.Cnpj = null;
                            }

                            if (pessoaJuridicaExiste == null)
                            {
                                var itemPessoaJuridicaOld    = objPessoaJuridica.BuscarPessoaJuridicaId(item.IdPessoaJuridica);
                                var itemHistoricoPesJuridica = new HistoricoPessoaJuridica();

                                //Histórico Pessoa Juridica

                                itemHistoricoPesJuridica.IdPessoaJuridica   = itemPessoaJuridicaOld.IdPessoaJuridica;
                                itemHistoricoPesJuridica.IdUsuarioAlteracao = AppSettings.constGlobalUserID;
                                itemHistoricoPesJuridica.DtAlteracao        = DateTime.Now.Date;
                                itemHistoricoPesJuridica.NmFantasia         = itemPessoaJuridicaOld.NmFantasia;
                                itemHistoricoPesJuridica.RazaoSocial        = itemPessoaJuridicaOld.RazaoSocial;
                                if (itemPessoaJuridicaOld.Cnpj != null)
                                {
                                    itemHistoricoPesJuridica.Cnpj = itemPessoaJuridicaOld.Cnpj;
                                }
                                itemHistoricoPesJuridica.Cep      = itemPessoaJuridicaOld.Cep;
                                itemHistoricoPesJuridica.Uf       = !String.IsNullOrEmpty(itemPessoaJuridicaOld.Uf) ? itemPessoaJuridicaOld.Uf : null;
                                itemHistoricoPesJuridica.IdCidade = itemPessoaJuridicaOld.IdCidade;
                                itemHistoricoPesJuridica.Endereco = itemPessoaJuridicaOld.Endereco;
                                itemHistoricoPesJuridica.IdClassificacaoEmpresa = itemPessoaJuridicaOld.IdClassificacaoEmpresa;
                                itemHistoricoPesJuridica.NmBairro            = itemPessoaJuridicaOld.NmBairro;
                                itemHistoricoPesJuridica.IdEsferaEmpresa     = itemPessoaJuridicaOld.IdEsferaEmpresa;
                                itemHistoricoPesJuridica.IdTipoAdministracao = itemPessoaJuridicaOld.IdTipoAdministracao;
                                itemHistoricoPesJuridica.IdEntidade          = itemPessoaJuridicaOld.IdEntidade;
                                itemHistoricoPesJuridica.NuEndereco          = itemPessoaJuridicaOld.NuEndereco;
                                itemHistoricoPesJuridica.Complemento         = itemPessoaJuridicaOld.Complemento;
                                if (itemPessoaJuridicaOld.IdClassificacaoEmpresa != 3)
                                {
                                    itemHistoricoPesJuridica.IdPais = 76;
                                }
                                else
                                {
                                    itemHistoricoPesJuridica.IdPais          = itemPessoaJuridicaOld.IdPais;
                                    itemHistoricoPesJuridica.DsInternacional = itemPessoaJuridicaOld.DsInternacional;
                                }
                                objPessoaJuridica.AddHistoricoPessoaJuridica(itemHistoricoPesJuridica);

                                //EditarCliente

                                itemPessoaJuridica.IdPessoaJuridica = item.IdPessoaJuridica;
                                itemPessoaJuridica.NmFantasia       = item.NmFantasia;
                                itemPessoaJuridica.RazaoSocial      = item.RazaoSocial;
                                if (item.Cnpj != null)
                                {
                                    itemPessoaJuridica.Cnpj = item.Cnpj;
                                }
                                itemPessoaJuridica.Cep      = item.Cep;
                                itemPessoaJuridica.Uf       = !String.IsNullOrEmpty(item.Uf) ? item.Uf : null;
                                itemPessoaJuridica.IdCidade = item.IdCidade;
                                itemPessoaJuridica.Endereco = item.Endereco;
                                itemPessoaJuridica.NmBairro = item.NmBairro;
                                itemPessoaJuridica.IdClassificacaoEmpresa = item.IdClassificacaoEmpresa;
                                itemPessoaJuridica.IdEsferaEmpresa        = item.IdEsferaEmpresa;
                                itemPessoaJuridica.IdTipoAdministracao    = item.IdTipoAdministracao;
                                itemPessoaJuridica.IdEntidade             = item.IdEntidade;
                                itemPessoaJuridica.NuEndereco             = item.NuEndereco;
                                itemPessoaJuridica.Complemento            = item.Complemento;
                                if (item.IdClassificacaoEmpresa != 3)
                                {
                                    itemPessoaJuridica.IdPais = 76;
                                }
                                else
                                {
                                    itemPessoaJuridica.IdPais          = item.IdPais;
                                    itemPessoaJuridica.DsInternacional = item.DsInternacional;
                                }
                                objPessoaJuridica.UpdatePessoaJuridica(itemPessoaJuridica);

                                db.Database.CommitTransaction();

                                retorno.Result = true;
                            }
                            else
                            {
                                retorno.CNPJExiste = true;
                                retorno.Result     = false;
                            }
                        }
                        catch (Exception ex)
                        {
                            if (ex.InnerException.Message.Contains("UQ_PessoaJuridicaCNPJ"))
                            {
                                retorno.Result     = false;
                                retorno.CNPJExiste = true;
                            }
                            else
                            {
                                new bEmail(db).EnviarEmailTratamentoErro(ex, "PessoaJuridicaController-AtualizarPessoaJuridica");
                            }
                        }
                    }
                });

                return(retorno);
            }
        }