public ActionResult BuscaResultado(string dataVotacao)
        {
            DateTime data;

            //Verifica se parametro foi enviado corretamente
            if (!string.IsNullOrEmpty(dataVotacao))
            {
                data = Convert.ToDateTime(dataVotacao);
            }
            else
            {
                //Monta objeto de retorno
                RetornoVazio ret = new RetornoVazio();
                ret.mensagem1 = "Data inválida!";
                ret.mensagem2 = "A data solicitada está no formato incorreto";

                return Json(ret, JsonRequestBehavior.AllowGet);
            }

            Resultado resultado = new Resultado();
            List<Resultado> listaResultado = new List<Resultado>();

            //Busca os resultados da votacao
            listaResultado = resultado.LerResultado(data);

            //Verifica se lista esta vazia
            if (listaResultado.Count < 1)
            {
                //Monta objeto de retorno
                RetornoVazio ret = new RetornoVazio();
                ret.mensagem1 = "Nenhuma votação foi encontrada!";
                ret.mensagem2 = "Não foi possível encontrar a votação do dia selecionado";

                return Json(ret, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json(listaResultado, JsonRequestBehavior.AllowGet);
            }
        }
        public List<Restaurante> CampeoesDaSemana()
        {
            //Instacia o objeto resultado
            Resultado resultado = new Resultado();

            //Pesquisa os restaurantes já votados
            List<Resultado> listaResultadoDay1 = new List<Resultado>();
            List<Resultado> listaResultadoDay2 = new List<Resultado>();
            List<Resultado> listaResultadoDay3 = new List<Resultado>();
            List<Resultado> listaResultadoDay4 = new List<Resultado>();
            List<Resultado> listaResultadoDay5 = new List<Resultado>();
            List<Resultado> listaResultadoDay6 = new List<Resultado>();

            //cria variavel para armazenar data atual
            var today = DateTime.Now;

            //Se for mais que 11 da manha, o dia de votacao atual eh o proximo
            if (today.Hour >= 11)
            {
                today = today.AddDays(1);
            }

            //Carrega as variaveis com os dias da semana
            var day1 = today.AddDays(-1);
            var day2 = today.AddDays(-2);
            var day3 = today.AddDays(-3);
            var day4 = today.AddDays(-4);
            var day5 = today.AddDays(-5);
            var day6 = today.AddDays(-6);

            //Pesquisa os resultados de cada data
            listaResultadoDay1 = resultado.LerResultado(day1);
            listaResultadoDay2 = resultado.LerResultado(day2);
            listaResultadoDay3 = resultado.LerResultado(day3);
            listaResultadoDay4 = resultado.LerResultado(day4);
            listaResultadoDay5 = resultado.LerResultado(day5);
            listaResultadoDay6 = resultado.LerResultado(day6);

            //Cria a lista de retorno
            List<Restaurante> restaurantesCampeoes = new List<Restaurante>();

            //Carrega a lista com os restaurantes campeoes, verificando se existe resultado
            if (listaResultadoDay1.Count > 0)
            {
                restaurantesCampeoes.Add(listaResultadoDay1.First().Restaurante);
            }

            if (listaResultadoDay2.Count > 0)
            {
                restaurantesCampeoes.Add(listaResultadoDay2.First().Restaurante);
            }

            if (listaResultadoDay3.Count > 0)
            {
                restaurantesCampeoes.Add(listaResultadoDay3.First().Restaurante);
            }

            if (listaResultadoDay4.Count > 0)
            {
                restaurantesCampeoes.Add(listaResultadoDay4.First().Restaurante);
            }

            if (listaResultadoDay5.Count > 0)
            {
                restaurantesCampeoes.Add(listaResultadoDay5.First().Restaurante);
            }

            if (listaResultadoDay6.Count > 0)
            {
                restaurantesCampeoes.Add(listaResultadoDay6.First().Restaurante);
            }

            //Retorna a lista
            return restaurantesCampeoes;
        }
        public ActionResult ColaboradorPodeVotar(int idColaborador)
        {
            //Monta os possiveis retornos
            StatusRetorno retornoNulo = new StatusRetorno();
            retornoNulo.status = "PodeVotar";
            retornoNulo.valor = "NULL";

            StatusRetorno retornoSim = new StatusRetorno();
            retornoSim.status = "PodeVotar";
            retornoSim.valor = "SIM";

            StatusRetorno retornoNao = new StatusRetorno();
            retornoNao.status = "PodeVotar";
            retornoNao.valor = "NAO";

            StatusRetorno retorno = new StatusRetorno();

            //Verifica se parametro foi passado corretamente
            if (idColaborador > 0)
            {
                //Busca resultado da votacao
                Resultado resultado = new Resultado();
                List<Resultado> listaResultado = resultado.LerResultado(DataVotacao());

                //Verifica se existe algum resultado
                if (listaResultado == null)
                {
                    //Caso nao exista resultado, pode votar
                    retorno = retornoSim;
                }
                else
                {
                    //Percorre cada resultado
                    foreach (var resultadoItem in listaResultado)
                    {
                        //Verifica se existe colaboradores nessa votacao
                        if (resultadoItem.Colaboradores == null)
                        {
                            //Caso nao, pode votar
                            retorno = retornoSim;
                        }
                        else
                        {
                            //Percorre todos os colaboradores da votacao
                            foreach (var colaborador in resultadoItem.Colaboradores)
                            {
                                //Verifica se o colaborador ja havia votado
                                if (colaborador.ID == idColaborador)
                                {
                                    retorno = retornoNao;
                                }
                                else
                                {
                                    retorno = retornoSim;
                                }
                            }
                        }
                    }
                }

            }
            else
            {
                //Retorna nulo caso o parametro seja invalido
                retorno = retornoNulo;
            }

            //Retorna dados
            return Json(retorno, JsonRequestBehavior.AllowGet);
        }
        //Verifica se votacao esta aberta
        public bool VotacaoAberta()
        {
            bool retorno;

            //Cria os objetos de resultado
            Resultado resultado = new Resultado();
            List<Resultado> listaResultado = new List<Resultado>();

            //Verifico se nao tem votacao apos a data atual, caso o usuario altere o horario do SO
            DateTime dataPosterior = DataVotacao().AddDays(1);

            if (resultado.LerResultado(dataPosterior).Count < 1)
            {
                retorno = true;
            }

            //Carrega lista de resultados
            listaResultado = resultado.LerResultado(DataVotacao());

            int totalVotos = 0;

            //Faz contagem total dos votos
            if (listaResultado.Count > 0)
            {
                for (int i = 0; i < listaResultado.Count(); i++)
                {
                    totalVotos += listaResultado[i].QuantidadeVotos;
                }

                //Busca quantidade total de colaboradores
                ColaboradorManager colaboradoresManager = new ColaboradorManager();
                List<Colaborador> listaColaboradores = new List<Colaborador>();
                listaColaboradores = colaboradoresManager.GetAll();

                //Verifica quantos votos ainda podem ser computados
                int votosRestantes = listaColaboradores.Count() - totalVotos;

                //Verifica a diferenca de votos entre o primeiro e o segundo colocado
                int difVotos;
                if (listaResultado.Count() > 1)
                {
                    difVotos = listaResultado[0].QuantidadeVotos - listaResultado[1].QuantidadeVotos;
                }
                else
                {
                    difVotos = listaResultado[0].QuantidadeVotos;
                }

                //Caso a diferenca seja superior a quantidade de votos restantes, encerra votacao
                if (difVotos > votosRestantes)
                {
                    retorno = false;
                }
                else
                {
                    retorno = true;
                }

            }
            else
            {
                retorno = true;
            }

            return retorno;
        }