public IHttpActionResult GetEleicoes(int?codigoModulo = null, bool?aberta = null)
        {
            try
            {
                ICollection <Eleicao> eleicoes = eleicoesService.GetEleicoes(codigoModulo, aberta).ToList();


                if (!User.IsInRole("Administrador"))
                {
                    eleicoes = eleicoes.Where(e => e.Funcionarios.Any(f => f.Login == User.Identity.Name)).ToList();
                }

                return(Ok(eleicoes
                          .Select((Eleicao x) =>
                {
                    EleicaoQtdaRepresentantesDTO representantes = eleicoesService.GetQtdaRepresentantes(x.Codigo);
                    QtdaEleicaoDTO qtda = new QtdaEleicaoDTO
                    {
                        TotalFuncionarios = eleicoesService.GetQtdaFuncionarios(x.Codigo),
                        Efetivos = representantes.Efetivos,
                        Suplentes = representantes.Suplentes,
                        TotalCandidatos = candidatosService.GetQtdaCandidatos(x.Codigo)
                    };
                    return new EleicaoDTO(x, qtda);
                }).ToList()));
            }
            catch
            {
                return(Content(HttpStatusCode.InternalServerError, "Ocorreu um erro desconhecido. Por favor, entre em contato com o suporte."));
            }
        }
Beispiel #2
0
        private QtdaEleicaoDTO GetQtda(Eleicao eleicao)
        {
            EleicaoQtdaRepresentantesDTO qtda = GetQtdaRepresentantes(eleicao.Codigo);

            return(new QtdaEleicaoDTO
            {
                TotalFuncionarios = eleicao.Funcionarios?.Count ?? 0,
                TotalCandidatos = eleicao.Candidatos?.Count ?? 0,
                Efetivos = qtda.Efetivos,
                Suplentes = qtda.Suplentes
            });
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        public EleicaoQtdaRepresentantesDTO GetQtdaRepresentantes(int codEleicao)
        {
            Eleicao eleicao = GetEleicao(codEleicao);
            float   total   = GetQtdaFuncionarios(eleicao.Codigo);

            EleicaoQtdaRepresentantesDTO retorno = null;

            if (eleicao.CodigoModulo == 1)
            {  //CIPA
                QtdaGrupo qtEfetivos = db.QtdasGrupos
                                       .Where(x => x.CodigoGrupo == eleicao.Unidade.CodigoGrupo &&
                                              x.QtdaMin <= total && x.Efetivo)
                                       .OrderByDescending(x => x.QtdaMin)
                                       .FirstOrDefault();

                QtdaGrupo qtSuplentes = db.QtdasGrupos
                                        .Where(x => x.CodigoGrupo == eleicao.Unidade.CodigoGrupo &&
                                               x.QtdaMin <= total && !x.Efetivo)
                                        .OrderByDescending(x => x.QtdaMin)
                                        .FirstOrDefault();

                if (qtEfetivos == null || qtSuplentes == null)
                {
                    throw new QtdaMinCipeiroGrupoNaoEncontradaException(eleicao.Unidade.CodigoGrupo, GetQtdaFuncionarios(eleicao.Codigo));
                }

                int acrescimo = total > qtEfetivos.AcrescimoLimite.QtdaLimite ?
                                (int)Math.Floor(((total - qtEfetivos.AcrescimoLimite.QtdaLimite) / qtEfetivos.AcrescimoLimite.IntervaloLimite) * qtEfetivos.AcrescimoLimite.QtdaAcrescimo) : 0;

                retorno = new EleicaoQtdaRepresentantesDTO(eleicao, qtEfetivos.Valor + acrescimo, qtSuplentes.Valor + acrescimo);
            }
            else //COMISSÃO
            {
                QtdaComissaoInterna q = db.QtdasComissaoInterna.Where(x => x.QtdaMin >= total).FirstOrDefault();
                retorno = new EleicaoQtdaRepresentantesDTO(eleicao, q.Valor, 0);
            }


            return(retorno);
        }
Beispiel #5
0
        public ResultadoDTO GetResultado(int codEleicao)
        {
            EleicoesService eleicoesService   = new EleicoesService();
            EleicaoQtdaRepresentantesDTO qtda = eleicoesService.GetQtdaRepresentantes(codEleicao);

            IEnumerable <CandidatoEleitoDTO> query =
                db.Candidatos.Where(x => x.CodigoEleicao == codEleicao).ToList()
                .Select(x => new CandidatoEleitoDTO(x, db.Votos.Count(y => y.FuncionarioIdCandidato == x.FuncionarioId && y.CodigoEleicao == codEleicao)))
                .OrderByDescending(x => x.QtdaVotos).ThenBy(x => x.DataAdmissao).ThenBy(x => x.DataNascimento).ThenBy(x => x.Nome).Take(qtda.Efetivos + qtda.Suplentes);

            if (query.Count() < (qtda.Suplentes + qtda.Efetivos))
            {
                throw new CandidatosInsuficientesException(query.Count(), qtda.Efetivos, qtda.Suplentes);
            }

            ResultadoDTO resultado = new ResultadoDTO
            {
                Efetivos  = query.Take(qtda.Efetivos).ToList(),
                Suplentes = query.Reverse().Take(qtda.Suplentes).Reverse().ToList()
            };

            return(resultado);
        }