public OutPutPessoaJuridica AddPessoaJuridica([FromBody] InputAddPessoaJuridica item)
        {
            var retorno        = new OutPutPessoaJuridica();
            var pessoaJuridica = new PessoaJuridica();

            using (var db = new FIPEContratosContext())
            {
                var strategy = db.Database.CreateExecutionStrategy();

                strategy.Execute(() =>
                {
                    using (var transaction = db.Database.BeginTransaction())
                    {
                        try
                        {
                            retorno.CNPJExiste       = false;
                            retorno.IdPessoaJuridica = 0;

                            var objPessoaJuridica = new bPessoaJuridica(db);
                            PessoaJuridica pessoaJuridicaExiste = null;
                            if (!String.IsNullOrEmpty(item.Cnpj))
                            {
                                pessoaJuridicaExiste = db.PessoaJuridica.Where(w => w.Cnpj == item.Cnpj).FirstOrDefault();
                            }
                            else
                            {
                                item.Cnpj = null;
                            }
                            if (pessoaJuridicaExiste == null)
                            {
                                pessoaJuridica.NmFantasia             = item.NmFantasia;
                                pessoaJuridica.RazaoSocial            = item.RazaoSocial;
                                pessoaJuridica.Cnpj                   = item.Cnpj;
                                pessoaJuridica.Cep                    = item.Cep;
                                pessoaJuridica.Uf                     = item.Uf;
                                pessoaJuridica.IdCidade               = item.IdCidade;
                                pessoaJuridica.Endereco               = item.Endereco;
                                pessoaJuridica.IdClassificacaoEmpresa = item.IdClassificacaoEmpresa;
                                pessoaJuridica.IdEsferaEmpresa        = item.IdEsferaEmpresa;
                                pessoaJuridica.NmBairro               = item.NmBairro;
                                pessoaJuridica.IdTipoAdministracao    = item.IdTipoAdministracao;
                                pessoaJuridica.IdEntidade             = item.IdEntidade;
                                pessoaJuridica.NuEndereco             = item.NuEndereco;
                                pessoaJuridica.Complemento            = item.Complemento;
                                pessoaJuridica.DtCriacao              = DateTime.Now;
                                pessoaJuridica.IdUsuarioCriacao       = AppSettings.constGlobalUserID;

                                if (item.IdClassificacaoEmpresa != 3)
                                {
                                    pessoaJuridica.IdPais = 76;
                                }
                                else
                                {
                                    pessoaJuridica.IdPais          = item.IdPais;
                                    pessoaJuridica.DsInternacional = item.DsInternacional;
                                }

                                db.PessoaJuridica.Add(pessoaJuridica);
                                db.SaveChanges();

                                var pessoa = new Pessoa();
                                pessoa.IdPessoaJuridica = pessoaJuridica.IdPessoaJuridica;

                                retorno.IdPessoaJuridica = pessoaJuridica.IdPessoaJuridica;

                                db.Pessoa.Add(pessoa);
                                db.SaveChanges();

                                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-AddPessoaJuridica");
                            }
                        }
                    }
                });

                return(retorno);
            }
        }
        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);
            }
        }