Пример #1
0
        public ICollection <EleitorDTO> RelatorioEleitores(int codEleicao, string pesquisa = null)
        {
            EleicoesService eleicoesService = new EleicoesService();

            if (!eleicoesService.EleicaoExiste(codEleicao))
            {
                throw new EleicaoNaoEncontradaException();
            }

            ICollection <EleitorDTO> votos = db.Votos.ToList()
                                             .Where(x => x.CodigoEleicao == codEleicao)
                                             .OrderByDescending(x => x.DataHorario)
                                             .Select(x => new EleitorDTO(x)).ToList();

            ICollection <EleitorDTO> emBranco = db.VotosBrancos.ToList()
                                                .Where(x => x.CodigoEleicao == codEleicao)
                                                .Select(x => new EleitorDTO(x)).ToList();

            ICollection <EleitorDTO> union = votos.Union(emBranco).ToList();

            if (string.IsNullOrWhiteSpace(pesquisa))
            {
                return(union);
            }
            else
            {
                pesquisa = pesquisa.ToLower().Trim();
                return(union.Where(e => e.Nome.ToLower().Contains(pesquisa)).ToList());
            }
        }
Пример #2
0
        public ICollection <VotoDTO> GetVotosBrancos(int codEleicao)
        {
            EleicoesService eleicoesService = new EleicoesService();
            Eleicao         eleicao         = eleicoesService.GetEleicao(codEleicao);

            return(eleicao.VotosBrancos.Select(x => new VotoDTO(x)).ToList());
        }
Пример #3
0
        public int GetQtdaVotos(int codEleicao)
        {
            EleicoesService eleicoesService = new EleicoesService();
            Eleicao         eleicao         = eleicoesService.GetEleicao(codEleicao);

            return(db.Votos.Count(x => x.CodigoEleicao == codEleicao) + db.VotosBrancos.Count(x => x.CodigoEleicao == codEleicao));
        }
Пример #4
0
        public VotoBranco RegistrarVotoBranco(VotoBranco voto)
        {
            EleicoesService eleicoesService = new EleicoesService();

            voto.IP          = HttpContext.Current.Request.UserHostAddress;
            voto.DataHorario = HelpersMethods.HorarioBrasilia();

            if (!eleicoesService.FuncionarioExiste(voto.CodigoEleicao, voto.FuncionarioIdEleitor))
            {
                throw new FuncionarioNaoEncontradoException(voto.FuncionarioIdEleitor);
            }

            db.VotosBrancos.Add(voto);
            db.SaveChanges();

            return(voto);
        }
        public Candidato AddOrUpdateCandidato(Candidato c)
        {
            FuncionariosService funcService     = new FuncionariosService();
            EleicoesService     eleicoesService = new EleicoesService();

            //Adiciona ao contexto, ou atualiza
            Eleicao     eleicao = eleicoesService.GetEleicao(c.CodigoEleicao);
            Funcionario func    = funcService.GetFuncionario(c.FuncionarioId);

            if (eleicao.Funcionarios.Count(x => x.Id == c.FuncionarioId) <= 0)
            {
                throw new FuncionarioNaoCadastradoEleicaoException(c.FuncionarioId, c.CodigoEleicao);
            }

            if (!Elegivel(c, eleicao, func))
            {
                throw new FuncionarioNaoElegivelException("Não é permitida a inscrição de funcionários eleitos nas duas útlimas gestões!");
            }


            string modulo = eleicao.CodigoModulo == 2 ? "a Comissão Interna de Trabalhadores" : "a CIPA";

            EmailDTO email = new EmailDTO
            {
                Message = EmailService.ReplaceParams(Resources.Emails.EmailConfirmacaoCandidatura,
                                                     Tuple.Create("@MODULO", modulo), Tuple.Create("@NOME", func.Nome),
                                                     Tuple.Create("@CARGO", func.Cargo), Tuple.Create("@AREA", func.Area)),
                To = new List <string> {
                    func.Email
                },
                Copy = func.Gestor != null ? new List <string> {
                    func.Gestor.Email
                } : new List <string> {
                },
                Subject = "Candidatura Realizada"
            };

            Thread th = new Thread(EmailService.Send);

            th.Start(email);

            db.Candidatos.AddOrUpdate(c);
            db.SaveChanges();
            return(c);
        }
        public Candidato GetCandidato(int funcionarioId, int codEleicao)
        {
            EleicoesService eleicoesService = new EleicoesService();

            if (!eleicoesService.FuncionarioExiste(codEleicao, funcionarioId))
            {
                throw new FuncionarioNaoCadastradoEleicaoException(funcionarioId, codEleicao);
            }
            IEnumerable <Candidato> teste = db.Candidatos.Where(x => funcionarioId == x.FuncionarioId);
            Candidato c = db.Candidatos.Find(funcionarioId, codEleicao);

            if (c == null)
            {
                throw new CandidatoNaoEncontradoException();
            }

            return(c);
        }
Пример #7
0
        public ICollection <QtdaVotosDTO> QtdaVotosPorCandidato(int codEleicao)
        {
            EleicoesService eleicoesService = new EleicoesService();
            Eleicao         eleicao         = eleicoesService.GetEleicao(codEleicao);

            ICollection <QtdaVotosDTO> votos =
                (from cand in db.Candidatos.Where(x => x.CodigoEleicao == codEleicao && x.Validado.HasValue && x.Validado.Value).ToList()
                 select new QtdaVotosDTO(cand,
                                         db.Votos.Count(y => y.FuncionarioIdCandidato == cand.FuncionarioId && y.CodigoEleicao == codEleicao)))
                .OrderBy(x => x.Candidato.Nome).OrderBy(x => x.Candidato.DataAdmissao).OrderByDescending(x => x.QtdaVotos).ToList();

            votos.Add(new QtdaVotosDTO
            {
                Candidato = new CandidatoDTO
                {
                    Nome = "(EM BRANCO)",
                },
                QtdaVotos = db.VotosBrancos.Count(x => x.CodigoEleicao == codEleicao)
            });

            return(votos);
        }
Пример #8
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);
        }
Пример #9
0
        public List <InconsistenciaFuncionarioDTO> ExecutarImportacaoFuncionarios(int codEleicao)
        {
            DataSet ds;

            Conectar();
            db = new Modelo();
            string          tab            = "";
            EleicoesService eleicoeService = new EleicoesService();

            if (!eleicoeService.EleicaoExiste(codEleicao))
            {
                throw new Exception("Código de Eleição não encontrado!");
            }
            List <InconsistenciaFuncionarioDTO> retorno = new List <InconsistenciaFuncionarioDTO>();

            try
            {
                conexao.Open();

                tab     = "Funcionários";
                adapter = new OleDbDataAdapter("select * from[" + tab + "$]", conexao);
                ds      = new DataSet()
                {
                    DataSetName = tab
                };
                try
                {
                    adapter.Fill(ds);
                    retorno = ImportacaoFuncionarios(ds, codEleicao);
                }
                catch (OleDbException e)
                {
                    if (e.Message.Split(new char[] { '.' })[0] != "'" + tab + "' is not a valid name")
                    {
                        throw;
                    }
                }
            }
            catch (ResourceNotFoundException e)
            {
                throw new Exception("'" + e.Resource + "' não informado! '" + e.Resource + "' é um campo obrigatório. (Linha " + e.Linha + ")");
            }
            catch (FormatoDataInvalidoException e)
            {
                throw new Exception("Data em formato inválido: " + e.DataValor + ". (Linha " + e.Linha + ")");
            }
            catch (ExcelException e)
            {
                throw new Exception("Erro ao importar linha " + e.Linha + ". Mensagem: " + e.Message);
            }
            catch (OleDbException e)
            {
                throw new Exception("Erro ao salvar os dados: " + e.Message);
            }
            catch
            {
                throw new Exception("Ocorreu um erro inesperado!");
            }
            finally
            {
                Desconectar();
            }


            db.Dispose();

            return(retorno);
        }
Пример #10
0
        public List <InconsistenciaFuncionarioDTO> ImportacaoFuncionarios(DataSet ds, int codEleicao)
        {
            int l = 2;
            FuncionariosService funcService     = new FuncionariosService();
            UsuariosService     userService     = new UsuariosService();
            EleicoesService     eleicoesService = new EleicoesService();
            GestoresService     gestoresService = new GestoresService();
            //List<InconsistenciaFuncionarioDTO> inconsistencias = new List<InconsistenciaFuncionarioDTO>(); //Guarda os funcionários com a mesma matrícula com Login's diferentes
            HashSet <string> notRequiredFields = new HashSet <string> {
                "Email", "Nome do Gestor"
            };

            try
            {
                Eleicao eleicao = eleicoesService.GetEleicao(codEleicao);
                foreach (DataRow r in ds.Tables[0].Rows)
                {
                    //Condição de parada
                    if (r[1] == null || r[1].ToString() == "")
                    {
                        return(null);
                    }

                    //Validações
                    foreach (DataColumn c in ds.Tables[0].Columns)
                    {
                        if (!notRequiredFields.Contains(c.ColumnName))
                        {
                            if (r[c.ColumnName] == null || r[c.ColumnName].ToString() == "")
                            {
                                throw new ResourceNotFoundException(ds.DataSetName, l, c.ColumnName);
                            }
                        }
                    }

                    if (!DateTime.TryParse(r[5].ToString(), out DateTime dataAdmissao))
                    {
                        throw new FormatoDataInvalidoException(ds.DataSetName, l, r[5].ToString());
                    }

                    if (!DateTime.TryParse(r[6].ToString(), out DateTime dataNascimento))
                    {
                        throw new FormatoDataInvalidoException(ds.DataSetName, l, r[6].ToString());
                    }

                    Gestor gestor = null;
                    if (r[8].ToString() == "")
                    {
                        gestor = null;
                    }
                    else
                    {
                        gestor = gestoresService.Get(r[8].ToString());
                        if (gestor == null)
                        {
                            throw new GestorNaoEncontradoException(r[8].ToString());
                        }
                    }

                    string      login     = r[1].ToString().Trim().ToLower();
                    string      matricula = r[0].ToString();
                    Funcionario func      = new Funcionario
                    {
                        MatriculaFuncionario = matricula,
                        Login          = login,
                        Nome           = r[2].ToString(),
                        Cargo          = r[3].ToString(),
                        Area           = r[4].ToString(),
                        DataAdmissao   = dataAdmissao,
                        DataNascimento = dataNascimento,
                        CodigoGestor   = gestor?.Codigo,
                        Email          = r[7].ToString(),
                        CodigoEmpresa  = eleicao.Unidade.CodigoEmpresa
                    };

                    Funcionario funcMatricula = null;
                    try
                    {
                        funcMatricula = funcService.GetFuncionario(matricula, eleicao.Unidade.CodigoEmpresa);

                        if (funcMatricula.Login != login)
                        {
                            throw new Exception($"O funcionario {func.Nome} (matrícula {matricula}) já está cadastrado com o login {funcMatricula.Login}. Altere a planilha ou altere o registro atual em \"Base Geral\".");
                        }
                    }
                    catch (FuncionarioNaoEncontradoException) { }

                    Funcionario atual = funcService.GetByLogin(login);

                    if (atual == null || atual.MatriculaFuncionario == matricula)
                    {
                        if (atual != null)
                        {
                            func.Id = atual.Id;
                        }
                        funcService.AddOrUpdateFuncionario(func);
                    }
                    else
                    {
                        throw new Exception($"Já existe um funcionário cadastrado com o login {login}! Matrícula: {atual.MatriculaFuncionario}.");
                    }

                    Usuario usuario = null;
                    try
                    {
                        usuario = userService.GetUsuario(login);
                        usuario.FuncionarioId = atual.Id;
                        usuario.Nome          = func.Nome;
                        userService.AddOrUpdateUsuario(usuario);
                    }
                    catch (UsuarioNaoEncontradoException) { }
                    eleicoesService.AddFuncionario(codEleicao, func.Id);

                    l++;
                }
            }
            catch (ResourceNotFoundException e)
            {
                throw e;
            }
            catch (FormatoDataInvalidoException e)
            {
                throw e;
            }
            catch (Exception e)
            {
                throw new ExcelException(e.Message, ds.DataSetName, l);
            }

            return(null);
        }