public ActionResult ComputaVoto(int idRestaurante, int idColaborador) { if (!VotacaoAberta()) { ViewData["encerrada"] = true; return View(); } //Declara os objetos Voto voto = new Voto(); Restaurante restaurante = new Restaurante(); RestauranteManager restManager = new RestauranteManager(); //Verifica se id passado eh valido restaurante = restManager.GetRestauranteByID(idRestaurante); //Adiciona o restaurante ao voto if (restaurante != null) { voto.Restaurante = restaurante; } else { return Json("Restaurante inválido!"); } //Cria objeto colaborador Colaborador colaborador = new Colaborador(); ColaboradorManager colabManager = new ColaboradorManager(); //Verifica se colaborador existe colaborador = colabManager.GetColaboradorByID(idColaborador); //Adiciona o colaborador ao voto if (colaborador != null) { voto.Colaborador = colaborador; } else { return Json("Colaborador inválido!"); } //Adiciona data de voto voto.DataVoto = DataVotacao(); //Computa o voto do colaborador voto.ComputaVoto(); //Retorno da funcao return Json("Voto computado com sucesso"); }
//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; }