private void SalvaResultado(int codEleicao) { VotosService votosService = new VotosService(); ResultadoEleicao resultado = null; ResultadoDTO todos = votosService.GetResultado(codEleicao); Eleicao eleicao = GetEleicao(codEleicao); int qtdaTotal = GetQtdaFuncionarios(codEleicao); int qtdaVotos = votosService.GetQtdaVotos(codEleicao); if (((float)qtdaVotos / (float)qtdaTotal) < 0.5) { throw new VotosInsuficientesException(qtdaTotal % 2 == 1 ? (int)((qtdaTotal + 1) / 2) : (int)(qtdaTotal / 2)); } foreach (CandidatoEleitoDTO q in todos.Efetivos) { resultado = new ResultadoEleicao { CodigoEleicao = codEleicao, CodigoEmpresa = eleicao.Unidade.CodigoEmpresa, RazaoSocial = eleicao.Unidade.Empresa.RazaoSocial, MatriculaFuncionario = q.MatriculaFuncionario, Login = q.Login, Cargo = q.Cargo, Area = q.Area, DataAdmissao = q.DataAdmissao, QtdaVotos = q.QtdaVotos, Thumbnail = q.Thumbnail, Foto = db.FuncionariosFotos.Where(x => x.FuncionarioId == q.Id).FirstOrDefault()?.Foto, Efetivo = true }; db.ResultadosEleicoes.AddOrUpdate(resultado); } foreach (CandidatoEleitoDTO q in todos.Suplentes) { resultado = new ResultadoEleicao { CodigoEleicao = codEleicao, CodigoEmpresa = eleicao.Unidade.CodigoEmpresa, RazaoSocial = eleicao.Unidade.Empresa.RazaoSocial, MatriculaFuncionario = q.MatriculaFuncionario, Login = q.Login, Cargo = q.Cargo, Area = q.Area, DataAdmissao = q.DataAdmissao, QtdaVotos = q.QtdaVotos, Thumbnail = q.Thumbnail, Foto = db.FuncionariosFotos.Where(x => x.FuncionarioId == q.Id).FirstOrDefault()?.Foto, Efetivo = false }; db.ResultadosEleicoes.AddOrUpdate(resultado); } db.SaveChanges(); }
public Eleicao ProximaEtapa(Eleicao eleicao, Usuario user) { PrazoEtapa etapaAtual = db.PrazosEtapas.Find(eleicao.Codigo, eleicao.CodigoEtapa); PrazoEtapa proxima = GetProximaEtapa(eleicao); // Verifica se a data atual é maior que a data prevista para o encerramento do período de candidatura, // se há candidatos suficientes e se não existem candidaturas pendentes de aprovação if (etapaAtual.CodigoEtapa == 4 || etapaAtual.CodigoEtapa == 19) { EleicaoQtdaRepresentantesDTO qtda = GetQtdaRepresentantes(eleicao.Codigo); int qtdaCandidatos = eleicao.Candidatos.Count(); //if (proxima.DataProposta.GetValueOrDefault().Date > DateTime.Today) // throw new AntesDataPrevistaException(proxima.DataProposta.GetValueOrDefault()); if (etapaAtual.Eleicao.Candidatos.Count(x => x.Validado == null) > 0) { throw new CandidaturasPendentesException(); } if ((qtda.Efetivos + qtda.Suplentes) > qtdaCandidatos) { throw new CandidatosInsuficientesException(qtdaCandidatos, qtda.Efetivos, qtda.Suplentes); } } // Verifica se a data atual é maior que a data prevista para o encerramento do período de votação e // se há votos suficientes para o encerramento desse período if (etapaAtual.CodigoEtapa == 9 || etapaAtual.CodigoEtapa == 24) { VotosService votosService = new VotosService(); ResultadoDTO todos = votosService.GetResultado(eleicao.Codigo); int qtdaTotal = GetQtdaFuncionarios(eleicao.Codigo); int qtdaVotos = votosService.GetQtdaVotos(eleicao.Codigo); if (((float)qtdaVotos / (float)qtdaTotal) < 0.5) { throw new VotosInsuficientesException(qtdaTotal % 2 == 1 ? (int)((qtdaTotal + 1) / 2) : (int)(qtdaTotal / 2)); } } PassarParaProximaEtapa(eleicao, user); return(eleicao); }