double TempoDiferencaJogo(IdJogo i)
        {
            var diferenca = DateTime.Now.Date > i.DataInicio.Date ? (DateTime.Now - i.DataInicio.AddDays(1)).TotalMinutes :
                            (DateTime.Now - i.DataInicio).TotalMinutes;

            diferenca = diferenca > 60 ? diferenca - 18 : diferenca;
            return(diferenca);
        }
        public async Task <IdContainer> SalvaIdsLive2()
        {
            Console.WriteLine($"Salvando Ids Live as {DateTime.Now}");
            var idContainerHoje = _idContainerRepository.TrazerIdContainerHoje();

            if (idContainerHoje == null)
            {
                return(null);
            }

            _driver.Navigate().GoToUrl(_configuration.Sites.Resultado.Principal);
            await Task.Delay(2000);

            _driver.FindElement(By.ClassName("ifmenu-live")).Click();
            await Task.Delay(2000);

            ExpandiTodasTabelas();

            RemoveTodasTabelasTabela();

            var jogosAceitos = ListaDeJogos();

            var trsJogos = _driver.FindElements(By.ClassName("stage-live")).ToList();

            if (!trsJogos.Any())
            {
                return(idContainerHoje);
            }

            idContainerHoje.IdsLive.Clear();
            foreach (var tr in trsJogos)
            {
                string id = tr.GetAttribute("id").Substring(4);

                if (jogosAceitos.Exists(j => j.Id == id))
                {
                    if (ApostaBet(tr))
                    {
                        var    jogo    = _jogoRepository.TrazerJogoPorIdBet(id);
                        string minutos = tr.FindElement(By.ClassName("cell_aa"))
                                         .FindElement(By.TagName("span")).Text;

                        string score = tr.FindElement(By.ClassName("cell_sa")).Text;

                        string status = tr.FindElement(By.ClassName("cell_aa")).Text;
                        if (status != "Encerrado" && status != "Adiado")
                        {
                            string horaInicio = tr.FindElement(By.ClassName("cell_ad")).Text;
                            IdJogo idJogo     = new IdJogo(id, DateTime.Parse(horaInicio));
                            idContainerHoje.IdsLive.Add(idJogo);
                        }
                    }
                }
            }

            _idContainerRepository.Salvar(idContainerHoje);
            return(idContainerHoje);
        }
        public async Task <IdContainer> SalvaProximosJogos()
        {
            var idContainerHoje = _idContainerRepository.TrazerIdContainerHoje();

            if (idContainerHoje == null)
            {
                return(null);
            }

            _driver.Navigate().GoToUrl(_configuration.Sites.Resultado.Principal);
            await Task.Delay(2000);

            _driver.FindElement(By.ClassName("ifmenu-odds")).Click();
            await Task.Delay(2000);

            ExpandiTodasTabelas();

            RemoveTodasTabelasTabela();

            var trsJogos = _driver.FindElements(By.ClassName("stage-scheduled")).ToList();

            if (!trsJogos.Any())
            {
                return(idContainerHoje);
            }

            foreach (var tr in trsJogos)
            {
                string classInfo = tr.GetAttribute("class");
                string id        = tr.GetAttribute("id").Substring(4);
                if (!Srf(classInfo) && !JogoCanceladoAdiadoOuEncerrado(classInfo))
                {
                    string horaInicio = tr.FindElement(By.ClassName("cell_ad")).Text;
                    IdJogo idJogo     = new IdJogo(id, DateTime.Parse(horaInicio));
                    idContainerHoje.Ids.Add(idJogo);
                }

                _idContainerRepository.Salvar(idContainerHoje);
            }
            return(idContainerHoje);
        }
        public async Task <IdContainer> SalvaJogosIds(bool amanha = false)
        {
            NavegarParaSite(_configuration.Sites.Resultado.Principal);

            if (amanha)
            {
                _driver.FindElement(By.ClassName("tomorrow")).Click();
            }

            await Task.Delay(5000);

            try
            {
                ExpandiTodasTabelas();
            }
            catch { }

            List <IdJogo> idJogos = new List <IdJogo> {
            };

            var trsJogos     = _driver.FindElements(By.ClassName("stage-scheduled")).ToList();
            var trsJogosLive = _driver.FindElements(By.ClassName("stage-live")).ToList();

            if (trsJogosLive.Any())
            {
                trsJogosLive.ForEach(j => trsJogos.Add(j));
            }

            var idContainer = _idContainerRepository.TrazerIdContainerHoje();

            if (amanha)
            {
                idContainer = new IdContainer(idJogos, DateTime.Now.Date.AddDays(1));
            }
            else
            {
                if (idContainer != null)
                {
                    idContainer.Ids = idJogos;
                }
                else
                {
                    idContainer = new IdContainer(idJogos, DateTime.Now.Date);
                }
            }

            _idContainerRepository.Salvar(idContainer);

            foreach (var tr in trsJogos)
            {
                string id        = tr.GetAttribute("id").Substring(4);
                string classInfo = tr.GetAttribute("class");

                if (!Srf(classInfo) && !JogoCanceladoAdiadoOuEncerrado(classInfo))
                {
                    DateTime dataInicio = DateTime.Parse(tr.FindElement(By.ClassName("cell_ad")).Text);
                    if (amanha)
                    {
                        dataInicio = dataInicio.AddDays(1);
                    }
                    IdJogo idJogo = new IdJogo(id, dataInicio);
                    idContainer.Ids.Add(idJogo);
                }
            }

            _idContainerRepository.Salvar(idContainer);
            await VerificaJogosNãoCarregados(amanha);

            idContainer = amanha ? _idContainerRepository.TrazerIdContainerAmanha() : _idContainerRepository.TrazerIdContainerHoje();
            return(idContainer);
        }