private static async Task <bool> SearchLegalPerson()
        {
            Console.WriteLine("starting SearchLegalPerson");
            HttpResponseMessage response;

            try
            {
                response = await HttpClient.GetAsync($"{_endpoint}/LegalPerson");

                if (!response.IsSuccessStatusCode)
                {
                    return(false);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(false);
            }

            string responseBodyAsText = await response.Content.ReadAsStringAsync();

            List <LegalPersonModel> listaLegalPerson = JsonConvert.DeserializeObject <List <LegalPersonModel> >(responseBodyAsText);

            var empresas = listaLegalPerson.Where(x => x.ResultadoFinal == null || !x.ResultadoFinal.Completed).ToList();

            foreach (var empresa in empresas)
            {
                Console.WriteLine("********");
                Console.WriteLine($"Buscando Empresa: {empresa.CNPJ}");
                Console.WriteLine("********");
                // executando o Crawler
                LegalPersonModel resultCrawler;
                try
                {
                    resultCrawler = new LegalPersonCoordinator(empresa).StartSearch();
                    Console.WriteLine("Completou a busca? {0}", resultCrawler.ResultadoFinal.Completed);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    continue;
                }

                Console.WriteLine("Salvando informações obtidas...");
                var empresaJson           = JsonConvert.SerializeObject(resultCrawler);
                var empresaJsonJsonString = new StringContent(empresaJson, Encoding.UTF8, "application/json");

                var response3 = HttpClient.PutAsync($"{_endpoint}/LegalPerson/{empresa.Id}", empresaJsonJsonString).Result;
                Console.WriteLine(response3);
            }

            return(true);
        }
        static void Main(string[] args)
        {
            Console.WriteLine("Iniciando a busca");

            #region objetos de teste
            var exampleLegalPerson = new LegalPersonModel
            {
                NomeFantasia  = "PETROBRASIL",
                CNPJ          = "1111111111",
                CPFDoFundador = "2222222222",
                Contador      = "333333333",
            };

            var examplePhysicalPerson = new PhysicalPersonModel()
            {
                NomeCompleto     = "JULIO AVILA",
                CPF              = "1111111111",
                RG               = "22222222222",
                DataDeNascimento = "23/01/1997",
                NomeDaMae        = "SELMA AVILA"
            };
            #endregion

            try
            {
                using (var db = new DataBaseContext())
                {
                    Console.WriteLine("running migrations");
                    db.Database.Migrate();

                    Console.WriteLine("saving legal person");
                    db.LegalPerson.Add(exampleLegalPerson);
                    db.SaveChanges();

                    var empresas = db.LegalPerson;
                    foreach (var empresa in empresas)
                    {
                        Console.WriteLine($"Empresa: {empresa.NomeFantasia}");
                        var crawler = new LegalPersonCoordinator(empresa);
                        var result  = crawler.Run();
                        Console.WriteLine("Completou a busca? {0}", result.Completed);
                    }

                    Console.WriteLine("saving physical person");
                    db.PhysicalPerson.Add(examplePhysicalPerson);
                    db.SaveChanges();

                    var pessoas = db.PhysicalPerson;
                    foreach (var pessoa in pessoas)
                    {
                        Console.WriteLine($"Pessoa: {pessoa.NomeCompleto}");
                        var crawler = new PhysicalPersonCoordinator(pessoa);
                        var result  = crawler.Run();
                        Console.WriteLine("Completou a busca? {0}", result.Completed);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Search execution error: {0}", e.Message);
            }

            Console.WriteLine("finished application");
            Console.ReadKey();
        }